2013-10-27 39 views
2

我有一個下面的代碼,我試圖複製n次的估計,然後生成預測和係數供進一步使用。從stata中存儲n個重複的預測和係數

capture program drop mypro 
program define mypro 
drop _all 
sysuse auto 
bsample 
reg mpg price headroom 
mat mycoef=e(b) 
gen mypri=mycoef[1,1] 
gen myhead=mycoef[1,2] 
gen mycons=mycoef[1,3] 
predict x1b 
end 
simulate, seed(10) reps(10) nodots : mypro 

默認情況下,simulate只給出來自10個不同樣本的係數。但是,我試圖保存每個樣本數據集以及係數mpri,myhead,myconst和x1b。是否可以使用simulate或我需要使用loop

更新爲每尼克的評論:

capture program drop mypro 
program define mypro 
set seed 1 
local r=10 
forvalues i=1/`r'{ 
drop _all 
sysuse auto 
bsample 
reg mpg price headroom 
mat mycoef=e(b) 
gen mypri=mycoef[1,1] 
gen myhead=mycoef[1,3] 
predict x1b 
save data`i',replace 
} 
end 

回答

2

要調用simulate運行程序採取引導樣本得到迴歸結果。

sysuse auto 
    bootstrap : reg mpg price headroom 

是一種簡單得多的方法。查看bootstrap的文檔以瞭解更多信息。

+0

謝謝。對不起,沒有明確問題。我不僅需要這些係數,還希望每次複製的預測(而不是彙總)和採樣數據集。例如,在我的情況下,我需要10個不同的重採樣數據集以及係數和預測。這些將被用作進一步研究的輸入。 'simulate'和'bootstrap'不允許我爲每個複製提取採樣數據(用於程序內部分析)。我試過尋找'postfile',但不知道該怎麼辦。 – user227710

+0

對於任何嚴肅的模擬工作,10個聽起來都不夠充分。但我想你需要每次使用'merge'來循環調用'bsample'調用。 '模擬'對你來說是死路一條。 –

+0

謝謝。是的,10是不夠的,但我在這裏只用作演示。 'bsample'沒有允許循環的選項。你能否給出一個額外的提示,如何繼續? – user227710