[转载]毕业论文附录:stata命令(哈哈)
(2012-11-16 20:42:12)
标签:
转载 |
几个注意事项:
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,replace”, corr
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应该在0到1之间,包含端点,因此如果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
**对受访者及其家庭成员信教后的精神状态
**对e501e502e503e504e505e506
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
replace c01d2_a=1 if c01d2==1
replace c01d2_a=0 if c01d2==5
gen
replace c01d3_a=1 if c01d3==1
replace c01d3_a=0 if c01d3==5
gen
replace c01d4_a=1 if c01d4==1
replace c01d4_a=0 if c01d4==5
gen
replace c01d5_a=1 if c01d5==1
replace c01d5_a=0 if c01d5==5
gen
replace c01d6_a=1 if c01d6==1
replace c01d6_a=0 if c01d6==5
gen
replace c01d7_a=1 if c01d7==1
replace c01d7_a=0 if c01d7==5
gen
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.;2、robust模型的稳健性回归,可以进行对比;3、模型回归要分别选取变量进行回归,然后比较回归的结果,一般情况下,可先选取最关心的变量进行回归,然后逐个的添加变量比较回归的结果,看哪些变量显著,哪些变量不显著。)