You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中绘制含3个分组的Kaplan-Meier生存曲线?

基于双基因分组绘制Kaplan-Meier生存曲线(TCGA-LIHC队列)

步骤1:加载核心包

先确保安装并加载生存分析必备的两个包:

install.packages(c("survival", "survminer", "dplyr"))
library(survival)
library(survminer)
library(dplyr)

步骤2:数据预处理与基因分组

假设你的合并数据集lihc_data包含以下字段:PTPRC(基因表达值)、FOXP3(基因表达值)、OS_time(生存时间)、OS_status(生存状态,1=死亡,0=存活)。

先按中位数给两个基因划分高低表达组:

# 计算基因表达中位数
ptprc_med <- median(lihc_data$PTPRC, na.rm = TRUE)
foxp3_med <- median(lihc_data$FOXP3, na.rm = TRUE)

# 生成高低分组变量
lihc_data <- lihc_data %>%
  mutate(
    PTPRC_group = ifelse(PTPRC > ptprc_med, "High", "Low"),
    FOXP3_group = ifelse(FOXP3 > foxp3_med, "High", "Low")
  )

接着按需求定义3个亚型:

lihc_data <- lihc_data %>%
  mutate(
    subtype = case_when(
      PTPRC_group == "High" & FOXP3_group == "Low" ~ "Subtype 1 (PTPRC_High/FOXP3_Low)",
      PTPRC_group == "High" & FOXP3_group == "High" ~ "Subtype 2 (PTPRC_High/FOXP3_High)",
      PTPRC_group == "Low" ~ "Subtype 3 (PTPRC_Low)",
      TRUE ~ NA_character_
    )
  ) %>%
  filter(!is.na(subtype)) # 剔除亚型分组缺失的样本

步骤3:拟合模型并绘制生存曲线

# 拟合Kaplan-Meier模型
km_fit <- survfit(Surv(OS_time, OS_status) ~ subtype, data = lihc_data)

# 可视化曲线
ggsurvplot(
  km_fit,
  data = lihc_data,
  pval = TRUE, # 显示log-rank检验P值
  conf.int = TRUE, # 显示置信区间
  risk.table = TRUE, # 附加风险人数表
  risk.table.col = "strata", # 风险表颜色与曲线匹配
  linetype = "strata", # 不同亚型用不同线型区分
  palette = c("#2E9FDF", "#E7B800", "#FC4E07"), # 自定义配色
  legend.title = "Subtypes",
  xlab = "Time (Days)",
  ylab = "Overall Survival Probability"
)

关键提示

  • 确认生存状态编码:如果你的数据中0=死亡,需要把模型里的OS_status改成1-OS_status。
  • 亚型样本量检查:先跑table(lihc_data$subtype)确认每个亚型的样本数,避免某亚型样本过少导致结果无意义。
  • 临床数据整合:后续要加入临床协变量的话,可把模型改成Surv(OS_time, OS_status) ~ subtype + age + tumor_stage,再用coxph()做多因素分析。

内容的提问来源于stack exchange,提问作者EK LEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:23:09