VAR模型条件预测问题:如何传入新DAX数据计算油价收益
如何在VAR模型中基于已知内生变量的新数据进行条件预测?
你遇到的问题其实是对vars包中predict.VAR()函数的newdata参数理解有误——这个参数不是用来指定内生变量的未来已知值,而是为模型中的外生变量(比如你建模时额外加入的非内生变量)提供新数据的。因为你的VAR模型里只有DAX和OIL两个内生变量,没有额外的外生变量,所以传入DAXnew后会被直接忽略,预测结果自然和不传一样。
要实现「已知未来12期DAX收益,预测对应油价收益」的需求,你需要用VAR模型的条件预测功能,具体可以通过vars包的conditional.predict()函数来实现,步骤如下:
步骤1:构造条件约束矩阵
首先创建一个和预测期数一致的矩阵,指定哪些期的哪些变量是已知值,未知变量留为NA:
# 构造12期的条件矩阵,列对应VAR模型的内生变量(DAX、OIL) cond_matrix <- matrix(NA, nrow = 12, ncol = 2) colnames(cond_matrix) <- colnames(MakroVAR) # 对齐变量名,避免匹配错误 # 填入已知的DAX新数据,OIL列留NA表示需要预测 cond_matrix[, "DAX"] <- DAXnew$DAX
步骤2:执行条件预测
调用conditional.predict()函数,传入你的VAR模型和条件矩阵即可:
library(vars) # 生成条件预测结果 pred.var_cond <- conditional.predict(var, cond = cond_matrix, n.ahead = 12)
结果验证
你可以查看预测结果中的DAX值,会发现完全和你传入的DAXnew一致,而OIL值则是VAR模型基于已知DAX和模型系数计算出的对应预测值:
# 查看预测的DAX(已知值)和OIL(预测值) print(pred.var_cond$fcst)
额外说明
如果你的VAR模型包含外生变量(比如建模时用了exogen参数),那newdata参数才会派上用场——此时它用来传入外生变量的未来值,配合内生变量的条件约束一起完成预测。但在你的场景里,因为没有外生变量,所以这个参数完全不生效。
内容的提问来源于stack exchange,提问作者Henros
相关产品推荐
相关产品推荐

