Я пытаюсь проверить разницу между двумя предельными эффектами.Я могу получить 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
Я хочу создать тест, который решит, являются ли предельные эффекты в каждой строке поля значительными;то есть, что наклоны на графиках предельных эффектов различны.Похоже, что это правда, потому что доверительные интервалы не перекрываются - это указывает на то, что эффект смещения отличается для 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, по-видимому, согласуется с анализом непересекающихся доверительных интервалов.