bartlettTest

Compute Bartlett’s test for equal variances.

Bartlett's test is used to test the null hypothesis that the variances of k groups are equal against the alternative that at least two of them are different.

For k groups each with n_i observations, the test statistic is

chi squared equals StartStartFraction upper N ln left-parenthesis upper S squared right-parenthesis minus sigma-summation Underscript i equals 0 Overscript k minus 1 Endscripts n Subscript i Baseline ln left-parenthesis upper S Subscript i Superscript 2 Baseline right-parenthesis OverOver 1 plus StartFraction 1 Over 3 left-parenthesis k minus 1 right-parenthesis EndFraction left-parenthesis sigma-summation Underscript i equals 0 Overscript k minus 1 Endscripts StartFraction 1 Over n Subscript i Baseline EndFraction minus StartFraction 1 Over upper N EndFraction right-parenthesis EndEndFraction

where N is the total number of observations, S_i are the biased group-level variances and S^2 is a (biased) pooled estimate for the variance. Under the null hypothesis, the test statistic follows a chi-square distribution with df = k - 1 degrees of freedom.

Usage

var bartlettTest = require( '@stdlib/stats/bartlett-test' );

bartlettTest( a[,b,...,k][, opts] )

For input arrays a, b, ... holding numeric observations, this function calculates Bartlett’s test, which tests the null hypothesis that the variances in all k groups are the same.

// Data from Hollander & Wolfe (1973), p. 116:
var x = [ 2.9, 3.0, 2.5, 2.6, 3.2 ];
var y = [ 3.8, 2.7, 4.0, 2.4 ];
var z = [ 2.8, 3.4, 3.7, 2.2, 2.0 ];

var out = bartlettTest( x, y, z );
/* returns
    {
        'rejected': false,
        'alpha': 0.05,
        'df': 2,
        'pValue': ~0.573,
        'statistic': ~1.112,
        ...
    }
*/

The function accepts the following options:

  • alpha: number in the interval [0,1] giving the significance level of the hypothesis test. Default: 0.05.
  • groups: an array of group indicators. If set, the function assumes that only a single numeric array is provided holding all observations.

By default, the test is carried out at a significance level of 0.05. To choose a custom significance level, set the alpha option.

var x = [ 2.9, 3.0, 2.5, 2.6, 3.2 ];
var y = [ 3.8, 2.7, 4.0, 2.4 ];
var z = [ 2.8, 3.4, 3.7, 2.2, 2.0 ];

var out = bartlettTest( x, y, z, {
    'alpha': 0.01
});
/* returns
    {
        'rejected': false,
        'alpha': 0.01,
        'df': 2,
        'pValue': ~0.573,
        'statistic': ~1.112,
        ...
    }
*/

The function provides an alternate interface by supplying an array of group indicators to the groups option. In this case, it is assumed that only a single numeric array holding all observations is provided to the function.

var arr = [
    2.9, 3.0, 2.5, 2.6, 3.2,
    3.8, 2.7, 4.0, 2.4,
    2.8, 3.4, 3.7, 2.2, 2.0
];
var groups = [
    'a', 'a', 'a', 'a', 'a',
    'b', 'b', 'b', 'b',
    'c', 'c', 'c', 'c', 'c'
];
var out = bartlettTest( arr, {
    'groups': groups
});

The returned object comes with a .print() method which when invoked will print a formatted output of the results of the hypothesis test. print accepts a digits option that controls the number of decimal digits displayed for the outputs and a decision option, which when set to false will hide the test decision.

var x = [ 2.9, 3.0, 2.5, 2.6, 3.2 ];
var y = [ 3.8, 2.7, 4.0, 2.4 ];
var z = [ 2.8, 3.4, 3.7, 2.2, 2.0 ];

var out = bartlettTest( x, y, z );
console.log( out.print() );
/* =>
    Bartlett's test of equal variances

    Null hypothesis: The variances in all groups are the same.

        pValue: 0.5735
        statistic: 1.1122
        df: 2

    Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/

Examples

var bartlettTest = require( '@stdlib/stats/bartlett-test' );

// Data from Hollander & Wolfe (1973), p. 116:
var x = [ 2.9, 3.0, 2.5, 2.6, 3.2 ];
var y = [ 3.8, 2.7, 4.0, 2.4 ];
var z = [ 2.8, 3.4, 3.7, 2.2, 2.0 ];

var out = bartlettTest( x, y, z );
/* returns
    {
        'rejected': false,
        'alpha': 0.05,
        'df': 2,
        'pValue': ~0.573,
        'statistic': ~1.112,
        ...
    }
*/

var table = out.print();
/* returns
    Bartlett's test of equal variances

    Null hypothesis: The variances in all groups are the same.

        pValue: 0.5735
        statistic: 1.1122
        df: 2

    Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/