Как проверить все подмножества переменных-предикторов в R - PullRequest
0 голосов
/ 17 января 2020

Я хотел бы программно построить glms в r, аналогично тому, что описано здесь ( Как создавать и тестировать несколько моделей в R ), за исключением тестирования всех возможных подмножеств переменных-предикторов.

Итак, для такого набора данных с переменной результата z:

data <- data.frame("z" = rnorm(20, 15, 3),
                   "a" = rnorm(20, 20, 3),
                   "b" = rnorm(20, 25, 3),
                   "c" = rnorm(20, 5, 1))

есть ли способ автоматизировать построение моделей:

m1 <- glm(z ~ a, data = data)
m2 <- glm(z ~ b, data = data)
m3 <- glm(z ~ c, data = data)
m4 <- glm(z ~ a + b, data = data)
m5 <- glm(z ~ a + c, data = data)
m6 <- glm(z ~ b + c, data = data)
m7 <- glm(Z ~ a + b + c, data = data)

Я знаю dredge функция пакета MuMIn может сделать это, но я получил сообщение об ошибке, сказав, что я включил слишком много переменных, поэтому я ищу способы сделать это независимо от dredge. Я попробовал варианты ответов grid.expand() и combn(), map() и lapply(), которые я нашел в StackOverflow и, похоже, не могу собрать это воедино. В идеале выходные данные модели, включая BI C, должны храниться в сортируемом фрейме данных.

Любая помощь будет принята с благодарностью !!

1 Ответ

1 голос
/ 17 января 2020

Предполагая, что вы приняли к сведению комментарий @Maurits Evers, вы можете достичь того, что вы хотите сделать, с помощью комбинации lapply и combn

cols <- names(data)[-1]
lapply(seq_along(cols), function(x) combn(cols, x, function(y) 
       glm(reformulate(y, "z"), data = data), simplify = FALSE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...