全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3852 7
2017-06-20
最近在尝试用 stata做病例和对照的匹配,匹配指标 var1 var2 var3 var4;在小样本中,用下面这个方法(https://www.statalist.org/forums/forum/general-stata-discussion/general/1009802-1-n-matching-on-age-and-gender)可以很快实现1:4匹配;
但是当case较少,control较多时,比如有1万个case,300万个control,这时候要给每个case匹配4个对照,且对照不重复使用,发现系统运行速度非常缓慢,一跑就死机,完全看不到结果。

不知各位有什么好的解决方法吗?

*============MAKE FAKE DATAclearset seed 1971set obs 20250gen id=_ngen age = int(uniform()*75)gen gender=round(uniform())gen case=1 if _n<251*=======STASH AWAY CASES, THEN GET CONTROLS*=======NEED TO RENAME SUBSTANTIVE VARIABLES AS WELLpreservekeep if case==1rename id case_idsave temp_cases, replacerestorekeep if case!=1rename id control_iddrop case*===sort by random variable in case there were ordering effectsgen trash=uniform()sort trashdrop trash*=====NOW MERGE THEMjoinby age gender using temp_cases*======GETTING RID OF DUPLICATE MATCHESbysort control_id: keep if _n==1*===========KEEPING ONLY FIRST FOURbysort case_id: keep if _n<5
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-6-20 15:27:59
你用的是哪种match?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-20 15:32:28
Cloud_Snake 发表于 2017-6-20 15:27
你用的是哪种match?
直接匹配,比如按照年龄、性别直接匹配,不考虑propensity score法;
ccmatch does not allow 1:N matching
nnmatch needs a "treatment" variable, which is not available in my dataset
vmatch avoids me to define the number of controls (actually, it defines a variable number of control for each case)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-22 17:09:39
自己顶一下~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-23 11:00:24
这个程序速度慢主要是joinby命令的问题。没什么别的办法。要么你就换一个别的数据库引擎来做这个,不然就晚上睡觉的时候让他跑着咯。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-29 15:52:54
夏目贵志 发表于 2017-6-23 11:00
这个程序速度慢主要是joinby命令的问题。没什么别的办法。要么你就换一个别的数据库引擎来做这个,不然就晚 ...
请问如果不用joinby命令的话,有其他方法可以再stata里面实现1:4匹配吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群