To test if a certain hypothesis is likely to be true we can take advantage of the Apache commons math inference package.

Considering the tests included in the package is a good opportunity to learn more about statistics and probability theory.

Let´s consider the following binomial test about flipping a coin:

BinomialTest binomialTest = new BinomialTest(); double nullHypothesis = 0.5; //fair coin int numberOfSuccesses = 9; //number of heads (biased coin) //Two sided = Represents a right-sided test. H0: p ≤ p0, H1: p > p0. AlternativeHypothesis alternativeHypothesis = AlternativeHypothesis.TWO_SIDED; int numberOfTrials = 10; // Returns the observed significance level, or p-value, associated with // a Binomial test. double significanceLevel = binomialTest.binomialTest(numberOfTrials, numberOfSuccesses, nullHypothesis, alternativeHypothesis); double alpha = 0.03; //significance level of the test // Returns whether the null hypothesis can be rejected with the given // confidence level. //true if signficanceLevel < alpha boolean rejected = binomialTest.binomialTest(numberOfTrials, numberOfSuccesses, nullHypothesis, alternativeHypothesis, alpha); System.out.println("The significance level is " + significanceLevel); System.out.println("Can we reject the null hypothesis?" + rejected);

The result that we get is:

The significance level is 0.021484375000000003 Can we reject the null hypothesis?true

The significance level is lower that the expected value alpha; it means that we can discard the test.

In the next posts I will write about the ChiSquare and KolmogorovSmirnov tests too. Stay tuned! 🙂