Eisen
Eisen

Reputation: 1897

Simple Logistic Regression in a Loop?

I have a bunch of features for a multivariate logistic regression, but i Want to test each feature individually for multiple univariate logistic regressions.

I'm trying to do a loop like so

features <- c("f1","f2","f3","f4")
out <- list()
for (f in features) {
    mod <- train(form = positive ~ f,
                 data = training,
                 method = "glm",
                 metric = "ROC",
                 family = "binomial")
    out <- append(out,mod)
}

I'm getting an error saying variable lengths differ (found for 'f'). I think it's not recognizing f as the column name? How can I fix this?

Upvotes: 2

Views: 256

Answers (1)

Ahorn
Ahorn

Reputation: 3876

For future reference an answer with a reprex that uses the same solution that was probosed by @Rorschach:

x <- runif(50, min = 0, max = 100) 
z <- runif(50, min = 0, max = 100)
a <- runif(50, min = 0, max = 100)
b <- runif(50, min = 0, max = 100)
positive <- rbinom(50,1, 0.4)

training <- as.data.frame(cbind(x,z,a,b,positive = positive))
training$positive <- factor(training$positive)

library(caret)
features <- c("x","z","a","b")
out <- list()
for (f in features) {
  mod <- train(form = as.formula(paste("positive ~ ", f)),
               data = training,
               method = "glm",
               family = "binomial")

    out <- append(out,mod)
}

Upvotes: 2

Related Questions