gpt4 book ai didi

r - 与方差分析一起替代r

转载 作者:行者123 更新时间:2023-12-04 09:32:10 27 4
gpt4 key购买 nike

我试图在不同的数据集上运行方差分析,但我并不知道该怎么做。我进行了搜索,发现这很有用:https://stats.idre.ucla.edu/r/codefragments/looping_strings/

hsb2 <- read.csv("https://stats.idre.ucla.edu/stat/data/hsb2.csv")
names(hsb2)
varlist <- names(hsb2)[8:11]
models <- lapply(varlist, function(x) {
lm(substitute(read ~ i, list(i = as.name(x))), data = hsb2)
})

我对上述代码的理解是创建一个函数lm()并将其应用于varlist中的每个变量,并对每个变量进行线性回归。

因此,我认为使用aov而不是lm可以像这样对我有效:
aov(substitute(read ~ i, list(i = as.name(x))), data = hsb2)

但是,我得到了这个错误:
Error in terms.default(formula, "Error", data = data) : 
no terms component nor attribute

我不知道错误是从哪里来的。请帮忙!

最佳答案

问题在于substitute()返回的是表达式,而不是公式。我认为@thelatemail的建议

lm(as.formula(paste("read ~",x)), data = hsb2)

是一个很好的解决方法。或者,您可以评估表达式以使用以下公式
models <- lapply(varlist, function(x) {
aov(eval(substitute(read ~ i, list(i = as.name(x)))), data = hsb2)
})

我想这取决于您以后要对模型列表执行的操作。正在做
models <- lapply(varlist, function(x) {
eval(bquote(aov(read ~ .(as.name(x)), data = hsb2)))
})

为每个结果提供一个“更干净”的 call属性。

关于r - 与方差分析一起替代r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987367/

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