我在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估计和州估计略有不同,我无法弄清楚原因。我是否错误地设置了R模型以匹配Stata,还是有其他原因导致结果不同?
答案 0 :(得分:1)
由于在重新编码终止日期之后发生的死亡事件后,方法与可用数据集相匹配,因此我将评论的相关部分作为答案发布。
我还认为你应该在超过1000的时候改变任何死亡被视为审查。 (请注意,两组结果中的事件数量完全不同。