代码之家  ›  专栏  ›  技术社区  ›  user2498193

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

  •  2
  • user2498193  · 技术社区  · 8 年前

    我在Stata中有一些代码,我正试图在R中重做。我正在研究一个延迟进入生存模型,我想将随访时间限制为5年。在Stata中,这是非常容易的,可以通过以下方式完成,例如:

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

    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
    

    enter image description here

    这是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)
    

    enter image description here

    正如你们所看到的,R估计和状态估计略有不同,我不知道为什么。我是否错误地设置了R模型以匹配Stata,或者有其他原因导致结果不同?

    1 回复  |  直到 8 年前
        1
  •  1
  •   IRTFM    8 年前

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

    我还认为,你应该改变任何超过1000人死亡的时间,以被视为审查。(请注意,在两组结果中,事件的数量非常不同。

    推荐文章