如何解决使用Tidyr运行多个Cox-PH模型
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 举报,一经查实,本站将立刻删除。