Lineare Regression + Confounder

8

Angenommen, ich würde gerne auf die Effektgröße und Signifikanz zwischen Ergebnis Y und Variable X zugreifen, die durch den Confounder Z angepasst wurden .

Meine Frage ist, ob es einen Unterschied gibt, um die Effektgröße und Signifikanz von X zwischen dem folgenden Szenario zu bestimmen .

  1. Setzen Sie Variable und Confounder in einem linearen Regressionsmodell zusammen. Dies bedeutet, dass Sie einfach das Regressionsmodell von Y ~ X + Z anpassen und dann den Koeffizienten und seinen p-Wert von X berechnen .
  2. Ermitteln Sie den Rest R aus Y ~ Z und passen Sie dann das Regressionsmodell von R ~ X an . Berechnen Sie dann den Koeffizienten und seinen p-Wert von X (aus R ~ X).

Ich lerne den Confounder von hier .

Bearbeiten -----

Ich schätze die Antwort von @Gordon Smyth. In einer Simulationsstudie (Code unten), in der ich die Falschentdeckungsrate von Methode1, Methode2 und Methode3 aus Gordon Smyths Antwort verglichen habe, stellte ich überraschenderweise fest, dass Methode2 eine ziemlich niedrige Falsch-Positiv-Rate aufweist.

Ich verstehe, dass Methode 1 "Lehrbuch" korrekt ist. Ich frage mich, was genau mit der Methode2 logisch falsch ist. Außerdem "Alle Modelle sind falsch, aber einige sind nützlich".

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
WCMC
quelle
1
Ich bin mir nicht sicher, warum Sie überrascht sind, dass die drei Methoden das tun, was ich Ihnen in meiner Antwort vor einem Jahr gesagt habe. Ich habe Ihnen gesagt, dass Methode 2 konservativ wäre (was Sie gefunden haben) und dass Methode 3 anti-konservativ wäre (was Sie wiederum gefunden haben). Wie auch immer, das eigentliche Problem mit Ihrer Methode 2 tritt nur auf, wenn X und Z sowohl miteinander als auch mit Y korreliert sind. Ich habe meine Antwort jetzt erweitert, um zu erklären, dass dies detaillierter ist. Ich gebe jetzt ein numerisches Beispiel, das zeigt, wie ernsthaft schlecht Methode 2 sein kann.
Gordon Smyth

Antworten:

13

Sie müssen sowohl X als auch Y für den Confounder anpassen

Der erste Ansatz (unter Verwendung multipler Regression) ist immer korrekt. Ihr zweiter Ansatz ist nicht korrekt, wie Sie es angegeben haben, kann aber mit einer geringfügigen Änderung nahezu korrekt gemacht werden. Um den zweiten Ansatz richtig zu machen, müssen Sie sowohl als auch X getrennt auf Z zurückführen . Ich mag schreiben Y . Z für die Reste aus der Regression von Y auf Z und X . Z für die Reste aus der Regression von X und Z . Wir können Y interpretieren . Z als Y angepasst für Z (wie IhrYXZY.ZYZX.ZXZY.ZYZ ) und X . Z wie X eingestellt für Z . Sie können dann Y zurückbilden . Z an X . Z .RX.ZXZY.ZX.Z

Mit dieser Änderung ergeben die beiden Ansätze den gleichen Regressionskoeffizienten und die gleichen Residuen. Der zweite Ansatz berechnet jedoch die verbleibenden Freiheitsgrade immer noch fälschlicherweise als anstelle von n - 2 (wobei n die Anzahl der Datenwerte für jede Variable ist). Infolgedessen ist die Teststatistik für X aus dem zweiten Ansatz etwas zu groß und der p-Wert ist etwas zu klein. Wenn die Anzahl der Beobachtungen n groß ist, konvergieren die beiden Ansätze und dieser Unterschied spielt keine Rolle.n1n2nXn

YXZY.ZZ

Das hinzugefügte variable Diagramm

Y.ZX.ZYXZ

Wenn Sie X nicht anpassen, unterschätzen Sie den Regressionskoeffizienten

Y.ZXYXZY.ZXXZY.ZXXX.ZX

X1r2rXZ

Ein numerisches Beispiel

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 

Im Gegensatz dazu beträgt bei Ihrer Methode 2 der Regressionskoeffizient nur 0,01:

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

XZ

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

RX.ZYX

Variabler Plot hinzugefügt

RX

Falscher Plot mit unkorrigiertem X.

Gordon Smyth
quelle
1
Sind Sie sicher, dass beide Ansätze dieselben Regressionskoeffizienten ergeben? Wenn es wahr wäre, könnten wir anstelle einer multiplen Regression mit k unabhängigen Variablen k Regressionen mit einer einzelnen unabhängigen Variablen durchführen und genau das gleiche Ergebnis viel schneller erhalten.
Tomek Tarczynski
1
Mir fehlt wahrscheinlich etwas. Wenn ich versuche, dies zu simulieren, erhalte ich einen anderen Koeffizienten für X. Der R-Code liegt unter set.seed (1234) k <- 100 x <- runif (k) z <- x + runif (k) y <- 5 * x - 3 * z + runif (k) # x Koeffizient 5,1252 lm (y ~ x + z) Modell <- lm (y ~ z) res <- Modell $ Residuen #x Koeffizient 2,82 Modell2 <- lm (res ~ x)
Tomek Tarczynski
1
XZ
Hallo Gordon, stimmt etwas mit dem zweiten Ansatz nicht, außer der Frage des Freiheitsgrades? zB In Bezug auf die Logik?
WCMC
Hallo Gordon, ich habe meine Frage bearbeitet. Ich weiß es zu schätzen, wenn Sie einen Blick darauf werfen können, wenn Sie Zeit haben.
WCMC