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

在R中解读逻辑回归输出:获取分类变量的优势比

分类预测变量的单变量逻辑回归问题

背景

我想用分类预测变量运行一系列单变量逻辑回归,但统计学基础已生疏,遇到了困惑。之前查过类似问题,但没找到能直接套用到我这个示例的清晰答案,而且不同函数算出的估计值还存在差异。

示例数据集

# 创建示例数据框
df <- structure(list(
  'sick'=c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1),
  'agecat'=c(23,1,2,2,2,2,2,2,3,3,3,3,1,4,4,1,3,1,2,4), 
  'gender'=c(1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0)))
# 转换为因子变量
df$agecat <- factor(df$agecat, levels=c(1,2,3,4), labels=c("0-19","20-39","40-59","60-79"))
df$gender <- factor(df$gender, levels=c(0,1), labels=c("male","female"))

单变量逻辑回归代码

# 确定预测变量列
predictors <- c('agecat', 'gender')
cols <- df[predictors]

# 用lapply生成未调整的逻辑回归结果列表
A <- lapply(as.list(cols), function(x) glm(sick ~ x, data=df, family=binomial(link="logit")))
A

我已经通过单独为gender和agecat构建模型并对比,确认这段代码有效,比如:

m <- glm(sick ~ gender, data=df, family=binomial(link="logit"))
m

我知道A中的估计值是对数优势比,需要取指数得到优势比,对应的代码是:

# 把列表转换为tibble并取指数
do.call(rbind, lapply(A, broom::tidy, exponentiate=TRUE, conf.int=TRUE)) -> B
B

这段代码没问题,因为B中的估计值和单独对模型运行exp(coef(m))得到的结果一致。

核心问题及解答

1. 如何解读B中的估计值?我认为它们是优势比,这个判断对吗?如果是,为什么截距/参考组的估计值不是1.00?

  • 判断正确:非截距项的估计值是优势比,但截距项取指数后不是1.00,因为它代表的是所有预测变量都取参考水平时,患病的优势(即P(sick=1)/P(sick=0)),而非组间的优势比。比如在性别模型中,截距对应男性(参考组)的患病优势,不是男性与自身的优势比(那才是1)。

2. 如果B中的结果是正确的优势比,展示结果时要不要包含截距?

  • 通常不需要展示截距。我们做单变量逻辑回归关注的是不同类别相对于参考组的优势比,也就是非截距项的结果;截距只是参考组自身的患病概率转换后的优势值,不是组间对比的指标,所以无需展示。截距不是1的情况完全正常,不用困惑。

3. 用epitools::oddsratio算出的优势比和B中的结果有差异,但questionr::odds.ratio和B一致,是我用错了epitools函数吗?

epitools::oddsratio(x=df$gender, y=df$sick) # 算出女性的OR是0.47,而预期是0.44
questionr::odds.ratio(m) # 算出女性的OR是0.44,和B一致
  • 问题出在epitools::oddsratio的参数逻辑和默认设置:
    1. 该函数默认以x为行、y为列构建列联表,计算的是行变量不同水平相对于第一行的优势比,而你的逻辑回归是把gender作为自变量、sick作为因变量,两者的变量角色对应关系不一致。
    2. 另外,epitools默认用条件最大似然估计,而glm用的是无条件最大似然估计,这也会导致数值差异。
  • 调整参数可让epitools结果与glm一致:
# 调整列联表顺序,并用无条件ML估计
epitools::oddsratio(table(df$sick, df$gender), method="wald")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:07:04