Stata で段階的な回帰をブートストラップし、ブートストラップされた係数を抽出しようとしています。2 つの個別の ado ファイルがあります。sw_pbs はユーザーが使用するコマンドで、ヘルパー コマンド sw_pbs_simulator を呼び出します。
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
モデルに含まれていない係数が常にデータ セットにドットとして表示されるようにし、その後のシミュレーションが最初のシミュレーションに依存しているように見えないようにしたいと考えています。