当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R Surv 创建一个生存对象


R语言 Surv 位于 survival 包(package)。

说明

创建一个生存对象,通常用作模型公式中的响应变量。参数匹配对于此函数来说是特殊的,请参阅下面的详细信息。

用法

Surv(time, time2, event,
    type=c('right', 'left', 'interval', 'counting', 'interval2', 'mstate'),
    origin=0)
is.Surv(x)

参数

time

对于右删失数据,这是后续时间。对于间隔数据,第一个参数是间隔的开始时间。

event

状态指示器,通常0=活着,1=死。其他选择是TRUE /FALSE(TRUE=死亡)或1/2(2=死亡)。对于区间删失数据,状态指示器为 0=右删失,1=time 处的事件,2=左删失,3=区间删失。对于多端点数据,事件变量将是一个因子,其第一级被视为审查。尽管不常见,但事件指示符可以省略,在这种情况下,假定所有受试者都发生了事件。

time2

仅用于间隔删失或计数过程数据的间隔结束时间。假定间隔在左侧开放,在右侧封闭,(start, end] 。对于计数过程数据,event 指示在时间间隔结束时是否发生事件。

type

指定审查类型的字符串。可能的值为 "right""left""counting""interval""interval2""mstate"

origin

用于计算过程数据的危险函数原点。此选项旨在与包含时间相关层的模型结合使用,以便在受试者从一个层跨越到另一个层时正确对齐受试者,但它很少被证明有用。

x

任何 R 对象。

细节

type 参数缺失时,代码将采用基于以下规则的类型:

  • 如果有两个未命名参数,它们将按顺序匹配 timeevent。如果存在三个未命名参数,则它们匹配 timetime2event

  • 如果事件变量是一个因子,则假定类型为mstate。否则,如果没有 time2 参数,则键入 right;如果有,则键入 counting

因此,type 参数通常会被省略。

当生存类型为"mstate"时,状态变量将被视为一个因子。该因子的第一级用于表示审查,其余级表示到给定状态的过渡。 (如果状态变量是一个因子,则假定为mstate。)

区间删失数据可以用两种方式表示。第一次使用 type = "interval" 和上面显示的代码。在该用法中,除非 event=3,否则 time2 参数的值将被忽略。第二种方法是将每个观察视为一个时间间隔,其中(-无穷大,t2)表示左删失,(t1,无穷大)表示右删失,(t,t)表示精确,(t1,t2)表示间隔。这是用于 type = Interval2 的方法。无限值可以用实际无穷大 (Inf) 或 NA 表示。事实证明,第二种形式更有用。

目前,唯一允许区间删失数据的方法是由 survreg 计算的参数模型和由 survfit 计算的生存曲线;对于这两种情况,开区间和闭区间之间的区别并不重要。这种区别对于计算过程数据和 Cox 模型很重要。

该函数尝试通过条件 if (max(status)==2) 区分对审查数据使用 0/1 和 1/2 编码。如果使用1/2编码并且对所有受试者进行审查,它就会猜测错误。在任何有问题的情况下,使用逻辑编码会更安全,例如,Surv(time, status==3) 表示 '3' 是事件的代码。对于多状态生存,状态变量将是一个因子,假设其第一级对应于审查。

Surv 对象可以作为向量下标,例如x[1:3] 使用单个下标,在这种情况下,drop 参数将被忽略,结果将是一个生存对象;或使用两个下标作为矩阵。如果缺少第二个下标并且 drop=F (默认),则下标的结果将是 Surv 对象,例如 x[1:3,,drop=F] ,否则结果将是一个矩阵(或向量),符合默认行为用于下标矩阵。

Surv 的对象。有 printis.na 和下标生存对象的方法。 Surv 对象被实现为具有更多属性的 2 或 3 列矩阵。其中包括多状态对象的状态类型(左审查、右审查、计数过程等)和标签。输入参数的任何属性也保留在 inputAttributes 中。这对于在数据项(例如标签)上附加了更多信息的其他包可能很有用;然而,生存包中的例程都没有使用这些值。

对于 is.Surv ,如果 x 继承自类 "Surv" ,则为逻辑值 TRUE ,否则为 FALSE

注意

使用 1/2 编码表示状态是一个有趣的历史文物。对于打孔卡上包含的数据,IBM 360 Fortran 将空白视为零,这导致 Mayo Clinic 生物统计学部分制定了一项政策,永远不要使用 "0" 作为数据值,因为人们无法将其与缺失值区分开。政策变成了习惯,就像经常发生的那样,在生/死的打孔卡消亡之后,对生/死的 1/2 编码的使用仍然持续了很长一段时间。在编写 Surv 时,许多 Mayo 数据集仍然使用这种过时的约定,例如包中找到的 lung 数据集。

例子

with(aml, Surv(time, status))
survfit(Surv(time, status) ~ ph.ecog, data=lung)
Surv(heart$start, heart$stop, heart$event) 

也可以看看

coxphsurvfitsurvreglung

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Create a Survival Object。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。