BioF3 FigCode · SCI 绘图代码集
校准曲线(Calibration Curve)
分类:生存分析 | 依赖包:rms、survival
解决的生物学问题
模型预测某患者 5 年生存概率是 30%,那这群人真的有 30% 在 5 年后还活着吗?
应用场景
- Nomogram 验证必备
- Cox 预后模型外部验证
- 诊断模型可靠性评估
- 机器学习概率输出校准检验
输入数据格式
rms::cph 对象 + 验证数据
关键参数
- B = 1000(bootstrap 次数)
- m(每个 group 的样本数)
- u(评估时间点,单位 = time 列)
快速开始
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 --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:
- 输入格式:rms::cph 对象 + 验证数据
- 使用
read.csv()/readRDS()读取本地文件
延伸阅读
- 相关教程:校准曲线 完整流程
- 出现 bug?欢迎在 FigCode 页面 点击对应卡片,在评论区留言。