我目前正在处理难熬非常小的数据集(20个观察,我知道这是可怕的)。 但是,我需要以某种方式预测出的值。 当我只是回归时间对因变量,我能得到一个预测,但是当我添加或滞后变量求差不预测超过一年的未来。 这是由于有过一些意见?
这里是我的上下文代码。 这两条线都在本发明的数据更好的拟合预测注释掉结果,但只生成一个将来预测。
use "scrappage.dta", clear
drop if year == 1993
tsappend, add(12)
tsset year, y
reg scrappagerate year
*reg scrappagerate year l.scrappagerate l2.scrappagerate
*reg scrappagerate year d.scrappagerate d2.scrappagerate
predict p
predict yp if year>year(2013)
tsline yp p scrappagerate
很抱歉,如果这是一个愚蠢的问题,这是采用Stata预测值我的第一次。
看看这里的答案和解释。 从本质上讲,你可以使用arima
估计没有AR或MA组件模型(这应该是等同于OLS reg
),并创建动态/递归的预测:
arima y L(1/2).y, hessian
predict y_dynhat, dyn(tm(2011m2)))
只需更换2011平方米与任何地方你观察到的Y实际每月最后日期。 黑森州选项将强制标准误差更紧密地匹配OLS。
你可以考虑在你的数据的统计信息的网站 ,看看乡亲们有更好的造型建议,OLS。
这是你的问题:
你只获得一个预测的原因无关与预测功能,但您的数据的性质。 比方说,你有N
意见。 在你的情况,你所用tsappend, add(12)
使得它让你有N+12
的意见。 而你l1.y
滞后变量将向下进行到N+1
个行。
塔塔的predict
功能将预测所有非缺失的数据,其中有可用的预测。 因此,由于你的独立变量, l1.y
是在填充N + 1
行中,将的Stata预测观察。 (同样, predict
将无法预测第一观察,因为你的滞后预测将会丢失。)
这里是您的解决方案:
为了在Stata使用OLS回归以获得动态预测,则需要此喂N+1
个预测到的X矩阵和使用回归系数矩阵来预测N+2
观察。 然后迭代。
* Example of how to do dynamic prediction using OLS regression and lagged variables
clear
set obs 12
gen time = _n
gen y = rnormal(100,100)
tsset time
tsappend, add(12)
gen y_lag1 = l1.y
* Establish the regression relationship and save the coefficients
regress y y_lag1
matrix a = r(table)'
matrix beta = a[1..2,1]
* Predict the N+1 value (notice you have y_lag1 in the 13th row)
predict yhat
* Predict the next values
local lag = 1
forval i = 14/24 {
local last_y = yhat[`i'-`lag']
matrix xinput = [`last_y',1]
* Estimate the next sales
matrix next_y = xinput*beta
replace yhat = next_y[1,1] in `i'
}
这相较于使用ARIMA模型(按照Dimitriy五Masterov的评论),你会得到几乎相同的结果。
arima y l1.y
predict yhat_ar, dyn(13)
文章来源: How to get Stata to produce a dynamic forecast when using lagged outcome as a regressor?