Next Previous Contents

2. Using the Module

To use the module in a S-lang script, it must first be loaded into the interpreter. The standard way to do this is to load it using the require function, e.g.,

   require ("stats");
To load it into a specific namespace, e.g., ``S'', use
   require ("stats", "S");

Most of the stats module's functions provide a brief usage message when called without arguments, e.g.,

   slsh> chisqr_test;
   Usage: p=chisqr_test(X,Y,...,Z [,&T])
More detailed help is available using the help function:
   slsh> help chisqr_test
   chisqr_test
   
    SYNOPSIS
     Apply the Chi-square test to a two or more datasets
   
    USAGE
     prob = chisqr_test (X_1, X_2, ..., X_N [,&t])
   
    DESCRIPTION
    This function applies the Chi-square test to the N datasets
       .
       .

To illustrate the use of the module, consider the task of comparing gaussian-distributed random numbers to a uniform distribution of numbers. In the following, the ran_gaussian function from the GNU Scientific Library module will be used to generate the gaussian distributed random numbers.

First, start by loading the stats and gslrand modules into slsh:

  slsh> require ("gslrand");
  slsh> require ("stats");
Now generate 10 random numbers with a variance of 1.0 using the ran_gaussian and assign the resulting array to the variable g:
   slsh> g = ran_gaussian (1.0, 10);
Similarly, assign u to a uniformly distributed range of 10 numbers from -3 to 3:
   slsh> u = [-3:3:#10];
These two datasets may be compared using the stats module's two-sample non-parametric tests. First the Kolmogorov-Smirnov test may be applied using ks_test2:
   slsh> ks_test2 (g,u);
   0.78693
This shows a p-value of about 0.79, which indicates that there is no significant difference between these distributions. Similary, the Kuiper and Mann-Whitney-Wilcoxon tests yield p-values of 0.46, and 0.97, respectively:
   slsh> mw_test (g,u);
   0.970512
   slsh> kuiper_test2 (g,u);
   0.462481

Instead of 10 points per dataset, perform the tests using 100 points:

   slsh> g = ran_gaussian (1.0, 100);
   slsh> u = [-3:3:#100];
   slsh> ks_test2 (g,u);
   0.00613403
   slsh> mw_test (g,u);
   0.741508
   slsh> kuiper_test2 (g,u);
   1.38757e-06
As this example shows, both the Kolmogorov-Smirnov and Kuiper tests found significant differences between the data sets, whereas the Mann-Whitney-Wilcoxon test failed to find a significant difference. The fact that the Mann-Whitney-Wilcoxon test failed to find a difference is that the test assumes that the underlying distributions have the same shape but may differ in location. Clearly the distributions represented by g and u violate this assumption.


Next Previous Contents