簡體   English   中英

statsmodel ARIMA 的不切實際的均方誤差

[英]Unrealistic Mean Squared Error with statsmodel ARIMA

前言:我不知道我在做什么。

對於 uni stats class,我們必須在 python 中進行一些時間序列預測。

我基本上遵循了本教程,但使用了我的數據: https://www.digitalocean.com/community/tutorials/a-guide-to-time-series-forecasting-with-arima-in-python-3

除了 MSE,一切都運行良好。

當繪制所有內容時,它看起來像這樣:

在此處輸入圖像描述

這是我用於 MSE 的數據:

原始數據(交易['2016-05-01':]):

DATE_BOOKING
2016-05-01    11327.548387
2016-06-01    11534.000000
2016-07-01    11391.677419
2016-08-01    11259.451613
2016-09-01    11968.366667
2016-10-01     7844.387097
2016-11-01     6270.800000
2016-12-01     5103.516129
2017-01-01     4631.032258
2017-02-01     5092.928571
2017-03-01     7800.258065
2017-04-01     8359.133333
2017-05-01     9495.062500

預測(預測)數據(pred.predicted_mean):

DATE_BOOKING
2016-05-01     9375.120610
2016-06-01    11038.420268
2016-07-01    11571.006853
2016-08-01    10856.183244
2016-09-01    10148.262512
2016-10-01     9433.060067
2016-11-01     7044.780142
2016-12-01     5037.930509
2017-01-01     5337.963486
2017-02-01     5767.081120
2017-03-01     6616.610224
2017-04-01     9389.836132
2017-05-01    10258.791544

我正在通過以下方式計算 MSE:

transactions_forecasted = pred.predicted_mean
transactions_truth = transactions['2016-05-01':]
mse = ((transactions_forecasted - transactions_truth) ** 2).mean()
print('The Mean Squared Error of our forecasts is {}'.format(round(mse, 2)))
print('The Root Mean Squared Error of our forecasts is {}'.format(round(np.sqrt(mse), 2)))

這是結果:
我們預測的均方誤差為 1130250.12
我們預測的均方根誤差為 1063.13

與我搜索過的其他 MSE 相比,它似乎非常高。

你能告訴我我做錯了什么嗎?

如果需要,我可以發布更多(全部)代碼。

提前致謝!

均方誤差無法跨數據集進行比較,因為其大小取決於數據集的單位。 因此,您無法將您在此處獲得的 MSE 與您在使用其他數據的示例問題中看到的 MSE 進行比較。

判斷您獲得的 MSE 值是否合理的一種方法是查看均方根誤差,它在原始數據集的范圍內。 它大約是 1000,平均而言,預測看起來與真實值相差大約 1000。

(這第二部分有點簡化,因為 RMSE 對大錯誤的懲罰比對小錯誤的懲罰更大,但它可以讓您大致檢查您獲得的值是否在大致范圍內)。

暫無
暫無

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

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