# z-Test

Two-sample z-Test.

## Usage

``````var ztest2 = require( '@stdlib/math/stats/ztest2' );
``````

### ztest2( x, y, sigmax, sigmay[, opts] )

By default, the function performs a two-sample z-test for the null hypothesis that the data in arrays or typed arrays `x` and `y` is independently drawn from normal distributions with equal means and known standard deviations `sigmax` and `sigmay`.

``````var x = [ 2.66, 1.5, 3.25, 0.993, 2.31, 2.41, 1.76, 2.57, 2.62, 1.23 ]; // Drawn from N(2,1)
var y = [ 4.88, 2.93, 2.96, 4.5, -0.0603, 4.62, 3.35, 2.98 ]; // Drawn from N(3,2)

var out = ztest2( x, y, 1.0, 2.0 );
/* e.g., returns
{
rejected: false,
pValue: ~0.141,
statistic: ~-1.471,
ci: [ ~-2.658, ~0.379 ],
// ...
}
*/
``````

The returned object comes with a `.print()` method which when invoked will print a formatted output of the results of the hypothesis test.

``````console.log( out.print() );
/* e.g., =>
Two-sample z-test

Alternative hypothesis: True difference in means is not equal to 0

pValue: 0.1412
statistic: -1.4713
95% confidence interval: [-2.6578,0.3785]

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

The function accepts the following `options`:

• alpha: `number` in the interval `[0,1]` giving the significance level of the hypothesis test. Default: `0.05`.
• alternative: Either `two-sided`, `less` or `greater`. Indicates whether the alternative hypothesis is that `x` has a larger mean than `y` (`greater`), `x` has a smaller mean than `y` (`less`) or the means are the same (`two-sided`). Default: `two-sided`.
• difference: `number` denoting the difference in means under the null hypothesis. Default: `0`.

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 out = ztest2( x, y, 1.0, 2.0, {
'alpha': 0.2
});
var table = out.print();
/* e.g., returns
Two-sample z-test

Alternative hypothesis: True difference in means is not equal to 0

pValue: 0.1412
statistic: -1.4713
80% confidence interval: [-2.1323,-0.147]

Test Decision: Reject null in favor of alternative at 20% significance level
*/
``````

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 out = ztest2( x, y, {
'alternative': 'less'
});
var table = out.print();
/* e.g., returns
Two-sample z-test

Alternative hypothesis: True difference in means is less than 0

pValue: 0.0706
statistic: -1.4713
95% confidence interval: [-Infinity,0.1344]

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

out = ztest2( x, y, {
'alternative': 'greater'
});
table = out.print();
/* e.g., returns
Two-sample z-test

Alternative hypothesis: True difference in means is greater than 0

pValue: 0.9294
statistic: -1.4713
95% confidence interval: [-2.4138,Infinity]

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

To test whether the difference in the population means is equal to some other value than `0`, set the `difference` option.

``````var normal = require( '@stdlib/random/base/normal' ).factory;

var rnorm = normal({
'seed': 372
});

var x = new Array( 100 );
var i;
for ( i = 0; i < x.length; i++ ) {
x[ i ] = rnorm( 2.0, 1.0 );
}
var y = new Array( 100 );
for ( i = 0; i < x.length; i++ ) {
y[ i ] = rnorm( 1.0, 1.0 );
}

var out = ztest2( x, y, 1.0, 1.0, {
'difference': 1.0
});
/* e.g., returns
{
rejected: false,
pValue: ~0.74,
statistic: ~0.332,
ci: [ ~0.77, ~1.324 ],
// ...
}
*/

var table = out.print();
/* e.g., returns
Two-sample z-test

Alternative hypothesis: True difference in means is not equal to 1

pValue: 0.7395
statistic: 0.3325
95% confidence interval: [0.7698,1.3242]

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

## Examples

``````var rnorm = require( '@stdlib/random/base/normal' );
var ztest2 = require( '@stdlib/math/stats/ztest2' );

var table;
var out;
var x;
var y;
var i;

// Values drawn from a Normal(4,2) distribution
x = new Array( 100 );
for ( i = 0; i < 100; i++ ) {
x[ i ] = rnorm( 4.0, 2.0 );
}
// Values drawn from a Normal(3,2) distribution
y = new Array( 80 );
for ( i = 0; i < 80; i++ ) {
y[ i ] = rnorm( 3.0, 2.0 );
}

out = ztest2( x, y, 2.0, 2.0 );
table = out.print();
console.log( table );

out = ztest2( x, y, 2.0, 2.0, {
'difference': 1.0
});
table = out.print();
console.log( table );
``````