论文复现|同样是打工,为什么有些人的工资就是比别人低?
同样是打工,为什么有些人的工资就是比别人低?
关于城镇职工与农民工之间的收入差距,学术界一直存在争论。有研究说,户籍歧视导致的收入差距正在缩小,甚至出现了"反向歧视"——外地人比本地人挣得更多。但也有研究坚持,歧视从未消失,只是换了一种形式。
真相究竟是什么?
最近读到江求川、鲁元平发表在《数量经济技术经济研究》上的论文《户籍歧视导致的收入差距依然存在吗——基于机器学习方法的再讨论》,作者用了一种全新的研究方法,给出了令人信服的答案。
本文将带你复现这篇论文的核心方法,揭示那道看不见的收入鸿沟。
一、被忽视的关键问题:迁移溢价
在揭示答案之前,我们需要理解一个关键概念——迁移溢价。
什么是迁移溢价?简单来说,就是"外出打工挣得更多"这件事本身带来的收入加成。研究发现,在中国劳动力市场上,迁移人口确实存在显著的收入溢价,大约在8%~12%左右。
这意味着,如果我们直接比较农民工和城镇职工的工资,可能会把"外出打工挣得多"这件好事也算进"歧视"里。
就像你比较两个同学的考试成绩,一个是从农村考来的学生,一个是城市学生。农村学生分数低,可能是因为他们起点低、教育资源少——这是历史原因,不一定是歧视。但如果农村学生为了考学付出了更多努力(比如更刻苦学习),这部分"努力溢价"也会被算进最终成绩里,导致真实的能力差异被高估。
迁移溢价就是这样一种干扰因素。
二、新方法:双重去偏机器学习
传统的研究方法有一个根本性的缺陷:条件独立性假设(CIA)难以满足。
什么意思呢?CIA要求我们观察到的个人特征信息足够充分,足以包含所有与户籍身份和收入同时相关的因素。但现实是,总有一些我们观察不到的因素在起作用,比如个人能力、性格、家庭社会资本等等。遗漏这些因素会导致估计结果有偏。
江求川、鲁元平的这篇论文采用了Chernozhukov等人(2018)提出的双重去偏机器学习方法(Double/Debiased Machine Learning, DML)来解决这个问题。
DML方法的核心思想
- 用机器学习算法(如Lasso、随机森林)从大量候选变量和灵活方程形式中,自动筛选出最符合CIA条件的模型;
- 再用筛选出的模型进行因果推断,去除两步估计中的偏差。
简单来说,就是让机器学习帮我们在众多变量组合中找到"最干净"的那种组合,然后用它来识别真实的户籍歧视效应。
三、核心代码实现
以下是DML估计的R语言核心代码(使用hdm包实现正则化Lasso):
# DML估计核心代码(来源:ddmlestimate.R)
library(hdm)
library(glmnet)
library(grf)
# 设置工作目录
setwd("C:/Users/YaoXi/Desktop/数据与代码")
# 读取CGSS数据
cgss <- read_dta("./data/cgss_all_final.dta")
# 定义高维控制变量(包含交互项)
X <- "(male+age+han+edulv+ccparty+height+weight+bmi+sah+injury+depres+
usenet+friend+sotrust+sofair+polpart+union+freeexp+listenc+speakc+
listene+numchild+marri+soelv+genderviw+fedu+fccpart+femploy+
fgov+funitype+fownership+medu+mccpart+memploy+mgov+munitype+
mownership+exper+ownership+unitype+wkcontract+firmsize+isei+
siops+occmis+fisei+fsiops+foccmis+misei+msiops+moccmis)^2"
# 双重机器学习:使用K折交叉拟合
K <- 3 # 3折交叉拟合
Learner <- "rlasso" # 正则化Lasso
for(j in 1:K) {
# 分割样本:第j折作为测试集
ii <- cvgroup == j
nii <- cvgroup != j
# 训练集数据
Xmuse <- Xm[nii, ]
y1use <- dat[[Y]][nii] # 结果变量
# 处理变量:户籍类型哑变量
d4use <- dat$ruralhk[nii] # 农业户籍
d5use <- dat$migrant[nii] # 流动人口
# 用正则化Lasso估计条件期望函数
# 估计E[Y|X]
fit.y1 <- rlasso(x=Xmuse, y=y1use, post=TRUE, intercept=TRUE)
# 估计E[D|X](倾向得分)
fit.d4 <- rlassologit(x=Xmuse, y=d4use, post=TRUE)
fit.d5 <- rlassologit(x=Xmuse, y=d5use, post=TRUE)
# ... 交叉拟合结果保存至 ./data/ 目录
}
四、核心发现
发现一:迁移溢价干扰了户籍歧视的识别
论文首先用传统OLS方法进行分析。不考虑迁移因素时,农业户籍对小时工资的负面影响在2012-2015年样本中变得不显著——这似乎支持了"户籍歧视已经消失"的观点。
但一旦引入迁移因素,情况就变了:农业户籍对小时工资的负面影响重新变得显著。
结论:忽略迁移溢价会掩盖真实的户籍歧视。
发现二:农业户籍对收入有显著负面影响
使用DML方法选择更加符合CIA条件的模型后,结果显示:
农业户籍对劳动者小时工资收入、全年总收入和全年工资收入均有负面影响,且对小时工资收入的负面影响更为显著。
具体而言:
- 农业户籍使小时工资降低约 8.5%~15%
- 农业户籍使全年收入降低约 8%~12%
发现三:约8%~15%的收入差距属于户籍歧视
论文使用Oaxaca-Blinder分解方法,将城镇职工与农民工的收入差距分解为两部分:
- 可解释部分:由个人特征差异(如教育、工作经验)导致的差距
- 不可解释部分:通常被认为是歧视导致的差距
经DML方法修正后,农民工和城镇职工收入差距中约有8%~15%属于户籍歧视。
发现四:结论是稳健的
为了验证结论的可靠性,作者进行了多项稳健性检验:
- Oster检验:证实DML估计比OLS估计更加可靠
- Lewbel工具变量估计:结果一致
- 不同机器学习算法:Lasso、Ridge、Elastic Net、随机森林等多种算法结果一致
五、数据说明
本研究使用的数据来自中国综合社会调查(CGSS),覆盖两个时期:
- 2012-2015年:约10,044个观测值
- 2017-2021年:约9,767个观测值
控制变量包括:
- 个体特征:性别、年龄、受教育程度、婚姻状态、健康状况、党员身份等
- 工作特征:工作经验、工作单位所有制、职业地位得分等
- 家庭背景:父母受教育程度、父母职业地位得分等
共计 26个变量,为机器学习算法提供了丰富的候选特征池。
六、Oaxaca-Blinder分解代码
分解收入差距为特征效应和歧视效应的核心代码如下:
# Oaxaca-Blinder分解(来源:OBDec.R)
# DML残差化处理后的变量
# y1 = 残差化后的收入
# ruralhk = 残差化后的农业户籍
# migrant = 残差化后的流动人口
# 分类回归
# 城镇职工组(ruralhk=0, migrant=0)
# 农民工组(ruralhk=1, migrant=1)
# 分解公式:
# 收入差距 = 特征效应 + 歧视效应
# E[Y_urban] - E[Y_rural] = X_diff * beta + X_rural * (beta_urban - beta_rural)
# 使用stargazer输出格式
stargazer(mode1, mode2,
type="text",
keep.stat=c("n", "adj.rsq"),
dep.var.labels="lhrwage",
column.labels=c("2015c1", "2015c2", "2021c1", "2021c2"),
keep = c("ruralhk", "migrant", "ubmig", "runat", "rumig"),
star.char=c("#", "*", "**", "***"),
star.cutoffs=c(0.15, 0.1, 0.05, 0.01))
七、这个研究的重要性
理论贡献
- 首次系统考察了迁移溢价对户籍歧视识别的干扰
- 引入DML方法解决了遗漏变量偏误问题
- 为户籍歧视研究提供了更加稳健的证据
政策含义
研究结论表明,户籍歧视导致的收入差距依然存在,并未随着劳动力市场供需结构变化而消失。
这意味着:
- 户籍制度改革仍需深入推进
- 消除劳动力市场的制度性歧视仍是实现共同富裕的重要任务
- 仅靠市场自发力量无法完全消除户籍歧视
八、结论
江求川、鲁元平的这项研究告诉我们:那道看不见的收入鸿沟,依然存在。
当我们在讨论农民工与城镇职工的收入差距时,不能只看表面的数字,还要识别其中有多少是真正的能力差异,有多少是制度性歧视造成的。
迁移溢价的存在提醒我们,农民工为了获得更高收入付出了迁移的成本,而这部分"溢价"不应该掩盖他们仍然面临的户籍歧视。
用更加科学的研究方法,我们才能更准确地识别问题,从而为政策制定提供更可靠的依据。
参考信息
论文信息:
江求川, 鲁元平. 户籍歧视导致的收入差距依然存在吗——基于机器学习方法的再讨论[J]. 数量经济技术经济研究, 2024(9): 101-120.
数据来源:中国综合社会调查(CGSS)
复现代码:R语言(使用hdm、glmnet、grf等包)+ Stata代码
