分享

详细教程:如何利用SPSS和R语言实现倾向得分匹配?

 妙趣横生统计学 2022-01-05

倾向得分十讲(4):倾向得分匹配 

倾向得分10讲

1.从入门到精通,真实世界研究“倾向得分方法”10讲开启。
2.倾向得分的基本计算方法 
3.如何利用倾向得分开展分层与回归分析控制混杂偏倚

1.倾向得分匹配原理

在前面的课程中,我基于logistic回归模型计算了倾向性得分,并将其作为分层变量开展分层卡方,或是作为协变量纳入到回归模型中校正混杂。

然而,如何基于倾向性得分重新构建一个基线可比的数据,并以此为基础来分析自变量与因变量的关系?

倾向性得分匹配很好的解决了这一问题。

倾向性得分匹配是以倾向性得分为作为匹配条件,将倾向性得分相同或者相近的研究对象按照1:1或者1:N的比例匹配在一起,从而实现在原始数据库的基础上获得一个倾向性得分基本相近的子数据库,也就是基线基本可比的数据库。

匹配后的数据库在一定程度上控制了混杂,能获得更加真实可靠的结论。本讲我们通过两种软件SPSS和R语言分别实现倾向得分匹配。

2.本讲案例

本讲案例来源于已经发表一篇中文论文,诸位若有需要,可以发送关键词“文献阅读”到公众号,获取原文

本数据探讨甲状腺乳头状癌右侧病灶大小与右侧喉返神经后方淋巴结转移的关系,是一项真实世界研究。结局变量为右侧喉返神经后方淋巴结转移,主要研究变量为甲状腺乳头状癌右侧病灶大小,其他变量有年龄、性别、右侧病灶数目、被膜侵犯等。

案例解析:

此案例暴露因素为甲状腺乳头状癌右侧病灶大小(<0.85cm=0,>0.85cm=1),结局是右侧喉返神经后方淋巴结转移(转移=1,未转移=0),此外还有一系列的协变量,这些变量可能是混杂因素。

3.利用SPSS进行倾向得分匹配

通过数据找到倾向性得分匹配模块。

组指示符即分组依据,本例选择病灶大小;

预测变量即混杂变量,本例将除了结局外的变量均放入;

倾向变量名为获得的倾向性得分列名,本例设为PS;

匹配容差即卡钳值,即允许匹配的最大PS差值,匹配容差越大,匹配精度越低,匹配成功率提高,反之亦然

个案ID为个案识别号,本例为序号ID;

匹配ID变量名储存匹配后结果的列名,本例为M_id;

输出数据集名称为重新构建的数据集名称,本例设为PS_MATCH;

通过选项进行进一步设置:

合格个案数变量表示在对照组中有多少个观测对象满足匹配条件,本例为E;

本例考虑不放回抽样,即1个对照仅匹配一个病例;

优先考虑完全匹配即有限匹配PS得分相同的两个对象;

最优化执行性能即综合考虑精确匹配和基于设定的卡钳值范围内模糊匹配;

抽取匹配项时随机排列个案顺序即在匹配过程中,若对照组有多个满足匹配条件的观测对象,会默认随机将其与病例组观测对象匹配。但是本操作无法复现,故通过设定随机数种子将匹配数据固定,本例种子数为12345

点击确定之后,获得一个新的数据库,发现数据末尾多出了三列。PS为倾向得分,E为该个案在卡钳值0.02的情况匹配到的对照组个案数,m_id是对照组最终匹配的编号。

比如,PS为0.16192的对象可以在数据库中找到1个符合要求的匹配对象,序号为112号;PS为0.17708的对象可以在数据库中找到3个符合要求的匹配对象,本次随机匹配序号为98号。

然后选择个案,将未被选中的对象剔除,获得匹配后数据库。

匹配前人口金字塔图(左图)显示,倾向性得分在不同病灶大小间分布明显不同,存在较大差异,而匹配之后的人口金字塔图(右图)显示匹配后倾向性得分在两组间已基本均衡,证明本次匹配较为成功。

开展匹配前后组间差异性比较显示,匹配前被膜侵犯、VI-1亚区淋巴结转移、右侧淋巴结转移在两组间分布不均衡;

而匹配后数据显示,各混杂变量在两组间分布均衡。

logistic回归模型显示,匹配前病灶大小的OR为2.106,匹配后OR为2.525,匹配后结局更加真实可靠。

4. 利用R语言进行倾向得分匹配

R语言进行倾向得分匹配的工具不少,最常见的R语言开展倾向性得分匹配主要基于“MatchIt”包开展。本文亦是如此。

#导入数据

trf<-read.csv("t1.csv")

#查看数据

str(trf)

#读取MatchIt

library(MatchIt)

#构建分组变量的逻辑变量

trf$size2<-trf$sizetrf$size2<- as.logical(trf$size2 == '1')

#开展倾向性得分匹配

data_match<- matchit(size2~gender+age+number+invasion+VIa+metastasis,data = trf, method="nearest", ratio=1, caliper = 0.02)

本例中采取近邻匹配进行匹配,匹配比例为1:1(可以通过更改ratio调整匹配比例,卡钳值为0.02(卡钳值为PS标准差的倍数,本例为0.2,即0.2个PS标准差)

# 观察匹配后数据

summary(data_match)

R语言匹配的一个优点,是可以给出评价匹配效果的SMD值(SPSS无法直接给出),关于SMD值,您可以看看本公众号之前的推文。

临床研究基线均衡性比较除了用P值大小来反映,还可以用这种方法!

SMD显示,invasion、VIa及metastasis在分组中不均衡(>0.2),而匹配后,各变量在分组中均衡可比。最终两组分别匹配上了227人。

#绘图比较匹配前后PS得分分布

plot (data_match, type = "jitter")plot (data_match, type = "hist")

图形显示,匹配后两组间PS分布均衡

#形成匹配后数据

trf2<- match.data(data_match)

#开展匹配后logistic回归分析,比较结局差异

glm.log<glm(VIB~LN.prRLN~size+invasion+VIa+metastasis,family= binomial(link ="logit"),data = trf2)summary(glm.log)reportReg(glm.log)

如此,就可以得到相应的统计分析结果了!

最后,感谢浙江大学医学院附属杭州市第一人民医院潘钢教授团队提供数据支持。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多