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

多因素Logistic回归OR值表展示及参照组、NA值设置问题

多因素Logistic回归问题解答

1. 设置0为参照组并获取OR值

首先要注意,class_dummy是0~3的多分类变量,如果直接以数值型输入glm,会被当成连续变量处理,这不符合分组参照的需求。必须先把它转成因子变量,明确指定0作为参照组:

# 转换class_dummy为因子,参照组设为0
reg_df$class_dummy <- factor(reg_df$class_dummy, levels = c(0,1,2,3), ref = 0)
# 其余0/1哑变量如果是数值型,glm默认会以0为参照;如果原本是因子,也可以用同样方式指定
reg_df$smoke_dummy <- factor(reg_df$smoke_dummy, levels = c(0,1), ref = 0)
reg_df$drink_dummy <- factor(reg_df$drink_dummy, levels = c(0,1), ref = 0)
reg_df$edu_dummy <- factor(reg_df$edu_dummy, levels = c(0,1), ref = 0)
reg_df$sex_dummy <- factor(reg_df$sex_dummy, levels = c(0,1), ref = 0)

拟合模型后,summary(model)输出的是对数优势比(log odds),要得到OR值(优势比),只需要对系数取指数,同时可以附带95%置信区间:

model <- glm(NEWDI ~ class_dummy + age + smoke_dummy + drink_dummy +
              bmi + edu_dummy + sex_dummy,
             data = reg_df, family = "binomial")

# 输出OR值及置信区间
exp(cbind(OR = coef(model), confint(model)))

其中连续变量age和bmi的OR值,代表变量每增加1单位时,结局发生的优势比变化。

2. NA值的处理

glm默认采用逐例删除的方式处理NA:只要某一行里,模型用到的任何一个变量有NA,整行数据都会被排除在回归计算之外。

你可以用以下代码确认缺失情况:

# 查看目标变量的缺失数
colSums(is.na(reg_df[, c("smoke_dummy", "drink_dummy", "bmi", "edu_dummy")]))
# 查看模型实际使用的样本量(已剔除含NA的行)
nrow(model$model)

如果需要更复杂的缺失值处理(比如多重插补),可以用mice这类包,但默认情况下glm确实会自动忽略带NA的观测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:20