【发布时间】:2014-03-15 10:42:44
【问题描述】:
我正在尝试使用 R 生存包,生成 log(-log(survival)) 对 log(time) 的图
(有时建议将此作为目视检查加速寿命或成比例危险特性的方法)。
plot.survfit 中的“fun=cloglog”选项没有产生我期望的结果。
使用“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 的文档让我觉得我会得到log(-log(survival)) 与log(time) 的图:
有趣
定义生存曲线变换的任意函数。例如乐趣=日志 是绘制对数生存曲线的另一种方法(但轴标记为 log(S) 值),并且 fun=sqrt 将生成平方根刻度的曲线。四个常用的 可以使用字符参数指定转换:“log”与 使用 log=T 选项,"event" 绘制累积事件 (f(y) = 1-y),"cumhaz" 绘制 累积风险函数 (f(y) = -log(y)),并且“cloglog”创建一个互补的 log-log 生存图(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" 的参数是应用于垂直变量的函数?
【问题讨论】:
-
当我运行上面的代码时,我得到“错误:找不到对象'cloglog'”。当您运行它时,您的内存中一定有一个名为 cloglog 的对象。
-
谢谢。事实上,我已经加载了具有“cloglog”对象的 VGAM 包。
-
也感谢 embert 为我添加图片。
标签: r survival-analysis