延迟进入生存模型。 R 与 Stata 差异

Delayed entry survival model. R vs Stata differences

我在 Stata 中有一些代码,我想在 R 中重做。我正在研究延迟进入生存模型,我想将后续行动限制在 5 年内。在 Stata 中这很容易,可以按如下方式完成,例如:

stset end, fail(failure) id(ID) origin(start) enter(entry) exit(time 5)
stcox var1

但是,我在 R 中重新创建它时遇到了问题。我制作了一个玩具示例,将跟进限制为 1000 天 - 这是设置:

library(survival); library(foreign); library(rstpm2)

data(brcancer)
brcancer$start <- 0
# Make delayed entry time
brcancer$entry <- brcancer$rectime / 2
# Write to dta file for Stata
write.dta(brcancer, "brcancer.dta")

好的,现在我们已经建立了一个用于 R 和 Stata 的相同数据集。这是 Stata 位代码和模型结果:

use "brcancer.dta", clear
stset rectime, fail(censrec) origin(start) enter(entry) exit(time 1000)
stcox hormon

这里是 R 代码和结果:

# Limit follow-up to 1000 days
brcancer$limit <- ifelse(brcancer$rectime <1000, brcancer$rectime, 1000)
# Cox model 
mod1 <- coxph(Surv(time=entry, time2= limit, event = censrec) ~ hormon, data=brcancer, ties = "breslow")
summary(mod1)

如您所见,R 估计值和 State 估计值略有不同,我不明白为什么。我是否错误地设置了 R 模型以匹配 Stata,或者是否有其他原因导致结果不同?

由于在对终止日期之后发生的死亡事件进行重新编码后,这些方法在可用数据集上匹配,因此我将评论的相关部分作为答案发布。

I also think that you should have changed any of the deaths at time greater than 1000 to be considered censored. (Notice that the numbers of events is quite different in the two sets of results.