Одномерный логистический регрессионный анализ с glm на нескольких предикторах - PullRequest
0 голосов
/ 20 марта 2019

Итак, я пытаюсь унифицировать анализ логистической регрессии на некоторых данных, которые у меня есть.

В основном у меня есть фрейм данных с 1 переменной ответа и 50 предикторами.

Для анализа япросто используйте функцию glm как:

glm(response_var~predictor_var1, data = mydata, family = binomial(link=logit))

Однако я не хочу делать это вручную для всех 50 предикторов, и это не похоже на циклическую работу.Я пытался сказать что-то вроде этого:

predictors <- colnames(mydata)[-c(1)]

glm_list <- list()
i <- 1
for (predictor in predictors) {
    model <- glm(response_var~predictor, data = mydata, family = binomial(link=logit))
    glm_list[[i]] <- model
    i <- i + 1
}

Итак, я просто создаю список с именами предикторов в фрейме данных через colnames.

Но при этомЯ просто получаю сообщение об ошибке:

variable lengths differ (found for 'predictors')

Что я здесь не так делаю?

1 Ответ

1 голос
/ 20 марта 2019

Попробуйте с lapply и as.formula ():

"%+%" <- function(x,y) paste(x, y, sep = "")

lapply(predictors, function(x){
  glm(as.formula("response_var ~ " %+% x), data = mydata, family = binomial(link = logit))
})

Вы передаете символьный вектор, и сначала вы должны привести его к формуле.

Надеюсь, это поможет.

...