我正在尝试测试两个边际效应之间的差异。我可以让 R 来计算效果,但我找不到任何资源来解释如何测试它们的差异。
我查看了边距文档和其他边际效果包,但无法找到可以测试差异的东西。
data("mtcars")
mod<-lm(mpg~as.factor(am)*disp,data=mtcars)
(marg<-margins(model = mod,at = list(am = c("0","1"))))
at(am) disp am1
0 -0.02758 0.4518
1 -0.05904 0.4518
summary(marg)
factor am AME SE z p lower upper
am1 1.0000 0.4518 1.3915 0.3247 0.7454 -2.2755 3.1791
am1 2.0000 0.4518 1.3915 0.3247 0.7454 -2.2755 3.1791
disp 1.0000 -0.0276 0.0062 -4.4354 0.0000 -0.0398 -0.0154
disp 2.0000 -0.0590 0.0096 -6.1353 0.0000 -0.0779 -0.0402
我想进行一个测试来确定每一行 marg 中的边际效应是否显着不同;即,边际效应图中的斜率不同。这似乎是正确的,因为置信区间不重叠——表明位移的影响对于 am=0 和 am=1 是不同的。
我们在下面的评论中讨论我们可以使用 emmeans 测试对比,但这是对 am=0 和 am=1 的平均响应的测试。
emm<-emmeans(mod,~ as.factor(am)*disp)
emm
am disp emmean SE df lower.CL upper.CL
0 231 18.8 0.763 28 17.2 20.4
1 231 19.2 1.164 28 16.9 21.6
cont<-contrast(emm,list(`(0-1)`=c(1,-1)))
cont
contrast estimate SE df t.ratio p.value
(0-1) -0.452 1.39 28 -0.325 0.7479
这里 p 值很大,表明当 am=0 时的平均响应与 am=1 时的平均响应没有显着差异。
这样做是否合理(例如测试两种方法的差异)?
smarg<-summary(marg)
(z=as.numeric((smarg$AME[3]-smarg$AME[4])/sqrt(smarg$SE[3]^2+smarg$SE[4]^2)))
[1] 2.745
2*pnorm(-abs(z))
[1] 0.006044
该 p 值似乎与非重叠置信区间的分析一致。