我想使用R包timereg
中的aalen()
函数进行包含时间变化协变量的生存分析。然而,我仍然不清楚数据在数据框中应该如何呈现,以及模型公式应该如何指定。
这里是一个虚构的数据集:
subject_id survival_time weight height outcome_indicator
1 3 65 1.8 0
1 4 68 1.8 0
1 7 70 1.8 1
2 2 55 1.6 0
2 9 53 1.6 0
3 2 62 1.7 0
3 3 65 1.7 0
3 5 64 1.7 0
3 6 66 1.7 0
以下是一些解释:
- 有3个研究对象,由
subject_id
变量标识,分别被跟踪了3次、2次和4次。 weight
是一个随时间变化的协变量。height
与时间无关,因此每个对象在每次跟踪时保持不变。- 假设
survival_time
的单位是年,那么对象1在第7年发生了感兴趣的事件。 - 对象2和3都是右截尾的案例。
- 属于同一对象的每次跟踪可以通过
survival_time
排序。
最后,我的几个问题(即使您没有所有答案,或者我的解决方案是正确的,也请不要犹豫留下评论):
- 关于包含时间变化协变量的生存数据的呈现方式,我对吗?
- 如果第一个问题的答案是“不是”,那么请指出问题所在并提供一些解释?
- 假设数据集没问题,那么我如何指定模型公式并拟合
aalen
模型(或任何其他包含时间变化协变量的模型)?是否像这样:
aalen(formula = Survf(survival_time, outcome_indicator) ~ const(height) + weight, data = data_set, id = data_set$subject_id)
其中Survf()
函数用于组合两个与结果相关的变量;const()
用于表示时间不变的协变量,其他的协变量保持原样;data_set
是数据框的名称;id
参数用于将同一对象的不同行关联起来?
回答:
这很可能不是呈现这些数据的正确方式。从survival_time
变量的排序来看,这些是协变量变化的队列时间。你需要一个滞后的时间来指示观察的“开始”,对于第一个患者记录设置为0。你现在的数据格式使得分母时间平方,降低了发病率,并使危险比向无效值衰减。
以第一个参与者为例:他们实际上是从0到7年被观察的。第一条记录是从0到3,接下来是从3到4,最后是从4到7。你在哪里明确告诉R这些信息?R并不知道这些记录属于同一个人。R现在认为有3个人被跟踪了总共3 + 4 + 7 = 14年,有1个事件,而不是7年有1个事件(发病率从每人年14下降到每人年7)。