在做ANOVA时,有时候会遇到不满足正态分布,以及方差不齐性(heteroskedastic, heterogeneity of variance)的情况。其中方差不齐性也和不满足正态分布有关,不满足正态分布也和数据本身的特征、样本量有关。对于数据分布,正态分布检验是比较严格的,一般来说也可以结合Q-Q图、P-P图等等,并根据前人文献、理论模型来argue数据是否可以被视为近似正态分布,或者直接在limitation部分进行说明。但是方差不齐性涉及到Levene's Test,这个就不好argue了。
对于方差不齐性的情况,解决方法包括数据转换、改用非参数检验等等。但是有时候数据本身的趋势就偏态的,所以无论怎么转换都难以改变分布形态和组间的方差差异;同时非参数检验也会导致无法检验交互作用、统计检验力降低等问题。
这里说一下直接对ANOVA的估计系数进行异方差校正(heteroscedasticity correction)的方法。
1 Welch's correction
原理是基于每个组的样本量和方差对自由度进行校正,适用于假设组间方差不齐性的单因素方差分析(注:不过,类似于重复测量ANOVA的sphericity correction的报告,推荐还是报告原始的自由度,并在Method部分说明使用的校正方法)。
使用方法是借助R语言中的基础函数oneway.test
,并将参数var.equal
设置为FALSE
。例子如下。其中not assuming equal variances
说明我们采用了假设方差不齐性的检验方法,也就是Welch's Test或者说Welch's ANOVA。
> oneway.test(extra~group, data=sleep, var.equal=F)
One-way analysis of means (not assuming equal variances)
data: extra and group
F = 3.4626, num df = 1.000, denom df = 17.776, p-value = 0.07939
2 White's correction
原理是直接对协方差矩阵的系数进行异方差校正,适用于非重复测量的单因素和多因素方差分析。使用方法是借助car
包的Anova
函数,并将参数white.adjust
设置为TRUE
。
mod <- lm(conformity ~ fcategory*partner.status, data=Moore, contrasts=list(fcategory=contr.sum, partner.status=contr.sum))
Anova(mod, white.adjust=T, type=3)
结果如下。开头的Coefficient covariances computed by hccm()
说明用了hccm
函数计算异方差校正的协方差矩阵。
Coefficient covariances computed by hccm()
Analysis of Deviance Table (Type III tests)
Response: conformity
Df F Pr(>F)
(Intercept) 1 228.3076 < 2.2e-16 ***
fcategory 2 0.9110 0.410497
partner.status 1 9.5073 0.003749 **
fcategory:partner.status 2 2.8294 0.071218 .
Residuals 39
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
References
- Welch, B. L. (1951). On the comparison of several mean values: an alternative approach. Biometrika, 38, 330–336.
- White, H. (1980). A heteroskedastic consistent covariance matrix estimator and a direct test of heteroskedasticity. Econometrica, 48, 817–838.
- Anova函数
- hccm函数
- oneway.test函数
网友评论