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

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

但是有些时候并不能实现随机化,比如说观察性研究。这时候倾向性评分匹配(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软件复杂倾向性评分匹配,敬请期待~~~

SPSS操作:轻松实现1:1倾向性评分匹配(PSM)的更多相关文章

  1. 一个操作轻松截取长图,Win10上网截长图小技巧!

    截屏的方法有很多,但是有时候我们会遇到比电脑屏幕还大的图,比如网站上的长图.N条引用的评论...你要怎么截取呢?是不是最多只能截全屏?还是要做到第三方的截图软件呢? 下面介绍一种win10电脑自带的滚 ...

  2. RedisTemplate通过scan方法进行自定义操作:1、根据hashKey的名称匹配相关hash键值对

    需求:有一个hash如下,现在想查询出stream前缀的键值对 操作方法如下: package com.example; import org.junit.Before; import org.jun ...

  3. JDBC 操作预编译语句中LIKE模糊匹配怎么用

    问题描述 在使用JDBC 预编译执行语句时,遇到一个问题,那就是在含有LIKE的查询语句时,我到底怎么使用匹配符%._呢. 如: SELECT * FROM "+LQ_USERS+" ...

  4. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  5. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

    今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...

  6. SPSS超详细操作:分层回归(hierarchical multiple regression)

    SPSS超详细操作:分层回归(hierarchical multiple regression) 1.问题与数据 最大携氧能力(maximal aerobic capacity, VO2max)是评价 ...

  7. spss

    编辑 SPSS(Statistical Product and Service Solutions),“统计产品与服务解决方案”软件.最初软件全称为“社会科学统计软件包” (SolutionsStat ...

  8. 轻松学习Linux系统安装篇之fdisk命令行工具的使用

    fdisk 的介绍:          fdisk 命令是磁盘分区表操作工具:和以前Dos和windows下的分区工具功能一样:fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统 ...

  9. SPSS详细教程:OR值的计算

    SPSS详细教程:OR值的计算 一.问题与数据 研究者想要探索人群中不同性别者喜欢竞技类或娱乐性体育活动是否有差异.研究者从学习运动医学的学生中随机招募50名学生,记录性别并询问他们喜欢竞技类还是娱乐 ...

随机推荐

  1. leetcode 696

    696. Count Binary Substrings Input: "00110011" Output: 6 Explanation: There are 6 substrin ...

  2. 简单易学的机器学习算法—SVD奇异值分解

    简单易学的机器学习算法-SVD奇异值分解 一.SVD奇异值分解的定义     假设M是一个的矩阵,如果存在一个分解: 其中的酉矩阵,的半正定对角矩阵,的共轭转置矩阵,且为的酉矩阵.这样的分解称为M的奇 ...

  3. 掌握ES6/ES2015核心内容

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  4. PAT甲级——A1028 List Sorting

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...

  5. Layui表格数据重新载入_表格搜索

  6. Linux下perl模块安装

    perl模块下载地址: http://search.cpan.org/ 假设放在/usr/local/src/下 cd /usr/local/src 上传下载的压缩包CGI-Session-3.95. ...

  7. poj 3304 Segments(计算直线与线段之间的关系)

    Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10921   Accepted: 3422 Descrip ...

  8. JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...

  9. linux操作系统清除报错Disk /dev/mapper/ddf1_4c53492....

    现象描述 Disk /dev/mapper/ddf1_4c5349202020202010000055000000004711471100000a28p1: 666.0 GB, 66600088934 ...

  10. vim 查找及替换

    #全文(%)查找(s)行首2个空格开头(/^ ), 替换(g)为无即删掉(//) :%s/^ //g #全文查找每行尾的2个空格,删除 :%s/ $//g