主题
3.4.2 多元回归
本节目标
读完本节后,你能在一个连续结果上同时纳入多个预测变量,解释“在模型中的其他预测变量相同”这一条件含义;用
本节路线图
- 概述:为什么需要多个自变量
- 多元回归模型
- 共线性诊断
- 模型选择与比较
- 软件实现
概述
多元线性回归回答的是:多个
这里的
模型、效应量与模型比较
先写清研究问题
- 若问题是“这些变量联合预测
吗”,关注整体 检验、 及其不确定性。 - 若问题是“加入一组理论上预先指定的变量后,样本内拟合增加多少”,比较嵌套模型的
和增量 ,而不是事后不断尝试变量组合。样本外预测是否改善要另用验证集或交叉验证评估。 - 若问题是“某个
在其他变量相同下是否有独立关联”,报告 、95% CI、 、 ,并同时给出变量尺度。
常用效应量包括:
:样本内结果变异的拟合比例;adjusted 对参数数量做惩罚,但也不是样本外预测保证。 - 分块增量效应
:只在比较嵌套模型、且变量块事先有理论理由时解释。 - 对普通 OLS 中单个系数的
检验,部分 ;它表示该变量在其他预测变量之外解释的局部变异比例,不等同于零阶相关。
不要把“控制变量”写成因果保证
把年龄、性别或基线分数放进回归,只表示在这些变量取相同值的模型比较;若它们是碰撞变量、处理后的变量或测量误差很大,调整反而可能引入偏差。控制集应由因果图、研究设计或预注册方案说明。
共线性、假设与诊断
共线性
预测变量之间高度相关时,模型整体可能拟合很好,但单个
其中
线性模型诊断
- 线性与同方差:残差-拟合值图、部分残差图;曲线或漏斗形提示函数形式或方差问题。
- 独立性:按研究设计检查重复测量、群组和时间顺序;必要时使用多层模型或聚类稳健 SE。
- 残差分布:Q-Q 图看尾部和系统偏离。正态性主要影响小样本的精确推断,不要求每个原始变量正态。
- 影响点:leverage、Cook 距离、DFBETAs。核对录入后做含/不含点的敏感性分析,完整报告决定。
- 缺失与测量:说明缺失机制、剔除/插补规则和量表信度;回归不会自动修复测量误差或选择偏差。
异方差时可报告 HC3 稳健协方差(MacKinnon & White, 1985;它改变 SE/CI,不改变 OLS 点估计);非线性、嵌套或二分类结果则需要改变模型,而不是只换标准误。
教学示例:三变量预测
以下是教学模拟数据(15 个独立观测),变量为压力 stress、社会支持 support、睡眠时长 sleep,结果为幸福感 wellbeing。数值由固定公式加小扰动生成,仅用于核对代码和解释尺度。
python
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
stress = [2,3,4,5,6,7,8,2.5,4.5,6.5,7.5,3.5,5.5,1.5,8.5]
support = [8,7,6,5,4,3,2,5,8,6,3,7,4,9,5]
sleep = [7,6,8,5,6,4,5,7,6,7,5,8,6,7,4]
noise = [-1.2,0.8,-0.5,1.1,-0.7,0.4,-1.0,0.6,1.2,-0.9,0.3,-0.4,0.9,-0.6,0.2]
wellbeing = [30 - 1.4*s + 1.1*u + 0.8*z + e
for s, u, z, e in zip(stress, support, sleep, noise)]
df = pd.DataFrame({"wellbeing": wellbeing, "stress": stress,
"support": support, "sleep": sleep})
X = sm.add_constant(df[["stress", "support", "sleep"]])
fit = sm.OLS(df["wellbeing"], X).fit()
print(fit.params.round(3))
print(fit.conf_int().round(3))
print(fit.rsquared.round(3), fit.rsquared_adj.round(3), fit.df_resid)
print([variance_inflation_factor(X.values, i)
for i in range(1, X.shape[1])])
# 若残差方差不齐,可把 .fit() 改为 .fit(cov_type="HC3")text
DATA LIST LIST / wellbeing stress support sleep.
BEGIN DATA
40.4 2 8 7
39.1 3 7 6
36.9 4 6 8
33.6 5 5 5
30.1 6 4 6
27.1 7 3 4
24.0 8 2 5
38.2 2.5 5 7
38.5 4.5 8 6
32.2 6.5 6 7
27.1 7.5 3 5
38.8 3.5 7 8
32.4 5.5 4 6
42.8 1.5 9 7
27.0 8.5 5 4
END DATA.
REGRESSION
/DEPENDENT wellbeing
/METHOD=ENTER stress support sleep
/STATISTICS=COEFF OUTS R ANOVA CI(95) COLLIN TOL.按普通 OLS(
| 变量 | SE | 95% CI | |||
|---|---|---|---|---|---|
| 截距 | 33.968 | 2.375 | 14.30 | [28.740, 39.197] | < .001 |
| 压力 | -1.598 | 0.173 | -9.21 | [-1.979, -1.216] | < .001 |
| 社会支持 | 1.083 | 0.163 | 6.63 | [0.724, 1.443] | < .001 |
| 睡眠 | 0.326 | 0.239 | 1.37 | [-0.199, 0.851] | .199 |
整体
模型选择与报告
优先按理论或预注册顺序建立少量嵌套模型,例如先放设计必需的协变量,再加入主要预测变量,报告
APA 风格可以写成:
多元回归模型显著,
, , ,adjusted 。在模型中的其他变量相同的条件下,压力与幸福感负相关, , , , ,95% CI [-1.979, -1.216]。这是模拟数据的条件关联,不作因果解释。
资源与工具
statsmodels OLS
Python 回归、稳健协方差与诊断 API(statsmodels 0.14.6,核查于 2026-08-13)
→
VIF 官方 API
statsmodels 的方差膨胀因子计算
→
Cohen et al. (2003)
行为科学多元回归与效应量
→
延伸阅读
- Cohen, J., Cohen, P., West, S. G., & Aiken, L. S. (2003). Applied multiple regression/correlation analysis for the behavioral sciences (3rd ed.). Routledge.
- Harrell, F. E. (2015). Regression modeling strategies (2nd ed.). Springer. https://doi.org/10.1007/978-3-319-19425-7
- O'Brien, R. M. (2007). A caution regarding rules of thumb for variance inflation factors. Quality & Quantity, 41, 673–690. https://doi.org/10.1007/s11135-006-9018-6
- White, H. (1980). A heteroskedasticity-consistent covariance matrix estimator and a direct test for heteroskedasticity. Econometrica, 48(4), 817–838. https://doi.org/10.2307/1912934
- MacKinnon, J. G., & White, H. (1985). Some heteroskedasticity-consistent covariance matrix estimators with improved finite sample properties. Journal of Econometrics, 29(3), 305–325. https://doi.org/10.1016/0304-4076(85)90158-7