编写一个函数来列出所有可能的模型组合
Write a function to list all possible combinations of models
我正在尝试为数据集中的变量编写 运行 所有可能的回归模型的函数。我能够 运行 每个变量,这就是我目前所拥有的。
library(tidyverse)
library(broom)
data("mtcars")
model1 <- function (DATA) {
DATA %>%
map(~lm(mpg ~ .x, data = DATA), tidy)%>% map(summary) %>%
map_dbl("adj.r.squared") %>%
tidy %>%
rename(adj.r.squared = x)
}
model1(mtcars)
我是 R 和编写函数的新手,所以我确信它存在一些问题。我想要所有可能模型的所有调整后的 r 平方值的 tibble。如何编写一个函数来对两个、三个或更多变量执行相同的操作?
我不知道有任何软件包可以自动执行此操作。因此,让我们尝试一种蛮力方法。这个想法是手动生成所有可能的组合并迭代它们。
vars <- names(mtcars)[-1]
models <- list()
for (i in 1:5){
vc <- combn(vars,i)
for (j in 1:ncol(vc)){
model <- as.formula(paste0("mpg ~", paste0(vc[,j], collapse = "+")))
models <- c(models, model)
}
}
您可以将这些公式用于 运行 线性模型。
lapply(models, function(x) lm(x, data = mtcars))
我正在尝试为数据集中的变量编写 运行 所有可能的回归模型的函数。我能够 运行 每个变量,这就是我目前所拥有的。
library(tidyverse)
library(broom)
data("mtcars")
model1 <- function (DATA) {
DATA %>%
map(~lm(mpg ~ .x, data = DATA), tidy)%>% map(summary) %>%
map_dbl("adj.r.squared") %>%
tidy %>%
rename(adj.r.squared = x)
}
model1(mtcars)
我是 R 和编写函数的新手,所以我确信它存在一些问题。我想要所有可能模型的所有调整后的 r 平方值的 tibble。如何编写一个函数来对两个、三个或更多变量执行相同的操作?
我不知道有任何软件包可以自动执行此操作。因此,让我们尝试一种蛮力方法。这个想法是手动生成所有可能的组合并迭代它们。
vars <- names(mtcars)[-1]
models <- list()
for (i in 1:5){
vc <- combn(vars,i)
for (j in 1:ncol(vc)){
model <- as.formula(paste0("mpg ~", paste0(vc[,j], collapse = "+")))
models <- c(models, model)
}
}
您可以将这些公式用于 运行 线性模型。
lapply(models, function(x) lm(x, data = mtcars))