R中的滞后变量

Jam*_*awa 11 r time-series

在R中为任意变量(即不是常规时间序列)制作滞后变量矩阵的最有效方法是什么?

例如:

输入:

x <- c(1,2,3,4) 
Run Code Online (Sandbox Code Playgroud)

2滞后,输出:

[1,NA, NA]
[2, 1, NA]
[3, 2,  1]
[4, 3,  2]
Run Code Online (Sandbox Code Playgroud)

med*_*oll 21

你可以使用内置embed()函数实现这一点,其中第二个'dimension'参数等同于你所谓的'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
Run Code Online (Sandbox Code Playgroud)

embed()在Joshua Reich 先前的回答中讨论过.(注意,我在前面添加了x和NAs来复制你想要的输出).

它的命名并不是特别好,但它对于涉及滑动窗口的操作非常有用和强大,例如滚动总和和移动平均值.

  • 更一般地说:lagmatrix < - function(x,max.lag){embed(c(rep(NA,max.lag),x),max.lag + 1)}然后使用lagmatrix(1:4,2) (2认同)

Dir*_*tel 8

使用适合class您的物品; 基R具有ts其具有lag()操作上的功能.请注意,这些ts对象来自"delta"或"frequency"的时间,其中常量:宏观经济系列中的月度或季度数据.

对于诸如(business-)每天的不规则数据,使用zooxts包,它们也可以处理(非常好!)滞后.为了更进一步,您可以使用像dynlmdlm这样的软件包,允许使用滞后的动态回归模型.

时间序列,计量经济学,金融学的任务观点都有进一步的指示.