1. xtile 命令

使用 xtile 命令,可以对某一个变量数进行等分组。

dis_inc 表示可支配收入,inc_group 表示按照可支配收入分组,生成的收入组变量,取值是 1-51 为低收入组 (20%),2 为中低收入组 (20%),3 为中等收入组 (20%),4 为中高收入组 (20%),5 为高收入组 (20%)。

1
2
** 样本等分组(按样本数量分组), n(5) 表示将样本等分为 5 份
xtile inc_group = dis_inc, n(5)

2. 组内样本等分组

先按照城乡、省份分组,然后每一组样本根据可支配收入,分为低收入组、中等偏下收入组、中等收入组、中等偏上收入组、高收入组等五组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 生成收入组别变量type
gen inc_group=.
//分城乡、分省份划分五个收入组: CX表示城乡识别码(1=城市,2=乡村),dis_inc表示人均可支配收入
forvalues j=1/2 {
egen p0_`j'=min(dis_inc) if CX==`j',by(pcode) //0%分位数
forvalues i=20(20)80 {
egen p`i'_`j'=pctile(dis_inc) if CX==`j',p(`i') by(pcode) //20%、40%、60%、80%分位数
}
egen p100_`j'=max(dis_inc) if CX==`j',by(pcode) //100%分位数
//分城乡确定收入组
replace inc_group=1 if dis_inc>=p0_`j' & dis_inc<p20_`j' // 低收入组
replace inc_group=2 if dis_inc>=p20_`j' & dis_inc<p40_`j' // 中低收入组
replace inc_group=3 if dis_inc>=p40_`j' & dis_inc<p60_`j' // 中等收入组
replace inc_group=4 if dis_inc>=p60_`j' & dis_inc<p80_`j' // 中高收入组
replace inc_group=5 if dis_inc>=p80_`j' & dis_inc<=p100_`j' // 高收入组
}

上面是一种很符合直觉的做法,即先计算分段点百分位数处的取值,然后根据大小关系来确定分组。

但是,上面的做法太麻烦!

egenmore 提供的 xtile 函数来计算,一行代码就就可以解决组内等分组的问题!

首次使用前需要安装 egenmore 提供的函数包egenmore 提供的函数包很多,安装等待较长时间是正常现象。

1
2
** 安装函数包 egenmore: 仅首次使用前需要安装
ssc install egenmore, repalce

上面代码的等效命令如下:

1
2
** 等效命令
egen inc_group = xtile(dis_inc), n(5) by(CX pcode)

使用 by() 来指定分组的依据,使用 n() 来指定组内等分组的数量。