Testing Means

Overview


The means test seeks to determine if two distributions, both assumed to be normal with the same variance, have the same mean based on a sample from both.

Distribution


Suppose that X is distributed as a normal variable with mean {% \mu_x %} and variance {% \sigma^2 %}, and Y is independent of X, with mean {% \mu_y %} and variance {% \sigma^2 %}, Then the statistic
{% t = \frac{\bar{X} - \bar{Y} - (\mu_x - \mu_y)}{s_p \sqrt{ 1/n + 1/m}} %}
follows a t distribution with n+m-2 degrees of freedom. Here, n is the number of sample points from the X distribution, and m is the number of sample points from the Y distribution. {% s_p^2 %} is the weighted average of the sample variances of X and Y.
{% s_p^2 = \frac{(n-1)s_x^2 + (m-1)s_y^2}{m+n-2} %}
where
{% s_x^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \bar{X})^2%}
(see Rice chap 11)

Hypothesis Test of Equal Means


Assuming that the distribution means are equal, then {% (\mu_x - \mu_y) = 0 %}. That means that
{% t = \frac{\bar{X} - \bar{Y}}{s_p \sqrt{ 1/n + 1/m}} %}
is distributed as a t distribution with n+m-2 degrees of freedom.

Implementation


Testing the hypothesis that the means of the two populations are different can be implemented using the t-distrubtion module. The analyst can use the inverseCumulative


let td = await import('/lib/statistics/distributions/t-distribution/v1.0.0/t-distribution.mjs');

let val = td.inverseCumulative(3,0.8045);

if(Math.abs(val-0.5) > 0.05) $console.log('different means');
else $console.log('not significantly different means');
					
Try it!


As an alternative, the two-sample library provides a method for computing the t-stat and the inverse cumulative function.


let mn = await import('/lib/statistics/hypothesis/v1.0.0/two-sample.mjs');

let data1= [];
let data2 = [];

let testStat = mn.means(data1, data2);
					

Contents