NEJM:偏态数据如何分析?【附R语言代码】

健康   2024-12-23 08:30   浙江  



对于偏态数据,大家第一反应可能是在差异性分析时要有所差别,正态数据用t检验,偏态数据用秩和检验。没错,这个我们之前也讲到过!
审稿人说,你的数据是偏态分布的,统计方法不对?怎么办?
但是,当因变量为连续型变量时,诸位在做回归分析时有没有考虑过因变量的正态和偏态问题呢?
我们最常用也是最熟知的一定是普通最小二乘(OLS)估计做线性回归,但我们可能会忽略一点,OLS需满足假定正态性和方差齐性。当数据偏态分布时,结果稳健性较差。
在我们分析偏态数据,例如,住院天数之类的,就可以考虑今天分享的这个统计学方法:分位数回归。
最近《新英格兰医学杂志》(NEJM)发表的一篇临床试验文章,文中对于次要结局中偏态分布的连续型数据,使用分位数回归进行分析,老郑简单讲讲,后面有R语言代码,一起看看吧。

2024年11月20日,医学顶刊《NEJM》(医学一区top,IF=96.2)发表了一篇题为“Antibiotic Treatment for 7 versus 14 Days in Patients with Bloodstream Infections”非劣效性、多中心、开放标签、随机、对照试验,研究对象,有血流感染的住院患者(包括重症监护病房[ICU]患者)随机分配接受7天或14天的抗生素治疗。

如果你需要全文,请公众号后台回复关键词“pdf”更多关于临床试验设计与数据分析服务,请联系郑老师团队,助教微信:aq566665

在本研究中,对于连续的次要结局,如通气持续时间、血管升压药持续时间、无抗生素天数、无ICU天数、无住院天数和无血管升压药天数研究团队使用基于中位数的分位数回归进行分析。



√什么是分位数回归

分位数回归(QR)最早在1978年由Koenker & Bassett提出。它假设每个X对应的Y值都有一个分布,这个分布可以表达为一系列的分位数。

分位数回归可以获得这个分布中任意分位数位置的Y(conditional percentile of Y)与X的关系,用多个回归系数表示。分位数回归不需要满足OLS中正态或方差齐性的假定,对异常值更稳健。

本质上,分位数回归就是一个加权最小二乘法,给不同的y值(大于分位点和小于分位点的y)不同的权重,比如现在我们有一个数据集是1到10个整数,我们希望求0.7分位数,假设这个0.7分位数是q,然后所有大于q的数都被赋上权重0.7,小于q的赋予权重0.3。

比如说想要研究患者培训时间对认知评分的影响,使用分位数回归我们就可以研究培训时间每增加一个单位,认知评分位列前20%患者的认知评分会如何变化,这里的患者也可以是位列前50%,还可以是位列后20%的。群体的异质性就体现出来了。

√分位数回归的目的
  • 既能研究在不同分位点处自变量X对于因变量Y的影响变化趋势;
  • 也能研究在不同分位点处的哪些自变量X是主要影响因素。

√分位数回归有哪些类型

分位数回归可按照不同的标准进行分类,最常见的是按照分位数进行分类:
  • 单一分位数回归:只对一个特定的分位数(如中位数τ=0.5)进行建模;
  • 多个分位数回归:同时对多个不同分位数(如τ=0.1, 0.25, 0.5, 0.75, 0.9等)进行建模,以全面了解自变量对因变量分布的影响。

√分位数回归有什么限制

分位数回归虽然对数据分布假设较少且对异常值的处理非常准确,但使用该方法通常需要较大的样本量,计算所耗费的时间更多,同时结果的解释和多重共线性处理相对复杂,因此在应用时也是需要慎重的考虑。

在本研究中,研究团队按照中位数构建分位数回归模型,效应估计值用中位数之差和相应的95%置信区间来表示。
但是作者写明,由于在次要结果分析中没有对多重比较进行校正,因此报告的是置信区间而不是P值;然而,置信区间不应该用来代替假设检验,结果应该被认为是探索性的。
结果表明,住院时间、血管加压药使用和机械通气使用的测量,在7天组和14天组相似 ;分配到 7 天治疗的患者到第 28 天无抗生素天数的中位数高于分配给 14 天的患者(19 天 [IQR,11-21] vs14 天 [IQR,11-14])。

分位数回归R语言代码

为了方便大家理解,我们使用R version 4.0.3中的 “quantreg”包为大家演示如何进行分位数回归,分析使用的数据来源于packages “quantreg” 自带的数据集“engel”
“engel”包含235行观测,探讨家庭收入(income)与食品支出(foodexp)的关联。
以下是详细的分析流程:
√载入程序包和数据集
library(quantreg) # 载入quantreg包data(engel) # 加载quantreg包自带的数据集engelView(engel) # 查看数据集
√线性回归的诊断
plot(engel$income,engel$foodexp) # 画因变量和自变量的散点图
library(ggfortify) # 使用ggfortify包进行可视化展示fit<-lm(foodexp ~ income,data=engel) # 拟合线性回归模型autoplot(fit) # 使用autoplot函数进行回归诊断的可视化展示
√拟合分位数回归
  • 拟合模型
#分位数回归,选取不同的分位数,用函数tau表示。这里选取了第255075百分位数,拟合了三个模型。(tau = 0.250.50.75)fit1 = rq(foodexp ~ income, tau = 0.25, data = engel) fit2 = rq(foodexp ~ income, tau = 0.5, data = engel)fit3 = rq(foodexp ~ income, tau = 0.75, data = engel)
  • 模型比较
anova(fit1,fit2,fit3) # 方差分析
  • 模型可视化
plot(engel$foodexp, engel$income, pch=20, col = '#2E8B57', main = "家庭收入与食品支出的分位数回归", xlab="食品支出", ylab="家庭收入")lines(fitted(fit1), engel$income, lwd=2, col = '#EEEE00')lines(fitted(fit2), engel$income, lwd=2, col = '#EE6363')lines(fitted(fit3), engel$income, lwd=2, col = '#FF00FF')legend("topright", c("tau=.25","tau=.5","tau=.75"), lty=c(1,1,1), col=c('#EEEE00','#EE6363','#FF00FF'))
  • 不同分位点的回归比较
fit = rq(foodexp ~ income,  tau = c(0.25,0.5,0.75), data = engel)plot(summary(fit))
有了这些代码,大家也可以尝试着跑一跑。
除了今天提到的R package“quantreg”,还有SAS(9.3)中的proc quantselect;stata中的qreg,用quantile( ) 指定分位数、sqreg做斜率相等检验;Matlab中的quantreg,感兴趣的可以自行去探索一下。

如果你需要分位数回归分析数据集,公众号后台回复关键词“pdf”即可获取。本周末我们将进行临床试验设计与数据分析的直播,欢迎大家参加!

关于郑老师团队及公众号 

大型医学统计服务公众号平台,专注于医学生、医护工作者学术研究统计支持,我们是你们统计助理

我们开展对临床预测模型、机器学习、医学免费数据库NHANES、GBD数据库、孟德尔随机化方法、MIMIC一对一R语言指导开展统计分析(一年内不限时间,周末、晚上均统计师一对一指导)

①指导学习R语言基本技巧

②全程指导课程学习

③课程R语言代码运行bug修复

④支持学员一篇SCI论文的数据分析

1对1R语言指导详情介绍
联系助教小董咨询(微信号aq566665



医学论文与统计分析
本号为高校统计学老师所设,介绍医学论文进展与统计学方法,SPSS分析方法、真实世界研究、R语言与数据挖掘。关注后,发送关键词“33”到公众号就可以获取常见的统计软件比如Spss,sas,PASS(绝对无毒)等
 最新文章