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


R tmerge 基于时间的生存数据合并


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

说明

生存分析中的一项常见任务是创建开始、停止数据集,每个受试者具有多个间隔,以及适用于该间隔的协变量值。此函数有助于创建此类数据集。

用法

tmerge(data1, data2,  id,..., tstart, tstop, options)

参数

data1

主要数据集,将添加新变量和/或观察

data2

将在其中找到所有其他参数的第二个数据集

id

主题标识符

...

添加新变量或间隔的操作,请参见下文

tstart

可选变量,用于定义每个主题的有效时间范围,仅在初始调用时使用

tstop

可选变量,用于定义每个主题的有效时间范围,仅在初始调用时使用

options

选项列表。有效的有 idname、tstartname、tstopname、delay、na.rm 和 tdcstart。请参阅下面的解释。

细节

该程序通常分多遍运行,第一遍定义基本结构,随后的遍定义向该结构添加新变量。有关此例程如何工作的更完整说明,请参阅与时间相关的变量的小插图。

有 4 种类型的操作参数:时间相关协变量 (tdc)、累积计数 (cumtdc)、事件 (event) 或累积事件 (cumevent)。时间相关协变量在事件发生之前改变其值,事件是结果。

  • newname = tdc(y, x, init) 将创建一个新的时间相关协变量。假设参数 y 处于开始和结束时间的范围内,每个实例都说明了当时 "condition" 的出现。第二个参数x 是可选的。如果 x 缺失,则每个受试者的计数变量从 0 开始,并在事件发生时变为 1。如果 x 存在,则时间相关协变量的值将初始化为 init 的值(如果存在),否则初始化为 tdcstart 选项的值,并在每次观察时更新为 x 的值。如果首先删除选项 na.rm=TRUEx 缺失值,即更新不会创建缺失值。

    newname = cumtdc(y,x, init) 与 tdc 类似,不同之处在于每个受试者的事件计数随着时间的推移而累积。变量x 必须是数字。

    newname = event(y,x) 标记时间 y 处的事件。在通常情况下,x 丢失,新的 0/1 变量将类似于生存时间的 0/1 状态变量。

    newname = cumevent(y,x) 累积事件。

该函数向输出数据集添加三个新变量: tstarttstopidoptions 参数可用于更改这些名称。如果在第一次调用中,id 参数是一个简单名称,则该变量名称将用作 idname 选项的默认值。如果 data1 包含 tstart 变量,则该变量将用作创建的时间间隔的起点,否则每个 id 的初始间隔默认从 0 开始。如果死亡时间 <= 0,这将导致无效间隔和后续错误。

na.rm 选项影响时间相关协变量的创建。是否应该忽略 data2 中缺少变量值的数据行,还是应该生成值为 NA 的观察值?默认值 TRUE 会导致最后一个非缺失值被结转。 delay 选项会导致时间相关协变量的新值延迟,请参阅插图中的示例。

具有两个额外属性 tm.retaintcount 的 DataFrame 。第一个包含关键变量的名称,以及哪些名称对应于 tdc 或事件变量。 tcount 变量包含匹配类型的计数。在主题的第一个间隔之前出现的新时间值是"early",在主题的最后一个间隔之后出现的新时间值是"late",而落入间隙的时间值的类型是"gap"。所有这些都被认为超出了给定主题的指定时间范围。此类事件将被丢弃。 data2 中的观察值,其标识符与 data1 中的行不匹配,其类型为 "missid",也会被丢弃。与时间相关的协变量值将应用于稍后的间隔,但不会在输出中生成新的时间点。

最常见的类型通常是"within",对应于那些落在现有间隔内并导致其被分成两部分的新时间。恰好落在间隔边但在对象的(分钟,最大)时间内的观察被计为位于 "leading" 边、"trailing" 边或 "boundary" 上。例如,第一个对应于事件对于间隔为 (0,15] 和 (17, 35] 的人来说,在 17 处。在时间 17 处出现 tdc 将影响此间隔,但在 17 处出现 event 将被忽略。在 15 处出现 event 将影响该间隔。在 (0,15] 间隔内计数。最后一种情况是主数据集对某个主题具有接触间隔,例如 (17, 28] 和 (28,35],并且新的事件出现在连接处。事件将继续到较早的间隔并计数到后一个。最后一列显示 id 和时间点相同的添加次数。发生这种情况时,tdcevent 运算符将使用数据中的最终值(最后一次编辑获胜),但忽略缺失,而 cumtdccumevent 运算符将值相加。

这些额外的属性是短暂的,如果数据帧被修改,这些属性将被丢弃。这是故意的,因为如果例如选择了一个子集,它们将变得无效。

例子

# The pbc data set contains baseline data and follow-up status
# for a set of subjects with primary biliary cirrhosis, while the
# pbcseq data set contains repeated laboratory values for those
# subjects.  
# The first data set contains data on 312 subjects in a clinical trial plus
# 106 that agreed to be followed off protocol, the second data set has data
# only on the trial subjects.
temp <- subset(pbc, id <= 312, select=c(id:sex, stage)) # baseline data
pbc2 <- tmerge(temp, temp, id=id, endpt = event(time, status))
pbc2 <- tmerge(pbc2, pbcseq, id=id, ascites = tdc(day, ascites),
               bili = tdc(day, bili), albumin = tdc(day, albumin),
               protime = tdc(day, protime), alk.phos = tdc(day, alk.phos))

fit <- coxph(Surv(tstart, tstop, endpt==2) ~ protime + log(bili), data=pbc2)

作者

Terry Therneau

也可以看看

neardate

相关用法


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