Python 统计模型 : Using SARIMAX with exogenous regressors to get predicted mean and confidence intervals

标签 python time-series forecasting statsmodels confidence-interval

我正在使用 statsmodels.tsa.SARIMAX() 来训练具有外生变量的模型。当使用外生变量训练模型以便返回的对象包含预测均值和置信区间而不仅仅是一组预测均值结果时,是否存在 get_prediction() 的等价物? predict() 和 forecast() 方法采用外生变量,但只返回预测平均值。

SARIMA_model = sm.tsa.SARIMAX(endog=y_train.astype('float64'),
                          exog=ExogenousFeature_train.values.astype('float64'), 
                          order=(1,0,0),
                          seasonal_order=(2,1,0,7), 
                          simple_differencing=False)

model_results = SARIMA_model.fit()

pred = model_results.predict(start=train_end_date,
                               end=test_end_date,
                               exog=ExogenousFeature_test.values.astype('float64').reshape(343,1),
                               dynamic=False)

这里的 pred 是一个预测值数组,而不是一个包含预测平均值和置信区间的对象,如果您运行 get_predict() 将获得该对象。请注意,get_predict() 不采用外生变量。

我的statsmodels版本是0.8

最佳答案

存在一些与向后兼容性相关的问题,导致完整结果(带有预测间隔等)未公开。

为了让你现在得到你想要的:使用 get_prediction 和 get_forecast 函数,参数如下所述

    pred_res = sarimax_model.get_prediction(exog=ExogenousFeature_train.values.astype('float64'), full_results=True,alpha=0.05)
    pred_means = pred_res.predicted_mean
    # Specify your prediction intervals by alpha parameter. alpha=0.05 implies 95% CI
    pred_cis = pred_res.conf_int(alpha=0.05)

    # You can then plot it (import matplotlib first)
    fig = plt.figure(figsize=(12, 8))
    ax = fig.add_subplot(1,1,1)
    #Actual data
    ax.plot(y_train.astype('float64'), '--', color="blue", label='data')
    # Means
    ax.plot(pred_means, lw=1, color="black", alpha=0.5, label='SARIMAX')
    ax.fill_between(pred_means.index, pred_cis.iloc[:, 0], pred_cis.iloc[:, 1], alpha=0.05)
    ax.legend(loc='upper right')
    plt.draw()

更多信息,请访问:

关于Python 统计模型 : Using SARIMAX with exogenous regressors to get predicted mean and confidence intervals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700424/

相关文章:

即使设置了超时,Python urllib2.urlopen 也会无限卡住脚本

python - 如果另一个对象中的字符串包含子字符串,则从列表中删除项目

python - 使用 Python 和机器学习 (LSTM) 预测 future 'x' 天的股票价格

r - 多个 ts 的 auto.arima 残差

python - LSTM 预测一条直线

python - 使用 spaCy 正确的多线程词形还原

python - 禁用 python chrome 驱动程序扩展而不丢失驱动程序路径

python - 从 pandas 数据帧着色时间序列数据

R 包 xtsExtra 问题绘制多个 ts

python - 时间序列异常检测与数据异常检测相结合