2015-11-14 4 views
0

J'ai un ensemble de données avec 358 lignes, un coup d'œil est la suivanterollaplly pour les séries temporelles

>  unempts gdpts 
> [1,] 7.03 4.2 
> [2,] 7.17 3.7 
> [3,] 6.97 3.2 
> [4,] 6.83 2.9 
> [5,] 6.60 2.7 
> [6,] 6.27 3.4 

je dois exécuter une régression de la colonne 1 sur la colonne 2, pour 60 fenêtres de roulement et enregistrer tous les résultats dans la matrice de sorte que je peux tracer le même et exécuter HAC.

J'ai essayé les éléments suivants:

regRO <- rollapply(datam, 60, lm, by.column = TRUE,fill=NA) 

mais obtenir une erreur comme suit

Erreur dans formula.default (objet, env = baseenv()): formule invalide

Veuillez indiquer ce qui doit être changé.

+0

Quels paquets avez-vous utilisé ? Ou est-ce une faute de frappe. Je ne peux pas trouver 'rollapplyr'. – Alex

+0

J'ai utilisé le paquet zoo – user5501025

Répondre

1

Vous devez spécifier l'appel de fonction explicitement que X est d'abord converti en une trame de données pour satisfaire aux exigences d'entrée de lm:

library(zoo) 

set.seed(123) # ensure runif in next line uses same random numbers each time run 
datam <-matrix(runif(200),ncol=2) 

out <- rollapplyr(datam, 
      width = 60, 
      FUN = function(X) coef(lm(as.data.frame(X))), 
      by.column=FALSE, 
      fill = NA) # omit fill=NA if NA rows not wanted 

donnant:

> tail(out) 
     (Intercept)   V2 
[95,] 0.5071618 -0.1041905 
[96,] 0.5015140 -0.1032419 
[97,] 0.5196683 -0.1404855 
[98,] 0.5171599 -0.1401534 
[99,] 0.5122871 -0.1288700 
[100,] 0.5176396 -0.1297019 
+0

@ G.Grothendieck, ci-dessus travaillé et le résumé que je reçois est (Interception) V2 Min. : 0.3260 Min. : 0,06008 1er Qu.:0.3576 1er Qu.:0.11453 médian: 0,3756 médian: 0,21695 moyenne: 0,3957 moyenne: 0,20331 3ème Qu.:0.4404 3ème Qu.:0.29501 Max. : 0.4985 Max. : 0.33402 NA's: 59 NA's: 59, alors maintenant je veux éliminer tous les coefficients de pente dans un vecteur afin de tracer la même chose. Comment puis-je appeler cela. Dois-je essayer regRO = matrice (out) $ coefficents [2,1] – user5501025

+1

Vous pouvez obtenir la pente (beta) avec ceci: 'plot (na.omit (out [, 2]), type =" l ")' –

+0

@ P Lapointe, ma compréhension du code ci-dessus donnée par G.Grothendieck est la suivante: 1-Installer la bibliothèque (zoo), 2-set.seed (123) ?? La matrice 3-create appelée datam a 200 lignes, avec des intervalles uniformes (donc je peux changer selon mon ensemble de données), et 2 colonnes. out est le nouvel objet créé dans lequel on utilise la fonction rollapply (sur dataset, avec une fenêtre roulante de 60, FUN = ??, en utilisant la fonction de régression (sur la trame de données X), sans appliquer la fenêtre roulante à chaque colonne ??) Donc la partie que je n'ai pas comprise est X, coef() et pourquoi by.coulm est faux, puisque LM devrait prendre les deux colonnes. – user5501025