# scipy.stats.levene

scipy.stats.levene(*args, center='median', proportiontocut=0.05)

  Perform Levene test for equal variances.

  The Levene test tests the null hypothesis that all input samples are from populations with equal variances. Levene’s test is an alternative to Bartlett’s test `bartlett` in the case where there are significant deviations from normality.

  Parameters
    sample1, sample2, …array_like

      The sample data, possibly with different lengths. Only one-dimensional samples are accepted.

    center{‘mean’, ‘median’, ‘trimmed’}, optional

      Which function of the data to use in the test. The default is ‘median’.

    proportiontocut float, optional

      When center is ‘trimmed’, this gives the proportion of data points to cut from each end. (See `scipy.stats.trim_mean`.) Default is 0.05.

  Returns
    statistic float

      The test statistic.

    pvalue float

      The p-value for the test.

  Notes

  Three variations of Levene’s test are possible. The possibilities and their recommended usages are:

  > - ‘median’ : Recommended for skewed (non-normal) distributions>

  > - ‘mean’ : Recommended for symmetric, moderate-tailed distributions.

  > - ‘trimmed’ : Recommended for heavy-tailed distributions.

  The test version using the mean was proposed in the original article of Levene ([2]) while the median and trimmed mean have been studied by Brown and Forsythe ([3]), sometimes also referred to as Brown-Forsythe test.

  References

  1

    https://www.itl.nist.gov/div898/handbook/eda/section3/eda35a.htm

  2

    Levene, H. (1960). In Contributions to Probability and Statistics: Essays in Honor of Harold Hotelling, I. Olkin et al. eds., Stanford University Press, pp. 278-292.

  3

    Brown, M. B. and Forsythe, A. B. (1974), Journal of the American Statistical Association, 69, 364-367

  Examples

  Test whether or not the lists a, b and c come from populations with equal variances.

      >>> from scipy.stats import levene
      >>> a = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
      >>> b = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
      >>> c = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
      >>> stat, p = levene(a, b, c)
      >>> p
      0.002431505967249681

  The small p-value suggests that the populations do not have equal variances.

  This is not surprising, given that the sample variance of b is much larger than that of a and c:

      >>> [np.var(x, ddof=1) for x in [a, b, c]]
      [0.007054444444444413, 0.13073888888888888, 0.008890000000000002]

scipy.stats.bartlett scipy.stats.shapiro