科研经验 |文献|实验|工具|SCI写作|国自然
作者:麦子
转载请注明:解螺旋·临床医生科研成长平台
临床硕士生小瑜进了一个小老师的组。小老师手上还木有什么大经费,只好对小瑜说,要不你就做个病例回顾吧,把咱医院X年至Y年收治且有随访记录的COPD病历分析一下,分析长效β受体激动剂(LABA)是否能降低死亡率。不过呢,死亡率的影响因素还是很多的,注意下吼~
小瑜回去以后一筹莫展。是啊,影响因素很多很多、很多很多的。而且是回顾性研究嘛,那些因素又不可控,就算最后,用和不用LABA的随访期间内死亡率有组间差异,我怎么能肯定它就是LABA造成的呢。要是强行附会关系,肯定是争不过审稿人的,看来只能发发低分杂志了。
小瑜依据查文献所知,列了30多个相关因素。他知道,考虑的因素越全面,建立的模型就越细致,就越有可能唬住审稿人。但好不容易收集了591个病例之后,做了初步分析,发现竟然有10个变量P
“难道我要假装不知道,就当那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
匹配前和匹配后,部分预览
## 提取样本
PSM.data
# 用match.data函数,从刚才的结果中提取出由那378个高质量样本组成的新表。
接下来就可以拿去跟死亡随访数据一起做K-M分析等等爱干嘛干嘛去啦~
简单理解PSM
回顾性研究的一大特点就是,事情已经发生了,混杂因素已经控制不了了。所以理论上讲,一切具有此类特征的数据,都可以用PSM处理。而且,像研究某物是否致癌这类课题,做RCT是有违伦理的,只能观察,所以也需要用PSM排除一些混杂因素的干扰。
排除干扰我们也有其他方法,但PSM法的一点好处是,它可以同时分析更多的干扰因素,而其他方法通常不超过10个。
PSM大体上是采用logistic回归法计算倾向评分(Propensity Score)之后,根据评分从对照组各样本中找到跟干预组背景相似的,匹配起来,就好像相亲要相门当互对的,配不到就单身出局。这样两组的背景就趋近均衡,具有更好的可比性。不过匹配也有其他1:n的比例。
其中一个关键的设置是“卡钳值”,这名字很形象,就像卡在干预组每个样本的评分上的钳子。如果一个样本的评分是0.283,匹配方法是nearest,那就在对照组中找一个评分也是0.283±0.2的样本跟它匹配,如果有多个,当然是找最近的那个。
可见卡得越小,匹配越精确,但可能留下供分析的样本也少,反之则匹配比较凑合,留下的样本量较大。这个值可以自己跟据具体情况调整。
小瑜听完终于舒了一口气,连日来的阴霾消散了。小亮微微一笑,合上了电脑。
如果觉得《明明是病例回顾 偏要装作RCT》对你有帮助,请点赞、收藏,并留下你的观点哦!