将列表作为参数传递给 MASS 包中 stepAIC 函数的方向参数

Passing a list as a parameter for the direction argument of the stepAIC function in the MASS package

我想基于不同的变量选择方法构建三个逻辑回归模型:一个反向选择模型、一个正向选择模型和一个逐步选择模型。

我使用 base R glm() 设置回归模型,使用 MASS 包中的 stepAIC() 进行模型选择。 stepAIC() 有一个方向参数,可以设置为 'backward'(向后选择)、'forward'(向前选择)或 'both'(逐步选择)。

我试图将不同变量选择方法的列表('backward'、'forward'、'both')传递给方向参数,但我收到一条错误消息。

我已经检查过 https://www.rdocumentation.org/packages/MASS/versions/7.3-51.4/topics/stepAIC 但我 none 更聪明。

# 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

我本来期望三种不同模型的输出,但我收到一条错误消息: match.arg(方向) 错误:'arg' 必须为 NULL 或字符向量。

我哪里错了?感谢您的帮助!

您在函数中引用了 my_model_types,而不是函数参数 direction。此外,您还有第二个函数参数 model,它没有传递给函数,也没有被使用。

这是对您的代码的更正

# 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)