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

使用ggadjustedcurves绘制两组校正生存曲线时遇错误求助

解决ggadjustedcurves绘制校正生存曲线的因子比较错误

错误原因

报错核心是ggadjustedcurves在处理分组变量DEP_CAT时,试图对因子类型变量执行大小比较(>操作),但无序因子默认不支持此类操作,同时可能伴随缺失值干扰。

解决方案

1. 检查并规范分组变量DEP_CAT

先确认变量类型、水平及缺失情况:

# 查看变量结构
str(SA.HYP.W$DEP_CAT)
# 统计各水平及缺失值数量
table(SA.HYP.W$DEP_CAT, useNA = "always")
  • 如果是有序因子,转为无序因子:
SA.HYP.W$DEP_CAT <- factor(SA.HYP.W$DEP_CAT, ordered = FALSE)
  • 明确指定因子水平(确保只有DEP-和DEP+两个水平):
SA.HYP.W$DEP_CAT <- factor(SA.HYP.W$DEP_CAT, levels = c("DEP-", "DEP+"))

2. 清理数据缺失值

尽管coxph会自动删去含缺失值的样本,但绘图时可能因原数据存在缺失值引发问题,先提取完整样本重新拟合模型:

# 提取模型涉及的变量并删除缺失值
SA.HYP.W.complete <- na.omit(SA.HYP.W[, c("TIME", "STATUS", "DEP_CAT", "AGE", "GENDER", "BMI", "ALICE")])

# 重新拟合Cox模型
CPH.DEPMOD <- coxph(Surv(TIME, STATUS) ~ DEP_CAT + AGE + GENDER + BMI + ALICE, data = SA.HYP.W.complete)

3. 明确指定绘图的分组水平

调用ggadjustedcurves时,通过factor.levels参数直接指定要绘制的分组,避免自动识别时的错误:

ggadjustedcurves(CPH.DEPMOD, data = SA.HYP.W.complete, method = 'average', variable = 'DEP_CAT', factor.levels = c("DEP-", "DEP+"))

4. 备选方案:手动提取曲线数据绘制

如果上述方法仍无效,可先提取校正曲线数据,再用ggsurvplot绘制:

library(adjustedcurves)
library(survminer)

# 获取校正生存曲线数据
adj_curves <- get_adjusted_curves(CPH.DEPMOD, data = SA.HYP.W.complete, method = "average", variable = "DEP_CAT")

# 绘制曲线
ggsurvplot_df(adj_curves$curves, 
              surv.geom = geom_line(size = 1), 
              xlab = "随访时间", 
              ylab = "校正后生存概率",
              legend.title = "分组")

内容的提问来源于stack exchange,提问作者Jesse C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:13:25