sungmoo 发表于 2012-3-30 12:19 
*以match3为例(亦以你举的例子为例)
sort year ind daq sp stkcd
楼主,非常感谢你的答复。其实新程序已经很好用,我之所以还问问题,是因为觉得sp=1的样本本来就少(match3中,总观测值为4871,但sp=1的观测值只有163,而sp=0的样本则为4708),但在新程序下有一些sp=1的样本没有获得配对(如stkcd==498),这样会导致配对后可用于分析的sp=1的样本更少。所以就想能否改进一下配对原则?
下面是我的配对规则。仍以match3.dta为例,要求为试验组(即sp=1的样本,共163个)在对照组(sp=0,共4708个)中寻找配对样本,配对规则如下:
(1)同行业ind。
(2)同年度year。
(3)应计额daq一样。
(4)roa最接近(这里roa是指原值本身,不是绝对值),具体而言,就是对照组与试验组的roa的差的绝对值最小;以楼主给出的数据为例,由于600633的roa与sp=1的两个观测值都接近,为此计算roa的差的绝对值,对于498:abs1=abs[(-.607564)-(-.03197)]=0.575594;对于719:abs2=abs[(-.323066)-(-.03197))]=0.291096。由于abs1>abs2,因此600633优先配对给719。
(5)每个对照组观测值只能配对一次。延续上面规则(4)的说明,由于600633已经配对给了719,因此600633不再被考虑。
(6)尚未获得配对的实验组观测值,从尚未被配对的对照组观测值中,继续按照上述规则(1)~(5)选择配对。延续规则(5)的说明,由于实验组498尚未获得配对,因此继续在剔除了600633的对照组中寻找配对。而根据roa的差的绝对值最小的原则,此时观测值791应该作为配对。这样,sp=1的两个样本就都获得了配对,而不是只有719获得配对。
stkcd year roa ind daq sp
609 2007 .155882 C4 1 0
620 2007 .129541 C4 1 0
732 2007 .053953 C4 1 0
791 2007 .017712 C4 1 0
600378 2007 .043076 C4 1 0
600599 2007 .07363 C4 1 0
600617 2007 .046283 C4 1 0
600633 2007 -.03197 C4 1 0
600985 2007 .043491 C4 1 0
498 2007 -.607564 C4 1 1
719 2007 -.323066 C4 1 1
仍以match3数据为例,在上述规则下,不知程序如何改进?
再次感谢楼主的答复!