2016-08-20 74 views
-1

我有一個包含8個時間序列的矩陣。python時間序列迴歸

我想在時間t的值和它們在時間t-1, t-2,..., t-k的值之間建立一個模型。

讓我們假設爲了簡單的線性模型sk.linear_model.LinearRegression和時間序列爲:X=np.random.normal(0, 1, (1000, 8))

我如何編寫使用以前k值來估算X(t)代碼?我也想用估計的X(t)來預測X(t+1)

+0

到目前爲止您嘗試過什麼?請提供示例輸入和輸出片段。 – albert

+0

您的k值有多大,以及您計劃擴展系統的最後時間值有多遠? – bpachev

回答

0

簡短的回答是,如果你想用Python進行嚴格的時間序列分析,你應該使用一個特定的libaray,如statsmodels.tsa

但是,如果您堅持使用sklearn,則需要設置適合您的模型的初始訓練集。如果你用k點來預測下一個點,並且有8維時間序列,那麼你最終應該爲你的訓練集提供k * 8個特徵和8個目標。下面是具有k個組的樣品以3

import numpy as np 
k = 3 #example 
n = 1000 
num_series = 8 
raw_x = np.random.normal(0, 1, (n, num_series)) 
y = raw_x[k:] 
X = np.empty((n-k, k*num_series)) 
for i in xrange(n-k): 
    X[i] = np.ravel(raw_x[i:i+k]) 
print X.shape, y.shape 

其輸出

(997, 24) (997, 8) 

爲的特徵和標籤分別形狀,根據需要。

然後,您可以將此x和y傳遞到任何支持多個目標(包括LinearRegression)的sklearn模型。如果您想預測未來的點數,只需將適當的數據傳遞給擬合模型的predict方法即可。