主讲老师第五十一课:倾向匹配得分法
在平常的研究中,我们常常会遇到这样的问题,经过某种特殊的处理后,比如服药等等,是否对患者的疾病进展或某一结局产生效果,此时,我们就需要设立对照组来进行比较,其目地是控制非处理因素的干扰,进一步突显处理因素的的效应。尽管我们可以通过回归分析观察处理信息的作用,但是由于一些潜在的混杂因素干扰,往往会使结果产生一定的差异。PSM,Propensity Score Matching,即我们常常听到的倾向得分匹配法(PSM.zip),常常被用于通过得分选择合适的患者进行后续的分析.下面,我们一起来看下如何进行倾向得分匹配法的计算。
1.R 包安装与数据准备
1.1 R 包的安装
我们主要使用 MatchIt 包来进行倾向性评分匹配
1.2 数据准备
在此,我们使用 MatchIt 包的内置数据集 lalonde 来进行演示,数据集 lalonde 是“国家支持的工作演示”(NSW)中治疗组数据的子样本,也是“收入动态人口调查”(PSID)中的比较样本查看一下 lalonde 数据集。
可以看到其中包含了 614 个观测对象,9 个不同的变量,包括处理信息(treat),年龄(age),受教育程度(educ),种族(race)等等,以及结局变量(ref78)通过 table() 函数,可以看到其中对照组共 429 例患者,处理组有 185 例患者
2.计算倾向评分并匹配
接下来,我们需要计算两组患者进行匹配,匹配的协变量包括年龄,受教育程度,种族等等。
在 matchit() 函数中,通过 formula 参数设置好变量信息,其中 treat 为处理信息, age , educ 等为进行匹配的协变量,设置好公式后,其中 method 参数除了默认的 nearest (最邻近匹配法)外,还可以选择 optimal , full , genetic , exact 等算法随后,我们将匹配结果进行可视化展示。
除了匹配到的 185 个处理组和未处理组外,其他未被匹配的患者则被展示在 Unmatched ControlUnits 里面。
3.输出结果
可以看到,经过匹配以后,数据集中一共包含了 370 个患者的信息,最后,我们将匹配得到的数据集进
行输出保存进行后续的分析。
4.SPSS 软件进行 PSM 分析
接下来,我们来看一下如何使用 SPSS 软件来进行 PSM 分析,这里通过 SPSS version 26来进行演示。
注意,SPSS 安装需要同意安装 Python Essentials 插件,否则会无法进行计算,这里可以看下自己的版本,我记得 spss 22.0 版本以下是没有这个功能的。
4.1 读取数据集
首先,将数据集读取进 SPSS 软件中,注意一点,数据集中所有信息必须是英文或者数字,不能存在中文。
4.2 点击“数据”,选择“倾向得分匹配”
4.3 接着,将处理信息输入“组指示符”中。
并在选项中输入随机种子,保证结果的可重复性,选择抽样不放回,以及勾选“抽取匹配项时随机排列个案顺序”,同时,在将协变量输入到预测变量中。
注意不要把结局变量输入进去,将病人 id 输入到个案 ID 中,点击“确定”,进行计算。
4.4 输出结果
可以看到,经过计算以后,原始数据集后面多了三列信息,其中 ps 为每个患者的倾向得分,elicase 为是否匹配到患者,psid 为匹配到的对象 id,随后,点击“数据”-“选择个案”。
其中,设定将满足 elicase=1 条件的患者进行挑选,并输出一个新的数据集,命名为matchdata,这样,整个匹配筛选过程就基本完成了,接着就可以进行后续的回归分析,观 察处理信息对结局变量是否产生影响