[变量a5标记和户主的关系。等于0是户主,等于1是户主的配偶。这里不加区分地将户主及其配偶放在一起。] keep if a5==1|a5==3|a5==7
[保留是户主(=1),是户主的子女(=3),或是户主的儿媳(=7)的那些人。] ren h hf
[将所需变量加上后缀f,表示女性] ren line lf
[将所需变量加上后缀f,表示女性] sort wave hhid save b1,replace [排序并保存] keep if a5f==1
[留下其中是户主或户主配偶的] save b2,replace [保存] use b1,clear
keep if a5f==3|a5f==7 save b3,replace
[留下其中是户主女儿或儿媳的并保存] use a3,clear
[打开与户主关系是户主子女的儿童数据库] sort wave hhid
merge wave hhid using CHNS01b2, keep(hf lf) ta _merge
drop if _merge==2 sort hhid line wave
[处理两代户,将户主配偶女性库与儿童库合并] by hhid line wave: egen x=count(id) drop x _merge
[计算每个年份家庭匹配的情况,x只取值1,表明两代户匹配成功] save b4,replace [保存] use a4,clear
[打开与户主关系是户主孙子女的儿童数据库] sort wave hhid
merge wave hhid using CHNS01b3, keep(a5f a8f schf a12f hf agemosf c8f lf) ta _merge drop if _merge==2
[处理三代户,将户主女儿或儿媳女性库与孙子女儿童库合并] sort hhid line wave
by hhid line wave: egen x=count(id) gen a=agemosf-agemos drop if a<216&x==3
[计算每个年份家庭匹配的情况,x不只取1,三代户匹配不完全成功。删除不合理的样本,标准是年龄差距和有三个可能母亲的那些家庭。] gen xx=x[_n+1] gen xxx=x[_n-1] gen y=lf if x==1
replace y=lf[_n+1] if x==2&xx==1 replace y=lf[_n-1] if x==2&xxx==1 keep if x==1|(lf==y&x==2)
[对于有两个可能母亲的儿童,有相同编码的女性出现两次的情况。上面的做法是为了保证不删除这部分样本。] drop a x xx xxx y _merge save b5,replace
[保存合并后的数据库]
[对男性数据的合并完全类似,不赘述。] log close exit,clear
我的方法是属于使用简单命令反复迂回地达到目的那一类的,所以非常希望有更简便的方法来替代。不过做实证时往往不是非常追求程序的漂亮,常常也就得过且过了。
stata强大的功能体现在它可以方便地回归微观数据。而回归也是微观实证中最重要的方法。下面就开始讲stata中和回归有关的常用命令。
基本回归方法有两种:线性设定下的最小二乘法(OLS)和两阶段最小二乘法(2SLS)。他们在实证分析中应用广泛,十分详细地掌握这两种方法是实证研究的基本要求。讲解的顺序是先依次介绍如何在stata中实现OLS和2SLS估计,然后再分析如何在实际问题中选择合理的方法。后一部分受Joshua Angrist教授的影响很大,因此,在后面引用他的思想时会详细注明。
假设你已经清楚地了解待估计方程的形式,那么回归命令的基本格式就十分简单明了: reg (被解释变量) (解释变量1)