# z-Test

Two-sample z-Test.

## Usage

```
var ztest2 = require( '@stdlib/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. `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., =>
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/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 );
```