読者です 読者をやめる 読者になる 読者になる

傾向スコアと多重共線性

傾向スコアの推定には、全ての交絡因子によってスコアを推定しなければならないという条件がある。
傾向スコアの推定に全ての交絡因子をつっこんだときに、交絡因子間に多重共線性が生じていても問題ないの?と疑問に思った。
私の近くにいる人に質問したところ、傾向スコアの推定にバイアスは入らないので大丈夫だと即答していた。
一応シミュレーションして確認?

dm 'log; clear; output; clear';
options spool mprint linesize = 120 pagesize = 300;

%macro sim_prop(rep, multicollinearity, seed);
proc datasets kill lib = work;
%do i = 1 %to &rep;
data test;
  %if "&seed" ^= "" %then call streaminit(&seed);
  do i = 1 to 1500;
    x1 = rand('binom', 0.3, 1);
    %if &multicollinearity = 1 %then
        x2 = mod(floor(x1 + 1.05 * rand('beta', 1, 1)), 2);
    %else x2 = rand('binom', 0.3, 1); ;
    x3 = rand('normal', 1) * 5;
    %if &multicollinearity = 1 %then
        x4 = x3 + rand('normal', 1);
    %else x4 = rand('normal', 1) * 5; ;
    p = 1 / (1 + exp(3 * x1 + 3 * x2 + 1 * x3 + 1 * x4));
    y = rand('binom', p, 1);
    output;
  end;
proc logistic data = test outest = output(keep=x1-x4) noprint;
  model y = x1 x2 x3 x4;
proc append base = stat data = output;
%end;
proc means data = stat; run;
%mend sim_prop;

/* 多重共線性あり */
%sim_prop(1000, 1);

/* 多重共線性なし */
%sim_prop(1000, 0);

考えてたのはロジスティックモデルだったので上のような感じに作った。
シミュレーションデータは、(x1, x2)間、(x3, x4)間の相関係数が高くなるように設定。
上の条件(モデルとパラメータ設定、サンプルサイズなど)の下では、平均的にみれば多重共線性があっても推定値に問題はなさそう。
でも標準誤差とかは結構高いんだが大丈夫なのだろうか。
この分野に関しては素人なので何とも言いがたいが、中間変数(intermediate variable)が入るとやばいとかその辺の問題なんじゃないかなぁと。
使うことがあったらちゃんと調べよう。