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

序数逻辑回归代码中with语句作用、结果含义及简化实现问询

序数逻辑回归教程代码与结果解析

一、代码with(dat, summary(as.numeric(apply) ~ pared + public + gpa, fun=sf))的作用

首先明确教程中自定义的sf函数逻辑:它用于计算两个统计量——分组内因变量的均值,以及因变量取最高水平(即apply=3,代表录取)的样本比例的logit变换值(qlogis(mean(x==3)))。

这段代码的完整功能:

  • with(dat, ...):在数据集dat的环境中执行代码,避免重复输入dat$前缀
  • as.numeric(apply):将有序分类因变量apply(对应申请结果:1=不录取、2=等待、3=录取)转换为数值型
  • as.numeric(apply) ~ pared + public + gpa:以pared(父母是否上过大学)、public(是否公立高中)为分组变量(gpa是连续变量,summary.formula仅按分类变量分组),对每组的数值型apply应用自定义函数sf
  • 最终输出各分组的样本量、因变量均值、录取概率的logit值等统计摘要

简言之:按父母学历、高中类型交叉分组,计算每组申请结果的数值均值与录取概率的logit变换值,并输出分组统计摘要。

二、结果第一行中-0.378336441和-2.4407354的含义

这两个值是自定义函数sf返回的两个统计量:

  • -0.378336441:该分组内申请结果的数值均值(即mean(as.numeric(apply))),反映组内整体申请结果的平均水平
  • -2.4407354:该分组中获得录取(apply=3)的样本比例的logit变换值(即qlogis(录取人数/组内总人数)),logit变换将0-1之间的概率转换为整个实数域的数值,是序数逻辑回归中常用的变换方式

三、获取这些值的简化代码

方法1:使用dplyr(直观易读)

library(dplyr)
dat %>%
  group_by(pared, public) %>%
  summarize(
    mean_apply = mean(as.numeric(apply)),
    logit_admit = qlogis(mean(apply == 3)),
    .groups = "drop"
  )

方法2:使用基础R的aggregate(无需额外包)

aggregate(
  cbind(mean_apply = as.numeric(apply), admit_flag = I(apply == 3)) ~ pared + public,
  data = dat,
  FUN = function(x) if (is.logical(x)) qlogis(mean(x)) else mean(x)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:39