2016-02-27 92 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'。 –