2017-01-07 5 views
2

Мне нужно рассчитать предсказанные вероятности логической регрессии в ggplot2. По сути, я пытаюсь графически отобразить glm по каждому условию обработки в пределах одного и того же графика. Тем не менее, я довольно запутался в том, как это сделать, поскольку моя переменная treat (т. Е. Меня интересует x) категорична. Это означает, что когда я пытаюсь нарисовать эффекты обработки с помощью ggplot, я просто получаю кучу точек в 0, 1 и 2, но не строк.График GLM в ggplot2

Мой вопрос в том, что ... Как я мог графически отобразить строки прогноза логита в этом случае? Заранее спасибо!

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 <- data.frame(predict(glm_output, newdata = df, type = "link", interval = "confidence", se = T)) 
df <- cbind(df, predicted_vote) 

ответ

2

Поскольку объясняющая переменная 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

Смежные вопросы