2021年还单身?教你相亲软件的匹配原理告别单身,文章发发发!

一文通过倾向得分匹配法解决变量选择

大家好,我是阿琛。在平常的研究中,我们常常会遇到这样的问题,经过某种特殊的处理后,比如服药等等,是否对患者的疾病进展或某一结局产生效果。此时,我们就需要设立对照组来进行比较,其目地是控制非处理因素的干扰,进一步突显处理因素的的效应。尽管我们可以通过回归分析观察处理信息的作用,但是由于一些潜在的混杂因素干扰,往往会使结果产生一定的差异。PSM,Propensity Score Matching,即我们常常听到的倾向得分匹配法。

下面,我们一起来看一下如何构建竞争风险模型以及通过Nomogram图进行可视化展示。

1.R包安装与数据准备

1.1 R包的安装

#install.packages( “MatchIt”) library(MatchIt) library(foreign)

我们主要使用MatchIt包来进行倾向性评分匹配。

1.2 数据准备

data( lalonde) lalonde[1:3,]

在此,我们使用MatchIt包的内置数据集lalonde来进行演示。数据集lalonde是“国家支持的工作演示”(NSW)中治疗组数据的子样本,也是“收入动态人口调查”(PSID)中的比较样本。Lalonde(1986)以及Dehejia和Wahba(1999)之前对此数据进行了广泛的分析。

###查看变量信息 str(lalonde)

查看一下lalonde数据集,可以看到其中包含了614个观测对象,9个不同的变量,包括处理信息(treat),年龄(age),受教育程度(educ),种族(race)等等,以及结局变量(ref78)。

table(lalonde $treat)

通过table函数,可以看到其中对照组共429例患者,处理组有185例患者。

2.计算倾向评分

接下来,我们需要计算两组患者进行匹配,匹配的协变量包括年龄,受教育程度,种族等等。

f=matchit(treat ~ age + educ + race + married + nodegree + re74 + re75, data=lalonde,method= “nearest”)

在matchit函数中,通过formula参数设置好变量信息,其中treat为处理信息,age,educ等为进行匹配的协变量。设置好公式后,其中method参数除了默认的nearest(最邻近匹配法)外,还可以选择optimal,full,genetic,exact等算法。

summary(f) plot(f, type= “jitter”, interactive = FALSE)

随后,我们将匹配结果进行可视化展示。除了匹配到的185个处理组和未处理组外,其他未被匹配的患者则被展示在Unmatched Control Units里面。

matchdata=match.data(f) matchdata

3.输出结果

matchdata$id < -1:nrow(matchdata) write.table( matchdata, file= “matchdata.txt”, sep= “t”, row.names= T,col.names= NA,quote= F)

可以看到,经过匹配以后,数据集中一共包含了370个患者的信息。最后,我们将匹配得到的数据集进行输出保存进行后续的分析。

4.SPSS软件进行PSM分析

接下来,我们来看一下如何使用SPSS软件来进行PSM分析。这里通过SPSS version 26来进行演示。注意,SPSS安装需要同意安装Python Essentials插件,否则会无法进行计算。

4.1 读取数据集

首先,将数据集读取进SPSS软件中;注意一点,数据集中所有信息必须是英文或者数字,不能存在中文。

4.2 点击“数据”,选择“倾向得分匹配”

接着,将处理信息输入“组指示符”中,并在选项中输入随机种子,保证结果的可重复性;选择抽样不放回,以及勾选“抽取匹配项时随机排列个案顺序”;

同时,在将协变量输入到预测变量中,注意不要把结局变量输入进去;将病人id输入到个案ID中;点击“确定”,进行计算。

4.3 输出结果

可以看到,经过计算以后,原始数据集后面多了三列信息,其中ps为每个患者的倾向得分,elicase为是否匹配到患者,psid为匹配到的对象id。

随后,点击“数据”-“选择个案”;

其中,设定将满足elicase=1条件的患者进行挑选,并输出一个新的数据集,命名为matchdata。

这样,整个匹配筛选过程就基本完成了,接着就可以进行后续的回归分析,观察处理信息对结局变量是否产生影响。当然,PSM分析有时候会产生一定的选择偏倚。

回复“阿琛41”即可获得本次的数据和相关代码~~~

系列传送门

十分钟轻松学会R数据清洗技巧,生信小白必须跨越的第一关

排版 丨四金兄

值班 | 弘 毅

主编丨小雪球

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月27日
下一篇 2021年1月27日

相关推荐