Skip to content

5.1 本章介绍(回归分析基础)

从简单回归到多元回归:社会科学研究的核心方法

难度重要性实用性


为什么回归分析如此重要?

社会科学研究的核心问题

几乎所有的社会科学研究都在回答类似的问题:

学科核心问题回归应用
经济学教育对收入的影响?log(wage) ~ education + experience
社会学社会资本对向上流动的作用?mobility ~ social_capital + education + family_background
政治学民主制度对经济增长的影响?gdp_growth ~ democracy + institutions + controls
教育学班级规模对学生成绩的影响?test_score ~ class_size + teacher_quality + controls
心理学压力对心理健康的影响?mental_health ~ stress + social_support + personality

共同点:都需要回归分析来建立变量间的关系


回归分析的本质

从相关到因果

相关性(Correlation)

python
# 简单相关
corr = df['education'].corr(df['wage'])
# 问题:无法控制混淆因素,无法推断因果

回归分析(Regression)

python
# 多元回归
model = sm.OLS(df['log_wage'], 
               sm.add_constant(df[['education', 'experience', 'ability']])).fit()
# 优势:控制其他因素,分离净效应

回归的三大用途

  1. 描述关系(Descriptive)

    • 量化变量间的关系强度
    • 例:教育年限每增加1年,工资增长8%
  2. 预测(Prediction)

    • 根据自变量预测因变量
    • 例:根据个人特征预测未来收入
  3. 因果推断(Causal Inference)

    • 在满足一定假设下推断因果关系
    • 例:教育对收入的因果效应

️ 本章学习路线

第 1 节:简单线性回归

核心概念

  • 一元线性回归模型:
  • OLS 估计原理:最小化残差平方和
  • 拟合优度: 的含义
  • 统计推断: 检验、置信区间

Python 实现

python
import statsmodels.api as sm
import matplotlib.pyplot as plt

# 简单线性回归
X = sm.add_constant(df['education'])
y = df['wage']
model = sm.OLS(y, X).fit()

# 可视化
plt.scatter(df['education'], df['wage'], alpha=0.5)
plt.plot(df['education'], model.fittedvalues, 'r-', linewidth=2)
plt.xlabel('Education (years)')
plt.ylabel('Wage')
plt.title('Simple Linear Regression')
plt.show()

经典案例

  • Galton 的身高回归("回归"一词的起源)
  • Mincer 工资方程(教育经济学的基础)

第 2 节:多元线性回归

核心概念

  • 多元回归模型:
  • 偏回归系数(Partial Regression Coefficient)
  • 多重共线性(Multicollinearity)
  • 遗漏变量偏误(Omitted Variable Bias)

数学直觉

解释 是在控制其他变量后, 的净效应

Python 实现

python
# 多元回归
X = sm.add_constant(df[['education', 'experience', 'female', 'urban']])
model = sm.OLS(df['log_wage'], X).fit(cov_type='HC3')
print(model.summary())

经典案例

  • 工资决定方程(Mincer Equation)
  • Cobb-Douglas 生产函数
  • Demand/Supply 模型

第 3 节:回归诊断

核心假设(Gauss-Markov 假设)

假设含义违反后果检验方法
线性性$E[YX] = X\beta$系数有偏
外生性$E[\varepsilonX] = 0$系数有偏
同方差$Var(\varepsilonX) = \sigma^2$SE 有偏
无自相关SE 有偏DW 检验
正态性影响小样本推断Shapiro 检验

诊断工具

python
# 1. 异方差检验
from statsmodels.stats.diagnostic import het_breuschpagan
bp_test = het_breuschpagan(model.resid, model.model.exog)

# 2. 多重共线性(VIF)
from statsmodels.stats.outliers_influence import variance_inflation_factor
vif = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]

# 3. 残差分析
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 残差 vs 拟合值、Q-Q plot、残差直方图、杠杆值图

问题解决

  • 异方差 → 稳健标准误(HC3)、WLS
  • 多重共线性 → 删除变量、主成分回归
  • 非线性 → 变换、多项式、样条

第 4 节:分类变量与交互项

虚拟变量陷阱

python
#  错误:包含所有虚拟变量
dummies = pd.get_dummies(df['region'])  # 4 个地区 → 4 个虚拟变量
# 导致完全共线性

#  正确:删除一个参照组
dummies = pd.get_dummies(df['region'], drop_first=True)  # 3 个虚拟变量

交互效应

python
# 教育回报率是否因性别而异?
df['edu_x_female'] = df['education'] * df['female']

model = smf.ols('log_wage ~ education + female + education:female', 
                data=df).fit()

# 解释:
# 男性教育回报率 = β₁
# 女性教育回报率 = β₁ + β₃

可视化交互效应

python
# 绘制不同性别的教育-工资曲线

第 5 节:回归结果的解释与报告

系数解释的艺术

模型形式解释示例
Level-Level 增加 1 单位, 增加 单位
Log-Level 增加 1 单位, 增长 %
Level-Log 增长 1%, 增加 单位
Log-Log 增长 1%, 增长 %(弹性)

论文级表格

python
from statsmodels.iolib.summary2 import summary_col

# 多模型对比
results = summary_col([model1, model2, model3],
                      model_names=['(1)', '(2)', '(3)'],
                      stars=True)
print(results.as_latex())

完整回归报告应包含

  1. 系数估计与标准误
  2. 显著性标记(*** p<0.01, ** p<0.05, * p<0.1)
  3. 样本量、、调整
  4. F 统计量
  5. 标准误类型(稳健、聚类)
  6. 控制变量说明

学习目标

完成本章后,你将能够:

能力维度具体目标
理论理解理解 OLS 估计原理
掌握 Gauss-Markov 假设
理解偏回归系数的含义
Python 实现使用 statsmodels 进行 OLS 回归
进行完整的回归诊断
处理分类变量和交互项
结果解释正确解释回归系数
区分统计显著性与实质显著性
识别因果推断的陷阱
学术写作输出论文级回归表格
撰写规范的回归结果报告

回归分析的常见误区

误区 1:相关即因果

错误

回归显示冰淇淋销量与溺水人数显著正相关
→ 结论:冰淇淋导致溺水

正确

  • 混淆变量:夏季温度
  • 相关性 ≠ 因果性
  • 需要考虑内生性、遗漏变量等问题

误区 2: 越高越好

错误:盲目追求高

正确

  • 预测任务: 重要
  • 因果推断:系数的无偏性更重要
  • 可能意味着过拟合

误区 3:统计显著性 = 实质意义

错误

p < 0.001,因此该效应非常重要

正确

  • 统计显著性:效应不为 0
  • 实质显著性:效应大小是否有意义
  • 大样本下,微小效应也可能显著

误区 4:控制变量越多越好

错误:加入所有可能的变量

正确

  • 只控制混淆变量
  • 过度控制可能导致对撞偏误(Collider Bias)
  • Bad Control(中间变量、结果变量)

经典文献与案例

开创性研究

  1. Mincer (1974): "Schooling, Experience, and Earnings"

    • Mincer 工资方程
  2. Card & Krueger (1994): "Minimum Wages and Employment"

    • 最低工资对就业的影响
    • 双重差分回归
  3. Angrist & Krueger (1991): "Does Compulsory School Attendance Affect Schooling and Earnings?"

    • 出生季度作为工具变量
    • 教育的因果回报率

经典教材

  1. Wooldridge (2020): Introductory Econometrics (7th Edition)

    • 计量经济学圣经
    • Python 示例代码
  2. Angrist & Pischke (2009): Mostly Harmless Econometrics

    • 因果推断视角
    • 实践导向
  3. Stock & Watson (2020): Introduction to Econometrics (4th Edition)

    • 清晰易懂
    • 大量案例

学习建议

DO(推荐做法)

  1. 先理解再操作:不要只会跑代码,理解背后的统计原理
  2. 可视化优先:回归前先画散点图,直观理解关系
  3. 诊断必不可少:每次回归都要检查假设
  4. 因果谨慎:区分相关性和因果性
  5. 报告规范:按照学术规范报告结果

DON'T(避免误区)

  1. 不要p-hacking:不要反复尝试模型直到显著
  2. 不要忽略假设:Gauss-Markov 假设很重要
  3. 不要过度解释:相关不等于因果
  4. 不要忘记稳健标准误:尤其在横截面数据中
  5. 不要盲目相信 :高 不等于好模型

本章数据集

数据集描述来源变量
wage_data.csv工资数据(横截面)CPSwage, education, experience, female
housing_prices.csv房价数据Boston Housingprice, rooms, crime, distance
student_achievement.csv学生成绩PISAtest_score, class_size, teacher_qual
country_growth.csv国家增长Penn World Tablegdp_growth, investment, education

准备好了吗?

回归分析是社会科学研究的核心方法,也是:

  • 描述统计的延伸
  • 假设检验的应用
  • 因果推断的基础
  • 预测建模的起点

掌握回归分析,你将能够:

  • 科学地研究变量间的关系
  • 撰写规范的实证研究论文
  • 进行数据驱动的决策分析
  • 为高级计量方法打下基础

让我们开始回归分析之旅!


本章文件清单

module-5_Regression Analysis/
├── 00-本章介绍.md                      # 本文件
├── 01-simple-linear-regression.md      # 简单线性回归
├── 02-multiple-regression.md           # 多元线性回归
├── 03-regression-diagnostics.md        # 回归诊断
├── 04-categorical-interaction.md       # 分类变量与交互项
└── 05-interpretation-reporting.md      # 结果解释与报告

预计学习时间:20-24 小时 难度系数:⭐⭐⭐⭐(需要统计学基础) 实用性:⭐⭐⭐⭐⭐(社会科学研究必备)


下一节01 - 简单线性回归

从最简单的模型开始!

基于 MIT 许可证发布。内容版权归作者所有。