2016-05-24 3 views
0

A) Ich interessiere mich für die Auswirkungen einer kontinuierlichen Variablen (Var1) auf eine kontinuierliche abhängige Variable (DV) bedingt durch vier verschiedene Gruppen, die durch zwei Bivariate definiert sind Variablen (Dummy1 und Dummy2). Ich habe also eine Drei-Wege-Interaktion.Berechnen und vergleichen Sie Koeffizientenschätzungen aus einer Regressionsinteraktion für jede Gruppe

Var1 <- sample(0:10, 100, replace = T) 
Dummy1 <- sample(c(0,1), 100, replace = T) 
Dummy2 <- sample(c(0,1), 100, replace = T) 

DV <-2*Var1 + Var1*Dummy1 + 2*Var1*Dummy2 + 10*Var1*Dummy1*Dummy2 + rnorm(100) 

fit <- lm(DV ~ Var1*Dummy1*Dummy2) 

Ich möchte Koeffizienten von Var1 zwischen den Gruppen vergleichen. Ich glaube, dies kann erreicht werden, indem man die relevanten Koeffizienten addiert.

# Group Dummy1 = 0 & Dummy 2 = 0: 
fit$coefficients[Var1] 

# Group Dummy1 = 1 & Dummy 2 = 0: 
fit$coefficients[Var1] + fit$coefficients[Var1:Dummy1] 

Noch scheint dies übermäßig mühsam und anfällig für Fehler. Was ist eine effizientere Lösung?

Meine gewünschte Ausgabe ist der geschätzte Effekt von Var1 für jede mögliche Kombination von Dummy1 und Dummy2.

B) Sobald ich die geschätzten Effektgrößen von Var1 für jede Gruppe kenne, wie kann ich testen, ob zwei statistisch voneinander verschieden sind? Ich nehme an, die linearHypothesis() Funktion könnte helfen, aber ich kann nicht herausfinden, wie. Vielen Dank!

+0

Sie müssen passen Sie $ Koeffizienten ['Var1'] 'mit den Anführungszeichen. – agenis

Antwort

2

Ein vollständig interagierten Modell entspricht eine Regression auf jeder Teilmenge der Daten zu laufen, so dass, wenn Ihre Absicht ist in der Tat:

Meine gewünschte Ausgabe ist der geschätzten Effekt von Var1 für jede mögliche Kombination von Dummy1 und Dummy2.

Dann können die folgenden hilfreich sein:

# get your data 
set.seed(42) 
Var1 <- sample(0:10, 100, replace = T) 
Dummy1 <- sample(c(0,1), 100, replace = T) 
Dummy2 <- sample(c(0,1), 100, replace = T) 
DV <-2*Var1 + Var1*Dummy1 + 2*Var1*Dummy2 + 10*Var1*Dummy1*Dummy2 + rnorm(100) 
df <- data.frame(DV, Var1, Dummy1, Dummy2) 

Zuerst beachten Sie, dass

fit <- lm(DV ~ Var1*Dummy1*Dummy2) 
fit$coefficients["Var1"] 
    Var1 
2.049678 
fit$coefficients["Var1"] + fit$coefficients["Var1:Dummy1"] 
    Var1 
2.993598 

Nun wollen wir uns die Auswirkungen für jede Gruppe Kombination schätzen:

library(dplyr) 
library(broom) 

df %>% group_by(Dummy1, Dummy2) %>% do(tidy(lm(DV ~ Var1, data=.))) 

Source: local data frame [8 x 7] 
Groups: Dummy1, Dummy2 [4] 

    Dummy1 Dummy2  term estimate std.error statistic  p.value 
    (dbl) (dbl)  (chr)  (dbl)  (dbl)  (dbl)  (dbl) 
1  0  0 (Intercept) -0.03125589 0.33880599 -0.09225307 9.272958e-01 
2  0  0  Var1 2.04967796 0.05534155 37.03687553 5.222878e-22 
3  0  1 (Intercept) -0.08877431 0.38932340 -0.22802203 8.223492e-01 
4  0  1  Var1 3.97771680 0.07046498 56.44955828 8.756108e-21 
5  1  0 (Intercept) 0.02582533 0.28189331 0.09161384 9.275272e-01 
6  1  0  Var1 2.99359832 0.04622495 64.76153226 4.902771e-38 
7  1  1 (Intercept) 0.16562985 0.55143596 0.30036100 7.675439e-01 
8  1  1  Var1 14.95581348 0.07582089 197.25189807 5.275462e-30 

Der Schnittpunkt entspricht hier den Mitteln in jedem gr oup überspannt von den beiden Dummy-Variablen (im Gegensatz zu der Differenz dieses Mittelwerts zu dem Gesamtmittelwert, den Sie aus dem vollständig interagierten Regressionsmodell erhalten), und Var1 entspricht dem Neigungskoeffizienten in jeder Gruppe, der der geschätzte Effekt von Var1 ist jede mögliche Kombination von Dummy1 und Dummy2.

Notiere die Eins-zu-Eins-Entsprechung des Koeffizienten der Var1 in fit, und die in Zeile 2, geschätzte Koeffizient sowie dass der Wert von Var1 in der Reihe 6 mit dem Wert entspricht Var1 + Var1:Dummy1. Sie können also sehen, dass Sie mit diesem Ansatz Variablen nicht manuell addieren müssen.

Um zu testen, ob der Steigungskoeffizient für alle Gruppen identisch ist, ist Ihr anfängliches Regressionsmodell am besten geeignet. Sie überprüfen einfach summary(fit) und sehen, ob die Interaktionsterme signifikant sind. Wenn sie es sind, gibt es einen Unterschied. Wenn nicht, gibt es keinen Unterschied. Dies würde einem sequentiellen Test entsprechen.Um einen simultanen Test durchzuführen, können Sie einen F-Test verwenden, wie in

Verwandte Themen