簡體   English   中英

時間序列數據幀python上的ARIMA建模

[英]ARIMA modeling on time-series dataframe python

我正在嘗試使用 ARIMA 模型進行預測。 我是新手。 我試圖繪制我的數據集(每小時數據)的seasonal_decompose(),下面是圖?

在此處輸入圖片說明

我想了解這些情節,簡要描述會有所幫助。 我看到最初沒有趨勢,一段時間后有上升趨勢。 我不確定我說的對不對? 我想了解如何正確閱讀這些圖表。 請給出一些好的描述。

當我嘗試應用 Dickey-Fuller 測試來檢查我的數據是否靜止並且我是否需要進一步差分時,我得到了以下結果:

Test Statistic                   -4.117543
p-value                           0.000906
Lags Used                       30.000000
Number of Observations Used    4289.000000
Critical Value (1%)              -3.431876
Critical Value (5%)              -2.862214
Critical Value (10%)             -2.567129

我指的是 2 個鏈接來理解這一點: http : //www.seanabu.com/2016/03/22/time-series-seasonal-ARIMA-model-in-python/

這個鏈接說當 test-statistic 大於臨界值時,這意味着數據是平穩的; 另一方面,另一個鏈接說反之亦然。 我對此感到困惑,我還提到了 otexts.org,它說我們應該根據 p 值進行檢查。 請建議我如何解釋 ADF 測試給出的結果?

此外,當我嘗試在數據集上應用 ARIMA 模型時:

from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(df.y, order=(0,1,0))
model_fit = model.fit()

我的數據框將日期時間列作為索引,而 y 列具有浮點值。 當我在這個數據框上應用模型時。 我收到此類錯誤:

索引錯誤:列表索引超出范圍。

當我嘗試使用以下方法打印模型摘要時,會出現此錯誤:

print(model_fit.summary())

請幫我解決一下這個。 這樣我才能更好地了解ARIMA。

ARIMA(自回歸綜合移動平均)時間序列的交叉驗證 K 折交叉驗證不適用於時間序列。 相反,使用回測技術,如前行滾動窗口

自回歸的 K 折交叉驗證:雖然交叉驗證(通常)對時間序列 (ARIMA) 模型無效,但 K 折適用於自回歸,只要所考慮的模型存在不相關的錯誤,並且您已經使用Ljung Box Test ,用於時間序列用例中的 XAI(可解釋人工智能)。

有一些 Python 統計庫可以使用這些方法,這里有兩個: Python Stats TestsPython StatsModels

要獲得值的差異,您可以簡單地使用Python 3.6+ PEP 487 Descriptors強制執行 int8,您可以在其中強制執行始終返回 int8 的類型列表,以加快計算速度(list : list -> list of ints)

list_a = [1,2,3]
list_b = [2,3]
print(set(list_a).difference(set(list_b)))
`answer is` set([1])

至於解釋 ARIMA 模型,我只能參考你

https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average

關於您在調用model_fit.summary()時收到的問題,我認為這是因為order=(0,1,0) 模型沒有pq參數來僅估計常數差異。

如果您運行以下代碼,您可以看到常數差異只是差異值的平均值:

#differences in forecasted values
pd.Series(model_fit.forecast(steps=10)[0]).diff(1)

#results
#0              NaN
#1    107904.396563
#2    107904.396563
#3    107904.396563
#4    107904.396563

#mean of the original time series differenced once
model_fit.model.endog.mean()
#107904.3965625

當您將其更改為order=(0,1,1)order=(1,1,0) ,摘要將打印得很好,但這當然是一個不同的模型,並且對隨機過程如何演變做出不同的假設時間。

當使用 ADf stat 為您的模型生成 ARIMA 模型摘要時,您應該注意 ADF 檢驗、臨界值和 p 值以幫助您獲得洞察力。

當您的臨界值小於您的 ADF 統計數據時,您最有可能擁有非平穩系列,即您的系列顯示季節性或某種趨勢。 然后接下來要注意的是您的 p 值; 如果它小於值 0.05,那么您的系列無疑是平穩的,否則它是季節性的。

至於你的 IndexError ,我覺得這是因為你沒有為你的模型提供滯后值,你的模型基於從殘差圖和 acf 圖中獲得的觀察結果。 或者您可以嘗試使用 (1,0,0) 或 (1,1,0) 的簡單模型。 希望有幫助!

暫無
暫無

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

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