首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SPSS操作:搞定病例与对照的1:1匹配

说起病例对照研究(case control study),相信各位小伙伴并不陌生。简单来说,就是把患有某种疾病的一组病人作为病例组(case),不患该疾病但是可比的另一组个体作为对照组(control),通过比较两组中我们关心的暴露因素的比例,从而推断暴露因素和疾病之间的关联。

讲到这里,就不得不提到确保病例组和对照组可比性的绝招——匹配!一般来说匹配包括频数匹配个体匹配,前者只要保证匹配的因素在两组分布比例相同,比如说病例组男、女各半,对照组也应该一样;后者要求病例组每一个研究对象,在对照组中也有一个匹配因素相近或一致的研究对象与之匹配,比如说病例组有一个23岁男性,对照组中应给他匹配一个23岁左右的男性。

本期和大家一起学习如何使用SPSS搞定病例与对照的1:1匹配。

需要注意的是,SPSS22及以上版本才提供病例对照匹配(Case Control Matching)的功能,其他的版本要想使用这个功能,必须安装相应插件才能实现。本次使用SPSS22为大家演示。

一、问题与数据

目前对于吸烟与高血压之间关系仍存在争议,拟采用巢氏病例对照设计(高血压组与正常组)探讨吸烟与高血压之间的关系,其中对照组按照年龄±2岁,性别相同与病例组进行匹配。已有的队列数据在匹配前是这个样子(见表1),可以看到两组在匹配之前的性别分布和年龄均有明显差异。下面一起看看SPSS如何搞定匹配!

表1. 两组基线情况比较(匹配前)

二、SPSS分析方法

1. 数据录入

(1)变量视图

(2)数据视图

2. 病例对照匹配

选择Data→Case Control Matching,就进入病例对照匹配的主对话框。

将需要匹配的变量(Age, Sex)放入Variables to Match on中;

Match Tolerance用来设置匹配条件,一般分类变量要求相同,设置为“0”,对于连续变量,可根据具体情况限定一个范围 ,比如这里我们限定年龄±2岁,设置为“2”,但是需要注意,设置匹配条件必须与匹配变量放置顺序相一致,并且用“空格”隔开;

Group Indicator指定分组,一般病例组赋值为“1”,对照组赋值为“0”;

Case ID确定观测对象的ID,一般为病例号,调查编码等;

Names for Match ID Variables设定一个变量,用来明确对照组中匹配成功的ID;

Names for Matchgroup Variables 设定一个变量,用来明确病例组中相同条件的观测对象,比如有两个23岁男性。

3. Options设置

Variable for Number of Eligible Cases设定一个变量,用来明确病例组中某一个观测对象,在对照组中有多少个观测对象满足与其匹配的条件,比如说病例组有一个23岁男性,对照组可能有一个24岁男性,一个22岁男性。

Sampling默认为不放回抽样。

Give priority to exact matches 优先考虑精确匹配,也就说病例组有一个23岁男性,对照组也应该找到一个23岁男性跟他匹配。

Maximize execution performance 执行最优化操作。

Randomize case order when drawing matches 这里需要大家着重注意一下,整个匹配过程中,如果对照组有多个满足匹配条件的观测对象,那么SPSS会默认随机将其与病例组观测对象匹配。问题来了,因为SPSS默认每次操作给对照组的随机数字不同,所以如果不特殊设定,每次实际匹配成功的对子是不一样的,也就说这一次对照组A匹配给病例组B,下一次就可能匹配给病例组C。所以需要勾选这里,并且在Random Number Seed设定一个随机数种子,确保匹配过程可以重复。

4. Additional Output设置

这里把匹配成功的对照组中所有观测对象单独输出一个数据集Control。这里强烈建议大家勾选并设定,有什么用呢,下面接着聊~

三、匹配结果

1. 匹配过程

如表2所示,精确匹配28对,模糊匹配178对,共计匹配成功206对。

表2. 匹配统计

表3主要是匹配过程。首先是精确匹配(年龄性别均一致),匹配23170次,不到1%匹配成功;其次在精确匹配成功的前提下,进行Age的模糊匹配(年龄±2岁),匹配23142次,大约6.5%匹配成功;最后在上述两次匹配成功的前提下,进行Sex的模糊匹配(这里指性别相同),匹配1501次,大约12%匹配成功。

表3. 匹配容许误差

2. 匹配后数据库

原始数据库中出现之前设定的几个新变量:

E_case表示对照组中有几个符合匹配条件的观测对象(如图,病例组ID=25,有4个对照组观测对象符合匹配条件);Match_G与E_case不同,Match_G数字相同,代表病例组匹配条件一致,比如有若干23岁男性观测对象待匹配;match_id表示对照组匹配成功的ID。

下图输出仅包含匹配成功的对照组数据库,Match_G与原始数据库一致,match_id表示匹配成功、相对应的病例组ID。

3. 数据库合并

到这里,有的小伙伴要问了,两个库以后怎么做数据分析呀?重点来了,数据库的合并!

(1)生成病例组数据集:在原始数据库中, 选择Data→Select Cases→If condition is satisfied:设定match_id≥1,筛选出匹配成功的病例组→Output中输出新的数据集Case。

(2)对照组数据集match_id替换:将Control数据集中变量match_id替换成ID编号→Save

(3)病例组与对照组数据集合并:在新生成Case数据库SPSS界面下,选择Data→Merge Files→Add Cases→选择Control组→Continue→OK

(4)排序&保存:选择Data→Sort cases→按照匹配标识match_id排序→OK→Save(千万记得保存劳动成果!!!

大功告成,不过还要看看匹配效果。见表4,高血压组全部匹配成功,且性别和年龄在两组间均衡可比。

表4. 两组基线情况比较(匹配后)

四、总结和拓展

有的小伙伴可能要问了,你这是1:1的病例对照匹配,那1:M呢?这可就有点难为SPSS大兄弟了!目前SPSS中Case Control Matching只提供1:1的病例对照匹配,不过不用着急,后面我们会结合SAS给大家演示1:M的病例对照匹配,敬请期待~~~

关注医咖会,轻松掌握统计学!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171218B02VIB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券