如何使用函数在R中运行一堆模型

问题描述 投票:0回答:1
library(survival)
justices <- read.csv("http://data.princeton.edu/pop509/justices2.csv")
PREDS = c("age", "year")
m = coxph(Surv(tenure, event == 1) ~ age + year, data = justices)
summary(m)

exp(coef(m)[1])
exp(confint(m,level=(1-0.05/1))[1,])


DVMOD <- function(PREDS, data){
  t <- coxph(paste0("Surv(tenure, event == 1) ~ "), PREDS + number + name, data = data)
  return((c(PREDS, coef(t)[1], confint(t)[1,])))
}

all_models <- lapply(PREDS,DVMOD, PREDS = PREDS, data=justices)

我希望为PREDS中的每个变量运行单独的Coxph模型,然后将其名称与危险比和置信度一起存储。

r lapply sapply mapply survival
1个回答
0
投票

如果使用as.formula()转换公式字符串,则可以在DVMOD()函数中如下使用它:

DVMOD <- function(PREDS, data){
     theFormula <- paste("Surv(tenure, event == 1) ~ ",PREDS," + number + name")
     t <- coxph(as.formula(theFormula), data = data)
     return((c(PREDS, coef(t)[1], confint(t)[1,])))
}
DVMOD("age",justices)
all_models <- lapply(c("age"),function(x){
     DVMOD(x,justices)
})

由于year的模型未收敛,所以具有2个变量的lapply()失败了,但它与age一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.