分享

Stata:CHFS中国家庭金融调查数据库清洗和处理

 计量经济圈 2021-06-26
Image作者: 李青塬 (广东工业大学)

邮箱: qingyuanli95@gmail.com


目录

  • 1. 引言

  • 2. 文档管理

  • 3. 获取数据

  • 4. 数据管理

    • 4.1 数据导入

    • 4.2 数据浏览及变量定义

    • 4.3 删除生成及替代变量

    • 4.4 数据文件的合并

  • 5. 描述性统计

    • 5.1 单变量描述性统计

    • 5.2 (定性—定性)变量描述性统计

    • 5.3 (定性—定量)变量描述性统计

  • 6. 本文小结

  • 7. 附:CHFS_data_dofile.do

  • 8. 参考文献

对于实证研究者而言,数据是研究的重要原材料。巧妇难为无米之炊,通常很多同学写毕业论文喜欢用问卷调查数据,一般都是用发朋友圈求填问卷的方法来搜集数据。不过,这种方法存在较大缺陷,在答辩时,通常会引起答辩评委的质疑。其实,有很多免费的微观数据可以供研究者使用,这些数据包括中国健康与养老追踪调查数据( CHARLS ) 、中国家庭追踪调查数据 ( CFPS ) 以及中国家庭金融调查数据 ( CHFS )等等。一方面,这些微观数据库有很强的权威性和科学性,另一方面,数据内容十分丰富,也足以对社科领域的许多题目进行研究。

往往,使用这些数据有些许门槛,刚开始拿到数据手足无措。那么,我们该怎么处理这些微观数据呢?本文以西南财经大学的中国家庭金融调查 ( CHFS )为例,尝试介绍该微观数据库,并进行一些描述性分析。

2. 文档管理

通常,我们在处理数据的过程中会产生许多文件,让每个文件都找到自己的“去处”十分重要。或许我们可以根据自己研究的论文题目来组织文档,一个题目可以创建一个文档库。文档库中包含以下九个子文件夹。(关于文件夹的设定,参见 )

  • Paper: 论文所有版本
  • References:所参考的文献
  • Raw_data :原始数据,只进行读取,不写入
  • Working_data :存放对原数据进行处理后的数据
  • Temp_data:存放临时数据,当程序完成后即可删除
  • Dofiles:存放 Stata 的代码文件
  • Logfiles:存放 Stata 的日志文件
  • Figures:存放生成的图片
  • Tables:存放生成的图表

手动创建 9 个文件夹有点不便,于是我编写了以下代码,能够实现自动创建文档库。您可以直接在以下的 do 文件中修改路径,即可自动创建研究文档库。

-------------------------------------------------

3. 获取数据

首先,数据是免费的。但是,我们需要从官方渠道申请数据。可以从 CHFS 网站进行数据下载,该平台提供 Stata 数据格式,并定期更新数据。打开 CHFS 官网后,在首页右上角点击数据申请入口即可注册并进行认证,认证速度很快,一般能在短时间内通过。之后,即可下载所需的数据。我们可以下载 2015 年和 2017 年共 2 年的数据。数据拿到了,应该放在哪里呢?下载的原始数据就可以放在刚刚创建的 Raw_data 中。从官网下载的是一个压缩包,可以解压在当前文件夹内。

  • CHFS 数据中心网址:

  • https://chfs./

4. 数据管理

在对数据进行分析时,我们经常会遇到这些事情:合并多个文件;删除某个变量;重新生成一个新变量;计算某个变量的函数值等。这些事情的处理就是数据管理。本文试着介绍一些常用的数据管理命令,值得注意的是,以下数据处理及描述仅为了理解方便,具体论文的数据处理还需具体分析。

4.1 数据导入

CHFS 的数据的导入至少有两种方法。一种是直接拖进软件中,因为 CHFS 数据的格式是 dta 的格式,可以直接拖动数据到 Stata 中。另外一种是使用代码,设定路径来导入。在导入数据前,通常可对结果窗口进行“录像”,用 log 来保存。


. /* use,导入原始数据 */
. set matsize 5000

. set more off

. use '$raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_hh_20191120_version14.dta', clear

4.2 数据浏览及变量定义

数据导入后,我们可以从宏观层面上概览一下整体的数据情况。运用 describe 命令可以对数据库中的所有变量及其标签进行描述。此外,还可以打开数据窗口进行浏览和编辑。一种方式是手动打开,另一种就是运用命令打开。


. describe //描述所有数据

. browse //浏览数据

. edit //编辑数据

恢复数据可以用 preserve 和 restore 两个命令。preserve 可以保存数据,保证程序终止后数据恢复。restore 强制恢复数据。值得注意的是,在命令运行时 preserve 和 restore 不能中断。对于变量名的改变,我们可以运用 rename 命令来操作。以下的命令展示了对变量名的批量大小写改写以及前后缀变换。


. preserve //与 restore 一起使用可以恢复数据
. drop _all //删除所有数据
. restore

. preserve
. rename _all, upper //所有变量大写
. rename _all, lower //所有变量小写
. rename _all, proper //所有变量名首字母大写
. rename * *_2021 //所有变量名后加相同后缀前缀
. rename (*_2021 ) (havefun_*) //批量修改变量名的前后缀
. restore

我们还可以为变量添加标签,也可以对观测值和变量进行排序:


. gen family_size=a2000a+a2000b
(21,791 missing values generated)

. label var family_size '家庭规模' //为变量增加标签

. sort family_size //对数据进行排序

. order hhid family_size //对变量进行排序

4.3 删除生成及替代变量

有时候,我们需要对一个变量进行异常值处理,最常见的异常值就是重复数据。可以利用 duplicates 进行查询和删除:


. duplicates list hhid //查询有无重复家户
Duplicates in terms of hhid
(0 observations are duplicates)

. duplicates drop hhid,force //删除重复家户
Duplicates in terms of hhid
(0 observations are duplicates)

在进行实证研究前,需要许多变量,而 CHFS 中的原始数据可能不能直接使用,需要我们做初步处理。以下是一些处理方法。其中, encode 可以把字符串格式转换为数值型格式。recode 可以对变量的值进行重新编排。


. encode hhid, gen(newhhid) //变量格式转换

. gen nor=1 if d1101==1 | d2101==1
(10,682 missing values generated)

. recode nor(1=1)(.=0),gen(no_risk) //变量值替换并产生新变量,无风险资产
(10682 differences between nor and no_risk)

. recode a4011c (1=5)(2=4)(3=3)(4=2)(5=1),gen(happiness) //产生幸福感变量
(25272 differences between a4011c and happiness)
. recode c1001 (1=1)(2=2)(3=2) ,gen(hous)
(772 differences between c1001 and hous)

. gen nf=c7001+hous
(29 missing values generated)

. recode nf(2/3=1)(4=0),gen(no_fin) //非金融资产
(21720 differences between nf and no_fin)

. recode hous (1=1)(2=0) ,gen(house) //房产
(2602 differences between hous and house)

. recode c7001(1=1)(2=0),gen(car) //汽车
(16931 differences between c7001 and car)

如果要形成面板数据,那么时间变量必不可少。我们可用 gen 生成一个时间变量。对于可以进行数值运算的一些变量,倘若要进行平均数,最大值和中位数等处理,就可以用 egen 来产生。运用 replace 也可在原始的观测值上进行变化。


. gen year=2015 //产生新变量,生成年份

. egen incomemedian=median(total_income) //产生新变量,去年总收入的中位数

. egen incomemax=max(total_income) //产生新变量,去年总收入的最大值

. replace incomemax=incomemax/10 //把 incomemax 的值缩小 10 倍
(37,243 real changes made)

假设研究不同幸福感水平下的收入情况,我们可以进行分组函数计算在不同幸福感水平上的总收入均值、总收入累计值和同等幸福感水平上的最大值或最小值:

. bys happiness: egen mean_tolincome=mean(total_income) //分组求平均

. bys happiness: egen newvar=sum(total_income) //计算分组后的累计和

. bys happiness year: egen maxvar=max(total_income) //计算分组后求最大或最小值

CHFS 数据库中的大多数变量对于研究者而言是无用的。这就需要我们做出一个积极的决定,只保留所需变量或观测值,所谓“断舍离”。保留所需的变量可以提高效率,保留所需的观测值可以提高研究的针对性。这时,我们主要使用 keep 和 drop 两个命令。


. drop if happiness==. | happiness==.d | happiness==.r //删除无效值
(46 observations deleted)

. drop if track==0 //保留追访家户
(15,494 observations deleted)

. keep if track!=0 //保留追访家户
(0 observations deleted)

. keep hhid family_size year happiness total_income //保留需要研究的变量

. save $working_data\chfs_2015_hh.dta, replace //保存数据
file E:\CHFS\Working_data\chfs_2015_hh.dta saved

4.4 数据文件的合并

CHFS 有三个数据库,各自包含一些信息,研究通常的变量可能分布在不同的数据库中。同时,也有可能从外部得到一些数据,比如省级层面的宏观经济数据,天气情况等等。对于不同年份的数据,我们想做成面板数据,还需要进行跨年合并。这些情况下我们就主要运用 append 和 merge 两个命令:

. *相同变量数据文件合并,即跨年的面板数据合并
. use $raw_data\CHFS数据-2017\CHFS2017年调查数据-stata14版本\chfs2017_hh_202104.dta, clear

. rename a1111 family_size

. ren b2003b total_income

. recode h3514 (1=5)(2=4)(3=3)(4=2)(5=1),gen(happiness) //产生幸福感变量
(30010 differences between h3514 and happiness)

. gen year=2017

. keep hhid family_size year total_income happiness //保留需要研究的变量

. append using $working_data\chfs_2015_hh.dta //使用 append 让相同变量数据文件合并
(note: variable family_size was byte, now float to accommodate using data's values)
(note: variable total_income was long, now double to accommodate using data's values)

. save $working_data\chfs_2015_2017_hh.dta, replace //保存数据
file E:\CHFS\Working_data\chfs_2015_2017_hh.dta saved

刚刚完成了 2015 年和 2017 年家庭层面数据的合并,形成了面板数据。往往在研究中,需要在原数据中加入新的变量进行合并,这时就需要使用 merge 这个命令,以下是 CHFS 2015 年 hh 数据与 master 数据的合并。在实际论文数据处理中,我们可能需要进行大量的数据合并,还需要合并个人数据以及外部数据等,本文此处的合并仅作参考。


. *在原数据中加入新变量合并
. /* use,导入原始数据 */
. use $raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_master_city_20180504_version14, clear

. /* merge,加入新变量合并数据 */
. merge m:1 hhid using $working_data\chfs_2015_hh.dta //合并hh数据和master数据

Result # of obs.
-----------------------------------------
not matched 15,540
from master 15,540 (_merge==1)
from using 0 (_merge==2)

matched 21,749 (_merge==3)
-----------------------------------------

. keep if _merge==3 //保留匹配后所需数据
(15,540 observations deleted)

. drop _merge //需删除,若后续再次匹配则还会生成该变量

. save $working_data\chfs_hh_master_2015_hh.dta, replace //保存数据
file E:\CHFS\Working_data\chfs_hh_master_2015_hh.dta saved

5. 描述性统计

经济学的经验分析通常分为描述性分析和回归分析。描述性分析通常考察变量的分布特征,计算集中趋势和离散情况。通常有两种作用:其一是在统计推断或者因果分析之前,发现、界定或者详细讨论要研究的问题;另一个是在一定程度上验证假说。回归分析才是计量经济学的核心内容。在进行回归分析前,通过对数据的描述,可以在很大程度上了解数据的脾性。本节使用 CHFS 2015 的个人数据进行描述性统计。

5.1 单变量描述性统计

单变量的描述性统计分析是指单个变量的集中趋势和离散趋势进行分析。变量即变化的量,变量的测量值就是观测值,一个或多个变量及其观测值就构成了数据。了解变量和数据是进行计量经济分析的初步工作。

. use $raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_ind_20191120_version14.dta,clear //导入数据

. recode a2003 (1=1)(2=0),gen(gender) //性别
(65568 differences between a2003 and gender)

. gen age=2021-a2005 //年龄
(159 missing values generated)

. rename a2012 edu //受教育程度

. recode a3000(1=1)(2=0),gen(work) //有无工作
(41902 differences between a3000 and work)

. rename a2025b health //健康程度

. rename a2024 marital //婚姻状况

. gen income=a3020+a3022+a3023-a3024 //收入
(106,722 missing values generated)

. recode a3014a(1/4=1)(5/7=0)(8=1)(9/10=0),gen(department) //是否国企
(33385 differences between a3014a and department)

频次分析是最基本的描述统计分析,衡量类别的集中趋势,我们可以用 tabulate(tab) 命令先对性别进行分析。描述的结果中,第一列是变量的取值,第二列的频次,第三列是百分比,第四列是累积百分比。结果显示,总体样本中,男性占比达到 50.7% 。

. tab gender,m            //性别分布

RECODE of |
a2003 |
((新样 |
本)家 |
庭成员 |
性别) | Freq. Percent Cum.
------------+-----------------------------------
0 | 65,568 49.23 49.23
1 | 67,523 50.70 99.93
. | 92 0.07 100.00
------------+-----------------------------------
Total | 133,183 100.00

下表是教育程度分布与描述,结果显示高中及高中以下教育水平的个体占了 65.28% ,大学本科以上教育程度大约占比 8% 。在 tab 命令后加 d 可以显示更加详细的描述性统计结果,总体均值为初高中教育程度。


. tab edu,m //教育程度分布

家庭成 |
员的文 |
化程度 | Freq. Percent Cum.
------------+-----------------------------------
1 | 12,559 9.43 9.43
2 | 23,778 17.85 27.28
3 | 34,645 26.01 53.30
4 | 15,958 11.98 65.28
5 | 6,376 4.79 70.07
6 | 8,460 6.35 76.42
7 | 10,149 7.62 84.04
8 | 898 0.67 84.71
9 | 158 0.12 84.83
. | 20,202 15.17 100.00
------------+-----------------------------------
Total | 133,183 100.00

. sum edu,d //平均值与方差

家庭成员的文化程度
-------------------------------------------------------------
Percentiles Smallest
1% 1 1
5% 1 1
10% 1 1 Obs 112,981
25% 2 1 Sum of Wgt. 112,981

50% 3 Mean 3.453421
Largest Std. Dev. 1.782346
75% 4 9
90% 6 9 Variance 3.176758
95% 7 9 Skewness .7320712
99% 7 9 Kurtosis 2.714751

我们可以用 sum 和 if 进行分样本进行描述。下表显示了在不同性别情况下,男性的受教育水平均值要大于女性。


. sum edu if gender==1 //男性受教育程度

Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
edu | 56,572 3.621456 1.731099 1 9

. sum edu if gender==0 //女性受教育程度

Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
edu | 56,357 3.284579 1.816566 1 9

运用 centile 命令可以计算分位数。结果的第三列表示分位数,第四列表示相应的分位数的值。最后两列是 95% 的置信区间。

. centile edu if gender==1 ,centile(10(10)90) //计算男性样本中 10% , 20% ,..., 90% 分位数

-- Binom. Interp. --
Variable | Obs Percentile Centile [95% Conf. Interval]
-------------+-------------------------------------------------------------
edu | 56,572 10 2 2 2
| 20 2 2 2
| 30 3 3 3
| 40 3 3 3
| 50 3 3 3
| 60 3 3 4
| 70 4 4 4
| 80 5 5 5
| 90 7 7 7

5.2 (定性—定性)变量描述性统计

在进行经济现象的研究中,我们对两个变量或两个以上的变量之间的关系更感兴趣。(定性—定性)变量的描述统计分析就是当两个或两个以上的变量均为定性变量时,应用描述统计分析方法考察两个变量的关系。我们可以用 tab 命令,添加 row 选项可以显示百分比,添加 chi2 命令可以进行卡方检验。下表考察不同性别的受教育程度分布差异及并卡方检。从结果中可以看出,在初中教育水平上(文化程度为 3 以上)的占比中,男性一直高于女性。卡方检验也表明两类个体具有显著差异。

. *定性——定性变量描述统计
. tab gender edu,row chi2 //不同性别的受教育程度分布差异,并卡方检验

+----------------+
| Key |
|----------------|
| frequency |
| row percentage |
+----------------+

RECODE of |
a2003 |
((新样 |
本)家 |
庭成员 | 家庭成员的文化程度
性别) | 1 2 3 4 5 6 7 8 9 | Total
--------+--------------------------------------------------------+-------------------------
0 | 8,944 12,401 15,660 7,176 3,052 3,966 4,690 419 49 | 56,357
| 15.87 22.00 27.79 12.73 5.42 7.04 8.32 0.74 0.09 | 100.00
--------+--------------------------------------------------------+-------------------------
1 | 3,606 11,371 18,969 8,779 3,316 4,490 5,454 479 108 | 56,572
| 6.37 20.10 33.53 15.52 5.86 7.94 9.64 0.85 0.19 | 100.00
--------+--------------------------------------------------------+-------------------------
Total | 12,550 23,772 34,629 15,955 6,368 8,456 10,144 898 157 | 112,929
| 11.11 21.05 30.66 14.13 5.64 7.49 8.98 0.80 0.14 | 100.00
Pearson chi2(8) = 2.9e+03 Pr = 0.000

我们还可以进行更加多维度的频次分析。可以考察不同性别、教育程度在工作单位性质的区别。总体而言,无论性别如何,受教育程度越高,进入国企的比率越大。


. by gender, sort:tab edu department,row //不同性别、教育程度在工作单位性质的区别

-----------------------------------------------------
-> gender = 0

+----------------+
| Key |
|----------------|
| frequency |
| row percentage |
+----------------+

| RECODE of a3014a
家庭成 | (家庭成员工作
员的文 | 单位的类型)
化程度 | 0 1 | Total
-----------+----------------------+----------
1 | 365 40 | 405
| 90.12 9.88 | 100.00
-----------+----------------------+----------
2 | 1,525 180 | 1,705
| 89.44 10.56 | 100.00
-----------+----------------------+----------
3 | 3,252 660 | 3,912
| 83.13 16.87 | 100.00
-----------+----------------------+----------
4 | 1,244 530 | 1,774
| 70.12 29.88 | 100.00
-----------+----------------------+----------
5 | 737 459 | 1,196
| 61.62 38.38 | 100.00
-----------+----------------------+----------
6 | 1,116 1,045 | 2,161
| 51.64 48.36 | 100.00
-----------+----------------------+----------
7 | 1,059 1,606 | 2,665
| 39.74 60.26 | 100.00
-----------+----------------------+----------
8 | 86 201 | 287
| 29.97 70.03 | 100.00
-----------+----------------------+----------
9 | 6 27 | 33
| 18.18 81.82 | 100.00
-----------+----------------------+----------
Total | 9,390 4,748 | 14,138
| 66.42 33.58 | 100.00


-----------------------------------------------------
-> gender = 1

+----------------+
| Key |
|----------------|
| frequency |
| row percentage |
+----------------+

| RECODE of a3014a
家庭成 | (家庭成员工作
员的文 | 单位的类型)
化程度 | 0 1 | Total
-----------+----------------------+----------
1 | 294 37 | 331
| 88.82 11.18 | 100.00
-----------+----------------------+----------
2 | 2,274 276 | 2,550
| 89.18 10.82 | 100.00
-----------+----------------------+----------
3 | 5,901 1,270 | 7,171
| 82.29 17.71 | 100.00
-----------+----------------------+----------
4 | 2,133 1,217 | 3,350
| 63.67 36.33 | 100.00
-----------+----------------------+----------
5 | 985 654 | 1,639
| 60.10 39.90 | 100.00
-----------+----------------------+----------
6 | 1,235 1,408 | 2,643
| 46.73 53.27 | 100.00
-----------+----------------------+----------
7 | 1,173 1,901 | 3,074
| 38.16 61.84 | 100.00
-----------+----------------------+----------
8 | 84 235 | 319
| 26.33 73.67 | 100.00
-----------+----------------------+----------
9 | 8 70 | 78
| 10.26 89.74 | 100.00
-----------+----------------------+----------
Total | 14,087 7,068 | 21,155
| 66.59 33.41 | 100.00

5.3 (定性—定量)变量描述性统计

当一个变量是定性变量,一个变量为定量变量时,考察二者的关系就是(定性—定量)描述性统计分析。具体而言,即分组变量是定性变量时,要描述的变量是定量变量。我们可以用 tabstat 命令,通常需要加两个选项,一个是 by()选项,界定分组变量;另一个是 statistics ()可以加上需要报告的统计量。例如 mean (平均值)、p50 (中位数)等。下表考察了不同性别的收入、标准差、中位数、最大值和最小值。可以看出男性的平均收入要高于女性,标准差也较女性高。


. *定性——定量变量描述统计
. tabstat income,by(gender) statistics(mean sd p50 max min) //不同性别收入

Summary for variables: income
by categories of: gender (RECODE of a2003 ((新样本)家庭成员性别))

gender | mean sd p50 max min
---------+--------------------------------------------------
0 | 26641.69 22954.32 22000 209999.9 -8000.007
1 | 32493.44 27502.74 26597.04 229999.9 -20000
---------+--------------------------------------------------
Total | 30119.07 25913.57 24000 229999.9 -20000
------------------------------------------------------------

下表表示不同教育程度的平均收入差异。结果显示,随着教育程度提高,平均收入也相应提高。但收入差异(标准差)在硕士学历中最大(教育程度为 8 的个体中)。

. tabstat income,by(edu) statistics(mean sd) //不同教育程度的平均收入

Summary for variables: income
by categories of: edu (家庭成员的文化程度)

edu | mean sd
---------+--------------------
1 | 16622.82 14846.1
2 | 22053.84 17984.86
3 | 25752.82 19361.01
4 | 28169.85 21516.89
5 | 29786.09 23356.15
6 | 36311.05 27473.99
7 | 47925.91 37661.57
8 | 69558.22 49129.55
9 | 85211.61 44959.43
---------+--------------------
Total | 30185.23 25950.62
------------------------------

. log close //关闭 log 文件
name: <unnamed>
log: E:\CHFS\Logfiles\Stata连享会_CHFS数据处理.log
log type: text
closed on: 3 Jun 2021, 21:12:49
--------------------------------------------------------------

6. 本文小结

本文首先从研究的原材料出发,推荐使用 CHARLS 、CFPS 等大型微观调查数据库,并以 CHFS 为例介绍数据的获取方法。其次,介绍了文档管理方法,并编写了自动创建学术研究文档库的 do 文件。再次,本文利用 CHFS 数据尝试对数据导入、数据保存以及面板数据合并等数据管理方法进行简要介绍。最后,结合具体实例,分别对单变量和多变量进行描述性分析。需要提醒的是,笔者作为 Stata 初学者,本文的处理方法仅作参考,具体论文的数据处理还需具体分析。

7. 附:CHFS_data_dofile.do

最后附上本文的代码,供大家参考:

/* use,导入原始数据 */ 
set matsize 5000
set more off
use $raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_hh_20191120_version14.dta,clear

describe //描述所有数据
browse //浏览数据
edit //编辑数据
preserve //与restore一起使用可以恢复数据
drop _all
restore
preserve
rename _all,upper //所有变量大写
rename _all,lower //所有变量小写
rename _all,proper //所有变量名首字母大写
rename * *_2021 //所有变量名后加相同后缀前缀
rename (*_2021 ) (havefun_*) //批量修改变量名的前后缀
restore
gen family_size=a2000a+a2000b
label var family_size '家庭规模' //为变量增加标签
sort family_size //对数据进行排序
order hhid family_size //对变量进行排序

duplicates list hhid //查询有无重复家户
duplicates drop hhid,force //删除重复家户
gen year=2015 //产生新变量,生成年份
egen incomemedian=median(total_income) //产生新变量,去年总收入的中位数
egen incomemax=max(total_income) //产生新变量,去年总收入的最大值
encode hhid, gen(newhhid) //变量格式转换
gen nor=1 if d1101==1 | d2101==1
recode nor(1=1)(.=0),gen(no_risk) //变量值替换并产生新变量,无风险资产
recode a4011c (1=5)(2=4)(3=3)(4=2)(5=1),gen(happiness) //产生幸福感变量
drop if happiness==. | happiness==.d | happiness==.r //删除无效值
replace incomemax=incomemax/10 //把 incomemax 的值缩小 10 倍
drop if track==0 //保留追访家户
keep if track!=0 //保留追访家户
bys hhid: egen mean_tolincome=mean(total_income) //分组求平均
bys hhid: egen newvar=sum(total_income) //计算分组后的累计和
bys hhid year: egen cc=max(total_income) //计算分组后求最大最小值
recode c1001 (1=1)(2=2)(3=2) ,gen(hous)
gen nf=c7001+hous
recode nf(2/3=1)(4=0),gen(no_fin) //非金融资产
recode hous (1=1)(2=0) ,gen(house) //房产
recode c7001(1=1)(2=0),gen(car) //汽车
keep hhid family_size year happiness total_income //保留需要研究的变量
save $working_data\chfs_2015_hh.dta, replace //保存数据

*相同变量数据文件合并,即跨年的面板数据合并
use $raw_data\CHFS数据-2017\CHFS2017年调查数据-stata14版本\chfs2017_hh_202104.dta, clear
rename a1111 family_size
ren b2003b total_income
recode h3514 (1=5)(2=4)(3=3)(4=2)(5=1),gen(happiness) //产生幸福感变量
gen year=2017
keep hhid family_size year total_income happiness //保留需要研究的变量
append using $working_data\chfs_2015_hh.dta //相同变量数据文件合并
save $working_data\chfs_2015_2017_hh.dta, replace //保存数据

*在原数据中加入新变量合并
/* use,导入原始数据 */
use $raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_master_city_20180504_version14, clear
/* merge,加入新变量合并数据 */
merge m:1 hhid using $working_data\chfs_2015_hh.dta //合并hh数据和master数据
keep if _merge==3 //保留匹配后所需数据
drop _merge //需删除,若后续再次匹配则还会生成该变量
save $working_data\chfs_hh_master_2015_hh.dta, replace //保存数据

use $raw_data\CHFS数据-2015\2015年中国家庭金融调查数据dta格式-stata14以上版本\chfs2015_ind_20191120_version14.dta,clear //导入数据
recode a2003 (1=1)(2=0),gen(gender) //性别
gen age=2021-a2005 //年龄
rename a2012 edu //教育程度
recode a3000(1=1)(2=0),gen(work) //有无工作
rename a2025b health //健康程度
rename a2024 marital //婚姻状况
gen income=a3020+a3022+a3023-a3024 //收入
recode a3014a(1/4=1)(5/7=0)(8=1)(9/10=0),gen(department) //是否国企
tab gender,m //性别分布
tab edu,m //教育程度分布
sum edu,d //平均值与方差
sum edu if gender==1 //男性受教育程度
sum edu if gender==0 //女性受教育程度
centile edu if gender==1 ,centile(10(10)90) //计算男性样本中 10% , 20% ,..., 90% 分位数

*定性——定性变量描述统计
drop if gender==.
tab gender edu,row chi2 //不同性别的受教育程度分布差异,并卡方检验
by gender,sort:tab edu department,row //不同性别、教育程度在工作单位性质的区别

*定性——定量变量描述统计
tabstat income,by(gender) statistics(mean sd p50 max min) //不同性别收入
tabstat income,by(edu) statistics(mean sd) //不同教育程度的平均收入
log close //关闭 log 文件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多