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

如何在R中为VAR对象替换Newey West标准误以开展方差分解

解决方案

首先明确两个核心前提:

  • 预测误差方差分解(FEVD)的点估计仅由VAR模型的系数估计值决定,与标准误选择无关,仅当你需要计算FEVD的置信区间、做显著性检验时,才需要替换为Newey-West稳健标准误
  • sandwich包的NeweyWest()函数默认适配单方程lm对象,VAR模型是多方程联合估计的集合,需要遍历每个方程单独替换协方差矩阵

依赖包

你需要提前加载两个包:

library(vars) # 用于VAR建模和方差分解
library(sandwich) # 用于计算Newey-West稳健标准误

操作步骤

1. 拟合基础VAR模型

和你现有代码一致:

var1 <- VAR(Data_Var, lag.max=1, ic="HQ", type = "const")

2. 替换每个方程的协方差矩阵为Newey-West估计

遍历VAR模型的每个单方程结果,替换默认的OLS协方差矩阵:

# lag参数可根据你的残差序列相关阶数调整,这里和你原有参数一致设为1
for (eq in names(var1$varresult)) {
  var1$varresult[[eq]]$vcov <- NeweyWest(var1$varresult[[eq]], 
                                         lag = 1, 
                                         prewhite = TRUE, 
                                         adjust = FALSE)
}

3. 计算方差分解

直接调用vars包的fevd()函数即可,若需要输出带置信区间的结果,指定n.ahead和ci参数即可,函数会自动调用你替换后的稳健协方差矩阵计算置信区间:

# 无置信区间的点估计结果
fevd_result <- fevd(var1, n.ahead = 10)
# 带95%稳健置信区间的结果
fevd_result_ci <- fevd(var1, n.ahead = 10, ci = 0.95)

常见问题说明

如果运行时提示NeweyWest()找不到适配VAR对象的方法,是因为你没有单独遍历每个方程处理,VAR的每个子结果varresult[[i]]都是标准lm对象,可直接传入NeweyWest()计算。

内容的提问来源于stack exchange,提问作者JJ1214

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:01