2016-02-27 91 views
0

我想在Stata中创建一个循环。我为数据运行模型< =年和< =季度。然后预测一年展望。这就是模型在循环中的所有时间点运行,而预测在下一个季度出现样本。所以我的问题是我如何处理,这样,当yridx = 2000,QTR = 4,下一个季度内环路展望将是年= 2005年和年= 1Stata周期循环

foreach yridx of numlist 2000/2012 { 
forvalues qtridx = 1/4 { 

regress Y X if year <= yridx and qtr <= qtridx 
predict 
} 
} 

回答

1

听起来好像就季度日期而言,工作会更容易。以下是执行此操作的几种方法之一。

gen qdate = yq(year, qtridx) 
forval m = `=yq(2000,1)'/`=yq(2012, 4)' { 
    regress Y X if qdate <= `m' 
    predict <whatever> 
} 
+0

这样做,并且比我的方法更清洁!非常感谢。有一个小错字'forvalues m ='= yq(2000,1)'/'= yq(2012,4)'{}'..我遇到的一个后续问题是如果我在循环内部增加m,我称之为'm'+ 1的方式是否正确? 'gen qdate = yq(year,qtridx) forval m ='= yq(2000,1)'/'= yq(2012,4)'{ '如果qdate <='m'+ 1 }则退步YX' – rajvijay

+0

错字固定;感谢那。你不应该试图在循环内部实现循环计数器。没有什么能够阻止其他操作,比如'本地M = \'m'+ 1'。 –