0

我想以编程方式在 r 中构建 glms,类似于此处描述的内容(如何在 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()and combn()map()以及lapply()我在 StackOverflow 上找到的各种答案,但似乎无法将其拼凑在一起。理想情况下,包括 BIC 在内的模型输出将存储在可排序的数据框中。

任何帮助将不胜感激!!

4

1 回答 1

1

假设您已经注意到@Maurits Evers 的评论,您可以通过结合lapplycombn

cols <- names(data)[-1]
lapply(seq_along(cols), function(x) combn(cols, x, function(y) 
       glm(reformulate(y, "z"), data = data), simplify = FALSE))
于 2020-01-17T00:04:36.473 回答