Warum unterscheiden sich einige Regressionsschätzungen durch einen Vorzeichenwechsel, andere jedoch nicht, wenn ich den Referenzwert ändere?


8

Angenommen, ich habe ein kontinuierliches Ergebnis yund zwei faktorielle Prädiktoren mit jeweils zwei Ebenen. Einer meiner kategorialen Prädiktoren drugkann zwei Ebenen haben ("A" oder "B"), der andere ist smokeYes. Wenn ich ein Regressionsmodell ausführe, kann ich die Basislinie oder den Referenzpegel drugentweder als "A" auswählen , wie in model1:

set.seed(123)
y<-rnorm(100, 100, 10)
drug.ab<-factor(sample(c("A", "B"), 100, T), levels=c("A", "B"))
drug.ba<-factor(drug.ab, levels=c("B", "A"))
smoke<-factor(sample(c("Yes", "No"), 100, T), levels=c("No", "Yes"))

#model1:
coef(summary(lm(y~drug.ab*smoke)))
                     Estimate Std. Error    t value     Pr(>|t|)
(Intercept)       100.7484158   2.065091 48.7864379 1.465848e-69
drug.abB            0.9030541   2.796146  0.3229639 7.474250e-01
smokeYes           -0.8693598   2.632484 -0.3302431 7.419359e-01
drug.abB:smokeYes   0.8709116   3.746684  0.2324487 8.166844e-01

Oder ich kann die Grundlinie auf "B" setzen, wie ich es in model2:

#model2:
coef(summary(lm(y~drug.ba*smoke)))
                       Estimate Std. Error       t value     Pr(>|t|)
(Intercept)       101.651469922   1.885161 53.9218978856 1.377147e-73
drug.baA           -0.903054145   2.796146 -0.3229638818 7.474250e-01
smokeYes            0.001551843   2.666021  0.0005820821 9.995368e-01
drug.baA:smokeYes  -0.870911601   3.746684 -0.2324486531 8.166844e-01

Meine Frage ist, warum sich die Schätzung für smokeYeszwischen model1und unterscheidet model2. Warum unterscheidet es sich nicht durch einen Vorzeichenwechsel drug.baAund den Interaktionsbegriff?


3
Suchen Sie nach einer guten Erklärung für den Behandlungskontrast. Kurz gesagt, wenn Sie die Vorhersage für Droge B und Rauch berechnenJa: (mod1) 100,75 + 0,90 - 0,87 + 0,87 = 101,65 | (mod2) 101,65 + 0,00 = 101,65
Roland

Ich dachte, es wäre wohl ein Thema für SO, als ich dort die doppelte Frage sah, da es eine sehr einfache R-Codezeile gibt, die alle Gruppenmittel berechnet : tapply( y, interaction( drug.ab, smoke) ,mean). Eine ausführlichere Erklärung könnte darin bestehen, den Unterschied zwischen Behandlungskontrasten und Summenkontrasten aufzuzeigen.
DWin

@Dwin, trotz der beiden bereits veröffentlichten Antworten denke ich, dass es sicherlich Raum für eine weitere Antwort gibt, die sich genau mit Kontrastfragen befasst. Ich hoffe, dass jemand eine Antwort auf diese Weise veröffentlicht.
Silverfish

Antworten:


8

Lassen Sie mich ein einfaches Beispiel für Sie zusammenstellen, um das Konzept zu erläutern. Dann können wir es anhand Ihrer Koeffizienten überprüfen.

Beachten Sie, dass Sie Ihrem Modell durch die Einbeziehung sowohl der Dummy-Variablen "A / B" als auch des Interaktionsterms effektiv die Flexibilität geben, einen anderen Achsenabschnitt (unter Verwendung des Dummys) und eine andere Steigung (unter Verwendung der Interaktion) an die "A" -Daten und anzupassen die "B" -Daten. Im Folgenden spielt es wirklich keine Rolle, ob der andere Prädiktor eine kontinuierliche Variable oder, wie in Ihrem Fall, eine andere Dummy-Variable ist. Wenn ich von "Achsenabschnitt" und "Steigung" spreche, kann dies als "Pegel, wenn der Dummy Null ist" und "Pegeländerung, wenn der Dummy von 0 auf 1 geändert wird" interpretiert werden, wenn Sie dies bevorzugen.x01

Angenommen , die OLS angepassten Modell auf den "A" Daten allein ist y = 12 + 5 x und an den "B" Daten allein ist y = 11 + 7 x . Die Daten könnten folgendermaßen aussehen:y^=12+5xy^=11+7x

Streudiagramm für zwei Gruppen

Nehmen wir nun an, wir nehmen "A" als Referenzniveau und verwenden eine Dummy-Variable so dass b = 1 für Beobachtungen in Gruppe B, aber b = 0 in Gruppe A. Das angepasste Modell für den gesamten Datensatz istbb=1b=0

y^i=β^0+β^1xi+β^2bi+β^3xibi

y^i=β^0+β^1xiβ^0=12β^1=5y^i=(β^0+β^2)+(β^1+β^3)xiβ^0+β^2=11β^1+β^3=7β^0=12β^1=5β^2=1β^3=2

y^i=12+5xi1bi+2xibi

a

y^i=11+7xi+1ai2xiai

117


Vergleichen wir das mit Ihrer Ausgabe. In einer ähnlichen Notation wie oben lautet Ihr erstes angepasstes Modell mit der Grundlinie "A":

y^i=100.7484158+0.9030541bi0.8693598xi+0.8709116xibi

Ihr zweites Modell mit der Grundlinie "B" ist:

y^i=101.6514699220.903054145ai+0.001551843xi0.870911601xiai

bi=1ai

y^i=100.7484158+0.9030541(1ai)0.8693598xi+0.8709116xi(1ai)

Dies vereinfacht zu:

y^i=(100.7484158+0.9030541)0.9030541ai+(0.8693598+0.8709116)xi0.8709116xiai

Ein kurzes bisschen Arithmetik bestätigt, dass dies dasselbe ist wie das zweite angepasste Modell. außerdem sollte jetzt klar sein, welche Koeffizienten in Vorzeichen vertauscht wurden und welche Koeffizienten einfach an die andere Basislinie angepasst wurden!

y^i=100.74841580.8693598xiy^i=101.651469922+0.001551843xibi=1ai=1

x=0x=1x=0x=1xxy^

y^

#Make data set with desired conditional means
data.df <- data.frame(
  x = c(0,0,0,        1,1,1,        0,0,0,        1,1,1),
  b = c(0,0,0,        0,0,0,        1,1,1,        1,1,1),
  y = c(11.8,12,12.2, 16.8,17,17.2, 10.8,11,11.2, 17.8,18,18.2)
)
data.df$a <- 1 - data.df$b

baselineA.lm <- lm(y ~ x * b, data.df)
summary(baselineA.lm) #check this matches y = 12 + 5x - 1b + 2xb

baselineB.lm <- lm(y ~ x * a, data.df)
summary(baselineB.lm) #check this matches y = 11 + 7x + 1a - 2xa

fitted(baselineA.lm)
fitted(baselineB.lm) #check the two models give the same fitted values for y...
with(data.df, tapply(y, interaction(x, b), mean)) #...which are the group sample means

colorSet <- c("red", "blue")
symbolSet <- c(19,17)
with(data.df, plot(x, y, yaxt="n", col=colorSet[b+1], pch=symbolSet[b+1],
                   main="Response y against other predictor x",
                   panel.first = {
                     axis(2, at=10:20)
                     abline(h = 10:20, col="gray70")
                     abline(v = 0:1,  col="gray70")
                   }))
abline(lm(y ~ x, data.df[data.df$b==0,]), col=colorSet[1])
abline(lm(y ~ x, data.df[data.df$b==1,]), col=colorSet[2])
legend(0.1, 17, c("Group A", "Group B"), col = colorSet,
       pch = symbolSet, bg = "gray95")

Ja, tolle Erklärung, also werde ich dafür stimmen!
JonB

x

3

Das hat damit zu tun, wie der Achsenabschnitt definiert ist. Im ersten Beispiel wird der Achsenabschnitt als diejenigen definiert, die nicht rauchen und Drogen A haben. Die Raucher, die auch Drogen A haben, haben einen Wert von 100,75 - 0,87 = 99,9, während die Raucher, die Drogen B haben, a haben Wert von 100,75 + 0,90 - 0,87 + 0,87 = 101,65.

Im zweiten Beispiel wird der Achsenabschnitt als diejenigen definiert, die nicht rauchen und Droge B haben. Raucher mit Droge B haben dann einen Wert von 101,65 + 0,001 = 101,65, und Raucher mit Droge A haben einen Wert von 100,65 - 0,90 + 0,001-0,87 = 99,9.

Alles fügt sich also hinzu, es kommt nur darauf an, wie der Achsenabschnitt definiert ist, dh auf welcher Ebene alle Faktoren auf die Referenzkategorie eingestellt sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.