肺腺癌(Lung Adenocarcinoma,LUAD)是非小细胞肺癌中发病最高的亚型,尽管 EGFR-TKI 与免疫检查点抑制剂已显著改善部分患者预后,但相当一部分人在两年内仍会复发或转移。围绕 LUAD 建立一套可解释、可复现的预后基因模型,对于早期分层、术后随访以及辅助治疗决策都具有非常直接的临床价值。本文是 LUAD 系列的上篇,使用 TCGA-LUAD 的 HiSeqV2 mRNA、miRNA、临床矩阵与生存数据,依次走完 5 个标准步骤:① 数据预处理;② 肿瘤 vs 正常差异分析;③ 单因素 Cox → LASSO-Cox → 风险评分 → 时间依赖 ROC → 列线图;④ 风险评分与临床变量的关联;⑤ GO / KEGG / GSEA 通路富集。
第一步 · 数据预处理:四类原始文件合成一个分析对象
使用 data.table::fread 一次性读入 mRNA 表达矩阵、miRNA 表达矩阵、临床矩阵与生存表,通过 TCGA Barcode 第 14-15 位标注 Tumor / Normal,再以 patient ID 把生存 / 临床 / 表达对齐到同一份样本表。预处理产物 luad_data.rds 是后续所有脚本的统一输入。
mrna <- fread(f_mrna, data.table = FALSE)
mir <- fread(f_mir, data.table = FALSE)
clin <- fread(f_clin, data.table = FALSE,
na.strings = c("", "NA", "[Not Available]", "[Unknown]"))
surv <- fread(f_surv, data.table = FALSE)
mrna_type <- tcga_sample_type(colnames(mrna)) # 14-15 位 -> Tumor / Normal
tumor_ids <- intersect(colnames(mrna)[mrna_type == "Tumor"], surv$sample)
pheno <- build_pheno(tumor_ids, surv, clin)1.1 队列总览

第二步 · 差异表达:肿瘤 vs 正常(mRNA + miRNA)
差异分析使用 limma + trend。阈值 |log2FC| > 1 且 FDR < 0.05,分别对 mRNA 与 miRNA 做 Tumor vs Normal。
design <- model.matrix(~ grp) # grp: Normal, Tumor
fit <- eBayes(lmFit(expr, design), trend = TRUE)
tt <- topTable(fit, coef = 2, number = Inf, sort.by = "P")
tt$Direction <- with(tt,
ifelse(adj.P.Val < 0.05 & logFC > 1, "Up",
ifelse(adj.P.Val < 0.05 & logFC < -1, "Down", "NS")))两个组学的差异分布如下(数量级与典型 TCGA 报道一致):

2.1 mRNA 火山图(差异最显著的基因被标注)

2.2 miRNA 火山图

2.3 Top DEG 热图

第三步 · 预后建模:单因素 Cox → LASSO → 风险评分
建模流程严格遵循『先筛选、再压缩、再外验』的三段式:首先对每个候选基因做单因素 Cox,保留 p < 0.01 的稳健预后基因;再用 10 折交叉验证的 LASSO-Cox 把多重共线性压成稀疏权重;用所选基因的线性组合计算每位患者的连续 risk score;以中位数划高低风险组,做 KM、时间依赖 ROC 与列线图。
# 单因素 Cox 筛预后基因
uni <- lapply(candidate, function(g) coxph(Surv(OS.time, OS) ~ expr[g, ],
data = pheno))
# LASSO-Cox + CV 选 lambda.min
cvfit <- cv.glmnet(X, Surv(OS.time, OS), family = "cox", alpha = 1, nfolds = 10)
sel <- coef(cvfit, s = "lambda.min") # 稀疏权重
risk <- as.numeric(X %*% sel) # 连续 risk score3.1 顶部预后基因(单因素 Cox Top 20)

3.2 LASSO 系数路径与最优 lambda

3.3 风险评分与生存状态全景



3.4 KM 生存曲线:高低风险组

3.5 关键单基因 KM



3.6 时间依赖 ROC(1 / 3 / 5 年)

3.7 Nomogram + 3 年校准曲线


第四步 · 风险评分与临床变量的关联
一个好的预后评分应该和肿瘤分期、淋巴结、转移这些既有临床指标在方向上保持一致;同时不应被性别等无关变量主导。我们对每个临床变量做 Kruskal-Wallis 检验,只保留显著的图。
4.1 风险评分随病理分期升高

4.2 T / N / M 分期



4.3 吸烟史

4.4 LASSO 顶级基因在不同 Stage 间的表达

4.5 单因素 + 多因素 Cox:Risk score 是独立预后因子

第五步 · 功能富集:GO + KEGG + GSEA
用 clusterProfiler 对上 / 下调 DEG 分别做超几何检验(ORA),再以 limma 的 t 统计量作 ranked list 跑 GSEA,两种视角互为印证。
# ORA
go <- enrichGO(gene = ent, OrgDb = org.Hs.eg.db, ont = "BP",
pvalueCutoff = 0.05, readable = TRUE)
kegg <- enrichKEGG(gene = ent, organism = "hsa", pvalueCutoff = 0.05)
# GSEA on ranked t-statistic
glist <- setNames(sort(deg$t, decreasing = TRUE), deg$ENTREZ)
gsea_kegg <- gseKEGG(geneList = glist, organism = "hsa",
pvalueCutoff = 0.05)5.1 GO-BP:上调 DEG 富集

5.2 GO-BP:下调 DEG 富集

5.3 KEGG 通路富集(上 / 下调)


5.4 GSEA · GO-BP 双向气泡图

5.5 GSEA · KEGG ridge

5.6 GSEA · 单通路 enrichment plot


上篇小结 · 下篇预告
上篇我们已经把 LUAD 的『从矩阵到风险评分到通路』这条主线走完了:504 例配对样本、4430 个 DEG、13 基因 LASSO 模型、Stage 关联、GO/KEGG 富集 —— 一个完整、可投稿的预后分析骨架。
下一篇会把 WGCNA 共表达模块 / hub 基因、ESTIMATE + ssGSEA 免疫浸润 + 22 个免疫检查点、Hallmark 50 通路单样本 GSVA 评分、分子亚型(ConsensusClusterPlus)、C-index 自助法 + DCA + 随机生存森林反向验证、miRNA-mRNA 调控网络(multiMiR)、以及驱动基因 OncoPrint + Stage→Cluster→Risk→Status 流向图,一次性补齐 LUAD 论文的所有进阶分析模块。