0

I'd like to build three logistic regression models based on different methods for variable selection: a model with backward selection, a model with forward selection, and a model with stepwise selection.

I'm using base R glm() for setting up the regression model and stepAIC() from the MASS package for model selection. stepAIC() has a direction argument that can be set to 'backward' (backward selection), 'forward' (forward selection), or 'both' (stepwise selection).

I'm trying to pass a list of the different variable selection methods ('backward', 'forward', 'both') to the direction argument, but I get an error message.

I've checked out https://www.rdocumentation.org/packages/MASS/versions/7.3-51.4/topics/stepAIC but am none the wiser.

# Loading toy dataset 
mtcars

# Loading packages
library(dplyr)
library(MASS)

# The list of variable selection methods 
my_model_types = list(c("both","backward","forward"))

# Model building function  
my_modelling_function = function(direction, model) {  


model = glm(am ~ mpg + disp + hp + drat + wt + qsec, data = mtcars,     
family = binomial) %>%
  stepAIC(trace = FALSE, direction = my_model_types)  

}


# Building models using different variable selection methods   
lapply(my_model_types, my_modelling_function)

# Error message 
Error in match.arg(direction) : 'arg' must be NULL or a character vector

I'd have expected the output for three different models, but instead I get an error message: Error in match.arg(direction) : 'arg' must be NULL or a character vector.

Where am I going wrong? Thanks for any help!

Robbie
  • 275
  • 4
  • 20

1 Answers1

0

You referenced my_model_types within your function, instead of the function parameter direction. Additionally you have a second function parameter model that is not passed to the function, and not used.

Here is a correction of your code

# Loading toy dataset 
mtcars

# Loading packages
library(dplyr)
library(MASS)

# The list of variable selection methods 
my_model_types = list("both","backward","forward")

# Model building function  
my_modelling_function = function(direction) {  


  glm(am ~ mpg + disp + hp + drat + wt + qsec, data = mtcars,     
              family = binomial) %>%
    stepAIC(trace = FALSE, direction = direction)  

}


# Building models using different variable selection methods   
lapply(my_model_types, my_modelling_function)
Wietze314
  • 5,942
  • 2
  • 21
  • 40