簡體   English   中英

Statsmodels ARIMA:每個預測的恆定值

[英]Statsmodels ARIMA: Constant Value for Each Forecast

我正在嘗試使用 statsmodels 的 ARIMA 來預測時間序列。 我正在使用 sklearn 的TimeSeriesSplit來評估我的模型。 不幸的是,當我預測下一個數據折疊(具有真實值Y_test )時,我得到了一個恆定的預測:

if is_arima:
      Y_train = Y_train.astype(float)
      # build basic ARIMA model
      arima_model = ARIMA(Y_train, order=(2,0,1))
      # fit it, using exogenous variables
      arima_results = arima_model.fit()
      # predict next len(test) values, using exogenous variables (X_test)
      preds = arima_results.forecast(steps=len(Y_test))[0]
      print(preds)

這給了我:

115.65096239  120.89113477  121.52020239  121.59572014  121.60478583
  121.60587414  121.60600479  121.60602047  121.60602235  121.60602258
  121.6060226   121.60602261  121.60602261  121.60602261  121.60602261
  121.60602261  121.60602261  121.6060226   121.6060226   121.6060226
  121.6060226   121.6060226   121.6060226   121.6060226   121.6060226
  121.6060226   121.6060226   121.6060226   121.6060226   121.6060226...

這讓我覺得我的 ARIMA 沒有使用時間 t 的預測來預測時間 t+1?

我知道輸出不是完全恆定的,但我的數據集顯示出很大的變化,所以這有點令人擔憂。 知道發生了什么嗎?

謝謝!

您使用 ARIMA(2,0,1),所以您的預測是

x(t) = constant + w(t) + a1 * x(t-1) + a2 * x(t-2) + b1 * w(t-1)

因此,您的預測取決於兩個因素。 您有自回歸項和移動平均項。 您的自回歸項只是前一周期值的常數乘以 2 周期前的值加上不同的常數乘以。 然后你有一個移動平均項,它是前一期預測誤差的常數倍。 因此,您的模型可能主要由前兩個時期主導,並且它可能會很快找到平衡。

嘗試打印出參數,然后將其插入 excel 以查看模型中發生的情況。

print(arima_model.summary())
print(arima_model.params)

您正在使用遞歸策略進行多步預測,即在先前步驟中生成的預測用於迭代預測下一個預測。 它導致錯誤累積,結果預測收斂到一個值。 對於很長的數據系列,Arima 表現不佳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM