楼主: xueyuan456
54837 88

[数据管理求助] 求助:选分组配对用循环语句OR PSMATCH2?   [推广有奖]

11
无尘第二 发表于 2012-3-12 16:57:35
数据为附件match2

match2.rar
下载链接: https://bbs.pinggu.org/a-1065249.html

8.72 KB

本附件包括:

  • match2.dta

12
sungmoo 发表于 2012-3-14 07:52:42
现对数据稍作修改,把roa变成绝对值,其余不变(数据为附件的match2),要求为“针对其中sp=1的公司,寻找sp=0,且同ind,同daq,roa最接近的样本(配对样本不能重复)”。
*原先的程序基本不变,只去掉变量year即可。另外,若配对样本观测值有多个,只取stkcd最小的那个。
use match2,clear
bys year ind daq sp (stkcd): g exp=_n if sp
bys year ind daq: egen s=max(exp)
drop if s==.
expandcl s if !sp,cl(year stkcd) gen(g)
bys year stkcd: replace exp=_n if !sp
bys year ind daq exp: egen r=sum(roa*sp)
g q=abs((roa-r)/r) if !sp
bys year ind daq exp: egen u=min(q) if !sp
drop if u!=q&!sp
egen mat=group(year ind daq exp)

bys mat sp (stkcd): replace exp=_n
drop if exp>1

drop exp-u

13
无尘第二 发表于 2012-3-14 22:33:37
配对样本(即sp=0)不能重复的话,还要"expand cl s,cl(stkcd) gen(g)"干吗呢?这个命令不就是针对sp=1的样本比sp=0的样本还多的情形吗?

14
sungmoo 发表于 2012-3-15 06:23:05
还要"expand cl s,cl(stkcd) gen(g)"干吗呢?
注意这里变量s的意义。

15
无尘第二 发表于 2012-3-15 22:36:30
谢谢sungmoo。是这样的,输入命令“ duplicates report stkcd”,会发现配对样本有很多重复的:

Duplicates in terms of stkcd

--------------------------------------
   copies | observations       surplus
----------+---------------------------
        1 |          151             0
        2 |           38            19
        3 |            3             2
        4 |           12             9
        5 |            5             4
--------------------------------------
我前面指出条件有“配对样本(即sp=0)的不能重复”,如果重复,则删除sp=1的样本。

16
sungmoo 发表于 2012-3-15 23:02:16
无尘第二 发表于 2012-3-15 22:36
谢谢sungmoo。是这样的,输入命令“ duplicates report stkcd”,会发现配对样本有很多重复的:

Duplica ...
“duplicates report stkcd”
这步是在什么时候执行?是在打开数据库之后立即执行吗?

17
无尘第二 发表于 2012-3-18 22:08:55
不是打开数据库match1后立即执行。是跑完您给出的程序,完成配对之后。查看有无sp=0的配对样本重复,以及重复了多少个时用的这个命令。

18
sungmoo 发表于 2012-3-18 23:34:35
不是打开数据库match1后立即执行。是跑完您给出的程序,完成配对之后。查看有无sp=0的配对样本重复,以及重复了多少个时用的这个命令。
*个人以为,看是否重复。应用(看mat的各值的频数是否超过2):
ta mat

19
无尘第二 发表于 2012-3-19 23:18:59
非常感谢sungmoo的耐心、细心解答!

20
无尘第二 发表于 2012-3-22 23:45:32
sungmoo好!当year不是唯一时,上述程序运行遇到下列问题:
“expandcl s,cl(stkcd) gen(g)
expression is not constant within clusters
r(198);”
数据见附件match3.dta。
捣腾了好久,解决不了。。。。。。。

match3.rar

27.96 KB

本附件包括:

  • match3.dta

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-26 15:21