4

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

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

但是,为了得到正确的答案,我需要将TIME变量划分为 365 天的间隔,我无法完全弄清楚如何做到这一点,以便它与给定的结果相匹配。

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

有任何想法吗?

PS:在 SPSS 这将是INTERVAL = THRU 10000 BY 365;在Stataintervals(365) ... connect(stairsteps)

4

3 回答 3

1

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

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

在此处输入图像描述


我想我更好地理解了你的问题。你得到一条粗黑线的原因是因为你有很多审查,并且+在有审查的每个点上都绘制了 a,你可以用 关闭它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-09T17:21:09.033 回答
0

万岁,我现在应该可以发布图片了:

1)这就是 R 基本生存图目前的样子 在此处输入图像描述

2)这就是它的样子(SPSS示例) 在此处输入图像描述

于 2012-08-10T07:07:32.133 回答
0

这正是我所缺少的!谢谢!

在此处输入图像描述

解决方案:

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 中)示例,但我对此并不太在意。

于 2012-08-10T13:11:00.843 回答