我在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估计值和Stata估计值略有不同,我不知道为什么。我是否错误地设置了R模型来匹配Stata,或者是否有其他原因导致结果不同?
1条答案
按热度按时间v8wbuo2f1#
由于这些方法在记录了终止日期后发生的死亡事件后,在一个可用的数据集上匹配,因此我将我的评论的相关部分作为答案发布。
我还认为你应该改变任何死亡时间大于1000被认为是审查。(请注意,两组结果中的事件数量完全不同。