单变量回归一次只把一个自变量放入模型,用于描述它与结局的未调整关联。结局类型决定模型家族:连续结局常用线性回归,二分类结局常用逻辑回归。
回归模型的共同框架
| 模型 | 结局 | 分布 | 链接函数 | 系数解释 |
|---|---|---|---|---|
| 线性回归 | 连续 | 正态误差 | identity | X 每增加一单位,Y 平均变化量 |
| 逻辑回归 | 二分类 | 二项 | logit | X 每增加一单位,log odds 的变化 |
| 泊松回归 | 计数 | 泊松 | log | 事件率的对数变化 |
单变量模型不控制混杂,适合描述和初步探索,但不能因为只有一个预测变量就作因果解释。
单变量线性回归
set.seed(123)
n <- 500
df <- data.frame(age = rnorm(n, 50, 10))
df$bp <- 110 + 0.5 * df$age + rnorm(n, 0, 8)
linear_fit <- lm(bp ~ age, data = df)
summary(linear_fit)
confint(linear_fit)
年龄系数表示年龄每增加一岁,平均收缩压变化多少。截距只有在 age = 0 有实际意义时才值得单独解释。
线性模型诊断
经典推断关注线性形式、观测独立、残差方差和影响点:
par(mfrow = c(2, 2))
plot(linear_fit)
par(mfrow = c(1, 1))
查看图片线性回归诊断图

- Residuals vs Fitted:检查曲线模式与漏斗形;
- Normal Q-Q:检查残差尾部偏离;
- Scale-Location:进一步检查方差变化;
- Residuals vs Leverage:寻找高杠杆和高影响观测。
异方差会影响经典标准误,可比较 HC3 稳健标准误:
library(lmtest)
library(sandwich)
coeftest(
linear_fit,
vcov. = vcovHC(linear_fit, type = "HC3")
)
稳健标准误不会修复非线性、依赖观测或错误模型形式。
单变量逻辑回归
对于 :
linear_predictor <- -6 + 0.08 * df$age
df$hypertension <- rbinom(n, 1, plogis(linear_predictor))
logistic_fit <- glm(
hypertension ~ age,
data = df,
family = binomial(link = "logit")
)
summary(logistic_fit)
系数位于 log odds 尺度。指数化后得到优势比:
exp(cbind(
OR = coef(logistic_fit),
confint(logistic_fit)
))
若年龄 OR 为 1.09,表示年龄每增加一岁,事件 odds 乘以 1.09。odds 的相对变化不是概率增加 9 个百分点。
用边际效应表达概率变化
library(margins)
margins(logistic_fit)
平均边际效应把模型在各观测处的概率变化求平均,通常比 log odds 更容易解释。它仍依赖模型形式和样本协变量分布。
检查连续变量的函数形式
逻辑回归假设连续 X 与 logit 线性,而不是 X 与概率线性。可以比较线性项和自然样条:
library(splines)
spline_fit <- glm(
hypertension ~ ns(age, df = 3),
data = df,
family = binomial()
)
anova(logistic_fit, spline_fit, test = "Chisq")
发现非线性后,应展示预测概率曲线,而不是继续用单个 OR 概括全部年龄范围。
分离与稀疏类别
若某个预测变量能完全区分结局,最大似然估计会趋向无穷,常表现为不收敛、系数极端和标准误巨大。
df$old <- as.integer(df$age > 70)
df$separated_outcome <- df$old
separated_fit <- glm(
separated_outcome ~ old,
data = df,
family = binomial()
)
此时不能相信普通 Wald p 值。可检查列联表,并根据目的考虑 Firth 校正、正则化或重新设计数据收集。
最小检查清单
- 结局分布是否与模型家族匹配;
- 观测是否独立;
- 连续变量函数形式是否合理;
- 是否存在高影响点、稀疏类别或分离;
- 缺失导致多少观测被排除;
- 系数、区间和预测是否在合理尺度解释;
- 单变量关联是否可能被混杂解释。
单变量筛选不能替代基于研究问题选择协变量。进入多变量模型时,变量是否保留不应只由单变量 p 值决定。