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

如何绘制有序logit回归的预测概率?哑变量x轴的替代方案

哑变量下的有序logit预测概率可视化方案及示例

当你的x轴变量是0/1哑变量时,不需要用seq()生成连续序列,直接枚举它的两个离散取值(0和1)即可。核心逻辑是:固定其他协变量在均值水平,分别计算x=0和x=1时各响应类别的预测概率,再可视化对比。

以下是完整的R语言示例:

1. 拟合有序logit模型

先模拟数据并拟合模型(可替换为你的真实数据与模型):

# 加载依赖包
library(MASS)
library(tidyverse)

# 模拟有序响应数据:y为3分类有序变量,x是0/1哑变量,z是连续协变量
set.seed(123)
n <- 500
x <- rbinom(n, 1, 0.4)
z <- rnorm(n, mean = 5, sd = 1)
# 生成有序响应y
y <- ordered(ifelse(-2 + 1.5*x + 0.8*z + rlogis(n) > 1, 3, 
                   ifelse(-2 + 1.5*x + 0.8*z + rlogis(n) > 0, 2, 1)))

# 拟合有序logit模型
model <- polr(y ~ x + z, data = data.frame(x, z, y), Hess = TRUE)

2. 构造预测数据集

直接指定x的两个取值,其他变量固定在均值:

pred_data <- tibble(
  x = c(0, 1),          # 枚举哑变量的所有可能取值
  z = mean(z)           # 固定连续变量z在均值水平
)

3. 计算预测概率

基于模型生成每个x对应的各响应类别概率:

pred_probs <- predict(model, newdata = pred_data, type = "probs") %>%
  as.data.frame() %>%
  mutate(x = pred_data$x) %>%
  pivot_longer(cols = starts_with("."), names_to = "响应类别", values_to = "预测概率")

4. 可视化结果

因为x是离散的,用分组柱状图展示概率分布更直观:

ggplot(pred_probs, aes(x = factor(x), y = 预测概率, fill = 响应类别)) +
  geom_col(position = "dodge", width = 0.7) +
  labs(x = "哑变量X", y = "预测概率", fill = "响应类别") +
  theme_minimal() +
  scale_fill_brewer(palette = "Set2")

如果想模仿原示例的折线图风格,也可以将x转为数值后用折线+点的形式,只需把绘图代码改成:

ggplot(pred_probs, aes(x = x, y = 预测概率, color = 响应类别, group = 响应类别)) +
  geom_line(linewidth = 1) +
  geom_point(size = 3) +
  labs(x = "哑变量X", y = "预测概率", color = "响应类别") +
  theme_minimal() +
  scale_color_brewer(palette = "Set2")

内容的提问来源于stack exchange,提问作者rr19

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:30:59