双因素方差分析的同方差检验

时间:2010-05-29 00:24:16

标签: r testing variance anova

我一直在使用var.testbartlett.test检查基本的方差分析假设,其中包括同质性(同质性,方差均等)。对于单向方差分析,程序非常简单:

bartlett.test(x ~ g)  # where x is numeric, and g is a factor
var.test(x ~ g)

但是,对于2x2表,即双向ANOVA,我想做这样的事情:

bartlett.test(x ~ c(g1, g2))  # or with list; see latter:
var.test(x ~ list(g1, g2))

当然,可以使用图形化程序检查ANOVA假设,但是“算术选项”呢?这根本就是可管理的吗?你如何在双因素方差分析中测试同源性?

3 个答案:

答案 0 :(得分:18)

假设检验是用来评估模型假设有效性的错误工具。如果样本量很小,即使方差差异很大,也无法检测到任何方差。如果你有一个很大的样本量,你有能力检测到相等方差的最微不足的偏差,所以你几乎总是拒绝空值。模拟研究表明,模型假设的初步测试会导致不可靠的I类错误。

查看所有单元格中的残差是一个很好的指标,或者如果您的数据是正常的,您可以使用AIC或BIC,有/无差异作为选择程序。

如果您认为存在不等的差异,请使用以下内容删除假设:

library(car)
model.lm <- lm(formula=x ~ g1 + g2 + g1*g2,data=dat,na.action=na.omit)
Anova(model.lm,type='II',white.adjust='hc3')

使用稳健的方法(hetrososastic while一致协方差矩阵)不会失去太多的力量,所以如果有疑问则会变得强大。

答案 1 :(得分:7)

您可以使用Fligner–Killeen test方差同质性来检验异方差性。假设您的模型类似于

model<-aov(gain~diet*supplement)

fligner.test(gain~diet*supplement)

        Fligner-Killeen test of homogeneity of variances

data:  gain by diet by supplement 
Fligner-Killeen:med chi-squared = 2.0236, df = 2, p-value = 0.3636

你本可以使用bartlett.test(但这更像是对非正态性的测试,而不是方差相等)

bartlett.test(gain~diet*supplement)
        Bartlett test of homogeneity of variances

data:  gain by diet by supplement 
Bartlett's K-squared = 2.2513, df = 2, p-value = 0.3244

此外,您可以在单向和双向ANOVA中执行Levene test的相等组差异。 Levene测试的实现可以在包car(已修复链接),s20xlawstat

中找到
levene.test(gain~diet*supplement)  # car package version

Levene's Test for Homogeneity of Variance
      Df F value Pr(>F)
group 11  1.1034 0.3866
      36 

答案 2 :(得分:5)

bartlett.test

bartlett.test(split(x,list(g1,g2)))

var.test不适用,因为只有在有两个小组时才有效。