混杂因素控制:病例对照匹配(CCM)

转自个人微信公众号【Memo_Cleon】的统计学习笔记:混杂因素控制:病例对照匹配(CCM)。

在利用SPSS进行倾向性得分匹配的时候(Data>>Propensity Score Matching),你会发现在「数据」的菜单下还有另外一个类似的过程:病例对照匹配(Case Control Matching),两个操作界面内容也神似。

匹配其实算不上是一种分析方法,而是一种数据的处理方式。简单说匹配就是“找对象”的过程,为病例组的每位研究对象在对照组中寻找门当户对的对象的过程。怎么样就算门当户对呢(匹配条件是什么)?就是研究对象的某些特征相同。你可以把这些特征通过logistic或Probit模型转换成一个倾向性得分作为匹配条件,也可以直接对每个特征进行绝对匹配,比如处理组里面有一个25岁的吸烟男性患者,那么对照组你就需要找一位不患该病的25岁上下吸烟的男性来与之匹配。一般来说分类变量要求相同,连续变量则可以设定一个范围(匹配容差)。范围越窄,匹配的病例越精确但匹配成功的病例会越少,范围越宽能匹配的病例越多但可能达不到控制混杂的效果。

病例对照匹配采用的是设定每个控制因素的匹配容差来来确定匹配对象的方法。
分析案例同<<倾向性得分匹配>>。初步评估表明很多混杂因素在孕期吸烟和组不吸烟者组间具有统计学差异,或者说基线不平,基线分析结果也参见<<倾向性得分匹配>>一文,这样我们就不能明确出生体重在吸烟和非吸烟组的不同是由于吸烟这个因素造成的还是由于其他的混杂因素造成的,因此需要进行混杂校正,可以考虑采用病例对照匹配的方法选取病例组和对照组基线类似的患者进行分析。
病例对照匹配:Data>>Case Control Matching…
  • 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。
匹配结果如下:精确匹配49对,模糊匹配471对,未能匹配344个,有效但未能匹配344个。

匹配容差结果见下表,首先进行精确匹配,匹配1611845次,0.003%匹配成功。在精确匹配成功的前提下,再进行mmarried的匹配,匹配容差为0,匹配1611796次,(100-59.749)%匹配成功。在精确匹配和mmarried匹配成功前提下,在进行alcohol的匹配……。

因为是依次匹配,后面变量的匹配是在前面变量匹配成功的基础上进行的,因此匹配变量的顺序也会影响到匹配的样本量。

通过上述CCM过程,我们就有了两个数据集。一个是原始数据,增加了EC、matchG及matchid字段,对应的是与病例组匹配的对照组病例个数、匹配组变量和id,我们可以据此获得匹配成功的病例组。另外一个是新生成的对照组,其中全是满足匹配条件的对照组的病例信息,以及被匹配的病例组matchG及matchid。

获取匹配成功的病例组数据输出到新的数据集CCM:

原数据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)。当然你可以再把容差设置的相对宽松一下重新进行匹配,笔记只演示过程,就不再重复进行了。

匹配后的数据分析结果如下,由于分类变量匹配容差设置为0,匹配成功的病例组和对照组病例数完全一致。

转自个人微信公众号【Memo_Cleon】的统计学习笔记:混杂因素控制:病例对照匹配(CCM)。

END

(0)

相关推荐