Verschiedene Möglichkeiten, Interaktionsbegriffe in lm zu schreiben?

42

Ich habe eine Frage, wie eine Interaktion in einem Regressionsmodell am besten spezifiziert werden kann. Betrachten Sie die folgenden Daten:

d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
     class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L, 
     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
     1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
    .Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"), 
     y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
     15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
     25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
     31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
     41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
     49.247505535468)), .Names = c("r","s", "rs", "y"), 
     row.names = c(NA, -20L), class = "data.frame")

Es gibt zwei äquivalente Möglichkeiten, das Modell mit Interaktionen anzugeben:

lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

Meine Frage ist, ob ich die Interaktion unter Berücksichtigung einer neuen Variablen (rs) mit denselben Interaktionsebenen spezifizieren könnte:

lm2 <- lm(y ~ r + s + rs, data=d)

Welche Vor- und Nachteile hat dieser Ansatz? Und warum sind die Ergebnisse dieser beiden Ansätze unterschiedlich?

summary(lm1)

lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          3.82     2.07  
rr2:ss2      4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87


summary(lm2)

lm(formula = y ~ r + s + rs, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87
Manuel Ramón
quelle
Du meinst das rsist definiert als interaction(r, s)?
chl
Vielleicht könnten Sie uns den Code zeigen, der rsr1s2 erstellt hat?
Bogenschütze
Der rs-Faktor wurde manuell definiert (einfach die Faktoren r und s einfügen). Siehe Datensatz.
Manuel Ramón
1
Ich denke , die Art und Weise in den Variablen in Beziehung stehen relationated siehe attr(terms(lm1),"factors")undattr(terms(lm2),"factors")
wurmte

Antworten:

8

Die Ergebnisse sind unterschiedlich, da sich die Art und Weise, wie ich das Modell mit der Interaktion einrichte, von der Art und Weise unterscheidet, wie es eingerichtet wird, wenn Sie es selbst einrichten. Wenn Sie sich den Rest sd ansehen, ist er derselbe, was darauf hinweist (nicht definitiv), dass die zugrunde liegenden Modelle gleich sind, nur ausgedrückt (in Bezug auf die lm-Interna) unterschiedlich.

Wenn Sie Ihre Interaktion paste(d$s, d$r)anstelle paste(d$r, d$s)Ihrer Parameterschätzungen definieren, ändern sich diese auf interessante Weise erneut.

Beachten Sie, dass in Ihrer Modellzusammenfassung für lm1 die Koeffizientenschätzung für ss2 4,94 niedriger ist als in der Zusammenfassung für lm2, wobei der Koeffizient für rr2: ss2 4,95 beträgt (wenn Sie auf 3 Dezimalstellen drucken, verschwindet die Differenz). Dies ist ein weiterer Hinweis darauf, dass eine interne Umstellung von Begriffen stattgefunden hat.

Ich kann mir keinen Vorteil vorstellen, es selbst zu tun, aber es kann eines mit komplexeren Modellen geben, bei denen Sie keinen vollständigen Interaktionsbegriff wünschen, sondern nur einige der Begriffe im "Kreuz" zwischen zwei oder mehr Faktoren.

Bogenschütze
quelle
Der einzige Vorteil, den ich sehe, um die Interaktionen wie in lm2 zu definieren, ist, dass es einfach ist, mehrere Vergleiche für den Interaktionsterm durchzuführen. Was ich nicht ganz verstehe, ist, warum unterschiedliche Ergebnisse erzielt werden, wenn es im Prinzip so aussieht, als ob die beiden Ansätze gleich sind.
Manuel Ramón
5
x1,x2(1,x1,x2,x1x2)(x1,x2,x1x2,(1x1)(1x2)
Daher sind beide Ansätze korrekt, obwohl sie unterschiedlich sind, nicht wahr?
Manuel Ramón
Richtig. Mathematisch sind die Matrizen unabhängiger Variablen in den verschiedenen Formulierungen nur lineare Transformationen voneinander, sodass die Parameterschätzungen eines Modells aus den Parameterschätzungen eines anderen berechnet werden können, wenn bekannt ist, wie die beiden Modelle tatsächlich erstellt wurden.
Jbowman
9

Sie können dieses Verhalten besser verstehen, wenn Sie sich die Modellmatrizen ansehen.

 model.matrix(lm1 <- lm(y ~ r*s, data=d))
 model.matrix(lm2 <- lm(y ~ r + s + rs, data=d))

Wenn Sie sich diese Matrizen ansehen, können Sie die Konstellationen s2=1mit den anderen Variablen vergleichen (dh wann s2=1, welche Werte nehmen die anderen Variablen an?). Sie werden feststellen, dass sich diese Konstellationen geringfügig unterscheiden, was lediglich bedeutet, dass die Basiskategorie unterschiedlich ist. Alles andere ist im Wesentlichen gleich. Beachten Sie insbesondere, dass in Ihrem lm1der Koeffizient on ss2gleich den Koeffizienten ss2+rsr1s2von lm23,82 = 8,76-4,95 ist, abzüglich der Rundungsfehler.

Wenn Sie beispielsweise den folgenden Code ausführen, erhalten Sie genau die gleiche Ausgabe wie bei der automatischen Einstellung von R:

  d$rs <- relevel(d$rs, "r1s1")
  summary(lm1 <- lm(y~ factor(r) + factor(s) + factor(rs), data=d))

Dies bietet auch eine schnelle Antwort auf Ihre Frage: Der einzige Grund, die Art und Weise, wie Faktoren eingerichtet werden, zu ändern, ist die Klarheit der Darstellung. Stellen Sie sich das folgende Beispiel vor: Angenommen, Sie regeln den Lohn für einen Dummy für den Abschluss der Highschool mit einem Faktor, der angibt, ob Sie einer Minderheit angehören.

wage=α+β edu+γ eduminority+ϵ

ββ+γ

coffeinjunky
quelle