【发布时间】:2019-04-30 17:57:40
【问题描述】:
使用二元预测器运行逻辑回归后,当我尝试使用 visreg 和 ggplot 绘制结果时,图例表明颜色已按组更改,但它们在图中没有更改。
这里是使用 mtcars 数据来说明问题。
data(mtcars)
head(mtcars, 10)
仅有的两个二进制变量是 vs 和 am,但它们需要从数值转换为因子才能使此插图起作用。
mtcars$vs <- as.factor(mtcars$vs)
mtcars$am <- as.factor(mtcars$am)
运行模型。
logit1 <- glm(vs ~ am, data = mtcars, family = "binomial")
现在尝试使用 visreg 以及其他 ggplot 函数来自定义颜色和标签来绘制结果。
visreg(logit1, "am", scale = "response", gg = TRUE, rug = FALSE, by = "am", overlay=TRUE) +
scale_color_manual(values=c("#1b9e77", "#d95f02"),
breaks=c(0, 1),
labels=c("Zeros", "Ones"))
对于 am = 1 组,我希望线条和阴影区域都应该是橙色 (#d95f02),对于 am = 0 组,线条和阴影区域都应该是绿色 (#1b9e77)。如您所见,这不是代码产生的。
【问题讨论】:
-
一种选择可能是使用 ggplot_build(),它可以让您从回归中提取原始汇总数据。该文件将比 visreg 对象更容易操作。
-
@cardinal40 哎呀!我可以看到 ggplot_build 如何潜在地增加了很多灵活性,但看起来我必须使用它从头开始构建整个图表。我没有找到很多关于它使用的例子或材料。您是否足够熟悉它以快速轻松地将其应用到我提供的示例中?我也在寻找这个问题的长期解决方案,here 他们表示 Hadley Wickham 已经警告不要过度依赖 ggplot_build,因为它可能会被弃用。