如何绘制有序logit模型平行回归假设检验图?
有序Logit模型平行回归假设的图形检验(R实现)
问题背景
你需要为自己的有序logit模型绘制图形,检验平行回归假设是否成立,使用RStudio实现类似目标图形。现有基于effects包中WVS数据的模型代码如下:
library(effects) library(MASS) wvs.1 <- polr(poverty ~ country + gender + religion + degree + age, data = WVS, method = "logistic", Hess = TRUE) summary(wvs.1)
模型输出:
Call: polr(formula = poverty ~ country + gender + religion + degree + age, data = WVS, Hess = TRUE, method = "logistic") Coefficients: Value Std. Error t value countryNorway -0.32235 0.073766 -4.370 countrySweden -0.60330 0.079494 -7.589 countryUSA 0.61777 0.070665 8.742 gendermale 0.17637 0.052972 3.329 religionyes 0.17973 0.077346 2.324 degreeyes 0.14092 0.066193 2.129 age 0.01114 0.001561 7.139 Intercepts: Value Std. Error t value Too Little|About Right 0.7298 0.1041 7.0128 About Right|Too Much 2.5325 0.1103 22.9496 Residual Deviance: 10402.59 AIC: 10420.59
实现方案
方法1:用effects包快速生成累积概率效应图
effects包可直接生成协变量的累积概率效应曲线,直观判断平行性:
# 生成所有协变量的效应图,按2行3列排列 plot(allEffects(wvs.1), rows = 2, cols = 3) # 单独查看某个协变量(比如age)的细节图 plot(effect("age", wvs.1), main = "年龄对贫困感知的累积概率效应")
图形解读
- 每条曲线对应一个累积响应类别(如
Too Little|About Right代表"认为贫困太少"及以下类别的累积概率)。 - 若不同曲线大致平行,说明协变量对各累积概率的影响趋势一致,支持平行回归假设;若曲线交叉、间距突变,则提示可能违反假设。
方法2:用ggplot2定制分组概率曲线
如果需要更灵活的图形样式,可提取模型预测的分组概率,用ggplot2绘制:
library(ggplot2) library(tidyr) # 生成预测数据:取age的连续序列,其他协变量用参考水平 pred_data <- expand.grid( age = seq(min(WVS$age, na.rm = TRUE), max(WVS$age, na.rm = TRUE), length.out = 100), country = levels(WVS$country)[1], gender = levels(WVS$gender)[1], religion = levels(WVS$religion)[1], degree = levels(WVS$degree)[1] ) # 预测每个响应类别的概率 pred_probs <- predict(wvs.1, newdata = pred_data, type = "probs") pred_data <- cbind(pred_data, pred_probs) # 转换为长格式用于绘图 pred_data_long <- pivot_longer( pred_data, cols = c("Too Little", "About Right", "Too Much"), names_to = "poverty_level", values_to = "probability" ) # 绘制分组概率曲线 ggplot(pred_data_long, aes(x = age, y = probability, color = poverty_level)) + geom_line(linewidth = 1) + labs( title = "年龄对不同贫困感知类别的概率影响", x = "年龄", y = "概率", color = "贫困感知类别" ) + theme_minimal()
图形解读
- 这里展示的是每个响应类别概率随协变量的变化趋势。
- 平行回归假设要求各曲线间距相对稳定(协变量对不同类别概率的影响成比例),若曲线交叉或间距大幅波动,说明可能违反假设。
方法3:结合Brant统计检验辅助判断
图形判断为主,可搭配brant包做统计检验,量化评估假设是否成立:
install.packages("brant") library(brant) # 执行Brant检验 brant(wvs.1)
- 若整体检验的p值>0.05,说明无足够证据拒绝平行回归假设;若p值<0.05,则提示假设可能不成立。
内容的提问来源于stack exchange,提问作者rr19
相关产品推荐
相关产品推荐

