加载中…
个人资料
月满凉天
月满凉天
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,038
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]毕业论文附录:stata命令(哈哈)

(2012-11-16 20:42:12)
标签:

转载

 

    我这个stata的半吊子,在计量课上开始接触,学的一知半解,每次课题基本上也就只用最简单的命令。后来,不做课题了,连那些最简单命令也都忘得差不多了。在这次写论文的过程中,幸亏得到宿舍即将飞往USA的准PHD和师门目前在ccer读博后的R师兄的帮助,才得以使得论文所需数据的清理和计算得以进行,并最终使得模型的回归结果变得显著。其实,要不是这次写毕业论文,我不会意识到原来所谓的整理数据原来是这样需要耐心、细心的事情,也不会清楚宿舍PHD经常嚷嚷着做中科院的数据清理还茫然不知所谓何事,也因此对发表了那么多带计量模型文章的R师兄肃然起敬。虽然,我所用到的命令在懂stata的人眼里只是a piece of cake,但还是决定将其整理出来,以作纪念。

 

几个注意事项:

1、原始数据一定保存,用stata另存一份再在上面做数据清理和计算。

2、处理数据时,数据文件中的原始变量也不要动,如果要做处理,可以生成新的变量,以便回查和对比处理后的数据及原始数,以免处理失误。

3、编写stata命令时,如果只是简单tab、browse、sum一下数据,可以直接在command窗口直接输入,但如果涉及到数据的重新赋值和计算的话,最好是能够生成一个do.file文件,可以在do文件里写,这样有两个好处:(1)在运行命令时出现逻辑错误或者有遗漏可以及时更正;(2)下次使用数据时可以清晰看到已做的数据处理。

4、Stata只是一个运行的软件,数据之间的运算关系以及背后的逻辑体现在命令之中,据此选择合适的stata命令。

5、编写stata命令时,尤其是对变量进行赋值的时候,要非常注意missing值,在处理数据的过程中,如果出现异常值,要时刻进行回查。

6、Stata命令要边写边运行或者边运行边写,以便及时发现里面的逻辑错误并进行更正。

 

**取消无效样本

drop in 样本编号

(无效的样本编号可以用命令list var1 var2 if condition)

 

**看变量取值的频数,包括缺失值

tab a031,missing

 

**常用的stata命令

tab, browse, sum, des, list mean, save,replacecorr

use 数据名,clear

 

**计算家庭总人口

gen no_family=1

replace no_family=2 if a031!=.&a032!=.

replace no_family=3 if a031!=.&a032!=.&a033!=.

replace no_family=4 if a031!=.&a032!=.&a033!=.&a034!=.

replace no_family=5 if a031!=.&a032!=.&a033!=.&a034!=.&a035!=.

replace no_family=6 if a031!=.&a032!=.&a033!=.&a034!=.&a035!=.&a036!=.

replace no_family=7 if a031!=.&a032!=.&a033!=.&a034!=.&a035!=.&a036!=.&a037!=.

replace no_family=8 if a031!=.&a032!=.&a033!=.&a034!=.&a035!=.&a036!=.&a037!=.&a038!=.

replace no_family=4 in 4

 

**计算家庭过去务工总人口

replace a183=. if a183==2|a183==8

replace a184=. if a184==3|a184==10

replace a185=. if a185==13

replace a186=. if a186==2

 

replace a181=0 if a181==5

replace a182=0 if a182==5

replace a183=0 if a183==5

replace a184=0 if a184==5

replace a185=0 if a185==5

replace a186=0 if a186==5

replace a187=0 if a187==5

replace a188=0 if a188==5

egen wugong1_family=rowtotal(a181 a182 a183 a184 a185 a186 a187 a188)

 

gen pro1=wugong1_family/no_family

tab pro1

(pro1应该在01之间,包含端点,因此如果pro1不在这个范围内要进行回查,查出相应的样本,然后根据情况再做处理。)

 

**回查异常值

list z01 z02 if pro>1

 

**将异常值所在行出项的问题进行处理

replace no_family=5 in 243

 

**将pro1转换成二元变量(上述生成的pro1是一个连续变量,模型需要,将其处理成二元变量)

gen cons_1=0

replace cons_1=1 if pro1>0

 

**计算家庭现在务工总人口

gen a171_a=0

replace a171_a=1 if a171==2|a171==3

replace a171_a=0 if a171!=2&a171!=3

gen a172_a=0

replace a172_a=1 if a172==2|a172==3

replace a172_a=0 if a172!=2&a172!=3

gen a173_a=0

replace a173_a=1 if a173==2|a173==3

replace a173_a=0 if a173!=2&a173!=3

gen a174_a=0

replace a174_a=1 if a174==2|a174==3

replace a174_a=0 if a174!=2&a174!=3 

gen a175_a=0

replace a175_a=1 if a175==2|a175==3

replace a175_a=0 if a175!=2&a175!=3

gen a176_a=0

replace a176_a=1 if a176==2|a176==3

replace a176_a=0 if a176!=2&a176!=3

gen a177_a=0

replace a177_a=1 if a177==2|a177==3

replace a177_a=0 if a177!=2&a177!=3

gen a178_a=0

replace a178_a=1 if a178==2|a178==3

replace a178_a=0 if a178!=2&a178!=3

egen wugong2_family=rowtotal(a171_a a172_a a173_a a174_a a175_a a176_a a177_a a178_a)

gen pro2=wugong2_family/no_family

 

tab pro2

(对pro2的处理与pro1类似)

 

**转换pro2成二元变量

gen cons=1

replace cons=0 if pro2==0

 

**i0803a处理

gen i0803a_a=0

replace i0803a_a=1 if i0803a==1

replace i0803a_a=5 if i0803a==5

replace i0803a_a=. if i0803a==8|i0803a==88|i0803a==.

 

**i0801a处理

gen i0801a_a=0

replace i0801a_a=1 if i0801a==1

replace i0801a_a=5 if i0801a==5

replace i0801a_a=. if i0801a==88|i0801a==.

 

**i0802a处理

gen i0802a_a=0

replace i0802a_a=1 if i0802a==1

replace i0802a_a=5 if i0802a==5

replace i0802a_a=. if i0802a==88|i0802a==.

 

**i1201a处理

gen i1201a_a=0

replace i1201a_a=1 if i1201a==1

replace i1201a_a=5 if i1201a==5

replace i1201a_a=. if i1201a==88|i1201a==.

 

**看变量的观测值、均值、标准差、最大、最小值

sum e021 a061 a071 a101 a181 b011 i0803a

 

**转换e021

gen e021_a=1

replace e021_a=0 if e021==5

**转换a031

gen a031_a=1

replace a031_a=0 if a031==5

replace a031_a=. if a031==.

 

**转换a061(性别)

gen a061_a=1

replace a061_a=0 if a061==5

replace a061_a=. if a061==.

 

**转换a062 a063 a064 a065 a066 a067 a068

replace a062=. if a062==2

gen a062_a=1

replace a062_a=0 if a062==5

replace a062_a=. if a062==.

replace a063=. if a063==2

gen a063_a=1

replace a063_a=0 if a063==5

replace a063_a=. if a063==.

replace a064=. if a064==2

gen a064_a=1

replace a064_a=0 if a064==5

replace a064_a=. if a064==.

gen a065_a=1

replace a065_a=0 if a065==5

replace a065_a=. if a065==.

gen a066_a=1

replace a66_a=0 if a066==5

replace a066_a=. if a066==.

gen a067_a=1

replace a067_a=0 if a067==5

replace a067_a=. if a067==.

gen a068_a=1

replace a068_a=0 if a068==5

replace a068_a=. if a068==.

 

**对收入变量取对数

gen inc=ln(h0501)

 

**收入的平方

gen inc2=h0501^2

 

**对支出去对数

gen zhichu=ln(h0512)

 

**对家庭成员健康状况的一个衡量

gen b014_a=b014

replace b014_a=. if b014_a==88

gen b015_a=b015

replace b015_a=. if b015_a==88 

gen b018_a=b018

replace b018_a=. if b018_a==88

egen b01=rowtotal(b011 b012 b013 b014_a b015_a b016 b017 b018_a)

gen b01_family=b01/no_family

 

**对家里赡养老人、孩子的数量

gen old1=0

replace old1=1 if a071>60&a071!=.

gen old2=0

replace old2=1 if a072>60&a072!=.

gen old3=0

replace old3=1 if a073>60&a073!=.

gen old4=0

replace old4=1 if a074>60&a074!=.

gen old5=0

replace old5=1 if a075>60&a075!=.

gen old6=0

replace old6=1 if a076>60&a076!=.

 

gen old7=0

replace old7=1 if a077>60&a077!=.

gen old8=0

replace old8=1 if a078>60&a078!=.

gen young1=0

replace young1=1 if a071<14

gen young2=0

replace young2=1 if a072<14

gen young3=0

replace young3=1 if a073<14

gen young4=0

replace young4=1 if a074<14

gen young5=0

replace young5=1 if a075<14

gen young6=0

replace young6=1 if a076<14

gen young7=0

replace young7=1 if a077<14

gen young8=0

replace young8=1 if a078<14

egen old_t=rowtotal(old1 old2 old3 old4 old5 old6 old7 old8)

egen young_t=rowtotal(young1 young2 young3 young4 young5 young6 young7 young8)

gen T=old_t+young_t

gen burden=T/no_family

 

**burden转换成二元变量

gen burden_1=0

replace burden_1=1 if burden>0

 

**对受访者及其家庭成员信教后的精神状态

**e501e502e503e504e505e506e507e508的赋值的处理

gen e501_a=.

replace e501_a=1 if e501==1

replace e501_a=0 if e501==5|e501==88

gen e502_a=.

replace e502_a=1 if e502==1

replace e502_a=0 if e502==5|e502==4|e502==88

gen e503_a=.

replace e503_a=1 if e503==1

replace e503_a=0 if e503==5|e503==88

gen e504_a=.

replace e504_a=1 if e504==1

replace e504_a=0 if e504==88

gen e505_a=.

replace e505_a=1 if e505==1

gen e506_a=.

replace e506_a=1 if e506==1

replace e506_a=0 if e506==5

gen e507_a=.

replace e507_a=1 if e507==1

egen e50=rowtotal(e501_a e502_a e503_a e504_a e505_a e506_a e507_a)

 

**对家庭信教行为选择的赋值处理(只要家庭成员中又一个信教即认为该家庭的信仰选择为信教)

gen family_rel=0

replace family_rel=1 if e021==1|e022==1|e023==1|e024==1|e025==1|e026==1|e027==1|e028==1

(注:这里其实可以用高级一点的命令recode,我用了半天的replace,结果R师兄用了个recode就直接给我搞定了,这个段位啊。。。。。)

 

**求家庭的平均年龄

egen age_T=rowtotal(a071 a072 a073 a074 a075 a076 a077 a078)

gen age_av=age_T/no_family

出现2个age_av为0的样本 32 73

drop in 32 73

 

**求家庭的性别比例

egen male=rowtotal(a061_a a062_a a063_a a064_a a065_a a066_a a067_a a068_a)

gen female=no_family-male

gen rito=male/female

 

**求家庭的平均受教育年限

egen edu_T=rowtotal(a101 a102 a103 a104 a105 a106 a107 a108)

gen edu_av=edu_T/no_family

tab edu_av

 

**家庭的社会保障水平

**c01a1 c01a2 c01a3 c01a4 c01a5 c01a6 c01a7 c01a8的取值处理

gen c01a2_a=.

replace c01a2_a=1 if c01a2==1

replace c01a2_a=0 if c01a2==5

gen c01a3_a=.

replace c01a3_a=1 if c01a3==1

replace c01a3_a=0 if c01a3==5

gen c01a4_a=.

replace c01a4_a=1 if c01a4==1

replace c01a4_a=0 if c01a4==5

gen c01a5_a=.

replace c01a5_a=1 if c01a5==1

replace c01a5_a=0 if c01a5==5

gen c01a6_a=.

replace c01a6_a=1 if c01a6==1

replace c01a6_a=0 if c01a6==5

gen c01a7_a=.

replace c01a7_a=1 if c01a7==1

replace c01a7_a=0 if c01a7==5

gen c01a8_a=.

replace c01a8_a=1 if c01a8==1

replace c01a8_a=0 if c01a8==5

 

**c01b1 c01b2 c01b3 c01b4 c01b5 c01b6 c01b7 c01b8的取值处理

gen c01b2_a=.

replace c01b2_a=1 if c01b2==1

replace c01b2_a=0 if c01b2==5

gen c01b3_a=.

replace c01b3_a=1 if c01b3==1

replace c01b3_a=0 if c01b3==5

gen c01b4_a=.

replace c01b4_a=1 if c01b4==1

replace c01b4_a=0 if c01b4==5

gen c01b5_a=.

replace c01b5_a=1 if c01b5==1

replace c01b5_a=0 if c01b5==5

gen c01b6_a=.

replace c01b6_a=1 if c01b6==1

replace c01b6_a=0 if c01b6==5

gen c01b7_a=.

replace c01b7_a=1 if c01b7==1

replace c01b7_a=0 if c01b7==5

gen c01b8_a=.

replace c01b8_a=1 if c01b8==1

replace c01b8_a=0 if c01b8==5

 

**对c01c1 c01c2 c01c3 c01c4 c01c5 c01c6 c01c7 c01c8的取值处理

gen c01c2_a=.

replace c01c2_a=1 if c01c2==1

replace c01c2_a=0 if c01c2==5

gen c01c3_a=.

replace c01c3_a=1 if c01c3==1

replace c01c3_a=0 if c01c3==5

gen c01c4_a=.

replace c01c4_a=1 if c01c4==1

replace c01c4_a=0 if c01c4==5

gen c01c5_a=.

replace c01c5_a=1 if c01c5==1

replace c01c5_a=0 if c01c5==5

gen c01c6_a=.

replace c01c6_a=1 if c01c6==1

replace c01c6_a=0 if c01c6==5

gen c01c7_a=.

replace c01c7_a=1 if c01c7==1

replace c01c7_a=0 if c01c7==5

gen c01c8_a=.

replace c01c8_a=1 if c01c8==1

replace c01c8_a=0 if c01c8==5

 

**对c01d1 c01d2 c01d3 c01d4 c01d5 c01d6 c01d7 c01d8的取值处理

gen  c01d2_a=.

replace c01d2_a=1 if c01d2==1

replace c01d2_a=0 if c01d2==5

 

gen  c01d3_a=.

replace c01d3_a=1 if c01d3==1

replace c01d3_a=0 if c01d3==5

 

gen  c01d4_a=.

replace c01d4_a=1 if c01d4==1

replace c01d4_a=0 if c01d4==5

gen  c01d5_a=.

replace c01d5_a=1 if c01d5==1

replace c01d5_a=0 if c01d5==5

gen  c01d6_a=.

replace c01d6_a=1 if c01d6==1

replace c01d6_a=0 if c01d6==5

 

gen  c01d7_a=.

replace c01d7_a=1 if c01d7==1

replace c01d7_a=0 if c01d7==5

gen  c01d8_a=.

replace c01d8_a=1 if c01d8==1

replace c01d8_a=0 if c01d8==5


**c01e1 c01e2 c01e3 c01e4 c01e5 c01e6 c01e7 c01e8的取值处理

gen c01e2_a=.

replace c01e2_a=1 if c01e2==1

replace c01e2_a=0 if c01e2==5

gen c01e3_a=.

replace c01e3_a=1 if c01e3==1

replace c01e3_a=0 if c01e3==5

gen c01e4_a=.

replace c01e4_a=1 if c01e4==1

replace c01e4_a=0 if c01e4==5

gen c01e5_a=.

replace c01e5_a=1 if c01e5==1

replace c01e5_a=0 if c01e5==5

gen c01e6_a=.

replace c01e6_a=1 if c01e6==1

replace c01e6_a=0 if c01e6==5

gen c01e7_a=.

replace c01e7_a=1 if c01e7==1

replace c01e7_a=0 if c01e7==5

 

gen c01e8_a=.

replace c01e8_a=1 if c01e8==1

replace c01e8_a=0 if c01e8==5

egen baozhang_t=rowtotal(c01a1 c01a2_a c01a3_a c01a4_a c01a5_a c01a6_a c01a7_a c01a8_a c01b1 c01b2_a c01b3_a c01b4_a c01b5_a c01b6_a c01b7_a c01b8_a c01c1 c01c2_a c01c3_a c01c4_a c01c5_a c01c6_a c01c7_a c01c8_a c01d1 c01d2_a c01d3_a c01d4_a c01d5_a c01d6_a c01d7_a c01d8_a c01e1 c01e2_a c01e3_a c01e4_a c01e5_a c01e6_a c01e7_a c01e8_a)

gen baozhang_av=baozhang_t/no_family


**模型回归

probit e021_a a031_a a061_a a071 a101 a131 a181 b011 zhichu i0801a_a i1201a_a b01_family,robust

xi:probit family a031 a061 a071 a101 a171_a i.a181 b011 i0801a i0802a i0803a i1201a , robust

xi:probit family_rel burden i.cons_1 b01_family h0516 baozhang_av i0801a_a

(注:1、在使用probit模型时,如果变量中有虚拟变量时,加xi:i.2robust模型的稳健性回归,可以进行对比;3、模型回归要分别选取变量进行回归,然后比较回归的结果,一般情况下,可先选取最关心的变量进行回归,然后逐个的添加变量比较回归的结果,看哪些变量显著,哪些变量不显著。)

 

 

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有