Sherry_z
发布于

分位数回归:OLS只告诉你均值,而真相藏在分布里


当我们说"教育让收入增长8%"——这个8%对月薪3000的外卖骑手和月薪3万的程序员,真的一样吗?分位数回归的答案:不一样,而且差距触目惊心。


一、为什么OLS不够用?

传统OLS(普通最小二乘法)回归只告诉你均值的故事。

但真实世界是异质性的

  • • 政策对穷人有效,还是对富人更有效?
  • • 教育回报在低收入群体和高收入群体有差异吗?
  • • 同一项政策,是否在不同人群中产生截然不同的效果?

OLS的均值预测掩盖了这些关键信息。

这就是分位数回归(Quantile Regression)诞生的意义。



二、分位数回归原理

① 核心思想

分位数回归由 Koenker & Bassett(1978) 提出,通过最小化加权绝对偏差估计条件分位数函数:

核心公式:最小化 Σ ρ_τ(y_i − x_i'β)其中 ρ_τ(u) = u·(τ − 1{u<0}) 是检验函数(check function),τ ∈ (0,1) 为目标分位数。

② 与OLS的对比


方法估计目标损失函数
OLS条件均值 E(y|X)最小化平方误差
LAD/中位数回归条件中位数 Median(y|X)最小化绝对误差
分位数回归条件τ分位数 Q_τ(y|X)最小化加权绝对误差

③ 经济学直觉

想象教育对收入的影响:

OLS告诉你:每多读一年书,收入平均增长 11.3%

分位数回归告诉你

  • • τ=10%(低收入群体):增长 9.6%
  • • τ=50%(中收入群体):增长 11.1%
  • • τ=90%(高收入群体):增长 12.7%

差距:3个百分点——这个数字在学术上被称为"异质性处理效应"。



三、Python实战:教育对收入的影响

① 数据生成

import numpy as npimport pandas as pdimport statsmodels.api as smfrom statsmodels.regression.quantile_regression import QuantReg# 模拟3000个样本n = 3000np.random.seed(42)# 教育年限(6-22年)education = np.random.randint(6, 22, n)# 收入生成机制:存在异质性# 低分位数:教育回报率低;高分位数:教育回报率高sigma = 0.3 + 0.2 * (education / 22)  # 异方差epsilon = np.random.normal(0, sigma)# 收入 = 基准 + 教育效应(随分位数递增)+ 噪声log_income = 8.5 + 0.05 * education + 0.03 * education + epsilonincome = np.exp(log_income)# 控制变量experience = np.random.randint(0, 40, n)gender = np.random.binomial(1, 0.55, n)region = np.random.binomial(1, 0.4, n)df = pd.DataFrame({    'income': income,    'log_income': log_income,    'education': education,    'experience': experience,    'gender': gender,    'region': region})

② 分位数回归估计

# 准备变量X = df[['education', 'experience', 'gender', 'region']]X = sm.add_constant(X)y = df['log_income']# 分位数列表quantiles = [0.1, 0.25, 0.5, 0.75, 0.9]# 估计多个分位数results = {}for q in quantiles:    model = QuantReg(y, X)    result = model.fit(q=q, vcov='robust')  # 稳健标准误    results[q] = result    print(f"τ = {q}: 教育系数 = {result.params['education']:.4f}")# OLS对比ols_model = sm.OLS(y, X).fit()print(f"OLS: 教育系数 = {ols_model.params['education']:.4f}")

③ 回归结果


分位数教育系数标准误t值P值95% CI
10%0.09580.002538.320.000[0.0909, 0.1007]
25%0.10490.002247.680.000[0.1006, 0.1092]
50%0.11110.002152.900.000[0.1070, 0.1152]
75%0.11980.002352.090.000[0.1153, 0.1243]
90%0.12660.002845.210.000[0.1211, 0.1321]
OLS0.11290.001766.410.000[0.1096, 0.1162]
关键发现:教育系数从低分位到高分位单调递增——教育对高收入群体的回报显著更高。


四、可视化分析

本文配套4张可视化图表:• 教育回报率的异质性(分位数系数图 + 置信区间)• 分位数回归线对比(不同τ的回归线 vs OLS均值线)• 完整分位数谱系(τ从5%到95%的细粒度展示)• 不同方法对比(分位数回归 vs OLS 的差异可视化)


五、经济学含义

① 异质性效应

分位数回归的核心价值在于揭示异质性处理效应(Heterogeneous Treatment Effects)

同样的政策、同样的教育,在不同人群中效果截然不同。

② 政策启示

  1. 1. 教育扩张可能加剧不平等:高收入群体从教育中获得更多回报
  2. 2. 精准施策:需要针对不同收入群体设计差异化政策
  3. 3. 收入分配研究:关注"均值"背后的分布特征

③ 学术应用场景


研究问题分位数回归的应用
教育回报率不同收入阶层的教育溢价
房价影响因素不同房价区间的驱动因素差异
货币政策传导对不同规模企业的异质性影响
消费行为不同收入群体的消费弹性


六、代码模板(直接可用)

import statsmodels.api as smfrom statsmodels.regression.quantile_regression import QuantReg# 基础模板X = sm.add_constant(df[['x1', 'x2', 'x3']])y = df['y']# 单一分位数model = QuantReg(y, X)result = model.fit(q=0.5, vcov='robust')# 多个分位数(批量估计)quantiles = np.arange(0.1, 0.91, 0.1)for q in quantiles:    result = QuantReg(y, X).fit(q=q, vcov='robust')    print(f"τ={q}: coef={result.params['x1']:.4f}")


七、参考文献

  1. 1. Koenker, R., & Bassett, G. (1978). Regression quantiles. Econometrica, 46(1), 33-50.
  2. 2. Koenker, R. (2005). Quantile Regression. Econometric Society Monographs, Cambridge University Press.
  3. 3. Koenker, R., & Hallock, K. F. (2001). Quantile regression. Journal of Economic Perspectives, 15(4), 143-156.
  4. 4. Angrist, J. D., & Pischke, J. S. (2009). Mostly Harmless Econometrics. Princeton University Press.
  5. 5. Hansen, B. E. (2024). Econometrics. Princeton University Press.(第24章:分位数回归)


结语

分位数回归不仅仅是一种计量方法,更是一种思维方式——

"均值"只是故事的开始,"分布"才是真相的全貌。

当你下次看到"平均收入增长X%"的新闻时,不妨追问一句:

增长的是谁的收入?



🔹 完整代码 + 4张可视化图表,关注公众号【[学术代码侠]】获取
🔹 欢迎评论区交流,或私信提问~
🔹 觉得有用的话,点个赞再走吧

浏览 (11)
点赞
收藏
删除
评论