首页 > 解决方案 > 绘制预测概率(logit)

问题描述

我目前正在尝试在 r 中绘制我的 logit 模型的预测概率。我已遵循此链接中的方法:https ://stats.idre.ucla.edu/r/dae/logit-regression/ 。

鉴于利益集团的类型,我已经成功地为布鲁塞尔办事处制作了地块。但是,我只想绘制个体效应:例如,我想绘制布鲁塞尔办公室与欧洲议会议员会面的预测概率(即,当你有布鲁塞尔办公室时,与欧洲议会议员举行会议的概率是多少?)。另外,我想看看员工规模和/或组织形式对因变量的影响。

我还没有找到这样的方法。有什么建议吗?

先感谢您。

我的变量:

与 MEPS 的会议(因变量,虚拟) 1 是 0 否

利益集团类型(分类) 1 商业 2 咨询公司 3 非政府组织 4 公共机构 5 机构 6 工会/prof.org。7 其他

布鲁塞尔办事处 1 是 0 否

组织形式 1 个人组织。2 国家协会 3 欧洲协会 4 其他

员工人数(人数可变,以全职当量表示)范围从 0.25 到 40

标签: rggplot2logistic-regression

解决方案


由于您没有提供数据,我将使用您熟悉的 UCLA 示例中的数据集。您是否尝试这样做(假设 Rank 就像您的变量之一......

library(ggplot2)

mydata <- read.csv("binary.csv")
mydata$rank <- factor(mydata$rank)

mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(mylogit)
#> 
#> Call:
#> glm(formula = admit ~ gre + gpa + rank, family = "binomial", 
#>     data = mydata)
#> 
#> Deviance Residuals: 
#>     Min       1Q   Median       3Q      Max  
#> -1.6268  -0.8662  -0.6388   1.1490   2.0790  
#> 
#> Coefficients:
#>              Estimate Std. Error z value Pr(>|z|)    
#> (Intercept) -3.989979   1.139951  -3.500 0.000465 ***
#> gre          0.002264   0.001094   2.070 0.038465 *  
#> gpa          0.804038   0.331819   2.423 0.015388 *  
#> rank2       -0.675443   0.316490  -2.134 0.032829 *  
#> rank3       -1.340204   0.345306  -3.881 0.000104 ***
#> rank4       -1.551464   0.417832  -3.713 0.000205 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 499.98  on 399  degrees of freedom
#> Residual deviance: 458.52  on 394  degrees of freedom
#> AIC: 470.52
#> 
#> Number of Fisher Scoring iterations: 4

newdata1 <- with(mydata, data.frame(gre = mean(gre), gpa = mean(gpa), rank = factor(1:4)))

newdata1
#>     gre    gpa rank
#> 1 587.7 3.3899    1
#> 2 587.7 3.3899    2
#> 3 587.7 3.3899    3
#> 4 587.7 3.3899    4

newdata1$rankP <- predict(mylogit, newdata = newdata1, type = "response")
newdata1
#>     gre    gpa rank     rankP
#> 1 587.7 3.3899    1 0.5166016
#> 2 587.7 3.3899    2 0.3522846
#> 3 587.7 3.3899    3 0.2186120
#> 4 587.7 3.3899    4 0.1846684

ggplot(newdata1, aes(x = rank, y = rankP)) +
   geom_col()


推荐阅读