14.9: Removing the Homogeneity of Variance Assumption
In our example, the homogeneity of variance assumption turned out to be a pretty safe one: the Levene test came back non-significant, so we probably don’t need to worry. However, in real life we aren’t always that lucky. How do we save our ANOVA when the homogeneity of variance assumption is violated? If you recall from our discussion of t-tests, we’ve seen this problem before. The Student t-test assumes equal variances, so the solution was to use the Welch t-test, which does not. In fact, Welch (1951) also showed how we can solve this problem for ANOVA too (the
Welch one-way test
). It’s implemented in R using the
oneway.test()
function. The arguments that we’ll need for our example are:
-
formula
. This is the model formula, which (as usual) needs to specify the outcome variable on the left hand side and the grouping variable on the right hand side: i.e., something likeoutcome ~ group
. -
data
. Specifies the data frame containing the variables. -
var.equal
. If this isFALSE
(the default) a Welch one-way test is run. If it isTRUE
then it just runs a regular ANOVA.
The function also has a
subset
argument that lets you analyse only some of the observations and a
na.action
argument that tells it how to handle missing data, but these aren’t necessary for our purposes. So, to run the Welch one-way ANOVA for our example, we would do this:
oneway.test(mood.gain ~ drug, data = clin.trial)
##
## One-way analysis of means (not assuming equal variances)
##
## data: mood.gain and drug
## F = 26.322, num df = 2.0000, denom df = 9.4932, p-value = 0.000134
To understand what’s happening here, let’s compare these numbers to what we got earlier in Section 14.3 when we ran our original ANOVA. To save you the trouble of flicking back, here are those numbers again, this time calculated by setting
var.equal = TRUE
for the
oneway.test()
function:
oneway.test(mood.gain ~ drug, data = clin.trial, var.equal = TRUE)
##
## One-way analysis of means
##
## data: mood.gain and drug
## F = 18.611, num df = 2, denom df = 15, p-value = 8.646e-05
Okay, so originally our ANOVA gave us the result F(2,15)=18.6, whereas the Welch one-way test gave us F(2,9.49)=26.32. In other words, the Welch test has reduced the within-groups degrees of freedom from 15 to 9.49, and the F-value has increased from 18.6 to 26.32.