線形回帰+交絡因子


8

交絡因子Zによって調整された結果Yと変数Xの間の効果サイズと有意性にアクセスしたいとします。

私の質問は、以下のシナリオ間でXの効果サイズと有意性を決定するための違いがある場合です。

  1. 変数と交絡因子を線形回帰モデルにまとめます。これは、Y〜X + Zの回帰モデルをちょうど当てはめて、係数とXの p値を計算することを意味します。
  2. 残留、取得RからY〜Zを、そしてその後の適合回帰モデルR〜Xは、その後、係数のそのp値を算出X(R〜Xからの)。

ここから交絡者を学びます

編集-----

@Gordon Smythの回答に感謝します。ただし、シミュレーション調査(以下のコード)から、メソッド1、メソッド2、およびゴードンスミスの回答のメソッド3の誤検出率を比較したところ、驚くことに、メソッド2の誤検出率がかなり低いことがわかりました。

方法1は「教科書」として正しいことを理解しています。論理的にmethod2の何が問題なのでしょうか?その上、「すべてのモデルが間違っていますが、一部は便利です」。

p1 = p2 = p3 = c()
i=0
while(i<10000){
  y = rnorm(10)
  x = rnorm(10)
  c = rnorm(10)


  # method 1
  p1[i] = summary(lm(y~x + c))$coefficients[2,4]
  # method 2
  p2[i] = summary(lm(lm(y ~ c)$res ~ x))$coefficients[2,4]
  # method 3
  p3[i] = summary(lm(lm(y ~ c)$res~lm(x ~ c)$res))$coefficients[2,4]


  i = i+1
}


# number of false positive.
sum(p1<0.05) # 484
sum(p2<0.05) # 450
sum(p3<0.05) # 623

1
3つの方法が1年前の私の回答で行ったと私が言ったことを実行していることに驚かれる理由がはっきりしません。方法2は保守的(これはあなたが見つけたものです)であり、方法3は反保守的(これもまたあなたが見つけたものです)であることを私はあなたに言いました。とにかく、方法2の実際の問題は、XとZが相互に相関している場合とYに相関している場合にのみ現れます。これについて詳しく説明するために、ここで答えを拡張しました。次に、方法2の深刻さを示す数値例を示します。
ゴードンスミス2018年

回答:


13

交絡因子に対してXとYを調整する必要がある

最初のアプローチ(重回帰を使用)は常に正しいです。2番目のアプローチは、あなたが述べたように正しくありませんが、わずかな変更でほぼ正しくすることができます。2番目のアプローチを正しく行うには、と両方を個別に回帰する必要があります。私は書くのが好きの回帰からの残差のためににとの回帰からの残差のためにと。は、調整した(と同じ)として解釈でき、はとして解釈できます。X Z Y Z Y Z X Z X Z Y Z Y Z R X Z X Z Y Z X ZYXZY.ZYZX.ZXZY.ZYZRX.ZX合わせて調整。その後、を後退できます。ZY.ZX.Z

この変更により、2つのアプローチは同じ回帰係数と同じ残差を与えます。ただし、2番目のアプローチでは、残余自由度がではなくとして誤って計算されます(は各変数のデータ値の数です)。その結果、検定統計量n 2 n Xn1n2nX 2番目のアプローチからの少し大きすぎ、p値は少し小さすぎます。観測が大きい場合、2つのアプローチは収束し、この違いは問題になりません。n

2番目のアプローチからの残りの自由度が正しくない理由は簡単にわかります。どちらのアプローチでも、XZの両方でが後退します。最初のアプローチは1つのステップで実行し、2番目のアプローチは2つのステップで実行します。ただし、2番目のアプローチはそのYを「忘れます」Zは、上の回帰に起因Zと無視して、この変数の自由度を減算します。YXZY.ZZ

追加された変数プロット

Y.ZX.ZYXZ

Xを調整しない場合、回帰係数を過小評価します

Y.ZXYXZY.ZXXZY.ZXXX.ZX

X1r2rXZ

数値例

YX

XZY

> set.seed(20180525)
> Z <- 10*rnorm(10)
> X <- Z+rnorm(10)
> Y <- X+Z

Y=X+ZXZ

RY.ZX.Z

> R <- Y.Z <- residuals(lm(Y~Z))
> X.Z <- residuals(lm(X~Z))

XY

> coef(lm(Y~X+Z))
(Intercept)           X           Z 
   5.62e-16    1.00e+00    1.00e+00 

X

> coef(lm(R~X.Z))
(Intercept)         X.Z 
  -6.14e-17    1.00e+00 

対照的に、方法2では、回帰係数がわずか0.01であることがわかります。

> coef(lm(R~X))
(Intercept)           X 
    0.00121     0.01170 

XZ

> 1-cor(X,Z)^2
[1] 0.0117

RX.ZYX

変数プロットを追加

RX

未修正のXを使用した不正なプロット


1
両方のアプローチが同じ回帰係数を与えることを確信していますか?それが真の場合、k個の独立変数で多重回帰を行う代わりに、単一の独立変数でk個の回帰を行い、まったく同じ結果をより速く得ることができます。
Tomek Tarczynski 2017年

1
私はおそらく何かを逃している。これをシミュレートしようとすると、Xの係数が異なります。Rコードは以下に設定されています。seed(1234)k <-100 x <-runif(k)z <-x + runif(k)y <-5 * x-3 * z + runif(k)#x係数5.1252 lm(y〜x + z)モデル<-lm(y〜z)res <-model $ residuals #x係数2.82 model2 <-lm(res〜x)
Tomek Tarczynski 2017年

1
XZ

こんにちはゴードン、自由度の問題以外の2番目のアプローチに問題はありますか?例:ロジックに関して?
WCMC 2017

こんにちはゴードン、質問を編集しました。お時間がありましたらご覧いただければ幸いです。
WCMC、2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.