如何使用stat_smooth在两因子图上显示一行?

gh0*_*r18 5 r ggplot2

我有这样一个data.frame:

df <- data.frame(a = runif(1000), b = runif(1000), c = runif(1000),  d = sample(c("yes", "no"), 1000, replace=TRUE))
Run Code Online (Sandbox Code Playgroud)

我进行了逻辑回归:

lm <- glm(data = df, factor(d) ~ a + b + c, family = binomial)
Run Code Online (Sandbox Code Playgroud)

产生了预测的概率:

df$pred <- predict(lm, type = "response")
Run Code Online (Sandbox Code Playgroud)

并希望图表既具有抖动积为结果ab,颜色为填充d和光滑的线(使用geom_smooth),用于简单地作用ad

我已经试过了:

ggplot(data = df , aes(x=a, y = b, color = factor(d))) + geom_jitter() +
geom_smooth(data = df, aes(x=a, y = pred))
Run Code Online (Sandbox Code Playgroud)

但这并没有产生我想要的。我想要的是这条线:

ggplot(data = df , aes(x=a, y = pred)) + geom_smooth()
Run Code Online (Sandbox Code Playgroud)

覆盖在此:

ggplot(data = df , aes(x=a, y = b, color = factor(d))) + geom_jitter()
Run Code Online (Sandbox Code Playgroud)

任何和所有帮助将不胜感激。

Mic*_*lVE 4

这确实有效,现在它不再按因素进行分组:

  ggplot(data = df ) +  
  geom_point(aes(x=a, y = b, color = factor(d))) +
  geom_smooth(aes(x=a, y = pred))
Run Code Online (Sandbox Code Playgroud)

现在,您可以在指定数据的位置创建一个 ggplot。在其顶部添加一个包含点(a 和 b)的图层,并在其顶部添加几何平滑线。

但请确保您还查看了两个图的 y 轴。在 geom_smooth() 图中,您可以看到漂亮的 s 形曲线。然而,Y 轴范围是从 0.51 到 0.47。

在此输入图像描述

然后,如果我们查看限制为 0 和 1 的总图。您的线看起来几乎是直的,这只是因为限制。在此输入图像描述