谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键。对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的因素应该尽可能和试验组保持一致,随机是最理想的策略!通过随机化,让两组间具有更好的可比性。然而,并不是所有这场合都能实现随机,尤其是回顾性研究,事实已经发生了,就很难再进行随机处理了。因此,很多观察性研究,分组间不均衡是最常见的现象。

面对分组不均衡,基线不整齐,两组可比性差。经典的方法采用多因素回归分析处理。但是, 回归仍然有一定的缺陷。因此,目前一般采用一些新的策略进行,最常见的是倾向评分策略。 倾向评分策略又包括几种类型,如逆概率加权方法(IPTW),倾向性评分匹配(PSM)等。

如果分组间的样本量比超过1:4范围,此时,回归分析的结果会受到很大影响。这时候,一般建议采用倾向性评分匹配(propensity score matching, PSM)方法进行处理,其一,可以使两组样本数在可比范围(一般是1:1,1:2等),同时能有效降低混杂偏倚。与常规匹配相比,倾向性评分匹配能考虑更多匹配因素,提高研究效率和可信度。

这么“高大上”的倾向性评分匹配,是不是超难学?其实不然,SPSS这种傻瓜软件就OK。当然,如果您安装的是SPSS 22版本之前的老版本的话,你就得反复折腾,安装“高级”的R插件来处理了(R软件、SPSS R插件、PS matching插件等)。如果您安装的是22或23版本(当然,未来会更高了),就不用担心了,傻瓜式解决这个问题。

不过,目前SPSS自带的插件,只能做1:1匹配,算法方面主要是Fuzzy模型,你不能自由选择其它的模型哦,如5-->1贪婪最优匹配。

不过,小编在此提醒各位,SPSS容易抽风,往往第一次打开运行时,提示内置的Fuzzy文件没有安装(其实早就安装过了)。此时,往往一脸蒙了。不用急,教大家一个小招,可以先运行一下其它功能,需要先调用Python command的功能,预热一下,然后再使用PSM 功能就OK了。例如,可以使用data菜单的PSM下面的case control matching, 胡乱填一下,然后运行一下。再回来做PSM就成功了。当然,做PSM分组变量(group indicator缺失值全部都去掉)里面不可以有缺失值,所有新变量和数据集都要用英文起名,不然会跑不出结果! 因为如果都不知道分在哪一组的话,软件就会傻了,不知道你在干啥,匹配什么东东了。

言归正传,开始使用SPSS 22或SPSS 23演示1:1倾向性评分匹配。

一、示例数据

某研究者想搞明白吸烟和高血压之间的关系,准备利用某项调查的资料进一步随访研究吸烟和高血压的关联,该项研究包括233名吸烟者,949 名不吸烟者。如果全部随访,研究小白感觉鸭梨山大,所以打算从中选取部分可比的个体进行随访。

这两组人群一些主要特征的分布存在显著差异(见表1),现准备采用PS最邻近匹配法选取可比的个体作为随访对象。

表1. 两组基线情况比较(匹配前)

小编提示:类似象这样基线不齐,在观察性研究中是正常现象哦。如果观察性研究,基线清一色p>0.05的话,那太令人可疑了,往往存在挑选样本的可能了。

二、SPSS分析方法

1. 数据录入

(1) 变量视图

(2) 数据视图

2. 倾向性评分匹配

选择Data→Propensity Score Matching,就进入倾向性评分匹配的主对话框。

将分组变量Smoke放入Group Indicator中(一般处理组赋值为“1”,对照组赋值为“0”);将需要匹配的变量放入Predictors中;Name for Propensity Variable为倾向性评分设定一个变量名PS;

注:分组变量,根据你自己的需要即可。一般只有两组,多组处理会更复杂了。而匹配变量,即多个不同变量的综合评分(回归得分值),SPSS会为大家自动计算,可以自主命名为PS,或其它的名字均可。

Match Tolerance用来设置倾向性评分匹配标准(学名“卡钳值”,英文叫caliper),这里设定为0.02,即吸烟组和不吸烟组按照倾向性评分±0.02进行1:1匹配(当然,卡钳值设置的越小,吸烟组和不吸烟组匹配后可比性越好,但是凡事有个度,太小的卡钳值也意味着匹配难度会加大,成功匹配的对子数会减少,需要综合考虑);说来很难懂,其实可以理解为两组匹配时,得分(即上述的PS)得分相差不能太多,如果相差太多,就不能作为匹配对象了。所谓不能相差太多,指的意思是两组评分值相差在一定范围内(caliper),如±0.02左右。例如第一组中一个样本得分为0.561分,另外一组中选择一个0.562分,十分接近,两者仅相差0.001分,当然不错。如果一组得分为0.561分,另外一组中找不到相近的,与之最近的得分在0.583分。此时与0.561相差超过了0.02,即使是“最接近”的样本,也无法匹配(因为它们相差得太多了)。这时只能去除这个样本(找不到合适的匹配对象样本)。

Case ID确定观测对象的ID;Match ID Variable Name设定一个变量,用来明确对照组中匹配成功的Match_ID;Output Dataset Name这里把匹配的观测对象单独输出一个数据集Match。

3. Options设置

Variable for Number of Eligible Cases设定一个变量,用来明确病例组中某一个观测对象,在对照组中有多少个观测对象满足与其匹配的条件,比如说病例组有一个观测对象PS=0.611,对照组可能有一个0.610,一个0.612。

Sampling默认为不放回抽样。

Give priority to exact matches 优先考虑精确匹配,也就说病例组有一个观测对象PS=0.611,对照组也应该找到一个0.611。

Maximize execution performance 执行最优化操作,即系统会综合考虑精确匹配和模糊匹配(基于设定的卡钳值范围内匹配),系统默认勾选。

Randomize case order when drawing matches整个匹配过程中,如果对照组有多个满足匹配条件的观测对象,那么SPSS会默认随机将其与病例组观测对象匹配。但是因为SPSS默认每次操作给对照组的随机数字不同,所以如果不特殊设定,每次实际匹配成功的对子是不一样的,也就说这一次对照组A匹配给病例组B,下一次就可能匹配给病例组C。所以需要自行设置,并且在Random Number Seed设定一个随机数种子,确保匹配过程可以重复。

三、结果解读

1. 匹配结果

表2以吸烟(1=吸烟;0=不吸烟)为因变量,以需要调整的变量为自变量构建logistic回归模型(表2),求出每个研究对象的PS值。

表2. logistic回归模型

表3显示,精确匹配45对,模糊匹配114对,共计匹配成功159对。

表3. 匹配结果

表4主要是匹配过程。首先是精确匹配(即PS完全一致),匹配33663次,大约1%匹配成功;其次在精确匹配成功的前提下,进行PS的模糊匹配(PS±0.02,即最开始设定的卡钳值为0.02),匹配33618次,大约3.3%匹配成功。

表4. 匹配容许误差

2. 匹配后数据库

输出的数据集Match中出现之前设定的几个新变量:E_case表示对照组中有几个符合匹配条件的观测对象(如图,吸烟组ID=2,有2个对照组观测对象符合匹配条件);PS是基于logistic回归模型计算出的倾向性评分;match_id表示匹配成功的ID。

3. 数据库整理

A. 筛选匹配成功的对子:选择Data→Select Cases→If condition is satisfied:设定match_id≥1,筛选出匹配成功的对子→Output中输出新的数据集Analysis。

B. 确定匹配成功标识:match_id为吸烟组和不吸烟组相互匹配成功的ID,这里将不吸烟组match_id变量转换为ID变量,这时候相同的match_id即为匹配成功的对子。具体操作:将Analysis数据集中,不吸烟组match_id替换成ID编号:Transform→Compute Variable→if smoke=0, match_id=ID→OK

C. 选择Data→Sort cases→按照匹配标识match_id排序(相同的match_id即为匹配成功的对子)→OK→Save(你的鼠标手一定要点保存!!!)

倾向性评分匹配就搞定了,再来看看匹配情况。表5显示,原吸烟组233例,最后共有159例匹配成功(这次我们限定PS≤0.02,但可根据实际情况选择合适的限定,增加匹配成功数!),各匹配因素在两组间都均衡可比。

表5. 两组基线情况比较(匹配后)

四、总结和拓展

PSM一般分为几种类型:

1、PS最邻近匹配:是PSM最基本的方法,即直接从对照中寻找一个或多个与处理组个体PS值相同或相近的个体作为配比对象。一般配合caliper进行限制,防止把不太相近的样本匹配进来。但是,如果样本量足够大,这种方法比较常用,也很简单有效。如果样本量较小时,要慎用。

2、分层PSM:PS最邻近匹配尽管可以使协变量总体趋于平衡,但不能保证每个协变量分布完全一致。可以根据某个重要变量(如性别)分层后,分别对每层人群进行PS最邻近匹配,然后再将配比人群合并,这样就可以保证该重要变量在组间分布完全一致。

3、最优化匹配。采用策略包括马氏距离,贪婪匹配等。一般来说,也会与caliper结合使用,以与达到最佳的匹配效果。不过,对于1:m PS匹配和与马氏距离配比结合的PSM,目前SPSS 22及以上版本自带的PSM并不能实现。需要安装专门的R插件进行。

python倾向匹配得分_在SPSS软件中实现1:1倾向性评分匹配(PSM)分析相关推荐

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

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

  2. python倾向匹配得分_手把手教你做倾向评分匹配 -PSM

    原标题:手把手教你做倾向评分匹配 -PSM 本文首发于"百味科研芝士"微信公众号,转载请注明:百味科研芝士,Focus科研人的百味需求. 各位科研芝士的朋友大家好,今天和大家分享一 ...

  3. python倾向匹配得分_临床研究的最后一道防线(四):倾向性评分匹配PSM在Python的实现...

    临床研究的最后一道防线(四):倾向性评分匹配(propensity score matching, PSM) 在Python的实现 No.25介绍了SPSS实现倾向性评分匹配(propensity s ...

  4. python倾向匹配得分_倾向评分匹配的SPSS和R实现方法

    SPSS在22版和23版加入了倾向评分匹配方法,笔者多次操作,程序界面还算友好,现给大家展示一下,供初次使用者参考. 如下图,一个数据,包括了id(病例的唯一编码).group(干预方法).cf1-c ...

  5. python倾向匹配得分_数据分析36计(九):倾向得分匹配法(PSM)量化评估效果分析

    1. 因果推断介绍 如今量化策略实施的效果评估变得越来越重要,数据驱动产品和运营.业务等各方的理念越来越受到重视.如今这方面流行的方法除了实验方法AB testing外,就是因果推断中的各种观察研究方 ...

  6. spss常态检验_【单选题】SPSS 软件中进行数据描述、 t 检验等分析的菜单是( )。 A. 文件 B. 数据 C. 转换 D. 分析...

    [判断题]人工照明强度越大,夏季空调负荷越高. [判断题]( ) 男西服胸衬的制作过程大致有:缉底衬的省道→归拔胸衬→固定胸衬→缉衬→烫衬等. (1.5分) [判断题]细胞密实体积是以每毫升培养液中细 ...

  7. R语言使用MatchIt包进行倾向性匹配分析、使用match.data函数构建匹配后的样本集合、使用可视化分析检验倾向性评分匹配后样本中的所有协变量的平衡情况

    R语言使用MatchIt包进行倾向性匹配分析.使用match.data函数构建匹配后的样本集合.使用可视化分析检验倾向性评分匹配后样本中的所有协变量的平衡情况 目录

  8. R语言使用MatchIt包进行倾向性匹配分析、使用match.data函数构建匹配后的样本集合、通过分析不同分组对应的协变量的均值来判断倾向性评分匹配后样本中的所有协变量的平衡情况

    R语言使用MatchIt包进行倾向性匹配分析.使用match.data函数构建匹配后的样本集合.通过分析不同分组对应的协变量的均值来判断倾向性评分匹配后样本中的所有协变量的平衡情况 目录

  9. 在python语言中可作为源文件后缀名的是_在计价软件中可以新建下列哪些类型的项目( )...

    [多选题]在2013清单计价中,其他项目界面,包括( ) [单选题]锂离子电池最常用的负极材料是碳材料,其理论嵌锂容量是() [单选题]某企业为增值税一般纳税人,购买原材料取得增值税专用发票上注明的价 ...

最新文章

  1. 使用脚本恢复Windows XP系统的用户密码
  2. ROS知识:安装rosdep中出现time out的问题
  3. spring中使用内存数据库(Embedded database)
  4. mui几种页面跳转方式对比
  5. matlab张量工具初步
  6. 如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存
  7. Hexo 入门指南(二) - 安装、初始化和配置
  8. OpenCV读图、展示和保存新图
  9. Atitit 软件开发体系法规大全v2.docx Atitit 软件开发体系大全 目录 1. 基本法(类似宪法) 1 2. 行政法 1 3. 流程法民商法 2 3.1. Ui提升法 2 3.2. 功
  10. 【FPGA基础】四位二进制--格雷码转换器(vivado)
  11. 以太坊基础开发入门教程,完整入门【转】
  12. 匿名通信攻击技术:主动攻击、被动攻击、单端攻击、端到端攻击
  13. 浅谈系统实现层面稳定性保障
  14. python pandas多条件筛选
  15. Java break outer和continue outer的用法
  16. 解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍)
  17. STM32-Chapter1-6电机开发概述,定时器之基本定时器定时高级定时器互补输出输入捕获输出比较实验
  18. (Java实现)洛谷 P1164 小A点菜
  19. 化合物相似性搜索_分子形状相似性及其应用
  20. 求开发代码,ESP32 网络收音机、网络对讲机(使用蓝牙耳机输出输入)

热门文章

  1. 如何运用个人独资企业进行合理税收筹划?
  2. Android中生成.xls的Excel文件
  3. 牛客网左程云直通BAT算法课10元优惠码
  4. Python 中 PyQuery 库
  5. SCM:软件配置管理
  6. C盘文件删除怎么做?3个方法教你清理C盘!
  7. UiPath和UiBot和价格
  8. matlab.mat文件读取,matlab中mat文件的生成和读取
  9. html5 2019新年祝福页面,新年祝福语2019
  10. matlab如何删除打开记录,matlab清除命令窗口时,如何显示确认删除的对话框?