假设我有一个线性模型,只有一个分类解释变量:
linmod <- lm(mpg ~ factor(cyl), data = mtcars)
parameters::parameters(linmod)
#> Parameter | Coefficient | SE | 95% CI | t(29) | p
#> -------------------------------------------------------------------
#> (Intercept) | 26.66 | 0.97 | [ 24.68, 28.65] | 27.44 | < .001
#> cyl [6] | -6.92 | 1.56 | [-10.11, -3.73] | -4.44 | < .001
#> cyl [8] | -11.56 | 1.30 | [-14.22, -8.91] | -8.90 | < .001
如何使用
marginaleffects::plot_comparisons()
创建类似于以下的对比图(6 vs. 4 和 8 vs. 4)
parameters::parameters(linmod, drop = "(Intercept)") |> plot()
确实(但旋转了)。该函数似乎需要
by
或 condition
参数,这与此处无关。
不幸的是,
plot_comparisons()
是为具有超过1个预测变量的情况而设计的。值得庆幸的是,所有 marginaleffects
函数都会返回一个标准数据框,这意味着绘制您想要的结果很简单:
library(marginaleffects)
library(ggplot2)
mod = lm(mpg ~ factor(cyl), mtcars)
cmp = avg_comparisons(mod)
ggplot(cmp, aes(
y = contrast,
x = estimate,
xmin = conf.low,
xmax = conf.high)) +
geom_pointrange()