我需要一些帮助来在R中执行N路ANOVA以捕获不同因素之间的相互依赖性。在我的数据中,有大约100种不同的因素,我使用以下代码来执行ANOVA。
model.lm<-lm(y~., data=data)
anova(model.lm)
据我所知(可能是我错了),这仅对每个因素进行单向ANOVA。由于某些原因,我需要在所有100个组之间执行N路方差分析,即从x1到x100。我是否需要像下面这样指定每个因素,或者有一个简写符号?
model.lm<-lm(y~x1*x2*x3....,x100, data=data)
anova(model.lm)
答案 0 :(得分:4)
您可以使用update.formula
和~(.)^n
表示法。
例如,对于包含4个变量a
,b
,c
和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)