使用Tidyr运行多个Cox-PH模型

问题描述

我有一个Surv包中的常规survival对象;

s <- Surv(sample(100:150,5),sample(c(T,F),5,replace = T))

以及多个变量的矩阵;

df <- data.frame(var1 = rnorm(5),var2 = rnorm(5),var3 = rnorm(5))

我需要为每个变量分别拟合一个Cox-PH模型。我的代码当前使用如下循环:

for (v in colnames(df)) {
    coxph(s ~ df[[v]])
}

当然,实际上有成千上万个变量,此过程需要一点时间。我想跟随the answer given here尝试使用tidyr来完成所有操作,但是我有点困惑,因为预测和因素不是生存因素,而是生存对象,所以我不太了解如何处理它作为小标题的一部分。

解决方法

假设对生存模型的响应为s,则可以使用与链接到的答案相似的嵌套数据框,然后将模型映射到不同的变量:

图书馆(tidyverse)

df_nested <- df %>% pivot_longer(cols = var1:var3) %>% group_by(name) %>% nest()


surv_model <- function(df) {
  coxph(s ~ df$value)
}

df_nested <- df_nested %>% mutate(model = map(data,surv_model))

df_nested
# A tibble: 3 x 3
# Groups:   name [3]
  name  data             model  
  <chr> <list>           <list> 
1 var1  <tibble [5 x 1]> <coxph>
2 var2  <tibble [5 x 1]> <coxph>
3 var3  <tibble [5 x 1]> <coxph>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...