One Way ANOVA

Perform a one-way analysis of variance.

Usage

var anova1 = require( '@stdlib/stats/anova1' );

anova1( x, factor[, opts] )

For an array or typed array of numeric values x and an array of classifications factor, a one-way analysis of variance is performed. The hypotheses are given as follows:

StartLayout 1st Row 1st Column upper H 0 colon 2nd Column mu 1 equals mu 2 equals midline-horizontal-ellipsis equals mu Subscript k Baseline 2nd Row 1st Column upper H Subscript a Baseline colon 2nd Column at least one mu Subscript i Baseline not equal to the others EndLayout

The function returns an object containing the treatment and error squared errors, degrees of freedom, mean squared errors, and both the p-value and F score.

var out;
var x;
var y;

x = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];
y = [ 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control' ];

out = anova1( x, y );
/* returns
    {
        'treatment': { 'df': 11, 'ss': 15, 'ms': 5 },
        'error': { 'df': 8, 'ss': 128, 'ms': 16 },
        'statistic': 0.3125,
        'pValue': 0.81607947904798,
        'means':
          { 'Treatment A': { 'mean': 5, 'sampleSize': 3, 'SD': 4 },
            'Treatment B': { 'mean': 6, 'sampleSize': 3, 'SD': 4 },
            'Treatment C': { 'mean': 7, 'sampleSize': 3, 'SD': 4 },
            'Control': { 'mean': 8, 'sampleSize': 3, 'SD': 4 } },
        'method': 'One-Way ANOVA'
    }
*/

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 out;
var x;
var y;

x = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];
y = [ 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control' ];

out = anova1( x, y );
console.log( out.print() );
/* =>
    One-Way ANOVA

    Null Hypothesis: All Means Equal
    Alternate Hypothesis: At Least one Mean not Equal

                  df   SS     MS    F Score   P Value
    Treatment     3    15     5     0.3125    0.8161
    Errors        8    128    16

    Fail to Reject Null: 0.8161 >= 0.05
*/

The function accepts the following options:

  • alpha: number in the interval [0,1] giving the significance level of the hypothesis test. Default: 0.05.
  • decision: a boolean value indicating if function is to return a decision of either rejection of the null hypothesis or failure to reject the null hypothesis. Default: false

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 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];
var y = [ 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control', 'Treatment A', 'Treatment B', 'Treatment C', 'Control' ];

var out = anova1( x, y );
var table = out.print();
/* e.g., returns
    One-Way ANOVA

    Null Hypothesis: All Means Equal
    Alternate Hypothesis: At Least one Mean not Equal

                  df   SS     MS    F Score   P Value
    Treatment     3    15     5     0.3125    0.8161
    Errors        8    128    16

    Fail to Reject Null: 0.8161 >= 0.05
*/

out = anova1( x, y, {
    'alpha': 0.9
});
table = out.print();
/* e.g., returns
    One-Way ANOVA

    Null Hypothesis: All Means Equal
    Alternate Hypothesis: At Least one Mean not Equal

                  df   SS     MS    F Score   P Value
    Treatment     3    15     5     0.3125    0.8161
    Errors        8    128    16

    Reject Null: 0.8161 <= 0.9
*/

Notes

Examples

var anova1 = require( '@stdlib/stats/anova1' );

var x = [ 3, 4, 5, 6, 2, 5, 10, 12, 8, 10 ];
var f = [ 'control', 'treatA', 'treatB', 'control', 'treatA', 'treatB', 'control', 'treatA', 'treatB', 'control' ];

var out = anova1( x, f, {
    'decision': true
});

console.log( out.print() );

out = anova1( x, f, {
    'alpha': 0.9
});

console.log( out.print() );