有人可以帮助我在多个时间序列上使用滚动窗口在 R 中运行 VAR(1)(向量自回归)并以某种方式存储 Bcoef
(系数)和残差吗?似乎我无法想出一种方法来一次完成这一切。
我的代码:(使用包library(vars)
进行矢量自回归
varcoef <- function(x) Bcoef(VAR(x, p=1, type =c("const"), lag.max = NULL))
varr <- function(x) resid(VAR(x, p=1, type =c("const"), lag.max = NULL))
rolling.var.coef <- rollapply(eur.var,width=120,varcoef, by.column=FALSE)
var.resids<-as.data.frame(rollapplyr(eur.var,width=120,varr, by.column=FALSE))
这种方法有两个问题:
- 我有 3000 天和输出矩阵
rolling.var.coef
,var.resids
长度也是 3000,而长度必须是 7x3000(有 7 个系数)和 119*3000(每个回归有 119 个残差),所以它只计算 VAR(1)头几天 - 最重要的是:如何在一个功能中完成,而不是两个。因为输出是两个矩阵
这是我的数据的大致视图 - 像这样的 3000 天。
V1 V2 V3 V4 V5 V6 V7
2016-05-10 -0.34 -0.35 -0.37 -0.40 -0.41 -0.30 0.14
2016-05-09 -0.36 -0.35 -0.37 -0.40 -0.41 -0.30 0.15