【问题标题】:Python Statsmodels: Using SARIMAX with exogenous regressors to get predicted mean and confidence intervalsPython Statsmodels:使用 SARIMAX 和外生回归器来获得预测的均值和置信区间
【发布时间】:2016-09-26 10:28:24
【问题描述】:

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

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

【问题讨论】:

    标签: python time-series forecasting statsmodels confidence-interval


    【解决方案1】:

    存在一些与向后兼容性相关的问题,因此未公开完整结果(包括 pred 间隔等)。

    现在就得到你想要的:使用 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()
    

    欲了解更多信息,请访问:

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2021-08-07
      • 2016-12-12
      • 2015-07-22
      • 2018-02-05
      • 1970-01-01
      相关资源
      最近更新 更多