gpt4 book ai didi

r - 如何在 R 中创建迭代 lm() 公式

转载 作者:行者123 更新时间:2023-12-04 11:01:48 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Logistic regression: how to try every combination of predictors in R?

(2 个回答)


1年前关闭。




我有一个名为 var.names 的 4 个名称的向量.使用 combn() ,我获得存储在 com.names 中的这 4 个名称的所有唯一组合(例如,每个名称,2、3 和所有 4 个名称的唯一组合)。 .

我该如何制作 lm() com.names 中每一列的公式与 +在超过 1 个名字的那些之间签名?

例如,在 com.names[[1]][,1] , 我们只有一个名字 ( "gear" ) 所以我的公式是 mpg ~ gear .但是,在 com.names[[2]][,1] , 我们有两个名字 ( "gear" "cyl" ) 所以我的公式是 mpg ~ gear + cyl依此类推(总的来说,我们将有 15 个公式)。

ThisThis回答可能有帮助?

var.names <- c("gear", "cyl", "drat", "disp") # from BASE R 'mtcars' dataset

com.names <- lapply(seq_along(var.names), function(i)combn(var.names, i)) # all combinations

# My incomplete attempt:
lapply(com.names, function(x, d) lm(as.formula("mpg ~ ") )), data = mtcars) # ???

最佳答案

你很接近。让我们带上您的 com.names并更新它以创建组合字符串:

# thanks to thelatemail for use of 'combn(..., FUN=)'
com.names <- lapply(seq_along(var.names), function(i) combn(var.names, i, FUN = paste, collapse = " + "))
com.names
# [[1]]
# [1] "gear + cyl + drat + disp"
# [[2]]
# [1] "gear + gear + gear + cyl + cyl + drat" "cyl + drat + disp + drat + disp + disp"
# [[3]]
# [1] "gear + gear + gear + cyl" "cyl + cyl + drat + drat" "drat + disp + disp + disp"
# [[4]]
# [1] "gear" "cyl" "drat" "disp"

现在我们可以直接将它们转换为公式(公式?):

head(lapply(unlist(com.names), function(s) as.formula(paste("mpg ~ ", s))), n=3)
# [[1]]
# mpg ~ gear
# <environment: 0x0000000053e86950>
# [[2]]
# mpg ~ cyl
# <environment: 0x0000000031730970>
# [[3]]
# mpg ~ drat
# <environment: 0x0000000032c38d58>

从那里开始,它只是在 lm 内使用它:

head(lapply(unlist(com.names), function(s) lm(as.formula(paste("mpg ~ ", s)), data=mtcars)), n=2)
# [[1]]
# Call:
# lm(formula = as.formula(paste("mpg ~ ", s)), data = mtcars)
# Coefficients:
# (Intercept) gear
# 5.623 3.923
# [[2]]
# Call:
# lm(formula = as.formula(paste("mpg ~ ", s)), data = mtcars)
# Coefficients:
# (Intercept) cyl
# 37.885 -2.876

关于r - 如何在 R 中创建迭代 lm() 公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com