我正在尝试在 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/