金融计量第一次作业
金融计量第一次作业
HW01-2018.10.13
第1题
使用
sysuse nlsw88.dta, clear
命令调入 Stata 数据文件nls88.dta
, 并完成如下统计分析:
第(1)小题
- 题目
(1). 统计如下变量的平均值、标准差、中位数、最小值和最大值,并列表呈现出来,并输出为 Excel 或 Word 文档,名称为 Table01.xlsx 或 Table01.docx:
age grade wage hours ttl_exp tenure
- 解答
sysuse nlsw88.dta,clear
ssc install sum2docx, replace
sum2docx age grade wage hours ttl_exp tenure using ///
E:\stata15\ado\personal\Assignment1\Table01.docx, ///
mean(%6.2f) sd(%6.2f) median(%6.2f) min(%6.2f) ///
max(%6.2f) title("Table01")
可以看到,文件Table01
已经输出并保存到相应文件夹中,打开文件可以看到得到的统计结果。
第(2)小题
- 题目
(2). 产生如下变量:
age2
: 该变量的所有观察值等于 age 变量中相应观察值的平方ln_wage = ln(wage)
: 工资变量的自然对数wage_hour = wage/hours
: 工资变量 wage 与小时 hours 的比值dum
: 该变量是一个虚拟变量(dummy variable),其取值为:
dum = 1
如果某个妇女的 wage 大于所有妇女的平均工资dum = 0
如果某个妇女的 wage 小于或等于所有妇女的平均工资
- 解答
gen age2 = age^2 //增加新变量age2
gen ln_wage = ln(wage) //增加新变量ln_wage
gen wage_hour = wage/hours //增加新变量wage_hour
egen a_wage = mean(wage)
gen dum = 1
replace dum = 0 if wage<=a_wage //增加虚拟变量dum
可以看到,数据表中已经产生了新的变量
第(3)小题
- 题目
(3). 绘制
ttl_exp
变量的直方图和密度函数图,分别保存/输出 (提示:可使用graph export
命令) 为 His_ttl.png 和 Kendi_ttl.png,并作简单解释。
- 解答
histogram ttl_exp //直方图
graph export E:\stata15\ado\personal\Assignment1\His_ttl.png,replace
kdensity ttl_exp //密度函数图
graph export E:\stata15\ado\personal\Assignment1\Kendi_ttl.png,replace
可以看到,两张图片已经保存到指定文件夹。
从直方图和密度函数图可以发现,totel work experience呈左偏态分布,集中位置在15左右,但10至20的频数远比20至30多。
第(4)小题
- 题目
(4).
industry
变量表示妇女所在的行业,请做如下统计:
- (1) 每个行业的观察值个数;
- (2) 各个行业妇女的平均工资(
wage
)、平均工作时数(hours
)、平均年龄(age
);- (3) 列表统计不同行业中白种人、黑种人和其他人种的比例
- 解答
tab industry
tabstat wage hours age, by(industry)
tab race industry, column
得出结果(1),第一列即为各行业观察值
industry | Freq. Percent Cum.
------------------------+-----------------------------------
Ag/Forestry/Fisheries | 17 0.76 0.76
Mining | 4 0.18 0.94
Construction | 29 1.30 2.24
Manufacturing | 367 16.44 18.68
Transport/Comm/Utility | 90 4.03 22.72
Wholesale/Retail Trade | 333 14.92 37.63
Finance/Ins/Real Estate | 192 8.60 46.24
Business/Repair Svc | 86 3.85 50.09
Personal Services | 97 4.35 54.44
Entertainment/Rec Svc | 17 0.76 55.20
Professional Services | 824 36.92 92.11
Public Administration | 176 7.89 100.00
------------------------+-----------------------------------
Total | 2,232 100.00
得出结果(2)
industry | wage hours age
-----------------+------------------------------
Ag/Forestry/Fish | 5.621121 34.47059 39.94118
Mining | 15.34959 40 37.25
Construction | 7.564934 35.65517 38.62069
Manufacturing | 7.501578 40.89373 38.9891
Transport/Comm/U | 11.44335 39.85556 39.27778
Wholesale/Retail | 6.125897 35.24699 39.28829
Finance/Ins/Real | 9.843174 38.51563 38.82813
Business/Repair | 7.51579 33.15116 38.73256
Personal Service | 4.401093 32.09375 39.23711
Entertainment/Re | 6.724409 34.35294 40.11765
Professional Ser | 7.871186 36.71655 39.23908
Public Administr | 9.148407 38.54545 39.15909
-----------------+------------------------------
Total | 7.783463 37.23205 39.14606
------------------------------------------------
得出结果(3),其中每一个频数下方是其对应的比例
| industry
race | Ag/Forest Mining Construct Manufactu Transport Wholesale Finance/I Business/ Personal | Total
-----------+---------------------------------------------------------------------------------------------------+----------
white | 13 4 24 229 62 267 165 64 51 | 1,627
| 76.47 100.00 82.76 62.40 68.89 80.18 85.94 74.42 52.58 | 72.89
-----------+---------------------------------------------------------------------------------------------------+----------
black | 4 0 4 134 27 66 25 20 45 | 579
| 23.53 0.00 13.79 36.51 30.00 19.82 13.02 23.26 46.39 | 25.94
-----------+---------------------------------------------------------------------------------------------------+----------
other | 0 0 1 4 1 0 2 2 1 | 26
| 0.00 0.00 3.45 1.09 1.11 0.00 1.04 2.33 1.03 | 1.16
-----------+---------------------------------------------------------------------------------------------------+----------
Total | 17 4 29 367 90 333 192 86 97 | 2,232
| 100.00 100.00 100.00 100.00 100.00 100.00 100.00 100.00 100.00 | 100.00
| industry
race | Entertain Professio Public Ad | Total
-----------+---------------------------------+----------
white | 14 616 118 | 1,627
| 82.35 74.76 67.05 | 72.89
-----------+---------------------------------+----------
black | 3 197 54 | 579
| 17.65 23.91 30.68 | 25.94
-----------+---------------------------------+----------
other | 0 11 4 | 26
| 0.00 1.33 2.27 | 1.16
-----------+---------------------------------+----------
Total | 17 824 176 | 2,232
| 100.00 100.00 100.00 | 100.00
第(5)小题
- 题目
(5). 请使用
label define
和label value
命令,把race
变量中的数值做如下定义:
- 1 —— “白种人”
- 2 —— “黑种人”
- 3 —— “其它”
- 解答
label define la_race 1 "white" 2 "black" 3 "other"
label values race la_race
得出结果,可以看出race
变量的数值都对应着相应的数字
第(6)小题
- 题目
(6). 续别变量转类别变量。
- (1) 产生一个新变量
G_age
,取值规则为:若 age<=37,则 G_age=1;若 37<age<=42,则 G_age=2;若 age>42,则 G_age=3;- (2) 为
G_age
变量添加 “数字-文字”对应表,对应关系为:1 “37岁以下”;2 “38到42岁之间”;3 “43岁以上”。
(提示:可以使用label define
和label value
两个命令)
- 解答
gen G_age = 1
replace G_age = 2 if age>37&age<=42
replace G_age = 3 if age>42
label define word_G_age 1 "37岁以下" 2 "38到42岁之间" 3 "43岁以上"
label values G_age word_G_age
可以看到,增加了一个变量G_age
。
第2题
请使用
webuse "nhanes2f.dta", clear
命令调入 Stata 数据文件nhanes2f.dta
, 并完成如下分析
第(1)小题
- 题目
(1). 产生一个新的变量
av_height
, 其数值等于各种族(race)妇女的平均身高(height);
提示: 可是使用egen
命令提供的mean()
函数。
- 解答
webuse "nhanes2f.dta", clear
bysort race: egen av_height = mean(height)
order av_height, after(race) //把新产生的变量av_height移动到变量race之后
可以看到,数据表中新产生了一个变量av_height
,其对应不同的race
有着不同的值。
第(2)小题
- 题目
(2). 产生一个新的变量
sd_height
, 其数值是变量height
的标准化数值;
提示: 可是使用egen
命令提供的std()
函数;或采用外部命令center
进行处理。后者更为简洁。
- 解答
egen sd_height = std(height) //方法一:用egen命令的std()函数
center height, prefix(sd2_) standardize //方法二:用center命令(优点在于对多个变量进行标准化时只需一行代码)
quietly sum height //方法三:用gen命令,利用标准化定义运算
gen sd3_height=(height-r(mean))/r(sd)
可以看出三个算法得到的标准化结果是一样的,但方法三明显是最麻烦的,其需要先对变量进行统计分析,在利用统计结果按照定义运算;方法一在其基础上有了一定的简化,但若需对多个变量进行标准化时,仍需多行代码;方法二最为简洁,对多个变量进行标准化只需一行代码即可。
第(3)小题
- 题目
(3). 性别(sex)、种族(race)、所在地区(region)一共可以构成多少种组合(组态别)?每种组合中有多少个样本数?请选用合适的命令列出结果。
- 解答
bysort sex: tab race region
得到结果,因为变量sex
, race
, region
分别有2,3,4个值,因此一共可以构成24种组合。每种组合的样本数如下表所示。其中第一张表表示性别是男性时race
和region
的组合,第二张表表示性别是女性时race
和region
的组合。
------------------------------------------------------------------------------------------------------
-> sex = Male
1=white, |
2=black, | 1=NE, 2=MW, 3=S, 4=W
3=other | NE MW S W | Total
-----------+--------------------------------------------+----------
White | 431 474 420 455 | 1,780
Black | 26 61 81 29 | 197
Other | 1 3 3 21 | 28
-----------+--------------------------------------------+----------
Total | 458 538 504 505 | 2,005
------------------------------------------------------------------------------------------------------
-> sex = Female
1=white, |
2=black, | 1=NE, 2=MW, 3=S, 4=W
3=other | NE MW S W | Total
-----------+--------------------------------------------+----------
White | 431 556 436 513 | 1,936
Black | 23 55 106 27 | 211
Other | 2 4 4 29 | 39
-----------+--------------------------------------------+----------
Total | 456 615 546 569 | 2,186
第(4)小题
- 题目
(4). 在变量
tcresult tgresult hdresult corpuscl health sizplace
中,哪些包含缺漏值?各自包含多少个缺漏值?请删除tgresult hdresult corpuscl
中包含的缺漏值(并集,只要有一个变量包含缺漏值,则删除其所在行的全部观察值)。
- 解答
ssc install mdesc //安装外部命令mdesc
mdesc tcresult tgresult hdresult corpuscl health sizplace
得到结果
Variable | Missing Total Percent Missing
----------------+-----------------------------------------------
tcresult | 0 10,337 0.00
tgresult | 5,293 10,337 51.20
hdresult | 1,629 10,337 15.76
corpuscl | 89 10,337 0.86
health | 2 10,337 0.02
sizplace | 0 10,337 0.00
----------------+-----------------------------------------------
、另一种方法:用nmissing命令,只输出有缺失值的变量及其缺失值个数
nmissing tcresult tgresult hdresult corpuscl health sizplace
//另一种解法:用nmissing命令,只输出有缺失值的变量及其缺失值个数
得出结果
tgresult 5293
hdresult 1629
corpuscl 89
health 2
可以看到,题目做给的变量中,tgresult
, hdresult
, corpuscl
, health
有缺失值,缺失值个数如上所示。
下面删除缺失值:
egen miss = rmiss(tgresult hdresult corpuscl)
drop if miss==1|miss==2|miss==3
list tgresult hdresult corpuscl miss if mis!=0 //检查是否仍有缺失值未被删除
可以看到,有6146行数据被删除
另外,执行命令list tgresult hdresult corpuscl miss if mis!=0
时,没有输出项,因此缺失值已全部被删除。
第(5)小题
- 题目
(5).
height
变量的第 25 百分位,第 75 百分位数值是多少?四分位间距是多少?上界和下界分别是多少?
- 解答
qui sum height,detail
display r(p25) //25百分位
display r(p75) //75百分位
display r(p75)-r(p25) //四分位间距
display r(p75) + 1.5*(r(p75)-r(p25)) //上界
display r(p25) - 1.5*(r(p75)-r(p25)) //下界
得出答案
第(6)小题
- 题目
(6). 请绘制
height
和weight
变量的 “箱形图”,并作简要对比分析。
- 解答
graph box weight height
从图中对比可以看出,height
只有上侧有离群值且离群值较多,偏离程度大;而weight
上下侧均有离群值且离群值较少。
第(7)小题
- 题目
(7). 请产生一个新的变量
height_w
,该变量是对变量 height 在第 1 和第 99 百分位进行 “缩尾”(winsor) 处理后得到的。
- 解答
winsor height, gen(height_w) p(0.01)
twoway (histogram height, color(green)) ///
(histogram height_w, color(yellow)), ///
legend(label(1 "height") label(2 "height_w")) //图示
/*方法二:
sum height, detail
return list
gen height_w = height
replace height_w = r(p1) if height_w<r(p1)
replace height_w = r(p99) if height_w>r(p99)
方法三:
winsor2 height, cut(1 99)
*/
得到图示
附录:完整代码
*第1题
sysuse nlsw88.dta,cle2ar
//第(1)小题
ssc install sum2docx
sum2docx age grade wage hours ttl_exp tenure using ///
E:\stata15\ado\personal\Assignment1\Table01.docx, ///
mean(%6.2f) sd(%6.2f) median(%6.2f) min(%6.2f) ///
max(%6.2f) title("Table01")
//第(2)小题
gen age2 = age^2 //增加新变量age2
gen ln_wage = ln(wage) //增加新变量ln_wage
gen wage_hour = wage/hours //增加新变量wage_hour
egen a_wage = mean(wage)
gen dum = 1
replace dum = 0 if wage<=a_wage //增加虚拟变量dum
//第(3)小题
histogram ttl_exp //直方图
graph export E:\stata15\ado\personal\Assignment1\His_ttl.png,replace
kdensity ttl_exp //密度函数图
graph export E:\stata15\ado\personal\Assignment1\Kendi_ttl.png,replace
//第(4)小题
tab industry
tabstat wage hours age, by(industry)
tab race industry,column
//第(5)小题
label define la_race 1 "white" 2 "black" 3 "other"
label values race la_race
//第(6)小题
gen G_age = 1
replace G_age = 2 if age>37&age<=42
replace G_age = 3 if age>42
label define word_G_age 1 "37岁以下" 2 "38到42岁之间" 3 "43岁以上"
label values G_age word_G_age
*第2题
webuse "nhanes2f.dta", clear
//第(1)小题
bysort race: egen av_height = mean(height)
order av_height, after(race) //把新产生的变量av_height移动到变量race之后
//第(2)小题
egen sd_height = std(height) //方法一:用egen命令的std()函数
center height, prefix(sd2_) standardize //方法二:用center命令(优点在于对多个变量进行标准化时只需一行代码)
quietly sum height //方法三:用gen命令,利用标准化定义运算
gen sd3_height=(height-r(mean))/r(sd)
//第(3)小题
bysort sex: tab race region
//第(4)小题
ssc install mdesc //安装外部命令mdesc
mdesc tcresult tgresult hdresult corpuscl health sizplace //方法一:用mdesc命令(显示作用变量的缺失值个数)
nmissing tcresult tgresult hdresult corpuscl health sizplace //方法二:用nmissing命令(只显示有缺失值的变量及其缺失值个数)
egen miss = rmiss(tgresult hdresult corpuscl)
drop if miss==1|miss==2|miss==3
list tgresult hdresult corpuscl miss if mis!=0
//第(5)小题
qui sum height,detail
display r(p25) //25百分位
display r(p75) //75百分位
display r(p75)-r(p25) //四分位间距
display r(p75) + 1.5*(r(p75)-r(p25)) //上界
display r(p25) - 1.5*(r(p75)-r(p25)) //下界
//第(6)小题
graph box weight height
//第(7)小题
winsor height, gen(height_w) p(0.01)
twoway (histogram height, color(green)) ///
(histogram height_w, color(yellow)), ///
legend(label(1 "height") label(2 "height_w")) //图示
/*方法二:
sum height, detail
return list
gen height_w = height
replace height_w = r(p1) if height_w<r(p1)
replace height_w = r(p99) if height_w>r(p99)
方法三:
winsor2 height, cut(1 99)
*/