【问题标题】:R survival package; plotting log(-log(survival)) against log(time)R生存包;针对日志(时间)绘制日志(-log(生存))
【发布时间】: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


【解决方案1】:

在 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")

【讨论】:

  • 哦!这是令人尴尬的简单:) 谢谢。事实上,我已经加载了 VGAM 包,它有一个函数 cloglog。
猜你喜欢
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
相关资源
最近更新 更多