Python中使用预测区间测算ARMA-GARCH模型准确率的相关问题
ARMA-GARCH 95%预测区间计算与准确率衡量方案
首先回答你的基础问题:可以用显著性水平alpha=0.05的预测区间衡量ARMA-GARCH模型的预测准确率,常用评价指标为样本外覆盖率,即测试集中真实值落在预测区间内的样本占比,该值越接近95%说明模型区间预测效果越好。
核心错误原因
你当前预测区间结果不符合预期的核心问题是公式误用:GARCH模型输出的是条件方差,而95%预测区间公式中与1.96相乘的是条件标准差,需要先对预测得到的方差做开平方处理,不能直接用方差计算。
你之前困惑的ARMA、GARCH各参数对应的标准误是用于参数显著性检验的指标,和预测区间计算无关,预测区间计算不需要全模型统一的标准误,直接使用模型输出的逐期条件均值、条件方差即可。
修正后的代码
import numpy as np # 先计算条件标准差 df_all["pred_Std"] = np.sqrt(df_all["pred_Variance"]) # 计算95%预测区间上下界 df_all["upper_bound"] = df_all["pred_Mean"] + 1.96 * df_all["pred_Std"] df_all["lower_bound"] = df_all["pred_Mean"] - 1.96 * df_all["pred_Std"]
额外注意事项
- 当前你用的是正态分布假设对应的1.96分位数,如果你后续把分布换成学生t分布等厚尾分布,需要替换为对应分布的97.5%分位数,不可固定使用1.96
- 验证预测区间效果时请使用预留的测试集样本,不要使用训练集样本,训练集是模型拟合所用数据,覆盖率会偏高不具备参考性
- 你所用的armagarch库predict接口输出的第一个数组为条件均值预测值、第二个为条件方差预测值,该输出逻辑无问题
内容的提问来源于stack exchange,提问作者Lukas K
相关产品推荐
相关产品推荐

