统计学

线性回归 vs 逻辑回归

医学科研中如何正确选择回归模型?

📚
学习提示: 本教程内容仅供学习参考,实际应用时请结合具体数据和场景进行调整。 代码和方法可能需要根据实际情况进行修改。
📊

核心问题:你的因变量(结局变量)是什么类型? 这是选择线性回归还是逻辑回归的唯一判断标准。 本文从实际应用角度,帮你快速掌握两种回归方法的区别和使用场景。

快速决策:用哪个?

📈 线性回归

因变量是连续数值

典型场景:

  • • 收缩压变化值
  • • BMI 指数
  • • 血糖浓度
  • • 生存时间
  • • 问卷得分

📊 逻辑回归

因变量是二分类

典型场景:

  • • 发病/未发病
  • • 死亡/存活
  • • 有效/无效
  • • 复发/未复发
  • · 是/否

详细对比表

特征 线性回归 逻辑回归
因变量类型 连续数值 二分类 (0/1)
输出范围 (-∞, +∞) [0, 1] 概率
模型函数 Y = β₀ + β₁X logit(P) = β₀ + β₁X
解释方式 X每增加1单位,Y增加β单位 X每增加1单位,几率增加exp(β)倍
R函数 lm() glm(..., family="binomial")
Python库 statsmodels.OLS statsmodels.Logit
常见检验 t检验, F检验 Wald检验, 似然比检验

R语言代码实现

# ==================== 线性回归 ====================
# 场景:分析年龄对收缩压的影响

# 建立模型
model_linear <- lm(sbp ~ age + bmi + sex, data = mydata)

# 查看结果
summary(model_linear)
# 关注:Coefficients (回归系数), Pr(>|t|) (P值), Multiple R-squared (R²)

# 检查假设
par(mfrow = c(2, 2))
plot(model_linear)
# 残差正态性、同方差性、独立性等假设检验

# ==================== 逻辑回归 ====================
# 场景:分析某因素对疾病发生风险的影响

# 建立模型
model_logistic <- glm(disease ~ age + bmi + smoking,
                      data = mydata,
                      family = "binomial")

# 查看结果
summary(model_logistic)
# 关注:Coefficients (log OR), Pr(>|z|) (P值), AIC

# 计算OR值和置信区间
exp(coef(model_logistic))  # OR值
exp(confint(model_logistic))  # 95% CI

# 预测概率
predicted_prob <- predict(model_logistic,
                              type = "response")

💡 关键区别: 线性回归的系数可以直接解释为"每增加1单位,Y增加多少"; 逻辑回归的系数是log(OR),需要取指数后才能解释为OR值(几率比)。

结果解读示例

📈 线性回归解读

# 示例结果

age: β = 0.5, p < 0.001

R² = 0.35


解读:

年龄每增加1岁,收缩压平均增加0.5 mmHg。该关系具有统计学显著性(p<0.001)。模型解释了收缩压变异的35%。

📊 逻辑回归解读

# 示例结果

smoking: β = 0.8, p < 0.001

OR = exp(0.8) = 2.23


解读:

吸烟者发生疾病的风险是不吸烟者的2.23倍。该关联具有统计学显著性(p<0.001)。

常见错误

❌ 错误1:二分类结局用线性回归

问题:预测值可能超出[0,1]范围,不符合概率定义

✅ 正确做法:使用逻辑回归

❌ 错误2:忽略模型假设检验

问题:线性回归需要满足正态性、同方差等假设

✅ 正确做法:用plot(model)检查残差图

❌ 错误3:过度解读P值

问题:P<0.05不等于临床意义

✅ 正确做法:结合效应量(OR值/回归系数)和置信区间综合判断

❌ 错误4:样本量不足

问题:每个自变量至少需要10-20个事件

✅ 正确做法:计算样本量:事件数/参数数 ≥ 10

📝 选择流程总结

1 看因变量

连续数值 → 线性回归

二分类 → 逻辑回归

2 检查假设

线性回归:正态性、同方差

逻辑回归:线性假设、多重共线性

3 解读结果

关注:P值 + 效应量 + 置信区间

结合临床意义判断