|  | ||
|---|---|---|
| .. | ||
| docs | ||
| lib | ||
| package.json | ||
| README.md | ||
Two-sample F-test
Two-sample F-test for equal variances.
Usage
var vartest = require( '@stdlib/stats/vartest' );
vartest( x, y[, opts] )
By default, the function performs a two-sample F-test for the null hypothesis that the data in arrays or typed arrays x and y is  independently drawn from normal distributions with equal variances.
var x = [ 610, 610, 550, 590, 565, 570 ];
var y = [ 560, 550, 580, 550, 560, 590, 550, 590 ];
var out = vartest( x, y );
/* returns
    {
        'rejected': false,
        'pValue': ~0.399,
        'statistic': ~1.976,
        'ci': [ ~0.374, ~13.542 ],
        // ...
    }
*/
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.
console.log( out.print() );
/* e.g., =>
    F test for comparing two variances
    Alternative hypothesis: True ratio in variances is not equal to 1
        pValue: 0.3992
        statistic: 1.976
        variance of x: 617.5 (df of x: 5)
        variance of y: 312.5 (df of y: 7)
        95% confidence interval: [0.3739,13.5417]
    Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/
The function accepts the following options:
- alpha: numberin the interval[0,1]giving the significance level of the hypothesis test. Default:0.05.
- alternative: Either two-sided,lessorgreater. Indicates whether the alternative hypothesis is that the true ratio of variances is greater than one (greater), smaller than one (less), or that the variances are the same (two-sided). Default:two-sided.
- ratio: positive numberdenoting the ratio of the two population variances under the null hypothesis. Default:1.
By default, the hypothesis test is carried out at a significance level of 0.05. To choose a different significance level, set the alpha option.
var x = [ 610, 610, 550, 590, 565, 570, 500, 650, 500, 650 ];
var y = [ 560, 550, 580, 550, 560, 590, 550, 590 ];
var out = vartest( x, y, {
    'alpha': 0.01
});
var table = out.print();
/* e.g., returns
    F test for comparing two variances
    Alternative hypothesis: True ratio in variances is not equal to 1
        pValue: 0.0081
        statistic: 9.1458
        variance of x: 2858.0556 (df of x: 9)
        variance of y: 312.5 (df of y: 7)
        90% confidence interval: [2.4875,30.1147]
    Test Decision: Reject null in favor of alternative at 1% significance level
    Exited with status 0
*/
By default, a two-sided test is performed. To perform either of the one-sided tests, set the alternative option to less or greater.
var x = [ 610, 610, 550, 590, 565, 570, 500, 650, 500, 650 ];
var y = [ 560, 550, 580, 550, 560, 590, 550, 590 ];
var out = vartest( x, y, {
    'alternative': 'less'
});
var table = out.print();
/* e.g., returns
    Alternative hypothesis: True ratio in variances is less than 1
        pValue: 0.996
        statistic: 9.1458
        variance of x: 2858.0556 (df of x: 9)
        variance of y: 312.5 (df of y: 7)
        95% confidence interval: [0,30.1147]
    Test Decision: Fail to reject null in favor of alternative at 5% significance level
    Exited with status 0
*/
out = vartest( x, y, {
    'alternative': 'greater'
});
table = out.print();
/* e.g., returns
    Alternative hypothesis: True ratio in variances is greater than 1
        pValue: 0.004
        statistic: 9.1458
        variance of x: 2858.0556 (df of x: 9)
        variance of y: 312.5 (df of y: 7)
        95% confidence interval: [2.4875,Infinity]
    Test Decision: Reject null in favor of alternative at 5% significance level
    Exited with status 0
*/
To test whether the ratio in the population variances is equal to some other value than 1, set the ratio option.
var x = [ 610, 610, 550, 590, 565, 570, 500, 650, 500, 650 ];
var y = [ 560, 550, 580, 550, 560, 590, 550, 590 ];
var out = vartest( x, y, {
    'ratio': 10.0
});
/* e.g., returns
    {
        'rejected': false,
        'pValue': ~0.879,
        'statistic': ~-0.915,
        'ci': [ ~1.896, ~38.385 ],
        // ...
    }
*/
var table = out.print();
/* e.g., returns
    F test for comparing two variances
    Alternative hypothesis: True ratio in variances is not equal to 10
        pValue: 0.8794
        statistic: 0.9146
        variance of x: 2858.0556 (df of x: 9)
        variance of y: 312.5 (df of y: 7)
        95% confidence interval: [1.8962,38.3853]
    Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/
Examples
var rnorm = require( '@stdlib/random/base/normal' );
var vartest = require( '@stdlib/stats/vartest' );
var table;
var out;
var x;
var y;
var i;
x = new Array( 60 );
for ( i = 0; i < x.length; i++ ) {
    x[ i ] = rnorm( 2.0, 1.0 );
}
y = new Array( 40 );
for ( i = 0; i < y.length; i++ ) {
    y[ i ] = rnorm( 1.0, 2.0 );
}
// Test whether the variances of `x` and `y` are the same:
out = vartest( x, y );
table = out.print();
/* e.g., returns
    F test for comparing two variances
    Alternative hypothesis: True ratio in variances is not equal to 1
        pValue: 0
        statistic: 0.1717
        variance of x: 0.6406 (df of x: 60)
        variance of y: 3.7306 (df of y: 40)
        95% confidence interval: [0.0953,0.2995]
    Test Decision: Reject null in favor of alternative at 5% significance level
*/
// Test whether the variance of `x` is one fourth of the variance of `y`:
out = vartest( x, y, {
    'ratio': 0.25
});
table = out.print();
/* e.g., returns
    F test for comparing two variances
    Alternative hypothesis: True ratio in variances is not equal to 0.25
        pValue: 0.1847
        statistic: 0.6869
        variance of x: 0.6406 (df of x: 60)
        variance of y: 3.7306 (df of y: 40)
        95% confidence interval: [0.0953,0.2995]
    Test Decision: Fail to reject null in favor of alternative at 5% significance level
*/