Quel est le moyen le plus efficace de faire une matrice de variables à retard dans R pour une variable arbitraire (c'est-à-dire non une série de temps régulière)
Par exemple: P>
em> strong>: p> 2 décalages, sortie em> fortre>: p> [1,NA, NA]
[2, 1, NA]
[3, 2, 1]
[4, 3, 2]
4 Réponses :
Utilisez une classe Pour des données irrégulières telles que (business-) quotidiennement, utilisez le zoo ou < Un href = "http://cran.r-project.org/package=xts" rel = "noreferrer"> XTS packages qui peuvent également traiter (très bien!) avec des retards. Pour aller plus loin de là, vous pouvez utiliser des packages tels que dynlm ou DLM permet des modèles de régression dynamiques avec des retards. P>
Les vues de la tâche sur la série temporelle, les économétriques, les finances ont tous d'autres pointeurs. p> appropriée code> pour vos objets; BASE R a
TS code> qui comporte une fonction code> code> pour fonctionner sur. Notez que ces objets
TS code> sont venus d'un moment où "Delta" ou "Fréquence" où constants: données mensuelles ou trimestrielles comme dans la série macroéconomique. P>
La fonction code> exécutée code> dans le package code> gtools code> fait plus ou moins ce que vous voulez:
Mais James voulait une matrice pas une liste. Vous pouvez emballer le résultat à l'aide de matrice (ecriste (...)) mais la fonction incorporée () le fait en une étape.
Totalement à droite, c'est pourquoi j'ai suscité la solution intégrée () quand elle est sortie =). Mais «courir» est toujours une fonction utile que je pense - la plupart du temps où je voulais créer la matrice James demandée, ce que je voulais vraiment faire était de courir s'appliquer dessus.
Vous pouvez y parvenir en utilisant la fonction intégrée incorporée () code>, dans laquelle son deuxième argument de "dimension" est équivalent à ce que vous avez appelé "Lag":
x <- c(NA,NA,1,2,3,4)
embed(x,3)
## returns
[,1] [,2] [,3]
[1,] 1 NA NA
[2,] 2 1 NA
[3,] 3 2 1
[4,] 4 3 2
Plus généralement: LagMatrix <- Fonction (x, max.lag) {incorporé (C (na, max.lag), x), max.lag + 1)} Utilisez ensuite LagMatrix (1: 4,2)
Merci pour le pointeur à la fonction incorporée. Cela a sauvé une quantité massive de temps de calcul pour moi.
la méthode qui fonctionne mieux pour moi
est d'utiliser la fonction Exemple: P> code> à partir du package code> dplyr code>.
> require(dplyr)
> lag(1:10, 1)
[1] NA 1 2 3 4 5 6 7 8 9
> lag(1:10, 2)
[1] NA NA 1 2 3 4 5 6 7 8