Stata时间序列滚动预测



我是Stata的新手,对它的命令语言有一个问题。我想用我的ARIMA模型来预测,即使用x[t], x[t-1]…产生一个估计xhat[t+1],然后向前滚动一个时间步,以进行下一个预测,每N个时间步重建模型。

它可以复制代码,类似于下面的T, T+1, T+2等代码:

arima x if t<=T, arima(2,0,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

提供了预测和观察都可用的输出。日期差了一步,但更容易留到后期处理。

最新更新