簡體   English   中英

Python中Statsmodels ARIMA的多個輸入

[英]Multiple inputs into Statsmodels ARIMA in Python

我正在嘗試使用多個輸入來擬合ARIMA模型。 只要輸入是單個數組,它就可以正常工作。

在這里 ,建議我將輸入數組放入類似多維數組的結構中。 所以我做了:

import numpy as np
from statsmodels.tsa.arima_model import ARIMA

a = [1, 2, 3]
b = [4, 5, 6]

data = np.dstack([a, b])
for p in range(6):
    for d in range(2):
        for q in range(4):
            order = (p,d,q)         
            try:
                model = ARIMA(data, order=(p,d,q))
                print("this works:{}, {}, {} ".format(p,d,q))
            except:
                pass

但是,此腳本的輸出是這樣的:

   this works:0, 0, 0

顯然,出了點問題(如果p,d,q全部為0,則根本不起作用)。 有人知道我在做什么錯嗎?

我們會向我指出正確的方向的任何建議。

使用ARIMA進行建模時,您需要具有足夠的“自由度”。

因此,代碼的問題在於np.dstack生成的數組形狀為(1,3,2),這意味着它只有一個數據元素。 您至少需要6個數據元素才能運行p值為5的ARIMA模型。

數組操作示例 我使用np.vstack產生盡可能多的行。

請運行下面的代碼片段,您將了解。

import numpy as np
from statsmodels.tsa.arima_model import ARIMA

a = [1, 2]
b = [3, 4]
c = [5, 6]
d = [7, 8]

data = np.vstack([a, b, c, d])

print(data.shape)
print(data)

for p in range(4):
    for d in range(1):
        for q in range(2):
            order = (p,d,q)    
            try:
                model = ARIMA(data, order=(p,d,q))
                print("this works:{}, {}, {} ".format(p,d,q))
            except:
                print(order)
                print('reached exception')
                pass

暫無
暫無

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

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