我正在尝试使用 IPTW 计算药物效果的 HR,但在一个治疗组中没有发生任何事件。 这是一个表示(唯一的区别是为了简单起见,这里没有包含权重)
set.seed(1)
summary(time <- runif(100, 0, 100))
table(drug <- c(rep(0, 50), rep(1, 50)))
table(event <- c(sample(0:1, 50, replace = TRUE, prob = c(.75, .25)), rep(0, 50)), useNA = "ifany")
data <- data.frame(time, event, drug)
summary(coxph(Surv(time, event)~drug, data=data))
这是输出:
Call:
coxph(formula = Surv(time, event) ~ drug, data = data)
n= 100, number of events= 8
coef exp(coef) se(coef) z Pr(>|z|)
drug -2.107e+01 7.064e-10 1.453e+04 -0.001 0.999
exp(coef) exp(-coef) lower .95 upper .95
drug 7.064e-10 1.416e+09 0 Inf
Concordance= 0.75 (se = 0.032 )
Likelihood ratio test= 9.56 on 1 df, p=0.002
Wald test = 0 on 1 df, p=1
Score (logrank) test = 6.58 on 1 df, p=0.01
Warning message:
In coxph.fit(X, Y, istrat, offset, init, control, weights = weights, :
Loglik converged before variable 1 ; coefficient may be infinite.
我知道这个问题已经在其他线程中得到了解释(例如here和here)。然而,目前还不清楚我如何处理这个问题以获得有意义的系数(和HR)。 Therneau 和 Grambsch 在生存数据建模——扩展 Cox 模型的第 3.5 节“无限系数”中也讨论了这个问题,但我没有这本书(不幸的是)。
有人可以帮忙吗?谢谢
这种情况下的要点是系数的最大似然估计是无限的,并且实现之间的唯一区别在于它们停止迭代的位置。进一步总结您引用的参考文献:
Wald 检验在这种情况下毫无价值。 [..] 然而,分数和似然比测试仍然有效。除了令人烦恼之外,我们根本不认为这是一个严重的问题 Wald 近似的数值分解。一个人只是被迫的 进行似然比或分数检验所需的多重拟合。
最后,如果您不需要调整协变量,如您的示例所示和链接中的说明,您可以随时使用对数秩检验 (
survival::survdiff
),这只是 Cox 模型的一个特例:
有趣的是,在一个子集没有事件的情况下,很少有人对使用对数秩统计量提出类似的担忧。