簡體   English   中英

如何正確設置statsmodels.predict函數的開始/結束參數

[英]How to properly set start/end params of statsmodels.predict function

我正在做一個預測:

# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima_model import ARIMA

# Forecast interest rates using an AR(1) model
mod = ARIMA(data, order=(1,1,1))
res = mod.fit()

# Plot the original series and the forecasted series
res.plot_predict(start='2014-07-02', end='2018-09-28')
plt.show()

我收到一個錯誤:

KeyError: "invalid literal for int() with base 10: '2014-07-02'"

閱讀statsmodels文檔后: https ://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARIMAResults.plot_predict.html
然后,直觀的方法是檢查“ 2014-07-02”的類型,即pandas.core.indexes.datetimes.DatetimeIndex。
因此,根據文檔,應該允許日期時間。 這就是為什么我感到困惑。

我遵循Martijn Pieters的評論,這里的實質性問題是指數,該模型沒有關鍵日期,因為它是澳大利亞股票指數:

            All Ordinaries closing price
Date    
2014-06-30  5382.0
2014-07-01  5366.5
2014-07-02  5441.7
2014-07-03  5479.5
2014-07-04  5511.8
2014-07-07  5506.3
2014-07-08  5498.5
2014-07-09  5442.2
2014-07-10  5454.3
2014-07-11  5474.6

因此,某些日期可能相差一天,某些日期可能相差三天。 但是,我仍然不明白為什么我不能直接使用res.plot_predict。 其他一些可能會遇到相同的問題,因為如果我使用連續的時間序列,那么它會起作用。

克里斯(Kriss)在評論下方提供了一個鏈接,然后我仔細閱讀了該鏈接,但未能使用它解決問題:在我的數據中,每個日期都是唯一的,但是為了確保這一點,我遵循了答案:

data = data.groupby(pd.TimeGrouper(freq='D')).sum()


# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima_model import ARIMA
from datetime import datetime


# Forecast interest rates using an AR(1) model
mod = ARIMA(data, order=(1,1,1))
res = mod.fit()

# Plot the original series and the forecasted series
res.plot_predict(start=min(data.index), end=datetime(2018,9,28))
plt.show()

然后,我有種想撞牆的感覺,我得到了一個錯誤:

KeyError: Timestamp('2014-06-30 00:00:00')

該問題可以通過使用以下方法解決:

# Plot the original series and the forecasted series
res.plot_predict(start=datetime(2014,7,1), end=datetime(2018,9,28))
plt.show()

我不能使用第一個約會,因為我使用了第一個區別

您正在嘗試將連字符(-)轉換為整數,這對於int()是不可能完成的任務

暫無
暫無

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

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