如何解决Stata时间序列滚动预测
我是 Stata 的新手,对它的命令语言有疑问。我想使用我的 ARIMA 模型进行预测,即使用 x[t],x[t-1]... 产生一个估计值 xhat[t+1],然后向前滚动一个时间步长,进行下一次预测,每 N 个时间步重建模型。
我可以复制代码,类似于以下 T、T+1、T+2 等的代码:
arima x if t<=T,arima(2,2)
predict xhat
生成一系列 xhat 以与样本内 x 观察进行比较。在命令语言中必须有一种更自然的方法来做到这一点。任何建议,指针将不胜感激。
解决方法
发布由 Stata 技术支持提供的工作解决方案:
webuse dfex
tsset month
generate int id = _n
capture program drop forecarima
program forecarima,rclass
syntax [if]
tempvar yhat
arima unemp `if',arima(1,1,0)
local T = e(tmax)
local T1 = `T' + 1
summarize id if month == `T1'
local h = r(max)
predict `yhat',y dynamic(`T')
return scalar y = unemp[`h']
return scalar yhat = `yhat'[`h']
end
rolling unemp = r(y) unemp_hat = r(yhat),window(400) recursive ///
saving(results,replace): forecarima
use results,clear
browse
这提供了预测和观察的输出。日期相差一步,但更容易进行后期处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。