1.8.1 线性回归

更新日期

2026年11月9日

连续结局常受不止一个因素影响。研究者可能会问:

线性回归用几个变量同时描述连续结局的平均水平。本节重点是读懂一个回归系数:其他入模变量相同,当前变量改变时,平均结局差多少? 学完后,你应能明确系数的单位、参考组与区间,并区分调整后关联和因果效应。

1.8.1.1 从一个均值差走到调整后均值差

1.5.1 t检验展示了两个独立组的均值比较。加入另一个需要考虑的变量后,问题变为:在该变量相同时,两组的平均结局相差多少?在线性回归中,可以同时纳入分组和连续变量。

设 YY 是连续结局,XX 是连续解释变量,GG 取 0 或 1,其中 0 是参考组。一个不含交互项的模型是:

E(Y∣X,G)=β0+β1X+β2G。 E(Y\mid X,G)=\beta_0+\beta_1X+\beta_2G。

E(Y∣X,G)E(Y\mid X,G) 是给定 XX 和 GG 时的平均结局。固定组别,XX 每增加 1 个单位,平均 YY 相差 β1\beta_1;固定 XX,比较组相对参考组的平均差为 β2\beta_2。这里假设两组随 XX 变化的斜率相同。如果研究问题关注两组的斜率是否不同,需要另行指定交互项。

模型用最小二乘法估计这些系数:让观测值与拟合值之差的平方和尽量小。这个差叫残差。解读常规标准误与区间时,还应检查观测是否独立、平均关系是否合理、残差散布是否大致稳定。小样本下,误差明显偏离正态也会影响常规 t 推断。若有重复测量、明显的异方差或极端影响点,应根据研究设计和诊断调整方法。

1.8.1.2 先固定比较方向,再拟合

用 MASS::birthwt 的 189 条母婴记录。结局为出生体重 bwt(克),解释变量为末次月经时母亲体重 lwt(磅)及孕期吸烟 smoke(0=否、1=是),所用三列均完整。

在 bwt ~ lwt + smoke 中,左边是要解释的结局,右边是同时纳入的变量。将不吸烟设为参考水平,使 smokeyes 对应“吸烟减不吸烟”。

if (!requireNamespace("MASS", quietly = TRUE)) {
  utils::install.packages("MASS", repos = "https://cloud.r-project.org")
}
utils::data("birthwt", package = "MASS")

# 只按当前模型所用列保留完整记录;no 是分类对比的参考水平。
analysis_data <- birthwt[c("bwt", "lwt", "smoke")]
analysis_data <- analysis_data[stats::complete.cases(analysis_data), , drop = FALSE]
analysis_data$smoke <- factor(
  analysis_data$smoke, levels = c(0, 1), labels = c("no", "yes")
)
smoke_contrasts <- stats::contr.treatment(levels(analysis_data$smoke), base = 1L)
conf_level <- 0.95 # 系数的 t 区间;改为 0.99 一般会变宽,估计值不变。

# + 表示同时纳入两个变量、不加交互;对比矩阵固定使用第一个水平。
model_fit <- stats::lm(
  bwt ~ lwt + smoke, data = analysis_data,
  contrasts = list(smoke = smoke_contrasts),
  na.action = stats::na.fail, singular.ok = FALSE
)
coefficient_summary <- summary(model_fit)$coefficients
coefficient_ci <- stats::confint(model_fit, level = conf_level)
print(stats::nobs(model_fit))
print(coefficient_summary)
print(coefficient_ci)

1.8.1.3 看清系数的单位和区间

[1] 189
               Estimate Std. Error   t value     Pr(>|t|)
(Intercept) 2501.125357 230.835889 10.835080 1.609094e-21
lwt            4.236736   1.689876  2.507128 1.302827e-02
smokeyes    -272.081152 105.591403 -2.576736 1.074901e-02
                   2.5 %      97.5 %
(Intercept) 2045.7322894 2956.518425
lwt            0.9029483    7.570523
smokeyes    -480.3918837  -63.770420
R 输出 统计含义 本例怎样读
[1] 189 模型实际使用的观测数 189 条记录均纳入
Estimate:lwt 连续变量每增加 1 个原单位的平均差 固定吸烟状态,母亲体重每高 1 磅,平均出生体重约高 4.24 克
Estimate:smokeyes 比较水平相对于参考水平的调整后平均差 固定母亲体重,吸烟组平均出生体重约低 272 克
Std. Error、t value 和末列 P 值 系数估计的不确定性,以及系数为 0 的检验 吸烟系数的标准误约 105.59 克,−272.08/105.59≈−2.58-272.08/105.59\approx-2.58,双侧 P 约 0.0107
2.5 %、97.5 % 系数的 95% 置信区间两端 吸烟减不吸烟约为 −480.39~−63.77 克;区间对应平均差,不是个体的预测范围

截距对应母亲体重为 0 磅且不吸烟时的拟合均值,超出本例有意义的解释范围。报告可写为:“在模型中调整母亲体重后,吸烟组新生儿的平均出生体重比不吸烟组低约 272 克(吸烟减不吸烟:95% CI −480~−64 克)。”这里只调整了一个测量变量,观察性关联不能直接解释为吸烟导致的差值。

同编号代码碎片可复用到其他连续结局,并可指定多个分类变量的参考水平。若结局换成“是否低出生体重”,效应尺度也会改变,见2.3.1 Logistic回归。

实现和字段说明见 R 的线性模型、模型摘要及系数置信区间。