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, ...)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).
a formula of the form lhs ~ rhs where lhs gives
the data values and rhs the corresponding groups.
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).
an optional vector specifying a subset of observations to be used.
a function which indicates what should happen
when the data contain NAs. Defaults to getOption("na.action").
factor defining groups.
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).
An object of class "htest" representing the result of the hypothesis test.
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.
This function is rewritten using common R standards based on car::leveneTest() using the same calculation logic.
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.
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.
## 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 = 4.1573, num df = 1, denom df = 18, p-value = 0.05642
#>
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()