混杂因素控制:病例对照匹配(CCM)
转自个人微信公众号【Memo_Cleon】的统计学习笔记:混杂因素控制:病例对照匹配(CCM)。
在利用SPSS进行倾向性得分匹配的时候(Data>>Propensity Score Matching),你会发现在「数据」的菜单下还有另外一个类似的过程:病例对照匹配(Case Control Matching),两个操作界面内容也神似。
匹配其实算不上是一种分析方法,而是一种数据的处理方式。简单说匹配就是“找对象”的过程,为病例组的每位研究对象在对照组中寻找门当户对的对象的过程。怎么样就算门当户对呢(匹配条件是什么)?就是研究对象的某些特征相同。你可以把这些特征通过logistic或Probit模型转换成一个倾向性得分作为匹配条件,也可以直接对每个特征进行绝对匹配,比如处理组里面有一个25岁的吸烟男性患者,那么对照组你就需要找一位不患该病的25岁上下吸烟的男性来与之匹配。一般来说分类变量要求相同,连续变量则可以设定一个范围(匹配容差)。范围越窄,匹配的病例越精确但匹配成功的病例会越少,范围越宽能匹配的病例越多但可能达不到控制混杂的效果。
Variables to match on(匹配变量):选入需要匹配的变量,本例有mmarried,alcohol,mage,medu,mrace,fbaby,prenatal1,fage,frace;
Match Tolerance(匹配容差):与倾向性得分匹配通过设置一个倾向性得分值的容差不同,病例对照匹配需要对每一个变量设置匹配容差值。对于分类变量,匹配容差一般设置为0,即相同;而连续变量则视情况设置一个范围。本例除母亲年龄(26.5±5.6)、母亲教育水平(12.7±2.5)、父亲年龄(27.3±9.4)按连续变量处理,大约按标准差的20%将(没有什么依据就这么随便定义一下)容差分别设为1、0.5、2,其他变量均按照分类变量,容差为0。每个变量匹配容差值必须与[匹配变量]列表中的变量放置顺序一致,匹配容差值之间使用“空格”隔开。本例对应匹配变量列表,匹配容差填入0 0 1 0.5 0 0 0 2 0; Group Indicator(组指示变量):选入需要考察的干预因素,本例为mbsmoke; Case ID(个案标识):确定观测对象的ID,本例选择id; Names for Match ID Variable(匹配标识变量名称):用于储存匹配后结果,标识与当前变量匹配成功的变量id,不能与已有的变量名称相同。本例命名为matchid; Name for Matchgroup Variable(匹配组变量名):生成一个新变量,不能与已有的变量名称相同,值相同者表示匹配条件相同。本例命名为matchG; Options(选项),跟倾向性得分匹配的选项是一样的。
Variable for Number of Eligible Cases(复合条件的变量个数):新建变量,表示在对照组中有多少个观测对象满足匹配条件。本例命名为EC;
Sampling(抽样):默认不抽样回放,每个对照组只允许被选择一次;
Give priority to exact matches(优先精确匹配):优先考虑精确匹配;
Maximize execution performance(最优化执行操作):综合考虑精确匹配和基于设定的卡钳值范围内模糊匹配;
Randomize case order when drawing matches(提取匹配个案时随机化个案顺序):如有多个观测对象满足匹配条件,采取随机原则进行选择。因为是随机,所以重复操作时结果可能会不一致,为保证匹配过程的可重复性,可在Random Number Seed设定一个随机数种子。本例设置为20201125;
Additional Output…(附加输出):可创建一个附加的输出数据集,该数据集包含了满足匹配条件的对照组(匹配病例的供给组)病例,同时通过新增加的匹配标识变量名称(本例为matchid)储存与其对应的病例组(需要匹配的需求组)的病例id。简单说,新生成的这个数据集包含了所有满足匹配条件的对照组的病例,但其中可能有些病例满足了匹配条件没有被使用,比如有多个病例满足匹配条件,但病例组只能匹配1个。选中创建一个新的配后数据集(Create new dataset of matches),本例Control。
匹配容差结果见下表,首先进行精确匹配,匹配1611845次,0.003%匹配成功。在精确匹配成功的前提下,再进行mmarried的匹配,匹配容差为0,匹配1611796次,(100-59.749)%匹配成功。在精确匹配和mmarried匹配成功前提下,在进行alcohol的匹配……。
通过上述CCM过程,我们就有了两个数据集。一个是原始数据,增加了EC、matchG及matchid字段,对应的是与病例组匹配的对照组病例个数、匹配组变量和id,我们可以据此获得匹配成功的病例组。另外一个是新生成的对照组,其中全是满足匹配条件的对照组的病例信息,以及被匹配的病例组matchG及matchid。
原数据Data>>Select Cases…
If condition is satisfied:if设定为matchid ~= 0,或matchid >= 1;
输出到新的数据集,数据集名称为CCM。
在新生成的CCM数据集中导入对照组病例:
新生成的CCM数据集Data>>Merge Files>>Add Cases…
选中Control数据集,确定;
将字段全部选入Variables in New Active Dataset列表中,确定。
至此病例对照匹配已经完成,需要注意的是在新的数据集CCM中,新增加的字段在病例组和对照组中表示的含义是不一样的,前面已经有提及。接下来需要验证一下匹配病例是否满足组间均衡,如果满足组间均衡条件就可以对两组进行分析,如果仍然不满足则需要对容差做适当调整。本例容差设置相对比较严格,一次成功,但我们也损失了大量的样本,原始样本4642例(吸烟:不吸烟=864:3778)例,经设定条件的病例对照匹配后,只剩1040例(520:520)。当然你可以再把容差设置的相对宽松一下重新进行匹配,笔记只演示过程,就不再重复进行了。
转自个人微信公众号【Memo_Cleon】的统计学习笔记:混杂因素控制:病例对照匹配(CCM)。
END