我怎样才能使用 stat_smooth 在二元图上显示一条线?

How can I use stat_smooth to show one line, on a two factor figure?

我有一个 data.frame 这样的:

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

而我运行逻辑回归:

lm <- glm(data = df, factor(d) ~ a + b + c, family = binomial)

产生预测概率:

df$pred <- predict(lm, type = "response")

并且想用 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))

但它没有产生我想要的效果。我想要的是这一行:

ggplot(data = df , aes(x=a, y = pred)) + geom_smooth()

叠加在上面:

ggplot(data = df , aes(x=a, y = b, color = factor(d))) + geom_jitter()

我们将不胜感激。

这样就可以了,现在它不再按因素分组:

  ggplot(data = df ) +  
  geom_point(aes(x=a, y = b, color = factor(d))) +
  geom_smooth(aes(x=a, y = pred))

您现在可以在指定数据的地方创建一个 ggplot。最重要的是,您添加一个带有点(a 和 b)的图层,并在该图层之上添加几何平滑线。

但请确保您也查看了两个图的 y 轴。在您的 geom_smooth() 图中,您会看到漂亮的 S 形曲线。但是,Y 轴范围是从 0.51 到 0.47。

如果我们再看看你的总图,限制为 0 和 1。你的线看起来几乎是直的,这只是因为限制。

does not work for me. However, I've found how to solve it here: http://www.ats.ucla.edu/stat/r/faq/smooths.htm

简而言之:

stat_smooth中设置aes(group = 1)(但图例有额外的行)

ggplot(mtcars, aes(x = hp, y = mpg, colour = factor(vs))) + geom_point() +
  stat_smooth(aes(group = 1), method = "lm", formula = y ~ x, se = FALSE)

或更好 - 仅在 geom_point 中使用因子字段,而不是 ggplot(这个东西有清晰的图例):

ggplot(mtcars, aes(x = hp, y = mpg)) + geom_point(aes(colour = factor(vs))) +
  stat_smooth(method = "lm", formula = y ~ x, se = FALSE)