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; can also be used to pass arguments to the function given by center (e.g., center=mean, 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

An object of class "htest" representing the result of the hypothesis 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.

Levene, H. (1960) Robust tests for equality of variances. in Ingram, O., Hotelling, H. et al. (Hrsg.) (1960) Contributions to Probability and Statistics, Essays in Honor of Harold Hotelling. Stanford University Press, 1960, ISBN 0-8047-0596-8, S. 278–292.

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()