plot_model()
,我已经可视化了几个模型项的边际效应(请参见下图)。 plot_model()
功能允许您指定置信度,并将自动绘制阴影的置信区间。我想在第一个上绘制一个
第二置信区间,以便可以看到95%和85%(以便进一步证明响应的强度)。这可能吗?
以下是一些简短的虚拟数据,演示了我的问题:response per.grs
0 0.2430000
0 0.7142857
0 1.0000000
0 0.7619048
0 0.7619048
0 0.1230000
0 0.6666667
0 0.3560000
0 0.9523810
0 0.1450000
1 0.7619048
1 0.6432000
1 0.6666667
1 0.8571429
1 0.8571429
1 0.5238095
1 0.9523810
1 0.8450000
1 0.5714286
1 0.7619048
这是我使用的代码:
grass.cover <- glm(response ~ per.grs + I(per.grs^2), data=data, family=binomial, na.action = "na.fail") plot_model(grass.cover, type = "eff", terms = "per.grs[all]", ci.lvl = .95, )
plot_model
。该图的数据通过ggeffects::ggeffect
计算。因此,我也只计算了85%的数据,然后可以通过geom_ribbon
将其用于添加第二个阴影区域。但是,由于这也使预测线过于复杂,因此我们必须添加geom_line
才能将预测值重新放入绘图中。但是,特别是在您希望两个CI都具有图例的情况下,我建议您通过ggplot2
自己制作整个图。data <- structure(list(response = c(
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L
), per.grs = c(
0.243,
0.7142857, 1, 0.7619048, 0.7619048, 0.123, 0.6666667, 0.356,
0.952381, 0.145, 0.7619048, 0.6432, 0.6666667, 0.8571429, 0.8571429,
0.5238095, 0.952381, 0.845, 0.5714286, 0.7619048
)), class = "data.frame", row.names = c(
NA,
-20L
))
grass.cover <- glm(response ~ per.grs + I(per.grs^2), data = data, family = binomial, na.action = "na.fail")
library(sjPlot)
#> Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
library(ggplot2)
p <- plot_model(grass.cover, type = "eff", terms = "per.grs[all]", ci.lvl = .95)
# Get data for 85% CI
dat85 <- ggeffects::ggeffect(model = grass.cover, terms = "per.grs[all]", ci.lvl = .85)
p +
# Add 85% CI
geom_ribbon(data = dat85, aes(x, ymin = conf.low, ymax = conf.high), fill = "grey") +
# Get the predictions back (;)
geom_line(data = dat85, aes(x, y = predicted), color = "black")
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9vVjNFcmZZLnBuZyJ9” alt =“”>