13. 均衡差异模型#
13.1. 概述#
本讲座介绍了一个研究大学与高中毕业生工资差距的模型,其中获得大学学历所需的时间是关键因素。
这个模型最初由米尔顿·弗里德曼创建,用于研究美国牙医和医生的收入差异——他想弄清这种差异是竞争性劳动力市场的自然结果,还是源于政府与医疗专业组织设置的准入门槛。
詹妮弗·伯恩斯在其著作[Burns, 2023]第4章中,详细描述了米尔顿·弗里德曼与西蒙·库兹涅茨的合作研究,这项研究最终促成了[Kuznets and Friedman, 1939]和[Friedman and Kuznets, 1945]的发表。
我们可以将弗里德曼的模型对应到我们的研究中:把高中毕业生对应于牙医,把大学毕业生对应于医生。
我们提供的是一个简化模型,仅包含一个方程。在更完整的模型中,这个方程将是多个均衡条件之一。
这个”均衡差异”方程确定了使高中和大学毕业生终身收入现值相等的工资比率。
其基本思想是:工资水平会自动调整,直到高中应届毕业生在”直接工作”和”继续上大学”这两个选择之间无差别。
(在更完整的模型中,其他方程会解释是什么因素推动了这种调整。)
我们的模型是相对工资”均衡差异”理论的一个具体应用。这类理论可以追溯到亚当·斯密的《国富论》[Smith, 2010]。
本讲座主要使用线性代数知识,特别是矩阵乘法和矩阵求逆。
在讲座末尾,我们会引入一些微积分内容,展示如何用偏导数更简洁地表达某些结论。
这也让我们有机会展示Python在处理微积分计算时的强大功能!
不过即使不懂微积分,掌握线性代数知识也足以理解核心内容。
首先,让我们导入所需的Python模块。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']
13.2. 无差异条件#
这个模型的关键在于:大学教育带来的额外工资收益会达到一个均衡点,在这个点上,普通工人选择上大学或直接工作的预期收益是相等的。
设:
为一期债券的总回报率 表示一个人工作或上大学的年数 表示一个人如果不上大学高中毕业后可以工作的第一个时期 表示一个人工作的最后一个时期 为高中毕业生在 时的工资 为大学毕业生在 时的工资 为高中毕业生工资的(总)增长率,使得 为大学毕业生工资的(总)增长率,使得 为上大学所需的成本
现在我们考虑一个新的高中毕业生所面临的两个选择:
立即工作并赚取高中毕业生的工资
上大学四年,毕业后赚取大学毕业生的工资
并计算这位毕业生所能获得的现值
13.2.1. 不上大学直接工作的现值#
如果某人高中毕业后立即工作,并在
其中
现值
13.2.2. 上大学后工作的现值#
如果某人在
其中
现值
假设大学学费加上四年的食宿费用总计为
因此,扣除上大学的货币成本后,高中毕业后第一个时期上大学的现值为:
现在我们制定一个纯均衡差异模型,用于设定大学-高中工资的初始差距
我们假设
首先,均衡差异模型揭示了一个重要关系:大学与高中毕业生的工资差距
或
这个”无差异条件”是模型的核心。
求解方程 (13.1) 得到大学工资溢价
在免费大学的特殊情况下,
在这种情况下,上大学的唯一成本是放弃作为高中学历工人的收入。
因此,
我们很快将编写 Python 代码来计算
但首先,我们重新解读这些变量并描述我们模型的一种新的解释。
13.3. 重新解读模型:打工人和企业家#
我们可以通过添加一个参数并重新解读变量来获得一个有关企业家和打工人的模型。
现在让
我们将企业家的现值定义为:
其中
对于我们的打工人和企业家模型,我们将把
这个成本可能包括雇佣工人、办公空间和律师的费用。
我们过去称之为大学、高中工资差距的
我们会发现,随着
13.4. 计算#
通过变动参数
现在让我们编写一些 Python 代码来计算
class equalizing_diff:
"""
均等差异模型的一个类
"""
def __init__(self, R, T, γ_h, γ_c, w_h0, D=0, π=None):
# 通过设置 π 切换到弱模型
self.R, self.γ_h, self.γ_c, self.w_h0, self.D = R, γ_h, γ_c, w_h0, D
self.T, self.π = T, π
def compute_gap(self):
R, γ_h, γ_c, w_h0, D = self.R, self.γ_h, self.γ_c, self.w_h0, self.D
T, π = self.T, self.π
A_h = (1 - (γ_h/R)**(T+1)) / (1 - γ_h/R)
A_c = (1 - (γ_c/R)**(T-3)) / (1 - γ_c/R) * (γ_c/R)**4
# 调整后的模型
if π!=None:
A_c = π*A_c
ϕ = A_h/A_c + D/(w_h0*A_c)
return ϕ
为了帮助我们进行比较静态分析,我们使用向量化而不是循环来构建一些函数。
对于类的给定实例,我们想在一个参数变化而其他参数保持固定时重新计算
举个例子:
# ϕ_R
def ϕ_R(mc, R_new):
mc_new = equalizing_diff(R_new, mc.T, mc.γ_h, mc.γ_c, mc.w_h0, mc.D, mc.π)
return mc_new.compute_gap()
ϕ_R = np.vectorize(ϕ_R)
# ϕ_γh
def ϕ_γh(mc, γh_new):
mc_new = equalizing_diff(mc.R, mc.T, γh_new, mc.γ_c, mc.w_h0, mc.D, mc.π)
return mc_new.compute_gap()
ϕ_γh = np.vectorize(ϕ_γh)
# ϕ_γc
def ϕ_γc(mc, γc_new):
mc_new = equalizing_diff(mc.R, mc.T, mc.γ_h, γc_new, mc.w_h0, mc.D, mc.π)
return mc_new.compute_gap()
ϕ_γc = np.vectorize(ϕ_γc)
# ϕ_π
def ϕ_π(mc, π_new):
mc_new = equalizing_diff(mc.R, mc.T, mc.γ_h, mc.γ_c, mc.w_h0, mc.D, π_new)
return mc_new.compute_gap()
ϕ_π = np.vectorize(ϕ_π)
# 设定标准参数
R = 1.05
T = 40
γ_h, γ_c = 1.01, 1.01
w_h0 = 1
D = 10
# 创建一个例子
ex1 = equalizing_diff(R=R, T=T, γ_h=γ_h, γ_c=γ_c, w_h0=w_h0, D=D)
gap1 = ex1.compute_gap()
print(gap1)
1.8041412724969135
假设大学不收费,然后重新计算
初始的大学工资溢价应该会降低。
# 免费大学
ex2 = equalizing_diff(R, T, γ_h, γ_c, w_h0, D=0)
gap2 = ex2.compute_gap()
print(gap2)
1.2204649517903732
让我们构建一些图表,展示如果初始大学-高中工资比率
我们先从总利率
R_arr = np.linspace(1, 1.2, 50)
plt.plot(R_arr, φ_R(ex1, R_arr))
plt.xlabel(r'$R$')
plt.ylabel(r'工资差距')
plt.show()
注意当大学工资增长率
工资差距下降是为了”平衡”两种职业类型的现值,一种是高中工人,另一种是大学工人。
给定其它参数不变,你能猜到我们改变高中学历工人的工资的增长率时,初始工资比率
下图显示了会发生什么。
13.5. 企业家和打工人#
现在让我们用企业家-打工人的视角来解读这个模型。
如果一个新企业成功的概率是
# 企业家模型
ex3 = equalizing_diff(R, T, γ_h, γ_c, w_h0, π=0.2)
gap3 = ex3.compute_gap()
print(gap3)
6.102324758951866
现在让我们研究成功企业家的初始工资溢价是如何依赖于成功概率的。
π_arr = np.linspace(0.2, 1, 50)
plt.plot(π_arr, φ_π(ex3, π_arr))
plt.ylabel(r'工资差距')
plt.xlabel(r'$\pi$')
plt.show()
这个图表是不是符合你的猜想呢?
13.6. 微积分的应用#
到目前为止,我们只使用了线性代数,这对我们理解模型的运作原理已经足够了。
然而,懂得微积分的人可能会希望我们直接求偏导数。
还不会微积分的读者可以不用继续往下读,因为线性代数已经让我们了解了模型的主要特性。
但对于那些有兴趣了解我们如何让 Python 计算偏导数的读者,我们接下来会讲解这些内容。
我们将使用 Python 模块 sympy
来计算
让我们从 sympy
导入关键函数。
from sympy import Symbol, Lambda, symbols
设定符号
γ_h, γ_c, w_h0, D = symbols(r'\gamma_h, \gamma_h_c, w_0^h, D', real=True)
R, T = Symbol('R', real=True), Symbol('T', integer=True)
设定函数
A_h = Lambda((γ_h, R, T), (1 - (γ_h/R)**(T+1)) / (1 - γ_h/R))
A_h
设定函数
A_c = Lambda((γ_c, R, T), (1 - (γ_c/R)**(T-3)) / (1 - γ_c/R) * (γ_c/R)**4)
A_c
设定
ϕ = Lambda((D, γ_h, γ_c, R, T, w_h0), A_h(γ_h, R, T)/A_c(γ_c, R, T) + D/(w_h0*A_c(γ_c, R, T)))
ϕ
我们开始设定默认的参数值。
R_value = 1.05
T_value = 40
γ_h_value, γ_c_value = 1.01, 1.01
w_h0_value = 1
D_value = 10
现在让我们计算
ϕ_D = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(D)
ϕ_D
# 给定默认参数的值
ϕ_D_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_D)
ϕ_D_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
因此,与我们之前的图表一样,我们发现提高
计算
ϕ_T = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(T)
ϕ_T
# 在默认值的值
ϕ_T_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_T)
ϕ_T_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
我们发现提高
这是因为大学毕业生现在有更长的职业生涯来”收回”他们为上大学付出的时间和其他成本。
让我们计算
ϕ_γ_h = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(γ_h)
ϕ_γ_h
# 在默认值的值
ϕ_γ_h_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_γ_h)
ϕ_γ_h_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
我们发现提高
计算
ϕ_γ_c = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(γ_c)
ϕ_γ_c
# 在默认值的值
ϕ_γ_c_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_γ_c)
ϕ_γ_c_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
我们发现提高
让我们计算
ϕ_R = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(R)
ϕ_R
# 在默认值的值
ϕ_R_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_R)
ϕ_R_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
我们发现提高总利率