簡體   English   中英

計算並比較每個組的回歸交互的系數估計值

[英]Calculate and compare coefficient estimates from a regression interaction for each group

A)我感興趣的是連續變量( Var1 )對連續因變量( DV )的影響,條件是四個不同的組,由兩個雙變量變量( Dummy1Dummy2 )定義。 因此,我進行了三方互動。

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]

然而,這似乎過於艱巨,容易出錯。 什么是更有效的解決方案?

我想要的輸出是Var1Dummy1Dummy2每種可能組合的估計效果。

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對應於每組中的斜率系數,這是Var1Dummy1Dummy2每種可能組合的估計效果。

注意一對一對應的系數的Var1fit ,並在第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM