You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:28:56