我是stackoverflow的新手,这是我的第一个问题:)我想知道是否有一个类似于“geom_smooth”的函数,但是使用“ggsurvplot”生成的图。下面是我想做的一个例子,使用R“ovarian”数据集:
创建一个“生存对象”:
library(survival)
surv_object <- Surv(time = ovarian$futime, event = ovarian$fustat)
从先前拟合的模型创建“生存曲线”:
fit1 <- survfit(surv_object ~ rx, data = ovarian)
绘制“survfit”对象:
library(survminer)
ggsurvplot(fit1, data = ovarian, pval = TRUE)
多谢了,瓦莱里安
3条答案
按热度按时间pbgvytdp1#
一种“绘制点之间对角线的简单方法”可以很容易地从我们感兴趣的
"survfit"
对象中提取出来,time
,surv
和地层。两个层具有相同的长度,因此我们只需重复每个层的层idlength(fit1$surv) / 2
。然后,我们可以分别绘制每个层的估计值。
或者使用
ggplot2
,类似这样:注意,这只是编程问题的范围,可能需要一些关于平滑假设的讨论,例如在Cross Validated上。
vpfxa7rd2#
你不想平滑你的数据,而是绘制曲线而不是直线。
该方法的全部功劳归于@Z.Lin(https://stackoverflow.com/a/54900769/9406040)。还要感谢@jay.sf从survfit对象中提取数据。
数据
Plot
与平滑的对比
vsnjm48y3#
**更新:**好的答案可能是here,用ggplot here绘图。
原件:我知道这个帖子有点老了,但我刚刚遇到了同样的问题,因为我正在处理基于注册表的公共卫生数据,不允许公布敏感数据。逐步生存图被认为是这样的,所以我不得不想办法绘制一条平滑的生存曲线。
下面是我对优秀的
ggsurvfit
包的建议。作为平滑函数,我使用来自
ggplot2::geom_smooth()
函数的标准平滑函数来处理大型数据集,因为这可以提供更好的外观(这也是我使用ggsurvfit::df_colon
数据集的原因)。我本来很想分享由此产生的情节,但我的名声不允许我分享图片。想办法
创建于2023-09-15使用reprex v2.0.2