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