3

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

モデルに含まれていない係数が常にデータ セットにドットとして表示されるようにし、その後のシミュレーションが最初のシミュレーションに依存しているように見えないようにしたいと考えています。

4

1 に答える 1