我正在使用VAR模型预测滞后2的多变量时间序列。我有三个功能,并希望预测多个时间戳。我没有预测所有这三个特征,而是实际知道其中两个特征的值,并且只想预测一个特征。
如果我想要预测所有三个功能5个时间戳,我可以按照以下方式进行操作(这是一个玩具示例):
import pandas as pd
from statsmodels.tsa.api import VAR
data=pd.DataFrame({'Date':['1959-06-01','1959-06-02','1959-06-03','1959-06-04']\
,'a':[1,2,3,5],'b':[2,3,5,8],'c':[3,4,7,11]})
data.set_index('Date', inplace=True)
model = VAR(data)
results = model.fit(2)
results.forecast(data.values[-2:], 5)
请注意data
是
a b c
Date
1959-06-01 1 2 3
1959-06-02 2 3 4
1959-06-03 3 5 7
1959-06-04 5 8 11
预测给了我
array([[ 8.01388889, 12.90277778, 17.79166667],
[ 12.93113426, 20.67650463, 28.421875 ],
[ 20.73343461, 33.12405961, 45.51468461],
[ 33.22366195, 52.98948789, 72.75531383],
[ 53.15895736, 84.72805652, 116.29715569]])
假设我知道a
的下5个值实际上应该是8,13,21,34,55
,而b
的下5个值应该是13,21,34,55,89
。有没有办法将其合并到statsmodels.tsa
(或任何其他python包)中的模型中,以仅预测c
的5个值?我知道R
有这样的选择,将“硬”条件合并到cpredict.VAR
中,但我想知道是否可以在python中完成。
以上是一个玩具示例。实际上我有几十个功能,但我仍然知道所有功能,并且只想使用VAR模型预测其中一个。
答案 0 :(得分:1)
解决此问题时,我也遇到类似的问题。这是一种临时方法,可以满足您的要求。
prediction = model_fit.forecast(model_fit.y, steps=len(test))
predictions = prediction[:,0]
` 其中projection [:,0]中的0表示包含所需预测值的列。