预后模型构建(LASSO-Cox 与列线图)
预后模型把多个基因、蛋白或临床变量组合成一个风险评分,用来预测患者未来一段时间内发生死亡、复发等事件的风险。典型流程是在训练队列中先筛选与生存相关的候选特征,再用 LASSO 惩罚的 Cox 回归压缩到少数变量,得到「系数乘表达值求和」的风险评分;然后在内部和独立外部队列中评估区分度和校准度,最后可与分期、年龄等合并为列线图。常见数据来自 TCGA、GEO 等公共队列和自有临床队列。
什么时候用
- 从一组候选基因中构建多基因风险评分
- 评估分子评分是否在临床分期之外提供额外预后信息
- 整合临床变量和分子特征绘制列线图
- 在独立队列中验证已发表或自建的预后模型
- 比较多个候选模型的区分度、校准度和临床获益
- 从多组学数据中筛选候选预后标志物
不适合的情况
- 训练队列事件数很少却候选特征成百上千
- 没有任何独立队列或重抽样验证就报告模型性能
- 判断诊断或分类问题,应使用诊断模型与 ROC 评估
需要准备的数据
- 训练队列表达与随访
- 样本乘特征的矩阵与生存时间、事件状态,样本 ID 对齐,同一终点定义
- 外部验证队列
- 来自不同中心或平台的独立数据,需包含模型中全部特征和同类终点
- 候选特征集
- 差异基因、通路基因、单因素显著基因或多组学特征,说明来源以便复现
- 临床变量
- 年龄、分期、分级、治疗等,用于构建列线图和检验独立预后价值
分析步骤
- 1
划分训练与验证
在任何特征筛选之前划分训练集和验证集,或确定外部验证队列。验证数据在建模过程中不能参与任何筛选或参数选择,否则性能会被高估。
- 2
候选特征初筛
在训练集中用单因素 Cox、差异分析或先验通路缩小候选范围。初筛只是降维,阈值不宜过严,以免漏掉在多变量中才有贡献的特征,同时记录每一步保留的特征数。
- 3
LASSO-Cox 建模
用 glmnet 设置 family 为 cox,cv.glmnet 交叉验证选择 lambda。lambda.min 保留较多变量,lambda.1se 更精简。检查选出的变量数和系数是否稳定。
- 4
计算风险评分
风险评分等于各特征系数与其表达值乘积之和。在训练集确定分组切点,例如中位数,并将同一切点或同一标准化方式原样应用到验证集。
- 5
评估区分度
在训练和验证集分别画 KM 曲线,计算 C-index 和 1、3、5 年时间依赖 AUC(如用 timeROC)。训练集与验证集差距很大提示过拟合。
- 6
评估校准与获益
用 bootstrap 校准曲线比较预测与实际生存概率,用决策曲线分析评估在不同风险阈值下的净获益,判断模型是否比全部干预或全不干预更有用。
- 7
构建列线图
将风险评分与独立预后的临床变量纳入多因素 Cox,用 rms 包的 cph 和 nomogram 绘图。同步报告列线图的 C-index 和校准,并与单独分期比较。
关键参数与决策
lambda 选择
lambda.min 使交叉验证误差最小,lambda.1se 在误差一个标准误内选最简模型。样本少或需外推时 lambda.1se 通常更稳健;交叉验证有随机性,需固定随机种子。
预测时间点
时间依赖 AUC 和校准曲线需指定时间点,应在随访范围内且该时间点仍有足够风险人数。中位随访只有两年的队列不宜报告 5 年预测性能。
风险分组切点
中位数切点简单可复现;最佳切点会夸大训练集差异;若用于外部队列,需要说明用的是训练集的固定切点还是各队列自身中位数。
跨平台标准化
芯片与测序表达尺度不同,系数无法直接迁移。常见做法是各队列内 z-score 后再计算评分,或只用相对排序;需写清楚所用处理。
内部验证方式
单次随机拆分结果受拆分影响大。bootstrap 乐观度校正或重复交叉验证能更充分利用数据,并给出更稳定的性能估计。
常见错误
- 在全部样本上做单因素筛选后再拆分训练和验证:验证集已参与选特征,内部验证结果被高估。
- 只报告训练集 AUC 和 KM 曲线:训练集性能几乎总是乐观的,不能代表模型对新患者的预测能力。
- 不同平台数据直接套用训练集系数:表达值尺度不同,风险评分整体偏移,分组比例失衡。
- 只看 AUC 不看校准:区分度好不代表预测概率准确,校准差的模型用于绝对风险估计会误导。
- 外部验证队列的终点或人群与训练集不一致:如训练用 OS 验证用 RFS,验证结论不可比。
- 列线图中重复纳入与风险评分高度相关的变量:共线性会让系数不稳定,各变量的分值难以解释。
结果怎么看
LASSO 系数路径与交叉验证图
路径图显示随 lambda 增大各系数被压缩到 0 的过程;交叉验证图标出 lambda.min 和 lambda.1se。误差曲线平坦且变量数在两条线间变化很大时,说明特征选择不稳定。
风险评分分布与生存状态图
上方按风险评分排序,下方标出每个样本的生存时间和状态。高风险侧死亡事件应明显更密集;两侧分布差别不大说明评分区分能力有限。
时间依赖 ROC 曲线
给出多个时间点的 AUC。重点看验证集 AUC,若训练集明显高于验证集说明过拟合;不同时间点 AUC 差异大,提示模型适合的预测时段有限。
校准曲线
横轴预测生存概率,纵轴实际观察概率,理想情况贴近对角线。整体偏离说明模型高估或低估风险;只在高风险端偏离时,需注意该区间样本是否过少。
列线图与决策曲线
列线图把每个变量换算为分数,总分对应预测生存率。决策曲线中模型净获益高于全部干预和全不干预两条参考线的阈值区间,才是模型有用的范围。
和相近方法怎么选
LASSO-Cox 与逐步回归
逐步回归按 P 值增删变量,在高维数据中极不稳定,选择结果对样本变化敏感;LASSO 通过惩罚同时完成选择和收缩,适合特征多于样本的情况。变量本来就少时,预设变量的多因素 Cox 更合适。
LASSO-Cox 与随机生存森林
LASSO-Cox 得到线性风险评分,系数可解释,便于做列线图;随机生存森林能捕捉非线性和交互,但难以写成简单公式,对小样本更易过拟合。可并行建模,再用同一验证集比较。
C-index 与时间依赖 AUC
C-index 评估整个随访期内风险排序的一致性,是一个总体指标;时间依赖 AUC 评估在特定时间点区分事件与非事件的能力。两者互补,通常同时报告。
常见问题
风险评分公式怎么写?
风险评分等于每个入模特征的 LASSO-Cox 系数与其表达值乘积的总和。报告时列出每个基因及系数,并说明表达值经过何种处理,如 log2 转换或 z-score,否则他人无法复现。
lambda.min 和 lambda.1se 选哪个?
lambda.min 交叉验证误差最小,保留变量较多;lambda.1se 是误差在最小值一个标准误内的最大 lambda,模型更简洁。追求可推广性和简洁时多选后者,两者都应在验证集评估。
列线图怎么验证?
至少报告区分度和校准度:C-index 或时间依赖 AUC,以及 bootstrap 校准曲线。最好在外部队列重复,并用决策曲线分析展示净获益。还应与仅用分期的模型比较,说明增加的价值。
没有外部验证队列怎么办?
可以用 bootstrap 乐观度校正或重复交叉验证做内部验证,并如实说明缺乏外部验证这一局限。也可在 GEO、ICGC 等公共数据中寻找同癌种、同终点的队列作为外部验证。
预后模型需要遵循什么报告规范?
临床预测模型常参考 TRIPOD 报告规范,要求说明数据来源、终点定义、缺失值处理、变量选择、模型形式、验证方式和性能指标。按清单撰写方法部分,可减少审稿中关于可复现性的问题。
在 Codar 里怎么做
在 Codar 里提供训练与验证队列的表达和随访数据,或指定公共队列和基因集。Codar 确认方案后从多组学数据中筛选候选标志物,做 LASSO-Cox 建模和风险评分,在验证队列评估 C-index、时间依赖 ROC、校准和决策曲线,并构建列线图。交付模型公式、图表、报告和可复现脚本。仅供科研。
用 TCGA-LIHC 做训练集、GEO 一个肝癌队列做验证,从 200 个铁死亡基因中构建 LASSO-Cox 预后模型并画列线图