# Levene's Test
> Compute Levene's test for equal variances.
Levene'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.
## Usage
```javascript
var leveneTest = require( '@stdlib/stats/levene-test' );
```
#### leveneTest( x\[, y, ..., z]\[, opts] )
Calculates Levene's test for input arrays `x`, `y`, ..., `z` holding numeric observations.
```javascript
// 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 = leveneTest( x, y, z );
/* returns
{
'rejected': false,
'alpha': 0.05,
'df': [ 2, 11 ],
'pValue': ~0.1733,
'statistic': ~2.0638,
...
}
*/
```
The function accepts the following `options`:
- **alpha**: `number` on the interval `[0,1]` giving the significance level of the hypothesis test. Default: `0.05`.
- **groups**: an `array` of group indicators. Only applicable when providing a single numeric array holding all observations.
By default, the test is carried out at a significance level of `0.05`. To test at a different significance level, set the `alpha` option.
```javascript
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 = leveneTest( x, y, z, {
'alpha': 0.01
});
/* returns
{
'rejected': false,
'alpha': 0.01,
'df': [ 2, 11 ],
'pValue': ~0.1733,
'statistic': ~2.0638,
...
}
*/
```
In addition to providing multiple arrays, the function supports providing a single numeric array holding all observations along with an array of group indicators.
```javascript
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 = leveneTest( arr, {
'groups': groups
});
```
The returned object comes with a `.print()` method which, when invoked, prints a formatted output of test results. The method accepts the following options:
- **digits**: number of decimal digits displayed for the outputs. Default: `4`.
- **decision**: `boolean` indicating whether to print the test decision. Default: `true`.
```javascript
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 = leveneTest( x, y, z );
console.log( out.print() );
/* =>
Levene's test for Homogeneity of Variance
Null hypothesis: The variances in all groups are the same.
df 1: 2
df 2: 11
F score: 2.0638
P Value: 0.1733
Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/
```
## Examples
```javascript
var leveneTest = require( '@stdlib/stats/levene-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 = leveneTest( x, y, z );
/* returns
{
'rejected': false,
'alpha': 0.05,
'df': [ 2, 11 ],
'pValue': ~0.1733,
'statistic': ~2.0638,
...
}
*/
var table = out.print();
/* returns
Levene's test for Homogeneity of Variance
Null hypothesis: The variances in all groups are the same.
df 1: 2
df 2: 11
F score: 2.0638
P Value: 0.1733
Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/
```