微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。