You are a guest. Restricted access. Read more.
SCaVis manual

Statistical tests

Snippet from Wikipedia: Statistical hypothesis testing

A statistical hypothesis is a scientific hypothesis that is testable on the basis of observing a process that is modeled via a set of random variables.

Histogram tests

When using SCaVis, two distributions (1D and 2D histograms, P1D data points) can be compared by applying several statistical tests. The following statistical comparisons are available

  • Chi2
  • Anderson-Darling
  • Kolmogorov-Smirnov
  • Goodman
  • Kuiper
  • Tiku

Consider a simple statistical test: compare 2 histograms. You can generate 2 similar histograms using this code snippet:

Code example

  Download for this example is disabled for non-members
 1: from java.awt import Color
 2: from java.util import Random
 3: from jhplot  import *
 5: c1 = HPlotJa("Canvas")
 6: c1.setGTitle("Statistical comparisons")
 7: c1.visible()
 8: c1.setAutoRange()
10: h1 = H1D("Histo1",20, -2, 2.0)
11: h1.setColor(
12: h2 = H1D("Histo2",20, -2, 2.0)
13: r = Random()
14: for i in range(10000):
15:    h1.fill(r.nextGaussian())
16:    h2.fill(r.nextGaussian())
17:    if (i<100): h2.fill(2*r.nextGaussian()+2)
18: h1.setErrAll(1)
19: h2.setErrAll(0)
20: c1.draw(h1)
21: c1.draw(h2)

Here we show statistical uncertainties only for the first (blue) histogram (see the method setErrAll(0)). The output of this code is shown below

Now we can perform a several tests to calculate the degree of similarity of these distributions (including their uncertainties). Below we show a code which compares these two histograms and calculate Chi2 per degree of freedom:

Unregistered users have a limited access to this section. One can unlock this example after becoming a full member.

The output of this script is shown here:

AndersonDarling method= 2.21779532164 / 20
Chi2 method= 0.786556311893 / 20
Goodman method= 0.624205522632 / 20
KolmogorovSmirnov  method= 0.419524135727 / 20

Non-parametric tests

This section contains a description of many non-parametric tests that were included using third-party libraries. In particular, we will show easy scripting using the JavaNPST library that is included in ScaVis and interfaced with Java scripting languages. The library contains

  • Tests of goodness (Chi-Square, Kolmogorov-Smirnov, Lilliefors, Anderson-Darling),
  • Tests of randomness (Number of Runs, Von Neumann, Runs Up and Down)
  • One-sample and paired-samples (Confidence Quantile, Population Quantile, Wilcoxon Signed-Ranks )
  • Two-Sample general procedures (Wald-Wolfowitz, Control Median, Kolmogorov-Smirnov)
  • Scale problem (David-Barton , Klotz , Freund-Ansari-Bradley , David-Barton
  • Equality of independent samples (Extended Median test , Jonckheere-Terpstra, Charkraborti-Desu)
  • Association in multiple classifications (Friedman, Concordance Coefficient, Incomplete Concordance, Partial Correlation )
  • Analysis of count data (Contingency Coefficient, Fisher's exact test, Multinomial Equality, Ordered Equality)

You can view Java API for all these statistical tests using this link Statistical tests API. On this page, select the needed method listened in the section “Direct Known Subclasses:”.

To be more specific, let us consider a few practical examples. Let us consider a simple Jython script that tests randomness of a numeric sequence using the Von Neumann test.

Snippet from Wikipedia: Randomness tests

Randomness tests (or tests for randomness), in data evaluation, are used to analyze the distribution pattern of a set of data. In stochastic modeling, as in some computer simulations, the expected random input data can be verified, by a formal test for randomness, to show that the simulation runs were performed using randomized data. In some cases, data reveals an obvious non-random pattern, as with so-called "runs in the data" (such as expecting random 0–9 but finding "4 3 2 1 0 4 3 2 1..." and rarely going above 4).

Let us perform Von Neumann test for a sequence of numbers


The result of this test is shown here:

Results of Number of Runs test:
Von Neumann test (ranks test of randomness)
NM statistic: 231
RVN statistic: 1.269231
Exact P-Value (Left tail, Too few runs): 0.1
Exact P-Value (Right tail, Too many runs): 1
Exact P-Value (Double tail, Non randomness): 0.2
Asymptotic P-Value (Left tail, Too few runs): 0.080571
Asymptotic P-Value (Right tail, Too many runs): 0.919429
Asymptotic P-Value (Double tail, Non randomness): 0.161142

which is performed with this simple code:

Unregistered users have a limited access to this section. You can unlock advanced pages after becoming a full member. You can also request to edit this manual and insert comments.

Let us consider another example. This time we will perform the Friedman:

Snippet from Wikipedia: Friedman test

The Friedman test is a non-parametric statistical test developed by the U.S. economist Milton Friedman. Similar to the parametric repeated measures ANOVA, it is used to detect differences in treatments across multiple test attempts. The procedure involves ranking each row (or block) together, then considering the values of ranks by columns.

The input for this test will be the matrix:


The output of our test is shown below:

Friedman test
Sum of ranks:
S1    S2    S3
6    5.5    6.5
Average ranks:
S1    S2    S3
2    1.833333    2.166667
S statistic: 0.5
Q statistic: 0.2
P-Value computed :0.904837

The code for this example is given below:

Unregistered users have a limited access to this section. You can unlock advanced pages after becoming a full member. You can also request to edit this manual and insert comments.

Click to read more

Click to read more

Click to read more

A complete description of how to use Java, Jython and SCaVis for scientific analysis is described in the book Scientific data analysis using Jython and Java published by Springer Verlag, London, 2010 (by S.V.Chekanov)

man/stat/stests.txt · Last modified: 2014/01/18 10:59 (external edit)
CC Attribution-Share Alike 3.0 Unported
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5