我正在尝试在 R 中创建一个精算生存分析(我正在关注一些有效的例子)。我认为最好的方法是使用 survival 包。所以像:

library(survival)
surv.test <- survfit(Surv(TIME,STATUS), data=test)

但是,要获得正确答案,我需要将 TIME 变量划分为 365 天的间隔,但我无法弄清楚如何执行此操作以使其与给定的结果匹配。

据我所知,survfit 函数中没有可以执行此操作的选项。我浏览了几个文档示例,但没有一个尝试创建阶梯类型的图(有一个 type='interval' 选项,但似乎做了一些不同的事情)。所以我想我需要在应用 survival 函数之前重新组合我的数据?

有任何想法吗?

P.S:在 SPSS 中,这将是 INTERVAL = THRU 10000 BY 365 ;在 Stata 中 intervals(365) ... connect(stairsteps)

最佳答案

我猜您想将 TIME 变量划分为多个区间,因为您想绘制 Kaplan-Meier 曲线。在 R 中,这不是必需的,您只需在 survfit 对象上调用 plot 即可。例如,

s=survfit(Surv(futime, fustat)~rx, data=ovarian)
plot(s)



我想我更明白你的问题了。你得到一条粗黑线的原因是因为你有很多审查,并且在审查的每个点都绘制了 + ,你可以用 mark.time=F 关闭它。 (您可以在 ?survival:::plot.survfit 中看到其他选项)

但是,如果您仍想按年份汇总,只需将您的跟进时间除以 365,然后向上取整。 ceiling 用于四舍五入。这是一个在不同时间级别聚合而无需审查的示例。
par(mfrow=c(1,3))
plot(survfit(Surv(ceiling(futime), fustat)~rx, data=ovarian),col=c('blue','red'),main='Day',mark.time=F)
plot(survfit(Surv(ceiling(futime/30), fustat)~rx, data=ovarian),col=c('blue','red'),main='Month',mark.time=F)
plot(survfit(Surv(ceiling(futime/365), fustat)~rx, data=ovarian),col=c('blue','red'),main='Year',mark.time=F)
par(mfrow=c(1,1))

但我认为在没有审查符号的情况下绘制 Kaplan-Meier 会看起来非常好,并提供更多的洞察力。

关于r - 精算生存分析,分为区间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11884191/

10-15 20:17