如果你需要全文,请公众号后台回复关键词“pdf”。更多关于临床试验设计与数据分析服务,请联系郑老师团队,助教微信:aq566665
√什么是分位数回归
分位数回归(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等)进行建模,以全面了解自变量对因变量分布的影响。
√分位数回归有什么限制
分位数回归虽然对数据分布假设较少且对异常值的处理非常准确,但使用该方法通常需要较大的样本量,计算所耗费的时间更多,同时结果的解释和多重共线性处理相对复杂,因此在应用时也是需要慎重的考虑。
分位数回归R语言代码
library(quantreg) # 载入quantreg包
data(engel) # 加载quantreg包自带的数据集engel
View(engel) # 查看数据集
plot(engel$income,engel$foodexp) # 画因变量和自变量的散点图
library(ggfortify) # 使用ggfortify包进行可视化展示
fit<-lm(foodexp ~ income,data=engel) # 拟合线性回归模型
autoplot(fit) # 使用autoplot函数进行回归诊断的可视化展示
拟合模型
#分位数回归,选取不同的分位数,用函数tau表示。这里选取了第25、50和75百分位数,拟合了三个模型。(tau = 0.25、0.5、0.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))
如果你需要分位数回归分析数据集,公众号后台回复关键词“pdf”即可获取。本周末我们将进行临床试验设计与数据分析的直播课程,欢迎大家参加!
关于郑老师团队及公众号
大型医学统计服务公众号平台,专注于医学生、医护工作者学术研究统计支持,我们是你们统计助理
我们开展对临床预测模型、机器学习、医学免费数据库NHANES、GBD数据库、孟德尔随机化方法、MIMIC一对一R语言指导开展统计分析(一年内不限时间,周末、晚上均统计师一对一指导)。
①指导学习R语言基本技巧
②全程指导课程学习
③课程R语言代码运行bug修复
④支持学员一篇SCI论文的数据分析