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=TRUE
的x
缺失值,即更新不会创建缺失值。newname = cumtdc(y,x, init) 与 tdc 类似,不同之处在于每个受试者的事件计数随着时间的推移而累积。变量
x
必须是数字。newname = event(y,x) 标记时间 y 处的事件。在通常情况下,
x
丢失,新的 0/1 变量将类似于生存时间的 0/1 状态变量。newname = cumevent(y,x) 累积事件。
该函数向输出数据集添加三个新变量: tstart
、 tstop
和 id
。 options
参数可用于更改这些名称。如果在第一次调用中,id
参数是一个简单名称,则该变量名称将用作 idname
选项的默认值。如果 data1
包含 tstart
变量,则该变量将用作创建的时间间隔的起点,否则每个 id 的初始间隔默认从 0 开始。如果死亡时间 <= 0,这将导致无效间隔和后续错误。
na.rm
选项影响时间相关协变量的创建。是否应该忽略 data2
中缺少变量值的数据行,还是应该生成值为 NA 的观察值?默认值 TRUE 会导致最后一个非缺失值被结转。 delay
选项会导致时间相关协变量的新值延迟,请参阅插图中的示例。
值
具有两个额外属性 tm.retain
和 tcount
的 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 和时间点相同的添加次数。发生这种情况时,tdc
和 event
运算符将使用数据中的最终值(最后一次编辑获胜),但忽略缺失,而 cumtdc
和 cumevent
运算符将值相加。
这些额外的属性是短暂的,如果数据帧被修改,这些属性将被丢弃。这是故意的,因为如果例如选择了一个子集,它们将变得无效。
例子
# 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
也可以看看
相关用法
- R tobin 托宾的托比特数据
- R tcut 人年计算因子
- R transplant 肝移植等候名单
- R hoel 小鼠癌症数据
- R survcondense 缩短 (time1, time2) 生存数据集
- R myeloid 急性粒细胞白血病
- R pseudo 生存的伪值。
- R levels.Surv 返回多状态 Surv 对象的状态
- R rats Mantel 等人的大鼠治疗数据
- R diabetic 糖尿病视网膜病变
- R pbc 梅奥诊所原发性胆汁性胆管炎数据
- R plot.survfit survfit 对象的绘图方法
- R kidney 肾导管数据
- R stanford2 更多斯坦福心脏移植数据
- R print.aareg 打印 aareg 对象
- R pyears 人年
- R residuals.survreg 计算“survreg”对象的残差
- R cgd0 慢性肉芽肿病数据
- R mgus2 单克隆丙种球蛋白病数据
- R model.frame.coxph coxph 对象的 Model.frame 方法
- R brier 计算 Cox 模型的 Brier 分数
- R nsk 以结高度为基础的自然样条。
- R survSplit 在指定时间分割生存数据集
- R mgus 单克隆丙种球蛋白病数据
- R summary.pyears pyears 对象的汇总函数
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Time based merge for survival data。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。