You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制有序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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:05:25