Statsmodels ARIMA:如何获取预测置信区间及生成yhat上下限?
获取ARIMA预测值的置信区间(上下限)
嘿,这个问题我刚好踩过坑!你当前用的model.forecast()确实只返回点预测值,要拿到预测值的上下限(置信区间),得换用get_forecast()方法,它会返回包含更多信息的预测结果对象。
具体步骤和代码示例
- 用
get_forecast()替代forecast(),传入预测步数:
import statsmodels from statsmodels.tsa.arima.model import ARIMA assert statsmodels.__version__ == '0.12.0' arima = ARIMA(df['value'], order=order) model = arima.fit() # 获取完整的预测结果对象 forecast_results = model.get_forecast(steps=123)
- 从结果对象中提取需要的内容:
- 点预测值(和原来的
yhat完全一致):
yhat = forecast_results.predicted_mean
- 预测值的置信区间(默认是95%置信水平):
confidence_intervals = forecast_results.conf_int() # 拆分出下限和上限,列名对应原数据的列名"value" yhat_lower = confidence_intervals['lower value'] yhat_upper = confidence_intervals['upper value']
- 调整置信水平(可选):
如果需要非95%的置信区间,比如90%,可以在conf_int()里指定alpha参数(alpha = 1 - 置信水平):
# 获取90%置信区间 confidence_intervals_90 = forecast_results.conf_int(alpha=0.1) yhat_lower_90 = confidence_intervals_90['lower value'] yhat_upper_90 = confidence_intervals_90['upper value']
补充说明
你之前用的model.conf_int()是用来获取模型参数(比如AR、MA项的系数)的置信区间,而非预测值的置信区间,这就是它和我们需要的结果不匹配的原因。
内容的提问来源于stack exchange,提问作者Dzmitry Lazerka
相关产品推荐
相关产品推荐

