BioF3 FigCode · SCI 绘图代码集

校准曲线(Calibration Curve)

导出日期:2026年6月27日

分类:生存分析 | 依赖包:rms、survival

解决的生物学问题

模型预测某患者 5 年生存概率是 30%,那这群人真的有 30% 在 5 年后还活着吗?

应用场景

输入数据格式

rms::cph 对象 + 验证数据

关键参数

快速开始

1. 直接在线运行

打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。

2. 本地复现

下载脚本和示例数据,本地 RStudio 运行:

# 下载
curl -O https://<your-site>/figcode/scripts/calibration.R
curl -O https://<your-site>/figcode/data/calibration.csv

3. 安装依赖

# CRAN 包
install.packages(c("rms", "survival"))

# Bioconductor 包(如需)
# BiocManager::install(c())

完整代码

library(rms)
library(survival)

# --- Demo data ---
set.seed(42)
n <- 300
df <- data.frame(
  time   = rexp(n, 0.04),
  status = sample(0:1, n, replace = TRUE, prob = c(0.3, 0.7)),
  risk_score = rnorm(n),
  age    = sample(40:80, n, replace = TRUE),
  stage  = factor(sample(c("I","II","III","IV"), n, replace = TRUE))
)

dd <- datadist(df)
options(datadist = "dd")

# --- Cox model ---
fit <- cph(
  Surv(time, status) ~ risk_score + age + stage,
  data = df, x = TRUE, y = TRUE, surv = TRUE,
  time.inc = 3   # evaluation time
)

# --- Calibration at 3 years (bootstrap-corrected) ---
cal <- calibrate(fit, cmethod = "KM", method = "boot",
                 u = 3, m = 50, B = 200)

plot(cal,
     xlab = "Nomogram-Predicted 3-yr Survival",
     ylab = "Observed 3-yr Survival",
     col  = "#dc2626", lwd = 2,
     errbar.col = "#94a3b8")
abline(0, 1, lty = 2, col = "grey50")
title("Calibration Curve — 3-year")

替换为自己的数据

脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:

延伸阅读