205 lines
5.7 KiB
Markdown
205 lines
5.7 KiB
Markdown
<!--
|
||
|
||
@license Apache-2.0
|
||
|
||
Copyright (c) 2018 The Stdlib Authors.
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
|
||
-->
|
||
|
||
# bartlettTest
|
||
|
||
> Compute Bartlett’s test for equal variances.
|
||
|
||
<section class="intro">
|
||
|
||
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
|
||
|
||
<!-- <equation class="equation" label="eq:bartlett-test-statistic" align="center" raw="\chi^2 = \frac{N\ln(S^2) - \sum_{i=0}^{k-1} n_i \ln(S_i^2)}{1 + \frac{1}{3(k-1)}\left(\sum_{i=0}^{k-1} \frac{1}{n_i} - \frac{1}{N}\right)}" alt="Equation for Bartlett's test statistic."> -->
|
||
|
||
<div class="equation" align="center" data-raw-text="\chi^2 = \frac{N\ln(S^2) - \sum_{i=0}^{k-1} n_i \ln(S_i^2)}{1 + \frac{1}{3(k-1)}\left(\sum_{i=0}^{k-1} \frac{1}{n_i} - \frac{1}{N}\right)}" data-equation="eq:bartlett-test-statistic">
|
||
<img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@4b1db4ebd815eb54bf53a3fa132b992604743d9c/lib/node_modules/@stdlib/stats/bartlett-test/docs/img/equation_bartlett-test-statistic.svg" alt="Equation for Bartlett's test statistic.">
|
||
<br>
|
||
</div>
|
||
|
||
<!-- </equation> -->
|
||
|
||
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.
|
||
|
||
</section>
|
||
|
||
<!-- /.intro -->
|
||
|
||
<section class="usage">
|
||
|
||
## Usage
|
||
|
||
```javascript
|
||
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.
|
||
|
||
```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 = 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.
|
||
|
||
```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 = 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.
|
||
|
||
<!-- eslint-disable array-element-newline -->
|
||
|
||
```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 = 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.
|
||
|
||
```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 = 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
|
||
*/
|
||
```
|
||
|
||
</section>
|
||
|
||
<!-- /.usage -->
|
||
|
||
<section class="examples">
|
||
|
||
## Examples
|
||
|
||
<!-- eslint no-undef: "error" -->
|
||
|
||
```javascript
|
||
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
|
||
*/
|
||
```
|
||
|
||
</section>
|
||
|
||
<!-- /.examples -->
|
||
|
||
<section class="references">
|
||
|
||
</section>
|
||
|
||
<!-- /.references -->
|
||
|
||
<section class="links">
|
||
|
||
</section>
|
||
|
||
<!-- /.links -->
|