A program that uses the sign test to calculate the probability that the median of a set of data is zero.


This program is a re-write of an earlier version written partly in Java and described here. That version depended on a Java application framework for Swing that is no longer available. It was also hosted on the now defunct Project Kenai.

The statistical functions were already well encapsulated in a Clojure source file. Now those functions and some tests are hosted on Clojars and in their own BitBucket repository.

The GUI has been completely rewritten in Clojure using the JavaFX GUI library.

So, it's now all Clojure using a modern GUI platform.


  • Create a simple program to analyze results from experimentation appropriate for the sign test.
  • Explore the utility of programming statistical functions and methods in Clojure. The Clojure numerical stack, which transparently supported infinite precision integers, has been a boon to these calculations.


  • Must allow input of the number of observations below and above the hypothesized median.
  • Must calculate two-tailed probability that the observations could have occurred by chance.
  • Must provide simple guidance and background (help) when requested.
  • Main program and help window positions must be persistent.
  • Must be simpler and faster to use than a general purpose statistics program such as MiniTab or Statistica.
  • Must never display results that are inconsistent with visible input data. (It must not be possible to create a screen capture with a stale probability while inputting data for a new calculation.)
  • Must run on Windows, Linux, and OS X.


Other than the dependency on Java and Clojure, the program depends on two additional libraries from the same author.

  • percettings is a small library to handle simple preference data (window positions, sizes, etc.)
  • binom-stats is a small library of statistical functions related to the binomial distribution.


The contents of the source distribution include a project.clj file for use with the Leiningen build tool.

Known Issues / Next Things to Do

  • Make help text "copy-able".
  • Create an icon.
  • Do analysis on the acceptable argument domains of the math functions. Where do they blow up or get unreliable?
  • Expand unit tests to include tests of the user interface.


Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Copyright © 2017 David D. Clark