【问题标题】:Why doesn't Python statsmodels...SARIMAX.predict work?为什么 Python statsmodels...SARIMAX.predict 不起作用?
【发布时间】:2020-04-02 01:34:49
【问题描述】:

我正在尝试使用 SARIMAX 将 34 个元素的每月时间序列扩展到 35 个元素,假设有 12 个月的季节性成分。

但是,predict 方法因回溯而失败:

<ipython-input-40-151295bf5e3e> in approach_4_stationarity(data_file_name)
     27     sarima = SARIMAX( total_items_array, order = ( 1, 0, 0 ), seasonal_order = (0,0,0,12) )
     28     sarima.fit()
---> 29     next_month_item_cnt = sarima.predict( (1, 0, 0 ), start = 34, end = 34 )
     30     print( "next_month_item_cnt", next_month_item_cnt, file = sys.stderr )
     31     total_items_array = total_items_array.append( next_month_item_cnt )

/opt/conda/lib/python3.6/site-packages/statsmodels/base/model.py in predict(self, params, exog, *args, **kwargs)
    205         This is a placeholder intended to be overwritten by individual models.
    206         """
--> 207         raise NotImplementedError
    208 
    209 

我该如何解决这个问题?

【问题讨论】:

    标签: time-series statsmodels


    【解决方案1】:

    由于错误表明该方法未实现,我个人从未见过这样的事情。请务必查看official website 上的文档或常见问题解答部分。

    有一个解决方案。您可以使用pmdarima 中的auto_arima 函数。它在识别 SARIMA 模型的参数时是全自动的,但是(根据我的经验)它很耗时并且不是 100% 有效。我建议您查看它的所有参数,然后您可以像这样使用它:

    from pmdarima.arima import auto_arima
    
    step_wise=auto_arima(train_y, exogenous= train_X, start_p=1, start_q=1, 
         max_p=7, max_q=7, d=1, max_d=7, trace=True, error_action=’ignore’, 
         suppress_warnings=True, stepwise=True)
    

    代码取自this article. . 查看有关auto_arimahere的官方文档

    【讨论】:

      【解决方案2】:

      fit 方法不影响模型对象,它返回一个新的结果对象。您可能想要以下内容:

      model = SARIMAX(total_items_array, order=(1, 0, 0), seasonal_order=(0,0,0,12))
      results = model.fit()
      next_month_item_cnt = results.forecast(steps=1)
      

      【讨论】:

        猜你喜欢
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-12
        • 2021-07-01
        • 2023-03-24
        相关资源
        最近更新 更多