首页 > 解决方案 > Statsmodels ARIMA:如何获得置信度/预测区间?

问题描述

如何生成“下”和“上”预测,而不仅仅是“yhat”?

import statsmodels
from statsmodels.tsa.arima.model import ARIMA

assert statsmodels.__version__ == '0.12.0'

arima = ARIMA(df['value'], order=order)
model = arima.fit()

现在我可以生成“yhat”预测

yhat = model.forecast(123)

并获得模型参数的置信区间(但不是预测):

model.conf_int()

但是如何生成yhat_loweryhat_upper预测呢?

标签: pythonstatsmodelsarima

解决方案


通常,forecastpredict方法只产生点预测,而get_forecastget_prediction方法产生包括预测区间在内的完整结果。

在您的示例中,您可以执行以下操作:

forecast = model.get_forecast(123)
yhat = forecast.predicted_mean
yhat_conf_int = forecast.conf_int(alpha=0.05)

如果您的数据是 Pandas 系列,那么yhat_conf_int将是一个包含两列的 DataFrame lower <name>upper <name>其中<name>是 Pandas 系列的名称。

如果您的数据是一个 numpy 数组(或 Python 列表),那么yhat_conf_int将是一个(n_forecasts, 2)数组,其中第一列是区间的下半部分,第二列是上半部分。


推荐阅读