我有一个假设:对动车组内部的人来说,对动车组的支持比在动车组之外的人更重要。
变量如下: EMU: 1,在EMU内;0,在EMU外EU_Support: 1,支持;0,不支持
我的代码如下所示:
EB734_May_2010_model_u <- glm(trust ~ D_economy + (Support_EMU*EMU), family = binomial, data = EB734_May_2010)
如果这是测试事物假设的正确方法,有人能帮我吗?
非常感谢!
发布于 2020-09-01 21:01:41
我编造了一些假数据来帮助说明这一点。以下是数据和模型:
df <- tibble(
EMU = sample(c(0,1), 1000, prob=c(.75,.25), replace=TRUE),
Support_EMU = sample(c(0,1), 1000, replace=TRUE),
z = rnorm(1000),
eta = EMU + .25*Support_EMU + 2*Support_EMU*EMU + z,
p = plogis(eta),
y = rbinom(1000, 1, p)
)
mod <- glm(y ~ EMU*Support_EMU + z, data=df, family=binomial)
summary(mod)
# Call:
# glm(formula = y ~ EMU * Support_EMU + z, family = binomial, data = df)
#
# Deviance Residuals:
# Min 1Q Median 3Q Max
# -2.7554 -0.9769 0.3717 0.9175 2.3001
#
# Coefficients:
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -0.0601 0.1115 -0.539 0.58977
# EMU 1.3788 0.2661 5.183 2.19e-07 ***
# Support_EMU 0.3237 0.1582 2.046 0.04080 *
# z 0.9455 0.0878 10.768 < 2e-16 ***
# EMU:Support_EMU 1.4732 0.4897 3.008 0.00263 **
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# (Dispersion parameter for binomial family taken to be 1)
#
# Null deviance: 1344.4 on 999 degrees of freedom
# Residual deviance: 1090.0 on 995 degrees of freedom
# AIC: 1100
#
# Number of Fisher Scoring iterations: 5
你真正感兴趣的是评估交互的效果。你真的想要上面方程关于预测概率的第二个差。也就是说,您希望(对于E=EMU和S=Support_EMU):
Pr(y=1|E=1,S=1,z) - Pr(y=1|E=1,S=0,z)-Pr(y=1|E=0,S=1,z) -Pr(y=1|E=0,S=0,z)
另一种说法是:
E=1时的S效应- E=0时的S效应
我编写的包中的secondDiff()
函数,DAMisc
就是这样做的。它使用参数bootstrap来计算效果的置信区间。这样做的一种方法是使用“合理值的边际效应”(MER)方法,其中我们将所有未参与交互作用的变量保持在中位数。这里的结果是:
s1 <- secondDiff(mod, c("EMU", "Support_EMU"), df, method="MER")
summary(s1)
# Second Difference Using the Marginal Effect at Typical Values Approach
#
# Average Second Difference: 0.087, 95% CI: (-0.019,0.203)
这意味着,平均而言,当EMU为1时,使用MER方法将S从0更改为1的第一个概率差比EMU为0时大0.087。然而,置信区间表明,这在统计上没有显著差异。或者,您可以使用“平均边际效应”(AME)方法。在这里,我们分别计算每个观察值的第二个差异,每个观察值保持所有其他变量在数据集中的观测值。这为我们提供了第二个不同的观察结果。然后,我们将这些第二个差异的平均值作为效果。这就是它看起来的样子。
s2 <- secondDiff(mod, c("EMU", "Support_EMU"), df, method="AME")
summary(s2)
# Second Difference Using the Average Marginal Effect Approach
#
# Overall:
# Average Second Difference: 0.114, 95% CI: (0.005,0.224)
#
# Individual:
# Significant Negative Individual Second Differences: 0
# Significant Positive Individual Second Differences: 369
# Insignificant Individual Second Differences: 631
这意味着(在所有观察中)平均而言,当EMU=1为.114时,S的影响大于EMU=0时S的影响,根据置信区间,这在统计上是显着的。输出的另一部分表明,在1000秒的差异中,631秒是微不足道的,369秒是显着和积极的。
您可以安装最新版本的DAMisc
软件包,方法是先安装remotes
软件包,然后执行以下操作:
remotes::install_github("davidaarmstrong/damisc")
至于AME和MER方法之间的区别,有一篇有趣的文章,主题是Michael Hanmer和Ozan Kalkan写的here。
https://stackoverflow.com/questions/63695081
复制相似问题