ggplot2中的图形GLM,其中x变量是分类的

时间:2017-01-07 06:38:41

标签: r graph ggplot2 glm

我需要在ggplot2中绘制logit回归的预测概率。基本上,我试图通过同一图表中的每个处理条件绘制一个glm图。但是,我对如何看到我的treat变量(即我感兴趣的x)是分类的感到非常困惑。这意味着当我尝试使用ggplot绘制治疗效果图时,我得到一个一堆点在0,1和2但没有线。

我的问题是......在这种情况下,我如何绘制logit预测线?提前谢谢!

set.seed(96)
df <- data.frame(
  vote = sample(0:1, 200, replace = T),
  treat = sample(0:3, 200, replace = T))

glm_output <- glm(vote ~ as.factor(treat), data = df, family = binomial(link = "logit"))

predicted_vote <- predict(glm_output, newdata = df, type = "link", interval = "confidence", se = TRUE)
df <- cbind(df, data.frame(predicted_vote))

1 个答案:

答案 0 :(得分:3)

由于解释变量treat是分类的,因此如果您使用boxplot代替以下内容会更有意义:

ggplot(df, aes(x = treat, y = predicted_prob)) +
  geom_boxplot(aes(fill = factor(treat)), alpha = .2)

enter image description here

如果您希望通过glm在其他一些解释变量的不同值上看到预测的概率,您可以尝试这样做:

ggplot(df, aes(x = treat, y = predicted_prob)) +
  geom_boxplot(aes(fill = factor(treat)), alpha = .2) + facet_wrap(~gender)

enter image description here

# create age groups 
df$age_group <- cut(df$age, breaks=seq(0,100,20))

ggplot(df, aes(x = treat, y = predicted_prob)) +
  geom_boxplot(aes(fill = factor(treat)), alpha = .2) + facet_grid(age_group~gender)

enter image description here