[英]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.