如何呈现包含时变协变量的生存数据并在 R 中拟合模型
How to present survival data that includes time-varying covariates and fit the model in R
我想使用名为 timereg
的 R 包中的 aalen()
函数执行包括时变协变量的生存分析。但是,我仍然对数据应该如何在数据框中呈现以及模型公式应该如何指定感到困惑。
这是一个编造的数据集:
subject_idsurvival_time体重身高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
的单位是年,那么感兴趣的事件发生在第7年的受试者1身上。
- 主题 2 和 3 都是右删失案例。
- 属于同一主题的每个跟进都可以按
survival_time
排序。
最后,列出我的问题(即使您没有所有答案,或者我的解决方案是正确的,请不要犹豫发表评论):
- 我对包含时变协变量的生存数据的表述是否正确?
- 如果第一个问题的答案是"no",那么能否请您指出问题所在并提供一些解释?
- 假设数据集没问题,那么如何指定模型公式并拟合
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
的顺序来看,这些是协变量发生变化的队列时间。您需要一个滞后事件时间来指示观察的 "start",对于第一个患者记录设置为 0。您格式化数据的方式现在已对分母时间求平方,降低了发生率,并将风险比衰减至零。
以第一个参与者为例:他们实际上是从 0 到 7 观察到的。第一个记录是 0 到 3,下一个:3 到 4,最后一个 4 到 7。你在哪里明确告诉 R 这个? R 不知道这些记录属于同一个人。 R 现在认为有 3 人被跟踪,累计 3 + 4 + 7 = 14 年发生 1 次事件,而不是 7 年发生 1 次事件(发生率从 14 ppy 到 7 ppy)。
我想使用名为 timereg
的 R 包中的 aalen()
函数执行包括时变协变量的生存分析。但是,我仍然对数据应该如何在数据框中呈现以及模型公式应该如何指定感到困惑。
这是一个编造的数据集:
subject_idsurvival_time体重身高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
的单位是年,那么感兴趣的事件发生在第7年的受试者1身上。 - 主题 2 和 3 都是右删失案例。
- 属于同一主题的每个跟进都可以按
survival_time
排序。
最后,列出我的问题(即使您没有所有答案,或者我的解决方案是正确的,请不要犹豫发表评论):
- 我对包含时变协变量的生存数据的表述是否正确?
- 如果第一个问题的答案是"no",那么能否请您指出问题所在并提供一些解释?
- 假设数据集没问题,那么如何指定模型公式并拟合
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
的顺序来看,这些是协变量发生变化的队列时间。您需要一个滞后事件时间来指示观察的 "start",对于第一个患者记录设置为 0。您格式化数据的方式现在已对分母时间求平方,降低了发生率,并将风险比衰减至零。
以第一个参与者为例:他们实际上是从 0 到 7 观察到的。第一个记录是 0 到 3,下一个:3 到 4,最后一个 4 到 7。你在哪里明确告诉 R 这个? R 不知道这些记录属于同一个人。 R 现在认为有 3 人被跟踪,累计 3 + 4 + 7 = 14 年发生 1 次事件,而不是 7 年发生 1 次事件(发生率从 14 ppy 到 7 ppy)。