我正在尝试在R中创建一个精算生存分析(我正在遵循一些实际的例子)。我认为最好的方法是使用survival包。所以就像这样:
library(survival)
surv.test <- survfit(Surv(TIME,STATUS), data=test)然而,为了得到正确的答案,我需要将TIME变量划分为365天的间隔,我不太清楚如何做到这一点,以便它与给定的结果相匹配。
据我所知,在survfit函数中没有可以做到这一点的选项。我看了几个文档示例,它们都没有尝试创建阶梯式绘图(有一个type='interval'选项,但似乎做了一些不同的事情)。因此,我想我需要在应用survival函数之前对数据进行重新分组?
有什么想法吗?
附注:在SPSS中,这将是INTERVAL = THRU 10000 BY 365;在Stata intervals(365) ... connect(stairsteps)中
发布于 2012-08-10 01:21:09
我猜您希望将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会很好,并提供更多的洞察力。

发布于 2012-08-10 15:07:32
万岁,我现在应该可以发布这些图片了:
1)这是R基本生存图目前的样子

2)这是它应该是什么样子(SPSS示例)

发布于 2012-08-10 21:11:01
这正是我错过的!谢谢!

解决方案:
vas.surv <- survfit(Surv(ceiling(TIME/365), STATUS)~1, conf.type="none", data=vasectomy)
plot(vas.surv, ylim=c(0.975,1), mark.time=F, xlab="Years", ylab="Cumulative Survival")一个不错的做法是在x轴上显示日期,而不是在SPSS中显示年份(如在SPSS中),但我对此并不太在意。
https://stackoverflow.com/questions/11884191
复制相似问题