0

我需要一些帮助来在 R 中执行 N-way ANOVA 以捕获不同因素之间的相互依赖关系。在我的数据中,大约有 100 个不同的因素,我正在使用以下代码执行 ANOVA。

model.lm<-lm(y~., data=data)
anova(model.lm)

据我所知(可能我错了),这仅在每个因素上执行单向方差分析。由于某些原因,我需要在所有 100 个组之间执行 N 路 ANOVA,即从 x1 到 x100。我是否需要像下面这样指定每个因素,或者有一个速记符号?

model.lm<-lm(y~x1*x2*x3....,x100, data=data)
anova(model.lm)
4

1 回答 1

4

您可以使用update.formula~(.)^n符号。

例如,对于一个模型,包括来自 4 个变量abc的3 向交互d

update(~a+b+c+d, ~(.)^3)


## ~a + b + c + d + a:b + a:c + a:d + b:c + b:d + c:d + a:b:c + a:b:d + a:c:d + b:c:d

因此,对于您想要适合 100 向交互的示例,我建议您考虑一个更合适的模型(特别是如果您需要在这里考虑)。

如果您决定继续使用基本的 ANOVA 方法,您可以执行类似的操作(并等待 R 由于您的大数据/不适当的模型而出现内存问题而崩溃。)

xvars <- paste0('x',1:100)
oneway <- reformulate(termlabels=  xvars, response = 'y')


horribleformula <- update(oneway, . ~ (.)^100)

horriblemodel <- lm(horribleformula, data=data)

或者(感谢@Dason 接受这个)

 stillhorrible <- lm(y ~ .^100, data = data)
于 2012-11-26T01:07:24.050 回答