R6. 拟合值和残差
整理人: 袁洛琪 (北京大学)
邮箱: luoqi_yuan@163.com
1. 简介
以妇女工资与妇女工作时间为例,图中\(y_{i-fit}\)是工作时间为3小时对应的工资拟和值,\(y_i\)是工资的实际观测值,两者差值\(e_i\)即为残差。
可以通过以下命令获得拟和值和残差
sysuse nlsw88, clear
reg wage hours
predict wage_hat
predict e, res
2. 范例 1: 超额工资水平
2.1 计算正常工资和超额工资
假定工资由年龄 ( age ) 、工作时间 ( hours ) 、终身职位年数 ( tenure ) 、是否大学毕业 ( collgrad ) 以及是否在南方地区 ( south ) 决定,其中回归得到的线性拟和值即为正常工资,残差项即为超额工资;具体代码如下:
global x "age hours tenure collgrad married south"
reg wage $x
keep if e(sample) //仅保留参与回归的观察值, 参见 D3_miss.do
predict normal_wage //正常工资(线性拟合值)
predict excess_wage, res //超额工资(残差, 可正可负)
2.2 进一步分析
作出超额工资直方图后发现,极少数妇女获得了特别高的超额工资。
进一步对行业进行分组统计后发现运输业和金融业有较高的超额工资,而农林牧渔的超额工资则为负;其他行业特征读者们可以此类推。
tabstat excess_wage, by(industry) c(s) /// //统计分析
s(mean N sd p50 min max) f(%4.2f)
最后,我们对残差进行回归分析探究超额工资的可能影响因素。
global z "i.race union never_married"
reg excess_wage $z //影响因素,不完整
结果显示,黑种人相对于白种人有显著更低的超额工资,工会成员有显著更高的工资水平,婚姻状况对超额工资无影响。
3. 范例 2: 分行业-分年度计算超额工资水平
经过数据预处理后,我们根据以下代码计算出分行业-分年度的超额工资水平,再根据第 2 部分的方法进行分析。
gen ex_wage = .
local xx "age nev_mar collgrad south ttl_exp tenure"
qui sum ind_year
global N = r(max) // 行业-年度个数
forvalues i = 1/$N{ // 参见 P3_loop.do
qui reg ln_wage `xx' if (ind_year==`i')
qui predict e if e(sample), res
qui replace ex_wage = e if e(sample)
drop e
}