# z-Test > Two-sample z-Test.
## Usage ```javascript 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][mdn-array] or [typed arrays][mdn-typed-array] `x` and `y` is independently drawn from normal distributions with _equal_ means and known standard deviations `sigmax` and `sigmay`. ```javascript 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. ```javascript 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. ```javascript 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`. ```javascript 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. ```javascript 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 ```javascript 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 ); ```