如何构造cmprsk::crr()协变量矩阵以匹配tidycmprsk::crr()结果?
如何让cmprsk::crr()与tidycmprsk::crr()的Fine-Grey竞争风险模型结果一致?
我在R中使用两个不同包拟合Fine-Grey竞争风险模型时,发现系数估计结果存在差异:
- 在
tidycmprsk::crr()中,我通过公式形式指定模型:... ~ x_bin * splines::ns(x_cont, df = 3) - 在
cmprsk::crr()中,我手动构造协变量矩阵传入模型
最小可复现代码
# 使用tidycmprsk拟合模型 model_tidy <- tidycmprsk::crr( survival::Surv(ftime, fstatus) ~ x_bin * splines::ns(x_cont, df = 3), data = df, failcode = "A") # 使用cmprsk手动构造协变量矩阵并拟合模型 X <- setNames( data.frame( cbind(df$x_bin, splines::ns(df$x_cont, df = 3), df$x_bin * splines::ns(df$x_cont, df = 3)) ), nm = c("x_bin", paste0("x_cont", 1:3), paste0("x_cont", 1:3, "x_bin")) ) model_untidy <- cmprsk::crr( ftime = df$ftime, fstatus = df$fstatus, cov1 = X, failcode = "A")
模型结果差异
model_tidy的部分输出结果:
Variable Coef SE HR 95% CI p-value x_bin 0.668 1.22 1.95 0.18, 21.3 0.58 ...
summary(model_untidy)的部分输出结果:
coef exp(coef) se(coef) z p-value x_bin 0.270 1.310 1.337 0.202 0.84 ...
即使将模型简化为... ~ x_bin这类简单形式,两个包的结果仍然不一致。请问该如何构造cmprsk::crr()的协变量矩阵,才能让它的结果与tidycmprsk::crr()完全匹配?
测试用数据
n <- 100 set.seed(1) df <- data.frame( ftime = rexp(n, rate = 0.05), fstatus = factor(sample(c("censor", "A", "B"), n, replace = TRUE, prob = c(0.3, 0.4, 0.3)), levels = c("censor", "A", "B")), x_cont = rnorm(n, mean = 50, sd = 10), x_bin = rbinom(n, 1, 0.5))
内容的提问来源于stack exchange,提问作者LulY
相关产品推荐
相关产品推荐

