楼主: 007kimmy
3906 7

[编程问题求助] stata case control 1:n匹配 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

9%

还不是VIP/贵宾

-

威望
0
论坛币
24 个
通用积分
23.2304
学术水平
2 点
热心指数
3 点
信用等级
0 点
经验
2049 点
帖子
83
精华
0
在线时间
75 小时
注册时间
2015-10-18
最后登录
2024-5-8

楼主
007kimmy 发表于 2017-6-20 15:11:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
最近在尝试用 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
二维码

扫码加我 拉你入群

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

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

关键词:control Contro Stata contr Case control

不负光阴不负卿

沙发
Cloud_Snake 学生认证  发表于 2017-6-20 15:27:59
你用的是哪种match?

藤椅
007kimmy 发表于 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)

板凳
007kimmy 发表于 2017-6-22 17:09:39
自己顶一下~~

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

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

7
夏目贵志 发表于 2017-6-30 11:04:42
007kimmy 发表于 2017-6-29 15:52
请问如果不用joinby命令的话,有其他方法可以再stata里面实现1:4匹配吗?
我不知道有什么别的方法。而且都这么多天了,你要是一开始就让程序一只运行着,这会儿不应该早就运行好了么。。。

8
007kimmy 发表于 2017-7-6 16:09:05
夏目贵志 发表于 2017-6-30 11:04
我不知道有什么别的方法。而且都这么多天了,你要是一开始就让程序一只运行着,这会儿不应该早就运行好了 ...
好的 谢谢 结果出来了一部分,还有一部分一跑就死机,可能也没更好的方法了。thanks anyway~

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

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