【发布时间】:2016-05-27 18:25:32
【问题描述】:
有人可以帮助我在多个时间序列上使用滚动窗口在 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
【问题讨论】:
-
欢迎来到 StackOverflow。请查看有关如何在 R 中创建minimum example 和producing a good example 上的帖子的提示。另外,您介意在您的问题中包含您正在使用的任何软件包吗?例如,
Bcoef不是基础 R 的一部分。 -
感谢您的评论!添加了包名..
-
如链接中所述,包含一个示例数据集(可能小于您的原始数据)也是一个好主意,该数据集可以重现您的问题以供人们使用。查看 R 示例链接的第一个答案,了解如何使用
dput。