我想引導Stata中的逐步迴歸並提取引導係數。我有兩個單獨的ado文件。 sw_pbs是用戶使用的命令,它調用helper命令sw_pbs_simulator。在Stata中引導逐步迴歸
program define sw_pbs, rclass
syntax varlist, [reps(integer 100)]
simulate _b, reps(`reps') : sw_pbs_simulator `varlist'
end
program define sw_pbs_simulator, rclass
syntax varlist
local depvar : word 1 of `varlist'
local indepvar : list varlist - depvar
reg `depvar' `indepvar'
local rmse = e(rmse)
matrix b_matrix = e(b)'
gen col_of_ones = 1
mkmat `indepvar' col_of_ones, mat(x_matrix)
gen errs = rnormal(0, `rmse')
mkmat errs, mat(e_matrix)
matrix y = x_matrix * b_matrix + e_matrix
svmat y
sw reg y `indepvar', pr(0.10) pe(0.05)
drop col_of_ones errs y
end
輸出是自舉係數的數據集。我的問題是輸出似乎取決於第一次逐步迴歸模擬的結果。例如,如果我有獨立變量var1 var2 var3 var4,並且第一個逐步模擬僅包含模型中的var1和var2,則只有var1和var2將出現在後續模型中。如果第一次模擬包含var1 var2和var3,則只有var1 var2和var3將出現在後續模型中,假設它們很重要(如果不是它們的係數將顯示爲點)。
例如,不正確的輸出顯示在下面。如果它們不出現在第一次模擬中,那麼變量lweight,age,lbph,svi,gleason和pgg45就不會出現。
_b_lweight _b_age _b_lbph _b_svi _b_lcp _b_gleason _b_pgg45 _b_lpsa
.4064831 .5390302
.2298697 .5591789
.2829061 .6279869
.5384691 .6027049
.3157105 .5523808
我想不包含在模型中始終顯示爲數據集中點的係數,我想以後的模擬,以不看似依賴於第一仿真。
可以說,代替缺失值,你應該考慮設置從逐步迴歸中退出的係數爲零。其他模型選擇方法(如套索)明確地執行此操作。零是迴歸係數的一個有效值,它給出了與由'sw'維持的係數相同的擬合值,這是從統計角度來看的一個有趣和有缺陷的方法。但是,這是關於簡歷討論的一點,而不是如此:)。 – StasK