【发布时间】:2023-03-30 19:24:02
【问题描述】:
我们可以使用margins::margins() 获得线性模型的边际效应,并且可以使用选项variables 选择感兴趣的变量。
fit <- lm(mpg ~ factor(vs) + gear:factor(vs) + qsec, mtcars)
library(margins)
marg1 <- margins(fit, variables="vs")
> summary(marg1)
factor AME SE z p lower upper
vs1 4.8023 2.6769 1.7940 0.0728 -0.4443 10.0490
包有一个实现的方法plot.margins,所以我们可以绘制边际效应
plot(marg1)
at 允许我们指定计算边际效应的值:
marg2 <- margins(fit, variables="vs", at=list(gear=c(3, 4, 5)))
> summary(marg2)
factor gear AME SE z p lower upper
vs1 3.0000 2.8606 3.3642 0.8503 0.3952 -3.7332 9.4544
vs1 4.0000 5.6849 2.6713 2.1282 0.0333 0.4493 10.9206
vs1 5.0000 8.5093 3.8523 2.2089 0.0272 0.9588 16.0597
但是,尝试绘制这些指定的边距会产生错误:
plot(marg2)
Error in `[.data.frame`(summ, , names(attributes(x)[["at"]]), drop = FALSE) :
undefined columns selected
由于margins 包声称是“Stata 'margins' 命令的 R 端口”,我希望情节类似于 Stata 给出的情节:
那么,我们如何绘制使用at 指定的预测边距?
编辑:
请注意,这并不是一个普通的交互图,因为
with(mtcars[mtcars$gear %in% c(3, 4, 5), ],
interaction.plot(gear, vs, mpg, pch=rep(1, 2), type="b"))
给出不同的输出:
【问题讨论】:
-
这就是我所说的“交互图”。您是否使用该搜索词寻找答案?
-
@42- 感谢您的建议,但这不是一个纯粹的互动情节。你可能想看看我的编辑。
-
我不同意。您使用interaction.plot 生成的交互图具有分类交叉分类参数,而您想要的交互图具有分类交叉线性参数。它们都是具有交互作用的模型的展示。
标签: r plot regression marginal-effects