Computes Levene's test for homogeneity of variance across groups.

LeveneTest(x, ...)

# S3 method for class 'formula'
LeveneTest(formula, data, subset, na.action, ...)

# Default S3 method
LeveneTest(x, g, center = median, ...)

Arguments

x

response variable for the default method, or a lm or formula object. If y is a linear-model object or a formula, the variables on the right-hand-side of the model must all be factors and must be completely crossed.

...

arguments to be passed down, e.g., data for the formula and lm methods; can also be used to pass arguments to the function given by center (e.g., center=mean and trim=0.1 specify the 10% trimmed mean).

formula

a formula of the form lhs ~ rhs where lhs gives the data values and rhs the corresponding groups.

data

an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula).

subset

an optional vector specifying a subset of observations to be used.

na.action

a function which indicates what should happen when the data contain NAs. Defaults to getOption("na.action").

g

factor defining groups.

center

The name of a function to compute the center of each group; mean gives the original Levene's test; the default, median, provides a more robust test (Brown-Forsythe-Test).

Value

returns an object meant to be printed showing the results of the test.

Details

Let \(X_ij\) be the jth observation of X for the ith group. Let \(Z_ij = |X_ij - X_i|\), where \(X_i\) is the mean of X in the ith group. Levene’s test statistic is $$ W_0 = \frac{ \sum_i n_i (\bar{Z}_i - \bar{Z})^2 / (g - 1) }{ \sum_i \sum_j (Z_{ij} - \bar{Z}_i)^2 / \sum_i (n_i - 1) } $$ where \(n_i\) is the number of observations in group i and g is the number of groups.

Note

This function is rewritten using common R standards based on car::leveneTest() using the same calculation logic.

References

Fox, J. (2008) Applied Regression Analysis and Generalized Linear Models, Second Edition. Sage.

Fox, J. and Weisberg, S. (2011) An R Companion to Applied Regression, Second Edition, Sage.

See also

fligner.test for a rank-based (nonparametric) \(k\)-sample test for homogeneity of variances; mood.test for another rank-based two-sample test for a difference in scale parameters; var.test and bartlett.test for parametric tests for the homogeneity in variance.

ansari_test in package coin for exact and approximate conditional p-values for the Ansari-Bradley test, as well as different methods for handling ties.

Author

andri.signorell andri@signorell.net; original version written by John Fox jfox@mcmaster.ca based on a generic version contributed by Derek Ogle
adapted from a response posted by Brian Ripley to the r-help email list.

Examples


## example from ansari.test:
## Hollander & Wolfe (1973, p. 86f):
## Serum iron determination using Hyland control sera
serum <- ToLong(data.frame(
          ramsay=c(111, 107, 100, 99, 102, 106, 109, 108, 104, 99,
                   101, 96, 97, 102, 107, 113, 116, 113, 110, 98),
          jung.parekh=c(107, 108, 106, 98, 105, 103, 110, 105, 104,
                        100, 96, 108, 103, 104, 114, 114, 113, 108, 106, 99)
          ))

LeveneTest(x ~ grp, data=serum)
#> 
#> 	Levene's Test for Homogeneity of Variance (center = median)
#> 
#> data:  x by grp
#> F = 1.7865, num df = 1, denom df = 38, p-value = 0.1893
#> 
LeveneTest(x ~ grp, data=serum, center=mean)
#> 
#> 	Levene's Test for Homogeneity of Variance (center = mean)
#> 
#> data:  x by grp
#> F = 1.7879, num df = 1, denom df = 38, p-value = 0.1891
#> 
LeveneTest(x ~ grp, data=serum, center=mean, trim=0.1)
#> 
#> 	Levene's Test for Homogeneity of Variance (center = mean(trim=0.1))
#> 
#> data:  x by grp
#> F = 1.7854, num df = 1, denom df = 38, p-value = 0.1894
#> 

LeveneTest( c(rnorm(10), rnorm(10, 0, 2)), factor(rep(c("A","B"), each=10)) )
#> 
#> 	Levene's Test for Homogeneity of Variance (center = median)
#> 
#> data:  c(rnorm(10), rnorm(10, 0, 2)) and factor(rep(c("A", "B"), each = 10))
#> F = 0.14748, num df = 1, denom df = 18, p-value = 0.7055
#> 

LeveneTest(Ozone ~ Month, data = airquality)
#> 
#> 	Levene's Test for Homogeneity of Variance (center = median)
#> 
#> data:  Ozone by Month
#> F = 3.9558, num df = 4, denom df = 111, p-value = 0.004863
#> 

LeveneTest(count ~ spray, data = InsectSprays)
#> 
#> 	Levene's Test for Homogeneity of Variance (center = median)
#> 
#> data:  count by spray
#> F = 3.8214, num df = 5, denom df = 66, p-value = 0.004223
#> 
# Compare this to fligner.test() and bartlett.test()