如何解决循环只附加第一个预测
我的前向验证循环有问题。
我使用的是 ARMA-GARCH 模型。
我想将所有 h+1 预测存储在我的测试集上,但我的循环只是覆盖了第一个预测 n 次。相反,我希望通过我的测试集进行前瞻预测。
在这里我导入我的数据,我定义了一个测试和一个训练集,我选择了我的 ARMA 和 GARCH 规范:
X = dfw['PC'].values
size = int(len(X) * 0.8)
train,test = X[0:size],X[size:len(X)]
history = [x for x in train]
history = pd.DataFrame(history)
meanMdl = ag.ARMA(order = {'AR':1,'MA':0})
volMdl = ag.garch(order = {'p':1,'q':1})
distMdl = ag.normalDist()
然后我的向前验证循环是这样的:
predictions = list()
# walk-forward validation
for t in range(len(test)):
model = ag.empModel(history,meanMdl,volMdl,distMdl)
model_fit = model.fit()
output = model.predict(nsteps = 1)
yhat = output[0]
predictions.append(yhat)
obs = test[t]
history.append(pd.Series(obs),ignore_index=True)
代码有效,但它只是重新运行第一个估计/预测并在 DF 中附加相同的预测,如下所示:
Time Forecast
t+1 0.03
t+2 0.03
t+3 0.03
t+4 0.03
t+5 0.03
...
t+n 0.03
如果有人能指出问题,我将不胜感激,因为我已经浪费了很多时间试图解决它。我是 Python 初学者,我相信它很简单。
非常感谢。 H.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。