专栏名称: 解螺旋
解螺旋——医生科研最好的帮手。无论你是科研零基础,抑或初窥门径,你都可以在解螺旋获得极大的提升,从而面对基金、论文、实验游刃有余。解螺旋课堂是所有热爱科研技能学习的医生聚集地,解螺旋会员是医生科研全方位的贴心助手,加入我们,体验改变。
目录
相关文章推荐
医学影像沙龙  ·  上肢关节MRI影像诊断 ·  昨天  
丁香园  ·  77 ... ·  昨天  
解螺旋  ·  Meta分析神器来了,用AI工具狂发一区SC ... ·  2 天前  
51好读  ›  专栏  ›  解螺旋

明明是病例回顾,偏要装作RCT

解螺旋  · 公众号  · 医学  · 2017-06-19 17:57

正文


科研经验 | 文献 | 实验 | 工具 | SCI写作 | 国自然

作者:麦子

转载请注明:解螺旋·临床医生科研成长平台


临床硕士生小瑜进了一个小老师的组。小老师手上还木有什么大经费,只好对小瑜说,要不你就做个病例回顾吧,把咱医院X年至Y年收治且有随访记录的COPD病历分析一下,分析长效β受体激动剂(LABA)是否能降低死亡率。不过呢,死亡率的影响因素还是很多的,注意下吼~

小瑜回去以后一筹莫展。是啊,影响因素很多很多、很多很多的。而且是回顾性研究嘛,那些因素又不可控,就算最后,用和不用LABA的随访期间内死亡率有组间差异,我怎么能肯定它就是LABA造成的呢。要是强行附会关系,肯定是争不过审稿人的,看来只能发发低分杂志了。

小瑜依据查文献所知,列了30多个相关因素。他知道,考虑的因素越全面,建立的模型就越细致,就越有可能唬住审稿人。但好不容易收集了591个病例之后,做了初步分析,发现竟然有10个变量P<0.05,也就是说除了LABA外,还有近1/3的因素会对死亡率产生干扰。

“难道我要假装不知道,就当那10个变量从来没考虑过,从来没分析过?这样倒是可以得到一个干净的、基线一致的数据。”小瑜摇摇手中那杯冰咖啡,自言自语似的说着。但他心中也明白,那样研究质量就更差了。他看到毕业的路上有一层密不透光的浓雾升腾起来。

坐在对面的基友小亮静静听他倾诉完,同情地望了他一眼,说,为什么不用倾向评分匹配法(Propensity Score Matching, PSM)。这样可以把回顾性研究强行拔到RCT水平。

嗯??

仿佛有了一道光。小亮打开电脑,打开R向他演示起来。

用PSM提取高质量样本


## 准备工作

library(MatchIt)

setwd('D:\\PSM')

PSM

# 载入MatchIt包,设置工作路径为D盘下的PSM文件夹,读取数据表PSM.csv。

## 计算倾向评分并匹配

PSM.m

data = PSM, method = 'nearest', distance = 'logit', caliper = 0.2 ')


# 不要被一长串吓到。调用matchit函数,“~”前面的LABA是分组,应当是一个二分变量,一般用0表示对照组,1表示治疗组;“~”后面是各个需要分析匹配的协变量,用“+”号把它们连起来。

# data指定那些变量所属的数据表,method选用评分匹配的方法,一般就用默认的nearest。distance则是选择计算距离或倾向值的方法,默认用logistic回归法(logit)。caliper是卡钳值,一般设为0.2,也可自行调整。

summary(PSM.m)

# 刚才的处理结果我们存到一个叫PSM.m的对象里去了,现在就用summary函数调出它的基本情况来看看。运行后会得到一组挺复杂的表,但主要看最后一段:



可见,我们原来对照组有292个样本,干预组有299个样本,经过计算后,各组匹配了189个样本,于是原来591个样本的大集,只留下了378个高质量样本。这时再看P值,就没有P<0.05的干扰了。


匹配前和匹配后,部分预览


## 提取样本

PSM.data

# 用match.data函数,从刚才的结果中提取出由那378个高质量样本组成的新表。

接下来就可以拿去跟死亡随访数据一起做K-M分析等等爱干嘛干嘛去啦~

简单理解PSM







请到「今天看啥」查看全文