使用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
相关产品推荐
相关产品推荐

