Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的N-way方差分析_R_Statistics_Anova - Fatal编程技术网

R中的N-way方差分析

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

我需要一些帮助,在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: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)