公众号
“医学论文与统计分析”公众号
扫码关注公众号

统计咨询
“公共数据库与孟德尔随机化”公众号
扫码关注公众号

意见反馈
邮箱:17357190071@163.com
微信:aq566665

自变量太多怎么筛选?这篇文章如何从249个变量筛出11个

Administrator
发布于 2025-07-24 / 12 阅读
0
0

2024年12月6日,顶刊Lancet子刊《eClinicalMedicine》(医学一区top,IF=9.6)发表了一篇题为:“Novel type 2 diabetes prediction score based on traditional risk factors and circulating metabolites: model derivation and validation in two large cohort studies”的研究论文,旨在评估在临床使用的剑桥糖尿病风险评分(CDRS)基础上添加代谢组学生物标志物对评估2型糖尿病10年风险的增量预测价值。

(如果你需要全文,请在医学论文与统计分析微信公众号后台回复关键词“pdf”。如果你对预测模型感兴趣,来看看我们临床预测模型服务吧,一对一指导!详情可咨询助教,微信号:aq566665)

研究设计

在这项研究中,研究者用了两个大型队列研究推导和验证预测模型。

  • 模型推导和内部验证:纳入了86,232名英国生物银行(UKB)参与者(在2006年3月13日至2010年10月1日期间招募),将队列拆分为训练集(70%)和测试集(30%)。

  • 外部验证:纳入了4383名来自德国ESTHER队列的参与者(在2000年7月1日至2002年6月30日期间招募)。

研究人员对参与者进行了10年的随访,以评估2型糖尿病的发病率。

图1 参与者纳排流程图

√CDRS是一种预测工具,用于评估个人未来发展为2型糖尿病的风险。

这个评分系统包括年龄、性别、身体质量指数(BMI)、糖尿病家族史、吸烟状况、抗高血压药物和类固醇的处方。如果可以采集血液样本,建议使用临床CDRS,其中还包括HbA1c。

√代谢组学分析

Nightingale Health的高通量NMR代谢组学平台用于测量随机选择的UKB参与者基线血浆样本中的250种代谢物,以及ESTHER队列中具有足够血液样本质量的所有基线血清样本。

因为在两个队列的大多数参与者中甘油无法测量,甘油被排除在外,留下249个代谢物用于分析。

自变量它是如何筛选的

本文的自变量筛选很有意思,为了进行变量选择,研究者采用了LASSO方法,使用Cox比例风险模型和r包“glmnet”(版本4.1-7)。将临床CDRS和所有代谢物浓度作为自变量,2型糖尿病发生率作为因变量。

在训练集内,研究者进行了1000个重抽样样本的bootstrap过程,以增强变量选择过程的稳定性和泛化性。

  • 对于每个bootstrap样本,我们进行10次交叉验证,以识别正则化参数λ的最佳值,使交叉验证误差最小化。

  • LASSO Cox比例风险模型在每个重抽样的样本中使用最优λ进行拟合,这使一些系数接近于零,而其他系数完全接近于零。

  • 我们记录了在每个bootstrap样本的最终Cox比例风险模型中具有非零系数的代谢物,这些代谢物被选择。

  • 完成所有的1000个bootstrap样本后,我们计算这1000个bootstrap样本中每个代谢物的选择频率,作为它被选择的次数的百分比。

随后根据代谢物的选择频率进行排序,范围从0%到100%。

在1000个bootstrap样本中,LASSO选择的代谢物至少有95%(这个阈值之前已经给出)是被选择的,可以增强模型的泛化能力并最小化模型过拟合。将筛选出的代谢物纳入临床CDRS构建新的预测模型。

最终,通过LASSO分析和bootstrapping法,研究者选择了11种代谢物来增强训练集中临床CDRS对2型糖尿病风险的预测能力。

图2 11种代谢物的Pearson相关系数相关矩阵

如何理解它的自变量筛选

全套过程,我想大家看得眼花缭乱,但确实做到了“增强变量选择过程的稳定性和泛化”的目的。

基于lasso的方法筛选自变量是常规套路,但lasso的方法存在不确定性,或者存在着过拟合的可能性。
一般来说我们干完lasso就结束了。它不!这篇论文在lasso基础上用了一些其他方法。
一个是实现泛化性,用的是十折交叉方法,那就可以减少过拟合的方法,哪个场景下模型验证效果最好的,意味着泛化能力最强,这个时候的lasso模型是最好的。
第二个是实现稳定性,lasso结果不稳定怎么办?那就来1000次,1000个lasso方法95%都存在着的自变量。

高明!这套组合拳,老郑我看得觉得有意思。

他们家的变量实在是太多了。太富裕了,随便你折腾,最终都有足够的自变量纳入模型。

下次你们也试试。


评论