精算生存分析,分为区间

4

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

不确定为什么这个问题被踩。我认为这不是一个不合理的问题,所以我给它点赞。现在TIME和STATUS变量是如何设置的? - TARehman
什么有帮助的是提供一些可以运行的例子,并告诉我们为什么这个例子不对,以及我们应该做出哪些改变。 - BlueTrin
谁问我是否在BNPP工作?顺便说一下,答案是否定的。 - TARehman
为什么需要将TIME变量分成时间间隔?您是想绘制Kaplan-Meier曲线(有时称为阶梯图)吗?还是要将时间变化的协变量添加到模型中?这会产生很大的差异。 - nograpes
该表格大约包含9,400条事件记录,应该按年份进行分组(根据练习要求)。STATUS变量是简单的0、1变量,用于表示一个人是否进行了某种手术,而TIME变量则表示距离另一次手术的天数。很抱歉,我还不能发布图片。想象一下,在R中,绘制的是厚实的平线,而不是可以在SPSS和STATA输出中看到的宽阔步骤。我认为问题在于表格包含每日事件,步骤太小(TIME从0到6249)。 - Joanne Demmler
3个回答

1
我猜你想将TIME变量分成时间间隔,因为你想绘制Kaplan-Meier曲线。在R中,这并不是必要的,你可以直接在survfit对象上调用plot函数。例如:
s=survfit(Surv(futime, fustat)~rx, data=ovarian)
plot(s)

enter image description here


我想我更好地理解了你的问题。你得到厚厚的黑线的原因是因为你有很多审查,并且在每个审查点都会绘制一个+,你可以使用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曲线时不加入截尾符号会更美观,也能提供更多的见解。

enter image description here


由于我的TIME变量以天为单位,因此使用标准的<survfit>方法时,输出只会得到一条粗黑线。数据需要以年为间隔绘制,否则步骤将不可见。 - Joanne Demmler

0

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

enter image description here

解决方案:

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

这里有相当多的关于在SO上标记带有时间组件的轴的问题。随意浏览。 - Roman Luštrik
这个有点棘手,因为它不仅仅是重新标记轴(例如使用xaxt='n'抑制x轴的绘图,然后使用axis命令重新分配标签),而且刻度线的位置也会改变。 - Joanne Demmler
具体来说,请查看?survival:::plot.survfit以了解更多关于此绘图命令的信息。 - nograpes
1
但是,要重新调整比例,您只需要使用“xscale”参数。因此,如果要将年转换为天,则应按比例缩放xscale=1/365 - nograpes
太棒了!?survival:::plot.survfit 是一个很好的命令要记住! - Joanne Demmler

0

太好了,我现在应该能够发布图片了:

1)这是目前 R 基本生存图的样子 enter image description here

2)这是它应该看起来的样子(SPSS 示例) enter image description here


将图形添加到答案中是一个好主意。然而,您可以编辑您的答案,将图形放在那里,然后删除这个“答案”。 - nograpes
我认为应该将图片添加到原始问题中。 - Roman Luštrik
那个时间点无法添加图片,但下次会添加。 - Joanne Demmler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接