求助:遗忘COX回归后绘制限制性立方样条(RCS)图的方法
复现COX回归限制性立方样条(RCS)HR图的实操方案
核心工具包判断
从你提供的图样式(带HR置信区间、横轴为连续变量、纵轴以HR=1为参考线)来看,最可能使用的是rms包(Frank Harrell开发的专注于回归模型可视化的工具包),这也是绘制COX-RCS图最常用的工具。
步骤1:安装加载依赖包
install.packages(c("rms", "survival", "ggplot2")) library(rms) library(survival) library(ggplot2)
步骤2:拟合COX-RCS模型
假设你的数据集为dat,生存结局变量为Surv(time, status)(time是生存时间,status为事件状态:1=发生事件,0=截尾),目标连续变量为x:
# 生成样条节点(通常用分位数设置,也可手动指定) knots <- quantile(dat$x, c(0.05, 0.25, 0.5, 0.75, 0.95)) # 拟合带RCS的COX模型,必须加x=TRUE, y=TRUE才能支持后续绘图 cox_rcs_model <- cph(Surv(time, status) ~ rcs(x, knots = knots), data = dat, x = TRUE, y = TRUE)
步骤3:绘制RCS-HR图
方式1:用rms自带函数快速绘制
# 生成预测序列并绘图,默认显示HR及95%置信区间 plot(Predict(cox_rcs_model, x = seq(min(dat$x), max(dat$x), length.out = 100)), ylab = "Hazard Ratio (HR)", xlab = "你的连续变量名称", conf.int = TRUE, lty = c(1, 2, 2), # 实线为HR曲线,虚线为置信区间 col = "black")
方式2:用ggplot2自定义样式(更灵活匹配原图)
如果需要调整颜色、填充、刻度等细节,先提取预测数据再绘图:
# 提取带置信区间的预测数据 pred_data <- as.data.frame(Predict(cox_rcs_model, x = seq(min(dat$x), max(dat$x), length.out = 100), conf.int = 0.95)) # 绘图 ggplot(pred_data, aes(x = x, y = yhat)) + geom_line(color = "black", size = 1) + geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.2, fill = "gray") + geom_hline(yintercept = 1, linetype = "dashed", color = "red") + # HR=1参考线 labs(x = "你的连续变量名称", y = "Hazard Ratio (HR)") + theme_bw()
细节匹配提示
- 若原图节点位置特殊,可手动替换
knots参数的分位数为具体数值(比如knots = c(5, 15, 25, 35, 45)) - 调整横轴范围可在
seq()中指定区间,或在绘图函数中加xlim(c(min_val, max_val)) - 置信区间样式可通过
geom_ribbon的fill/alpha参数或plot()的col.conf参数修改
内容的提问来源于stack exchange,提问作者Tom Hsiung
相关产品推荐
相关产品推荐

