我會用(Statsmodels)ARIMA,以便從一系列的預測值不同的結果:Statsmodels ARIMA - 使用預測()和預測()
plt.plot(ind, final_results.predict(start=0 ,end=26))
plt.plot(ind, forecast.values)
plt.show()
我想知道,如果問題是否有關預測或預測
我會用(Statsmodels)ARIMA,以便從一系列的預測值不同的結果:Statsmodels ARIMA - 使用預測()和預測()
plt.plot(ind, final_results.predict(start=0 ,end=26))
plt.plot(ind, forecast.values)
plt.show()
我想知道,如果問題是否有關預測或預測
從圖表中看起來好像您正在執行帶有forecast()
的樣本外預測,位樣本預測與預測。根據ARIMA方程的性質,在長期預測期間,樣本外預測傾向於收斂於樣本均值。
爲了找出forecast()
和predict()
如何適用於不同的場景,我係統地比較了ARIMA_results
類中的各種模型。隨意重現與statsmodels_arima_comparison.py
in this repository的比較。我研究了order=(p,d,q)
的每個組合,只將p, d, q
限制爲0或1.例如,可以使用order=(1,0,0)
獲得簡單的自迴歸模型。 簡而言之,我看了三個選項,使用以下內容(stationary) time series:
A.迭代樣本內預測形成一個歷史記錄。歷史由前80%的時間序列組成,測試集由最後的20%組成。然後我預測了測試集的第一個點,爲歷史添加了真實值,預測了第二個點等等。這應該對模型預測質量進行評估。
for t in range(len(test)):
model = ARIMA(history, order=order)
model_fit = model.fit(disp=-1)
yhat_f = model_fit.forecast()[0][0]
yhat_p = model_fit.predict(start=len(history), end=len(history))[0]
predictions_f.append(yhat_f)
predictions_p.append(yhat_p)
history.append(test[t])
B.接下來,我看着出的樣本外預測通過反覆預測測試系列的下一個點,並追加這個預測的歷史。
for t in range(len(test)):
model_f = ARIMA(history_f, order=order)
model_p = ARIMA(history_p, order=order)
model_fit_f = model_f.fit(disp=-1)
model_fit_p = model_p.fit(disp=-1)
yhat_f = model_fit_f.forecast()[0][0]
yhat_p = model_fit_p.predict(start=len(history_p), end=len(history_p))[0]
predictions_f.append(yhat_f)
predictions_p.append(yhat_p)
history_f.append(yhat_f)
history_f.append(yhat_p)
C.我用forecast(step=n)
參數和predict(start, end)
參數,以便做內部多步預測使用這些方法。
model = ARIMA(history, order=order)
model_fit = model.fit(disp=-1)
predictions_f_ms = model_fit.forecast(steps=len(test))[0]
predictions_p_ms = model_fit.predict(start=len(history), end=len(history)+len(test)-1)
原來:
A.預測和預測AR產量相同的結果,但對於ARMA不同的結果:test time series chart
B.預測和預測產生不同的結果兩者AR和ARMA:test time series chart
C.預測和預測AR產量相同的結果,但不同的結果爲ARMA:test time series chart
此外,比較在B.和C.中看似相同的方法,我在結果中發現了細微但明顯的差異。
我認爲這種差異主要來源於forecast()
和predict()
的「預測在原始內生變量的水平上完成」這一事實產生的水平差異預測(compare the API reference)。另外,由於我比stat簡單的迭代預測循環(這是主觀的)更信任statsmodels函數的內部功能,所以我推薦使用forecast(step)
或predict(start, end)
。