[英]Calculate and compare coefficient estimates from a regression interaction for each group
A)我感興趣的是連續變量( Var1
)對連續因變量( DV
)的影響,條件是四個不同的組,由兩個雙變量變量( Dummy1
和Dummy2
)定義。 因此,我進行了三方互動。
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)
我想比較各組之間Var1
系數。 我相信,這可以通過累加相關系數來實現。
# Group Dummy1 = 0 & Dummy 2 = 0:
fit$coefficients[Var1]
# Group Dummy1 = 1 & Dummy 2 = 0:
fit$coefficients[Var1] + fit$coefficients[Var1:Dummy1]
然而,這似乎過於艱巨,容易出錯。 什么是更有效的解決方案?
我想要的輸出是Var1
對Dummy1
和Dummy2
每種可能組合的估計效果。
B)一旦我知道每組的Var1
的估計效果大小,我如何測試任何兩個在統計上是否彼此不同? 我假設linearHypothesis()
函數可以提供幫助,但我無法弄清楚如何。 謝謝!
完全交互的模型相當於對每個數據子集運行回歸,因此如果您的意圖確實如此:
我想要的輸出是Var1對Dummy1和Dummy2的每種可能組合的估計效果。
然后以下可能會有所幫助:
# 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)
首先,請注意
fit <- lm(DV ~ Var1*Dummy1*Dummy2)
fit$coefficients["Var1"]
Var1
2.049678
fit$coefficients["Var1"] + fit$coefficients["Var1:Dummy1"]
Var1
2.993598
現在,讓我們估算每組組合的效果:
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
這里的截距對應於由兩個虛擬變量跨越的每個組中的平均值(與從完全相互作用的回歸模型得到的平均值與總體平均值的差值相對),並且Var1
對應於每組中的斜率系數,這是Var1
對Dummy1
和Dummy2
每種可能組合的估計效果。
注意一對一對應的系數的Var1
在fit
,並在第2行所估計的系數,以及該值Var1
行6對應於值在Var1 + Var1:Dummy1
。 因此,您可以看到使用此方法,您無需手動添加變量。
要測試所有組的斜率系數是否相同,您的初始回歸模型最適合。 您只需檢查summary(fit)
並查看交互條件是否重要。 如果是,那就有區別了。 如果不是,那就沒有區別了。 這將對應於順序測試。 要進行同步測試,您可以使用F測試,如
library(car)
linearHypothesis(fit, c("Var1:Dummy1", "Var1:Dummy2", "Var1:Dummy1:Dummy2"),
verbose=T, test="F")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.