我有一个宏观经济变量数据集。我使用stats.VAR进行模型拟合和预测。我的数据集df已按列标准化:
def main():
cwd = os.getcwd()
old = os.path.join(cwd, 'dat','prod_lf_usuk_520.xlsx')
new=old.replace('\\','/')
myList = ['UK','US']
for idx, region in enumerate(myList):
df = pd.read_excel(open(new,'rb'), sheetname = region)
df = (df - np.mean(df, axis=0))/np.std(df, axis = 0)
model = stats.VAR(df)
model.select_order(15)
results = model.fit(maxlags=15, ic='aic')
results.summary()
lag_order = results.k_ar
steps_to_forecast = 1
results.forecast(df[-lag_order:], steps_to_forecast)
一切正常,直到结果。预测线。我不断得到 * KeyError:-1或* KeyError:-2错误,无论我设置了什么lag_order和steps_to_forecast值。换句话说,results.forecast(df [-1],1])或results.forecast(df [-4],1)或results.forecast(df [-3],2)得到了相同的错误。
我是Python的新手,无法找到解决方案。有人经验过stats.VAR会给我一些灯吗?
提前多多谢谢!
答案 0 :(得分:-1)
我也遇到了同样的问题。解决方法是使用:
df.values[-k:]
k
我指的是您在训练 VAR 模型时使用的 AR 的订单 p。因此,假设您有一个训练集和一个测试集数据。这里的 -k
将是训练集中从最后开始的 k 行数,之后是测试集。