在 R 中的聚合级别上绘制个人级别的 glm-fit

Plot individual-level glm-fit on aggregate-level in R

在 R 中,我在具有二项式因变量的个体级数据上拟合 GLM(logit)。

但是,我想在总体水平上绘制拟合图(即 y 轴上的成功百分比)。绘制已实现数据(聚合)的散点图和回归线的最简单方法是什么? 我已经尝试过使用 stat_smooth() 进行 ggplot,但是如果我在总体水平上进行散点,glm 也将适用于该总体水平。

library(datasets)
data(mtcars)
fit <- glm(vs ~ mpg + cyl + mpg:cyl + disp + drat, family=binomial(link='logit'), data=mtcars)

mtcars_agg <- mtcars %>%
  group_by(carb) %>%
  summarise_each(funs(mean))

form <- formula("mtcars$vs ~ mtcars$mpg + mtcars$cyl + mtcars$mpg:mtcars$cyl + mtcars$disp + mtcars$drat")

ggplot(mtcars_agg, aes(x=mpg, y=vs)) + geom_point() + 
  stat_smooth(data=mtcars, method="glm", formula = form, method.args=list(family="binomial"), se=FALSE)

有人知道怎么处理吗? 如果我没有在 stat_smooth 调用中指定公式,有两件事不是我希望看到的:

  1. 就是以y ~ x为公式。但是,我也想包括交互变量。
  2. 我想适应个人层面的数据,而不是聚合层面的数据。

不指定公式,绘图如下所示:

正如我在评论中所写,我认为不可能将这种 glm 可视化,因为您需要一个 5 维图。然而,在其他变量不变的情况下,可以可视化 vs. 针对不同 mpg(或其他变量)的概率。

这是我的例子:

library(datasets)
data(mtcars)

fit <- glm(vs ~ mpg + cyl + mpg:cyl + disp + drat, family=binomial(link='logit'), data=mtcars)

to.visualize <- expand.grid(mpg=c(10:35), cyl=4, disp=300, drat=4)
to.visualize$vs <- predict.glm(fit, newdata = to.visualize, type="response")

library(ggplot2)
ggplot(data=to.visualize, aes(x=mpg, y=vs))+ 
  geom_point()+
  geom_path()+
  ggtitle("Probability of vs for different mpg while cyl=4, disp=300, drat=4")

是什么让情节看起来像这样: