在 Cox 回归模型中映射或循环不同的变量
Map or loop different variables in a Cox regression model
我正在寻找 运行 几个保持生存函数相同并放置不同预测变量的 cox 回归模型,我想将每个模型保存在一个列表中。此外,我想从列表中的每个模型中获得整洁的输出。
下面是一个有两个预测变量的例子,但实际数据框有超过 20 个预测变量。
# data frame with first 2 columns specifying time to event and event and rest as predictor variables
df <- some_data_frame
#Cox Models
cox_var1 <- coxph(Surv(time,event) ~ var1, data = df]
cox_var2 <- coxph(Surv(time,event) ~ var2, data = df]
#Tidy output of cox models
cox_summary_var1 <- broom:tidy(cox_var1, exponentiate = TRUE)
cox_summary_var2 <- broom:tidy(cox_var2, exponentiate = TRUE)
我是 purr::map()
的新手。我如何创建一个包含所有模型的列表,然后创建一个包含模型所有整洁输出的第二个列表?
您可以遍历预测变量的名称并使用 reformulate
即时创建公式。
library(survival)
library(purrr)
#Replace 2 with number of var you have
cox_model_list <- map(paste0('var', 1:2),
~coxph(reformulate(.x, "Surv(time,event)"), data = df))
tidy_output_list <- map(cox_model_list, broom::tidy, exponentiate = TRUE)
如果不需要 cox_model_list
,可以将 broom
输出和 coxph
合并到同一个 map
中。您也可以在这里使用 lapply
代替 map
.
我正在寻找 运行 几个保持生存函数相同并放置不同预测变量的 cox 回归模型,我想将每个模型保存在一个列表中。此外,我想从列表中的每个模型中获得整洁的输出。
下面是一个有两个预测变量的例子,但实际数据框有超过 20 个预测变量。
# data frame with first 2 columns specifying time to event and event and rest as predictor variables
df <- some_data_frame
#Cox Models
cox_var1 <- coxph(Surv(time,event) ~ var1, data = df]
cox_var2 <- coxph(Surv(time,event) ~ var2, data = df]
#Tidy output of cox models
cox_summary_var1 <- broom:tidy(cox_var1, exponentiate = TRUE)
cox_summary_var2 <- broom:tidy(cox_var2, exponentiate = TRUE)
我是 purr::map()
的新手。我如何创建一个包含所有模型的列表,然后创建一个包含模型所有整洁输出的第二个列表?
您可以遍历预测变量的名称并使用 reformulate
即时创建公式。
library(survival)
library(purrr)
#Replace 2 with number of var you have
cox_model_list <- map(paste0('var', 1:2),
~coxph(reformulate(.x, "Surv(time,event)"), data = df))
tidy_output_list <- map(cox_model_list, broom::tidy, exponentiate = TRUE)
如果不需要 cox_model_list
,可以将 broom
输出和 coxph
合并到同一个 map
中。您也可以在这里使用 lapply
代替 map
.