12多变量逻辑回归

拟合包含多个预测变量的二分类结局模型,解释调整后 OR,并评估模型形式、区分度、校准与稳定性。

2025-08-11
StatisticsLogistic RegressionOdds RatioCalibrationROC
本章目录 · 9

多变量逻辑回归同时纳入多个预测变量,估计每个变量在其他模型变量保持不变时与二分类结局的关联。它可以调整已测量的混杂,但不会自动消除偏倚或建立因果关系。

模型

logp1p=β0+β1X1++βkXk\log\frac{p}{1-p} = \beta_0 + \beta_1X_1 + \cdots + \beta_kX_k

每个 exp(βi)\exp(\beta_i) 是条件优势比:其他模型变量保持不变时,XiX_i 每变化一个单位对应的 odds 倍数。

模拟数据

set.seed(123)
n <- 500

df <- data.frame(
  age = rnorm(n, 50, 10),
  sex = factor(sample(c("Female", "Male"), n, replace = TRUE)),
  smoking = factor(
    sample(c("No", "Yes"), n, replace = TRUE, prob = c(0.7, 0.3))
  ),
  bmi = rnorm(n, 25, 4)
)

eta <- -6 +
  0.05 * df$age +
  0.8 * (df$sex == "Male") +
  1.2 * (df$smoking == "Yes") +
  0.1 * df$bmi

df$hypertension <- rbinom(n, 1, plogis(eta))

拟合与 OR

fit <- glm(
  hypertension ~ age + sex + smoking + bmi,
  data = df,
  family = binomial(link = "logit")
)

summary(fit)

exp(cbind(
  OR = coef(fit),
  confint(fit)
))

连续变量 OR 对应一个单位变化。若一岁或 1 kg/m² 不是最有意义的尺度,可以在建模前按 5 岁或其他临床单位缩放,并在报告中写清楚。

分类变量 OR 相对于参照水平解释:

levels(df$smoking)
contrasts(df$smoking)

变量选择与混杂

协变量应根据研究问题、因果结构和预先计划选择。只把单变量 p 值小于某阈值的变量纳入模型,可能遗漏重要混杂因素并产生不稳定选择。

还需考虑:

  • 每个参数对应的事件数量是否足够;
  • 分类变量是否有稀疏水平;
  • 连续变量是否需要非线性项;
  • 是否存在科学上合理的交互作用;
  • 缺失数据处理是否改变分析总体;
  • 高相关预测变量是否让估计不稳定。

比较模型偏差

null_fit <- glm(
  hypertension ~ 1,
  data = df,
  family = binomial()
)

anova(null_fit, fit, test = "Chisq")

似然比检验比较嵌套模型的整体拟合。AIC 可辅助相对比较,但不能代替校准、外部验证或科学解释。

区分度

ROC 与 AUC 衡量模型区分事件和非事件的能力:

library(pROC)

roc_object <- roc(df$hypertension, fitted(fit))
auc(roc_object)
plot(roc_object)

AUC 高不表示预测概率准确,也不证明变量具有因果效应。

校准

校准比较预测概率与实际事件比例。一个简单检查是按预测值分组:

library(dplyr)

calibration <- df |>
  mutate(predicted = fitted(fit)) |>
  mutate(bin = ntile(predicted, 10)) |>
  group_by(bin) |>
  summarise(
    predicted = mean(predicted),
    observed = mean(hypertension),
    .groups = "drop"
  )

plot(calibration$predicted, calibration$observed)
abline(0, 1, lty = 2)

Hosmer–Lemeshow 检验也常见,但结果受样本量和分组方式影响,不应作为唯一拟合标准。

内部验证

在建模数据上计算的 AUC 和校准通常过于乐观。预测目的下,应使用 bootstrap 或交叉验证估计乐观程度,并尽可能进行外部验证。

推断目的与预测目的也不同:前者强调预先定义的效应、混杂控制与区间;后者强调泛化、校准、区分和临床效用。模型建立与报告应明确主要目标。

报告

报告内容至少包括:

  • 结局、主要暴露、协变量及选择依据;
  • 样本量、事件数和缺失处理;
  • 连续变量单位、函数形式和参照水平;
  • 调整后 OR、95% CI 和 p 值;
  • 交互作用或非线性项;
  • 拟合、区分、校准与验证结果;
  • 敏感性分析和模型局限。

多变量模型的“调整后”只针对进入模型且被正确表达的变量,不能理解为已经控制所有混杂。