倾向性评分匹配法(Propensity Score Matching,PSM)是临床观察性研究中经常使用的一种控制混杂偏移的技巧。其出现的背景是:需要控制的混杂变量很多,采用分层法控制偏移会导致样本量严重缩水,因而采用一种替代的可以近似控制混杂因素的方法。

混杂因素

混杂因素(即混杂变量,confounding variables)的定义和条件如下(摘自百度百科):

混杂因素是指与研究因素和研究疾病均有关,若在比较的人群组中分布不匀,可以歪曲(掩盖或夸大)因素与疾病之间真正联系的因素。

  1. 必须是所研究疾病的独立危险因子;
  2. 必须与研究因素(暴露因素)有关;
  3. 一定不是研究因素与研究疾病因果链上的中间变量。

举个理想情况的例子(例1):

混杂因素()与暴露因素()之间存在的对应关系为:

这些因素与研究结局之间的对应关系为:

从建模的角度来看,在真实世界数据集中, 与  (或 )之间存在相关性(不是互相独立),此时无论直接多变量建模(多因素分析),还是单变量建模(不控制混杂直接分析),得到的系数估计值都是不准确的。如果想得到准确的系数估计值,需要从真实数据集中选取一个数据子集,使得 与  (或 )之间不存在相关性(互相独立)[ 因为只需要得到的准确系数估计值,因此不关心各个混杂因素之间是否存在相关性 ],此时可以采用分层匹配法(有多少混杂因素就逐级分多少层)构造这样的数据子集。得到这样的数据子集后,无论单变量建模还是多变量建模,得到的系数估计值都是准确的。

举个简单的例子(例2):假如暴露因素是“是否患癌症”,研究结局是“是否长寿”,假定混杂因素仅仅只有“是否经常熬夜”(仅仅存在“是否经常熬夜”这个因素能同时影响“是否患癌症”和“是否长寿”)。那么真实世界的数据集中,“癌症组”中的熬夜人数往往偏多,对于结论“癌症不容易长寿”是需要质疑的,因为有可能是因为“癌症组”中熬夜人数很多,导致寿命偏短。此时,采用分层匹配法,选择性丢掉“癌症组”中一些熬夜病例,使得两组中“经常熬夜”的人数平衡,再在这个数据子集中进行分析,则可以得到可靠的结论。

倾向性评分匹配法

当混杂因素很多时,采用分层匹配法控制偏移会导致样本量严重缩水,此时有人推荐使用倾向性评分匹配法(PSM)。

倾向性评分匹配法的基本思想和步骤如下(摘自:医咖会 这4种倾向性分析方法你值得了解):

倾向性评分是指在一定协变量条件下,一个观察对象接受某种暴露/处理因素的可能性,它是一个从0到1的范围内连续分布的概率值。

其基本原理是将多个混杂因素的影响用一个综合的倾向性评分来表示,从而降低了协变量的纬度,减少了自变量的个数,有效的克服了分层分析和多因素调整分析中要求自变量个数不能太多的短板。

那么在进行倾向性分析之前,第一步就是要计算出每个研究对象的倾向性评分。倾向性评分的估计是以暴露/处理因素作为因变量Y(0或1),其他混杂因素作为自变量X,通过建立一个回归模型来估计每个研究对象接受暴露/处理因素的可能性,最为常用的是logistic回归模型。

用logistic回归模型估计倾向性评分,操作简单容易实现,可以直接得到倾向性评分分值,结果也易于理解。倾向性评分越接近于1,说明患者接受某种暴露/处理因素的可能性更高,越接近于0,说明患者不接受任何暴露/处理因素的可能性更大。

能够建立 logistic回归模型的基础是:真实世界数据中,暴露因素与混杂因素之间存在相关性(因为具有因果关系)。那么倾向性评分的含义也就明确了。

在这个倾向性评分的基础上进行匹配,则可消除一些数据中的相关性(如例1中  与  之间的相关性),注意不是消除逻辑上的相关性(逻辑上的相关性是固有存在的,无法消除)。这同时也部分消除了暴露因素与各个混杂因素之间的相关性(数据中的相关性)。从而使得建模时暴露因素的系数估计值更为准确。

对于倾向性评分的理解,其实也可以类比分层匹配法。如例1中,将  这个整体当作唯一的一个混杂变量(也就是倾向性评分的分值),将问题转化为例2的情况,采用分层匹配法选择数据子集,从而控制偏移。

另外,注意两种情况。第一种情况是,确实是真实混杂因素但在该数据中表现为“非混杂因素”(失去了与暴露因素之间的相关性),这种因素在建立 Logistic 回归时,其系数为0,实际PSM时其实是没有考虑这个变量的,并且这个变量也是不需要考虑的(因为这个数据中这个变量已经平衡了)。第二种情况是,假的混杂因素(与暴露因素之间没有真实的逻辑关联而与研究结局有逻辑关联,但在数据上偶然出现了关联),此时进行PSM是有用的,能够消除这种假混杂因素。

此外,对于与结局变量不存在关联的变量,属于无关变量,PSM中纳入这些变量并没有实质性的作用,只会导致样本量无辜减少,因此尽量不要把无关变量当作混杂因素。

倾向性评分法的漏洞

从上一节的分析可以看出,PSM只能部分消除(或者说减弱)暴露因素与各个混杂因素之间的相关性,往往不能做到完全消除相关性。比如例1中, 与  可能仍然存在相关性,此时建模所得到的暴露因素的系数估计值仍然是不够准确的。当然,如果混杂因素对研究结局的影响模式与对暴露因素的影响模式类似 [ 如例1中,结局变量与所有混杂因素之间存在的关系可以表示为  ],则也可以得到比较准确的系数估计值。但是类似的影响模式并不总是存在。

举个极端的例子(例3):暴露因素“是否患癌症”  与两个混杂因素(“是否经常熬夜”  、“是否经常接触放射源” )之间的关系为: (系数相等),研究结局“是否长寿”  与前面3个因素的之间的关系为  。对于某个真实世界数据,通过PSM法得到的数据子集可以如下所示:

  癌症组 对照组
是否经常熬夜    
20 80
80 20
是否经常接触放射源    
80 20
20 80

注:由于倾向性评分中,熬夜与接触放射源导致的癌症发生的概率相等(因为预设关系中系数相等),因此可能产生表中所示的情况。

在这个数据子集的基础上进行分析,从预设关系知,接触放射源对寿命的影响很大(系数为6),那么这个数据集仍然是存在严重偏移的(因为癌症组中接触放射源的人数很多)。产生这种情况的原因在于:在关于研究结局的模型中(如是否长寿),混杂因素的系数关系发生了较大的变化(如1:1变成了1:6)。

其实,这种情况下,即使进行多因素分析,得到的暴露因素的系数估计也是不够准确的(因为暴露因素与某些混杂变量之间仍然存在相关性)。最可靠的仍然是分层分析法。当然,真实数据进行倾向性匹配时,出现例3的这种情况比较少见(例3中“是否经常熬夜”与“是否患癌症”在数据子集中呈现严重的负相关,在真实数据中构建数据子集时并不会那么轻易掉入这种陷阱)。因此PSM法在大多数情况下仍然表现不错。

另外,在分层分析时,有时候会发现某些分层中,会出现不一致的情况(层内亚组不一致,存在交互作用),这种情况下其实是不应当轻易合并各个亚组的结果(即使多因素分析也是不准确的,需要添加交互项),倾向性评分是无法处理这种情况的。

基于这种漏洞,在倾向性匹配评分后,需要重新检验基线是否平衡!如果仍然不平衡(如例3),便是倾向性评分的难点所在了。此时可以仅针对未达到平衡的混杂因素进行再次倾向性评分(或者针对未达到平衡的混杂因素进行分层匹配)。

总而言之,我们的目的应该是使得两组基线达到平衡,而PSM可以帮助我们在一定程度上达到这个目的,并且可以保证样本量缩水不那么严重。或者说,PSM很巧妙地实现了“分层匹配法无法构建的基线平衡的数据子集”,但是PSM法有时候会失效(如例3),因此PSM之后需要检验是否达到了平衡,若没达到则需进一步优化。

上述这种漏洞是笔者自己思考的观点,如有纰漏,烦请指出。

倾向性匹配评分除了这种漏洞,还有一些其他缺点,可以参考:

医咖会 这4种倾向性分析方法你值得了解

IPTW法

逆概率加权处理法(IPTW)是基于倾向性评分构造的一种处理混杂的近似方法。IPTW的思想与PSM很像。我们知道PSM是对样本量做减法,使得相同PS的人群,在两组之间保持样本量的近似相等;而IPTW则是对样本量做加法,使得相同PS的人群在两组中的样本量都近似等于“原始数据中该PS评分人群的两组样本量之和”。IPTW的思想有点像将各组人数对齐到标化人群,为了达到对齐的目的,就对每个样本都赋予一个权重 (使得该样本相当于 个样本)。

那么如何达到这个目的呢,这个权重  应该如何计算呢?

我们回顾一下 PS 分值的意义:对于分值为  的人群,其进入暴露组的概率为 ,进入对照组的概率为  。

[ 注意,对于暴露组的全体(样本量为N)而言,并不意味着分值为  的人数为  ]

假如分值为  的人数为  ,则分值为  的暴露组人数为  ,分值为  的对照组人数为  。此时令暴露组的各个样本的权重为 ,则暴露组的虚拟样本量为 。同理,令对照组的权重为  ,对照组的虚拟样本量也变成了 。从而,两组的虚拟样本量达到而来平衡。

IPTW的好处在于,充分利用了所有的样本,对于样本量不够大的研究而言是很不错的方法。但是,凡事有利有弊。IPTW是一种上采样的方法,如果权重大的样本本身携带的偏移较大,则会引入更大的偏移(该偏移效应将成倍扩大)。

有人对各种控制偏移的方法进行过比较,IPTW有时候的表现会惊人地夸张,这其实应该是在意料之类的。

各种控制偏移方法的比较,见论文:Tobias Kurth, et al. Results of Multivariable Logistic Regression, Propensity Matching, Propensity Adjustment, and Propensity-based Weighting under Conditions of Nonuniform Effect. American Journal of Epidemiology. 2006

关于IPTW方法,详见论文:James Robins, et al. Marginal Structural Models and Causal Inference in Epidemiology. Epidemiology. 2000 (本人对IPTW的理解,也是源于读该论文的示例)

另外,与IPTW法类似的还有一种方法叫SMR法(标准化死亡比),其参照人群样本量是暴露组的样本量也就是说,将对照组的样本量乘上一个权重,使得对照组的虚拟样本量等于暴露组的样本量 [形式上就是将上述的公式进行简单变形:暴露组的权重为1,对照组的权重为 ] 。

PS校正分析法和PS分层分析法

PS校正分析法,就是将PS评分作为协变量,与研究变量一起放入多因素模型,以此对结果进行校正,思路很简单。

PS分层分析法,就是将得到的PS评分划分成几个层(一般可以用十分位数法划分为10层,具体根据样本量和可操作性而定),在各个层内进行分析,最终将各层的结果进行汇总。

多组分析

以上的情况都是假定只有两组:实验组和对照组。但有时候需要对比3组甚至更多组,如何对多组的混杂因素进行平衡化呢?下面以3组的情况为例进行讲解。

若直接使用PSM法,显然不够现实,因为每个样本得到的PS值有3个(分别代表进入3组的概率大小)。但我们注意到,IPTW法中,每个样本的权重  仅与其进入实际分组的概率有关(权重为其实际进入的那组的概率的倒数,也就是逆概率)。

对于分值为  的人群(样本量为 ),其进入第1组的概率为 ,进入第2组的概率为 ,进入第3组的概率为 ,则3组的样本量分别为: 、 、。[ 注: ]

我们仍然构造权重 ,使得各组的虚拟样本量为  。从而,使得各组的虚拟样本量达到平衡。

关于多组分析,详见论文:Daniel F. McCaffrey, et al. A Tutorial on Propensity Score Estimation for Multiple Treatments Using Generalized Boosted Models. Stat Med. 2013

思考:

1、条件Logistic回归与上述方法的联系及区别?

2、病例对照研究的OR与Logistic回归的OR有什么联系及区别?

此外,关于混杂因素的分层与多因素校正法,可以参考“医咖会”的一些文章:

医咖会 观察性研究控制混杂因素全解析

医咖会 观察性研究控制混杂因素第一弹:分层分析

医咖会 说到控制混杂因素,怎么能不提多因素分析

辩证看待倾向性评分法相关推荐

  1. R语言 1:2 1:n 倾向性评分匹配法PSM 一个病例多个对照 MatchIt包

    1:2 /1:N 倾向性评分匹配法PSM, 条件Logistic回归 MatchIt包进行倾向性评分匹配法(Propensity Score Matching, PSM)主要是1:N匹配.一个病例对应 ...

  2. STATA PSM倾向性评分匹配法 1:1

    //  用STATA 进行倾向性评分匹配法1:1 // 特别适用于横断面的病例对照研究,均衡其他因素,重点研究某些因素. // 1:2或多  后续发出 : 逆概率加权 后续发出 //数据先自己经行预处 ...

  3. python倾向匹配得分_在SPSS软件中实现1:1倾向性评分匹配(PSM)分析

    谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键.对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的因素应该尽可能和试验组保持一致,随机是最理想的策略!通 ...

  4. spss连接至远程计算机,SPSS操作:轻松实现1:1倾向性评分匹配(PSM)

    谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键.对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的因素应该尽可能和试验组保持一致,这里就不得不提随机对照 ...

  5. 辩证看待 iostat

    旧博文,搬到 csdn 原文:http://rebootcat.com/2018/01/16/using-iostat-dialectically/ 前言 经常做系统分析会接触到很多有用的工具,比如 ...

  6. CIO:辩证看待云计算 游戏规则已改变

    文章讲的是CIO:辩证看待云计算 游戏规则已改变,随着云计算慢慢从概念转向产品,企业部署云计算开始提上日程.据调查,在亚太地区,大约有三分之二的企业2012年计划增加云计算预算.当然,理智的决策源于辩 ...

  7. pm3包1.4版本发布----一个用于3组倾向性评分的R包

    目前,本人写的第二个R包pm3包的1.4版本已经正式在CRAN上线,用于3组倾向评分匹配,只能3组不能多也不能少. 可以使用以下代码安装 install.packages("pm3" ...

  8. 倾向性评分匹配 Propensity Score Matching

    @[TOC](倾向性得分匹配 Propensity Score Matching)k 前言 提示:本文为基于Youtube视频:An intuitive introduction to Propens ...

  9. R语言倾向性评分:回归和分层

    倾向性评分有4种应用,前面介绍了倾向性评分匹配及matchIt和cobalt包的使用:R语言倾向性评分:匹配 今天说一下倾向性评分回归和分层.使用了一个不是很成功的案例,并使用了大量purrr风格的代 ...

  10. R语言倾向性评分:匹配

    本文目录: 准备数据 matchIt包进行PSM 使用随机森林计算PS 主要匹配方法选择 匹配后数据的平衡性检验 cobalt包 统计检验衡量均衡性 结果可视化 不平衡怎么办? 其他问题 参考资料 倾 ...

最新文章

  1. 2019年上半年收集到的人工智能循环神经网络干货文章
  2. app让个别界面横屏,其他的为竖屏,解决如下
  3. CentOS中启动Jar包、后台启动、查看输出日志、查看服务进程、杀死进程
  4. 深度学习没有GPU怎么办?
  5. java如何保证类不被回收_垃圾回收机制保证了Java程序不会出现内存溢出。( )
  6. http://code.svnspot.com/ 免费代码托管
  7. linux内核中task_struct与thread_info及stack三者的关系
  8. Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用
  9. arch linux密码,Arch Linux root密码忘记了怎么办
  10. 编写项目开发的readme.md自述文件_MarkdownPad2与awesomium
  11. AIML相关内容学习整理
  12. Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)Call Stack
  13. 『实用教程』四种超实用的超级记忆法以及记忆训练案例
  14. 中国34个省市用字体logo 石昌鸿 字体设计-借用手法
  15. Python-TypeError:takes no arguments
  16. 给一个大表增加一个字段,带默认值
  17. Windows让Tomcat以Apr的方式运行
  18. 万众电子期刊在线阅读系统(awd复现)
  19. 读书笔记, Python - python-tricks-buffet-awesome-features
  20. win10固定本机IP地址方案总结

热门文章

  1. c语言课程设计风扇,基于单片机C语言万历智能温控风扇设计报告proteus大赛汇编.doc...
  2. 基于51单片机的温控风扇设计
  3. 魔兽争霸3冰封王座添加自定义地图
  4. 该弱磁算法采用单电流控制策略,额定转速以下采用MTPA控制,额定转速以上采用单电流控制
  5. centos系统上实现微信语音amr格式,qq语音slk格式转mp3
  6. 学习sift算法的原理和步骤_大白话人工智能算法-第32节集成学习之通俗理解XGBoost原理和过程
  7. 电机-PID学习-位置速度串级控制
  8. 51单片机中断程序大全
  9. 深度学习与计算机视觉教程(8) | 常见深度学习框架介绍(CV通关指南·完结)
  10. oracle 建立临时表语句,oracle创建临时表