R中的N-way方差分析
我需要一些帮助,在R中执行N-way ANOVA,以捕获不同因素之间的相互依赖性。在我的数据中,大约有100个不同的因素,我使用下面的代码进行方差分析R中的N-way方差分析,r,statistics,anova,R,Statistics,Anova,我需要一些帮助,在R中执行N-way ANOVA,以捕获不同因素之间的相互依赖性。在我的数据中,大约有100个不同的因素,我使用下面的代码进行方差分析 model.lm<-lm(y~., data=data) anova(model.lm) model.lm您可以使用update.formula和~(.n符号 例如,对于包含4个变量的3向交互作用的模型,a,b,c和d update(~a+b+c+d, ~(.)^3) ## ~a + b + c + d + a:b + a:c + a
model.lm<-lm(y~., data=data)
anova(model.lm)
model.lm您可以使用update.formula
和~(.n
符号
例如,对于包含4个变量的3向交互作用的模型,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路交互的示例,我建议您考虑一个更合适的模型(特别是如果您在这里考虑的是时间的话)
如果您决定继续使用基本的方差分析方法,您可以这样做(并等待R因大数据/不合适的模型而出现内存问题而崩溃)
xvars您可以使用update.formula
和~(.n
符号
例如,对于包含4个变量的3向交互作用的模型,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路交互的示例,我建议您考虑一个更合适的模型(特别是如果您在这里考虑的是时间的话)
如果您决定继续使用基本的方差分析方法,您可以这样做(并等待R因大数据/不合适的模型而出现内存问题而崩溃)
xvars你需要澄清你所说的n-way
ANOVA是什么意思。lm(y~。
fill将所有因素作为主效应进行拟合,没有交互作用,而不是像你的措辞所暗示的那样作为单个模型。你想拟合100个因素之间的所有交互作用吗(我真的希望答案是否定的。)我认为你是错的,从我对你的问题的理解来看,y~。
应该是你所追求的。@Tylerlinker不是真的吗?这种符号不考虑交互——这就是mnel的评论所问的。(我也希望他们不想适应所有的双向、三向、100向交互……)@Shahzad你有多少数据?你意识到你基本上是在用2^100个参数拟合一个模型。如果你没有至少2^100+1个数据点,那么你是在拟合一个非常饱和的模型……如果你真的需要用那么多参数拟合一个模型,并且有足够的数据来拟合这个模型,那么你就必须使用special函数用于实际进行拟合,因为您无法分配足够的内存来保存内存中的大量数据,从而使lm
工作。此外,拟合该模型时还存在一些有问题的假设……您需要澄清您所说的n向
ANOVA的含义。lm(y~。
fill将所有因素作为主效应进行拟合,没有交互作用,而不是像你的措辞所暗示的那样作为单个模型。你想拟合100个因素之间的所有交互作用吗(我真的希望答案是否定的。)我认为你是错的,从我对你的问题的理解来看,y~。
应该是你所追求的。@Tylerlinker不是真的吗?这种符号不考虑交互——这就是mnel的评论所问的。(我也希望他们不想适应所有的双向、三向、100向交互……)@Shahzad你有多少数据?你意识到你基本上是在用2^100个参数拟合一个模型。如果你没有至少2^100+1个数据点,那么你是在拟合一个非常饱和的模型……如果你真的需要用那么多参数拟合一个模型,并且有足够的数据来拟合这个模型,那么你就必须使用special函数用于实际进行拟合,因为您无法分配足够的内存来保存大量数据,以使lm
工作。此外,拟合该模型时还存在一些有问题的假设……是否需要调用更新?lm(y~。^100,data=data)不是吗
也能工作吗?谢谢mnel。我会在数据上试试这个,让我们看看它有多可怕;)。谢谢。@Dason,这要简单得多。但是我觉得与这个模型相关联有点脏。需要调用更新吗?lm(y~。^100,data=data)不会吗
也能工作吗?谢谢mnel。我将在数据上尝试这个方法,让我们看看它有多可怕;)。谢谢。@Dason,这要简单得多。不过,我觉得与这个模型相关联有点脏。
xvars <- paste0('x',1:100)
oneway <- reformulate(termlabels= xvars, response = 'y')
horribleformula <- update(oneway, . ~ (.)^100)
horriblemodel <- lm(horribleformula, data=data)
stillhorrible <- lm(y ~ .^100, data = data)