2012-07-30 3 views
0

Pour calculer la variation quadratique d'un timeseries dans R, je voudrais résumer pour chaque point la place des rendements du journal du point courant et les derniers points x.Computing Variation R Quadratique

Je sais que vous pouvez construire le carré des rendements du journal de py en tapant

diff(log(py))^2 

Cependant comment puis-je construire un timeseries qui est la somme à chaque point les 5 derniers points afin de construire la variation quadratique ?

Répondre

3

La fonction embed combinée avec rowSums donne ce dont vous avez besoin:

cbind(
    AirPassengers, 
    sum5=c(rep(NA, 4), rowSums(embed(AirPassengers, 5))) 
) 

     AirPassengers sum5 
Jan 1949   112 NA 
Feb 1949   118 NA 
Mar 1949   132 NA 
Apr 1949   129 NA 
May 1949   121 612 
Jun 1949   135 635 
Jul 1949   148 665 
... 

Qu'est-ce que embed fait est de créer une matrice avec des valeurs retardées de votre vecteur initial:

embed(AirPassengers, 5) 
     [,1] [,2] [,3] [,4] [,5] 
    [1,] 121 129 132 118 112 
    [2,] 135 121 129 132 118 
    [3,] 148 135 121 129 132 
    [4,] 148 148 135 121 129 
    [5,] 136 148 148 135 121 
    [6,] 119 136 148 148 135 
    [7,] 104 119 136 148 148 
    [8,] 118 104 119 136 148 
    ... 

Vous pouvez Ils utilisent rowSums ou toute autre manipulation sur les lignes de cette matrice.

+0

Merci, en attendant j'utilisais cumsum et différencier les vecteurs mais je vais essayer votre chemin – BlueTrin