R 自动变量选择–;回归线性模型

R 自动变量选择–;回归线性模型,r,variables,lm,R,Variables,Lm,在下面的MWE中,我有一个包含70个潜在预测因子的数据集来解释我的变量price1。我想对所有变量进行单变量分析,但是包glmulti说我有太多的预测因子。单变量分析怎么会有太多的预测因子 *我可以通过循环/应用来实现这一点,但我正在寻找更详细的方法。这个类似的问题也不能解决问题 test <- read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/Ecdat/Car.

在下面的MWE中,我有一个包含70个潜在预测因子的数据集来解释我的变量
price1
。我想对所有变量进行单变量分析,但是包
glmulti
说我有太多的预测因子。单变量分析怎么会有太多的预测因子

*我可以通过
循环
/
应用
来实现这一点,但我正在寻找更详细的方法。这个类似的问题也不能解决问题

test <- read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/Ecdat/Car.csv"))
library(glmulti)
glmulti.lm.out <- glmulti(data  = test, price1 ~ .,
                          level = 1,
                          method = "h",
                          maxK = 1,
                          confsetsize = 10,
                          fitfunction = "lm")

Error
Warning message:
In glmulti(y = "price1", data = test, level = 1, maxK = 1, method = "h",  :
  !Too many predictors.

test这个问题更适合交叉验证,但这是我的两分钱。运行详尽的搜索以找到模型中包含的最佳变量,计算量非常大,而且很快就会失控。考虑一下你要计算机做什么:

当你进行穷举搜索时,计算机正在为每一个可能的变量组合建立一个模型。对于一号的型号来说,这并不太糟糕,因为只有70个型号。但即使是双变量模型,计算机也必须运行n/(r!(n-r)!)=70/(2!(68)!)=2415种不同型号。事情从那里开始失控

作为解决方法,我将向您介绍
leaps
包,它具有
regsubsets
功能。然后,您可以运行正向或反向子集选择模型,并以逐步方式查找最重要的变量。运行每一个后,您可能能够丢弃每个中省略的变量,并使用
glmulti
以较少的预测值运行您的模型,但不需要承诺

test.data <-
read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/ma
ster/csv/Ecdat/Car.csv"))[,2:71]
library(leaps)

big_subset_model <- regsubsets(x = price1 ~ ., data = test.data, nbest = 1, 
method = "forward", really.big = TRUE, nvmax = 70)
sum.model <- summary(big_subset_model)

test.data这个问题更适合交叉验证,但这是我的两分钱。运行详尽的搜索以找到模型中包含的最佳变量,计算量非常大,而且很快就会失控。考虑一下你要计算机做什么:

当你进行穷举搜索时,计算机正在为每一个可能的变量组合建立一个模型。对于一号的型号来说,这并不太糟糕,因为只有70个型号。但即使是双变量模型,计算机也必须运行n/(r!(n-r)!)=70/(2!(68)!)=2415种不同型号。事情从那里开始失控

作为解决方法,我将向您介绍
leaps
包,它具有
regsubsets
功能。然后,您可以运行正向或反向子集选择模型,并以逐步方式查找最重要的变量。运行每一个后,您可能能够丢弃每个中省略的变量,并使用
glmulti
以较少的预测值运行您的模型,但不需要承诺

test.data <-
read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/ma
ster/csv/Ecdat/Car.csv"))[,2:71]
library(leaps)

big_subset_model <- regsubsets(x = price1 ~ ., data = test.data, nbest = 1, 
method = "forward", really.big = TRUE, nvmax = 70)
sum.model <- summary(big_subset_model)

test.data使用lappy进行
单变量分析的简单解决方案

test <- read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/Ecdat/Car.csv")) 

reg <- function(indep_var,dep_var,data_source) {
          formula <- as.formula(paste(dep_var," ~ ", indep_var))
          res     <- lm(formula, data = data_source)
          summary(res)
}

lapply(colnames(test), FUN = reg, dep_var = "price1", data_source = test)

test使用lappy进行
单变量分析的简单解决方案

test <- read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/Ecdat/Car.csv")) 

reg <- function(indep_var,dep_var,data_source) {
          formula <- as.formula(paste(dep_var," ~ ", indep_var))
          res     <- lm(formula, data = data_source)
          summary(res)
}

lapply(colnames(test), FUN = reg, dep_var = "price1", data_source = test)
测试