Cox比例风险模型中时变分类变量的评估问题求助
分类协变量时变风险比建模问题
我需要计算两种治疗方案的风险率,这两种方案在治疗早期的风险高于后期。参考了survival包的时变变量相关文档,但文档示例多针对连续协变量,而我的协变量是分类变量。tt()方法似乎不适用于分类变量,因此尝试通过治疗与时间分层的交互项采用阶梯函数法建模,却得到了NA结果,还因维度问题无法检验假设和使用predict()函数。以下是我的示例数据集与分析代码,请求语法层面的帮助:
数据生成与生存曲线绘制
library(tidyverse) library(survival) library(survminer) ## 生成数据集 set.seed(1234) n <- 200 time <- round(runif(n, 1, 365), 0) status <- rnorm(n, 0.5, 0.1) %>% round(0) # 修正原代码的rep参数错误,按组生成治疗分组 df.interim <- data_frame(time, status, treatment = rep(c("w", "p"), each = n/2)) ## 给"w"组增加早期死亡案例 df <- df.interim %>% rbind(data_frame(time = round(runif(50, 1, 50), 0), status = 1, treatment = "w")) ## 绘制生存曲线 survfit2(Surv(time, status) ~ treatment, data = df) %>% ggsurvfit(linewidth = 1) + add_confidence_interval() + add_risktable() + add_quantile(y_value = 0.6, color = "gray50", linewidth = 0.75) + scale_ggsurvfit()

模型拟合与问题输出
## 基础Cox模型 m1 <- coxph(Surv(time, status) ~ treatment, data = df) m1 # 输出结果: # coef exp(coef) se(coef) z p # treatmentw 0.7215 2.0575 0.1662 4.341 1.42e-05 ## 检验比例风险假设 plot(cox.zph(m1, global=TRUE)) cox.zph(m1, global=TRUE) # 输出结果: # chisq df p # treatment 18.8 1 1.4e-05 # GLOBAL 18.8 1 1.4e-05 ## 时间分层建模 df.split <- survSplit(Surv(time, status) ~ ., data=df, cut=c(50), episode= "tgroup", zero=0) m2 <- coxph(Surv(time, status) ~ treatment:strata(tgroup), data=df.split) m2 # 输出结果存在NA: # coef exp(coef) se(coef) z p # treatmentp:strata(tgroup)tgroup=1 -1.8873 0.1515 0.4004 -4.713 2.44e-06 # treatmentw:strata(tgroup)tgroup=1 NA NA 0.0000 NA NA # treatmentp:strata(tgroup)tgroup=2 -0.2594 0.7715 0.2020 -1.284 0.199 # treatmentw:strata(tgroup)tgroup=2 NA NA 0.0000 NA NA ## 检验时间分层模型的比例风险假设时出错 plot(cox.zph(m2, global=TRUE)) cox.zph(m2, global=TRUE) # 报错信息: # Error in dimnames(tbl) <- list(c(termname, "GLOBAL"), c("chisq", "df", : # length of 'dimnames' [1] not equal to array extent
内容的提问来源于stack exchange,提问作者ctlamb
相关产品推荐
相关产品推荐

