11

我正在尝试使用 R 生存包来生成一个log(-log(survival))针对 log(time)的图

(有时建议将其作为目视检查加速寿命或成比例的危险特性的一种方法)。

中的“ fun=cloglog”选项plot.survfit没有产生我期望的结果。

使用“MASS”库中的“gehan”数据:

首先,对于治疗组和对照组,这是一个简单的生存时间图:

 data(gehan, package="MASS")
 gehansurv=Surv(gehan$time, gehan$cens)
 plot(survfit(gehansurv ~ gehan$treat), col=c("black", "red"))

在此处输入图像描述

到目前为止还可以。现在,如果我使用该fun=cloglog选项, plot.survfit 的文档让我认为我会得到一个 plot 的log(-log(survival))反对log(time)

乐趣

定义生存曲线变换的任意函数。例如 fun=log 是绘制对数生存曲线的另一种方法(但轴标有 log(S) 值),而 fun=sqrt 将生成平方根刻度曲线。可以使用字符参数指定四种常用的转换:“log”与使用 log=T 选项相同,“event”绘制累积事件 (f(y) = 1-y),“cumhaz”绘制累积事件危险函数 (f(y) = -log(y)),“cloglog”创建一个互补的对数生存图 (f(y) = log(-log(y)) 以及 x 轴的对数刻度)。

但是,当我尝试这个时,它似乎并没有使用该log(-log(y))函数,因为显示的曲线仍在减少(由于原始生存曲线是减少的,并且应用的f(y)=log(-log(y))函数是减少函数,因此结果log(-log(survival))曲线应该是增加的)。

此外,x 轴不是对数缩放的:

library(VGAM)
 plot(survfit(gehansurv ~ gehan$treat), col=c("black", "red"), fun=cloglog)

在此处输入图像描述

我可以通过定义自己的log(-log())函数并使用以下log="x"选项来获得我想要的东西:

> myfun=function(p){return(log(-log(p)))}
> plot(survfit(gehansurv ~ gehan$treat), col=c("black", "red"), fun=myfun, log="x")

在此处输入图像描述

那么:我在上面做错了什么(或者我如何误解了plot.survfit文档)?

补充问题:一个"fun="选项将如何改变水平轴上的比例,正如文档所声称的"fun=cloglog"那样,当从表面上看,参数"fun"是一个应用于垂直变量的函数?

4

1 回答 1

12

在 plot.survfit 的 cloglog 周围加上引号。

library(survival)
library(MASS)
data(gehan)
gehansurv=Surv(gehan$time, gehan$cens)
plot(survfit(gehansurv ~ gehan$treat), col=c("black", "red"), fun="cloglog")

在此处输入图像描述

于 2014-03-15T11:53:15.007 回答