能否在拆分后的生存数据集上执行Fine-Gray回归分析?
在拆分后的生存数据集上实现Fine-Gray回归的解决方案
可以在survSplit拆分后的数据集上应用Fine-Gray回归,你遇到的错误源于两个核心问题:一是finegray转换时未保留tgroup变量,二是原拆分过程丢失了竞争事件的原始编码。以下是修正后的完整操作流程:
步骤1:加载必要包
确保安装并加载survival和cmprsk包(finegray函数来自cmprsk):
install.packages("cmprsk") library(survival) library(cmprsk)
步骤2:生成并预处理模拟数据
保留原始事件编码(0=删失,1=目标事件,2=竞争事件),避免拆分时丢失竞争风险信息:
n <- 100 df <- data.frame(id=1:n, time=sample(1:36, n, replace=TRUE), event=sample(0:2, n, replace=TRUE), implantsurface=sample(0:1, n, replace=TRUE), covariate1=sample(0:1, n, replace=TRUE), covariate2=sample(0:1, n, replace=TRUE)) df$time <- as.numeric(df$time)
步骤3:时间分层拆分数据集
使用~.保留所有变量,确保tgroup(分层标签)和原始event变量被带入拆分后的数据:
fit1 <- survSplit(Surv(time, event == 1) ~ ., data = df, cut=c(4), episode= "tgroup")
步骤4:转换为Fine-Gray格式
在finegray公式中明确包含tgroup变量,确保其被带入转换后的数据框;同时指定目标事件编码为1:
FG <- finegray(Surv(time = time, event = event, type = "mstate") ~ implantsurface + tgroup + covariate1 + covariate2, data = fit1, etype = 1) # etype指定目标事件(再手术)的编码
步骤5:拟合Fine-Gray模型
此时tgroup已存在于FG数据框中,可正常使用strata(tgroup):covariate1构建模型:
FGfit <- coxph(Surv(fgstart, fgstop, fgstatus) ~ implantsurface + strata(tgroup):covariate1 + covariate2, weights = fgwt, data = FG) # 查看模型结果 summary(FGfit)
错误原因解释
- 变量丢失:你之前的
finegray公式未包含tgroup,导致转换后的数据框中无此变量,后续coxph调用strata(tgroup)时报错。 - 事件信息丢失:原
survSplit的公式仅保留了目标事件的逻辑值(event==1),丢失了原始竞争事件(event=2)的编码,无法满足Fine-Gray回归对竞争风险的识别需求。
内容的提问来源于stack exchange,提问作者r_fryer
相关产品推荐
相关产品推荐

