将矢量格式化为自回归矩阵

时间:2014-03-12 02:06:31

标签: r matrix formatting dataframe

给定数字向量x和滞后t,我需要并且有效地生成'自相关'矩阵,其中每行是x(i),x(i - 1) ,x(i - 2),...,x(i - t)。例如:

set.seed(1)
x = rnorm(6)
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078 -0.8204684

使用x和t = 3:

M = autoreg.format(x, 3)
              x         x1         x2         x3
[1,]  1.5952808 -0.6264538  0.1836433 -0.8356286
[2,]  0.3295078  0.1836433 -0.8356286  1.5952808
[3,] -0.8204684 -0.8356286  1.5952808  0.3295078

目前我使用的是以下代码,效果很好。我只是想知道是否有更快或更简洁的方法:

autoreg.format = function(x, t) {

  y = tail(x, -t)
  x = matrix(t(sapply(head(1:length(x), -t), function(v){x[seq(v, length = t)]})), ncol = t)
  data = cbind(y, x)
  colnames(data) = c("x", paste("x", 1:t, sep = ""))
  data
}

感谢您的任何见解!

1 个答案:

答案 0 :(得分:2)

t = 3
ac <- embed(x,t+1)

会做的伎俩。但它的顺序与autoreg.format函数的顺序不同。您可以标记列,如下所示:

colnames(ac) <- paste0("X",t:0)