2016-08-20 204 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方法即可。