• 登录
Skip to content

一起大数据-技术文章心得

一起大数据网由数据爱好者发起并维护,专注数据分析、挖掘、大数据相关领域的技术分享、交流。不定期组织爱好者聚会,期待通过跨行业的交流和碰撞,更好的推进各领域数据的价值落地。

Menu
  • 首页
  • 大数据案例
  • 数据&电子书
  • 视频
    • Excel视频
    • VBA视频
    • Mysql视频
    • 统计学视频
    • SPSS视频
    • R视频
    • SAS视频
    • Python视频
    • 数据挖掘视频
    • 龙星计划-数据挖掘
    • 大数据视频
    • Machine Learning with Python
  • 理论
    • 统计学
    • 数据分析
    • 机器学习
    • 大数据
  • 软件
    • Excel
    • Modeler
    • Python
    • R
    • SAS
    • SPSS
    • SQL
    • PostgreSQL
    • KNIME
  • 技术教程
    • SQL教程
    • SPSS简明教程
    • SAS教程
    • The Little SAS Book
    • SAS EG教程
    • R语言教程
    • Python3教程
    • IT 技术速查手册
    • Data Mining With Python and R
    • SAS Enterprise Miner
  • 问答社区
  • 我要提问
Menu
SPSS操作:轻松实现1:1倾向性评分匹配(PSM)

SPSS操作:轻松实现1:1倾向性评分匹配(PSM)

Posted on 2022年4月7日

谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键。对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的因素应该尽可能和试验组保持一致,这里就不得不提随机对照试验。众所周知,随机对照试验中研究对象是否接受干预是随机的,这就保证了组间其他混杂因素均衡可比。

但是有些时候并不能实现随机化,比如说观察性研究。这时候倾向性评分匹配(propensity score matching, PSM)可以有效降低混杂偏倚,并且在整个研究设计阶段,得到类似随机对照研究的效果。与常规匹配相比,倾向性评分匹配能考虑更多匹配因素,提高研究效率。

这么“高大上”的倾向性评分匹配,是不是超级难学?错矣!今天就带大家轻松搞定1:1倾向性评分匹配。作为“稀罕”大招,并不是在所有版本的SPSS都可以实现倾向性评分匹配,仅在SPSS22及以上自带简易版PSM,对于其他版本或者想要体验完整版功能,就不得不去安装相应的软件(R软件、SPSS R插件、PS matching插件。。。超级难安装!那是需要运气和耐心的!感兴趣的小伙伴可以私聊~~~)。

本次使用SPSS22为大家演示1:1倾向性评分匹配。

一、问题与数据

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

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

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

图片

二、SPSS分析方法

1. 数据录入

(1) 变量视图

 

图片

(2) 数据视图

图片

2. 倾向性评分匹配

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

图片

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

Match Tolerance用来设置倾向性评分匹配标准(学名“卡钳值”),这里设定为0.02,即吸烟组和不吸烟组按照倾向性评分±0.02进行1:1匹配(当然,卡钳值设置的越小,吸烟组和不吸烟组匹配后可比性越好,但是凡事有个度,太小的卡钳值也意味着匹配难度会加大,成功匹配的对子数会减少,需要综合考虑~~~);

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值相同或相近的个体作为配比对象。本次我们就采用的是这个方法。

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

3、与马氏配比结合的PSM:PSM与马氏配比结合后可以增加个别重点变量平衡能力,实现过程比较复杂。

对于1:m PS匹配和与马氏配比结合的PSM,目前SPSS22及以上版本自带的PSM并不能实现,后面会介绍基于SAS软件复杂倾向性评分匹配,敬请期待~~~

参考文献

李智文, 张乐, 刘建蒙,等. 倾向评分配比在流行病学设计中的应用[J]. 中华流行病学杂志, 2009, 30(5):514-517.

医咖会微信:medieco-ykh

图片

恭喜你,又看完一篇文章,扫码领个红包吧!图片

推荐访问

欢迎加入我们的付费交流社群,增长见识,互帮互助! 自2023-05-01起正式运营。
图片

数据分析交流:数据分析交流
Excel学习: Excel学习交流
Python交流:一起学习Python(数据分
SQL交流:一起学习SQL(数据分析
微博:一起大数据

最新提问

  • 统计方面的3个Python包
  • 更新R及Rstudio
  • TFP CausalImpact:一个Python包,用于估计设计干预对时间序列的因果效应
  • 根据公式的结构,写出计算的表达式,并结算结果
  • excel中提取超级链接公式中的链接地址
  • 用python解析公式并进行可视化
  • Python设置镜像源默认为清华的方法
  • VAR、VMA、VARMA 和 ARIMA
  • Python 的表达式解析库来解析公式
  • PandasAI:一个Python库,将生成式AI能力集成到Pandas中,允许进行高级数据分析任务,例如数据合成和增强

文章标签

AMOS CBC Excel GBDT KNN Modeler Mysql pandas PostgreSQL python python数据可视化 R SAS sklearn SPSS SQL SVM Tableau TensorFlow VBA 主成分分析 关联规则 决策树 协同过滤 可视化 因子分析 大数据 大数据分析 推荐系统 数据分析 数据可视化 数据挖掘 数据透视表 文本挖掘 时间序列 机器学习 深度学习 神经网络 结构方程 统计学 联合分析 聚类 聚类分析 逻辑回归 随机森林
©2023 一起大数据-技术文章心得 | Design: Newspaperly WordPress Theme