experimental
Class statistics

java.lang.Object
  |
  +--experimental.statistics

public class statistics
extends java.lang.Object

Normal curve and normal curve graphing functions

This class supports the following public functions:

There are also two public nested classes:

This code is largely experimental and was written to understand how a graph of sorted Haar coefficient values relates to a normal curve with the same mean and standard deviation.


Inner Class Summary
 class statistics.bell_info
          Bell curve info: mean, sigma (the standard deviation), low (the start of the curve area) and high (the end of the curve area).
 class statistics.point
          A point on a graph
 
Constructor Summary
statistics()
           
 
Method Summary
 void integrate_curve(statistics.point[] curve)
           The amount of Gaussian noise in the Haar wavelet coefficients can be seen by graphing a histogram of the coefficients along with a Gaussian (normal) curve.
private  statistics.bell_info new_info(double mean, double sigma, double low, double high)
          Allocate a bell_info object and initialize it with the arguments mean, sigma, low and high.
static statistics.point[] normal_curve(statistics.bell_info info, int num_points)
          Calculate the information for a graph (composed of point objects) based on the bell_info argument.
private  statistics.point[] point_array(int size)
          Allocate an array of point objects.
private  void print_bins(histo.bin[] histoBins)
           Print a histogram bin to stanard output.
static statistics.bell_info stddev(double[] v)
           Calculate the mean, standard deviation.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Constructor Detail

statistics

public statistics()
Method Detail

new_info

private statistics.bell_info new_info(double mean,
                                      double sigma,
                                      double low,
                                      double high)
Allocate a bell_info object and initialize it with the arguments mean, sigma, low and high.

stddev

public static statistics.bell_info stddev(double[] v)

Calculate the mean, standard deviation. Also note the low and high of the number range.

The stddev function is passed an array of numbers. It returns the statistics for a normal curve based on those numbers: mean, standard deviation, low value and high value.


point_array

private statistics.point[] point_array(int size)
Allocate an array of point objects. The size allocated is given by the argument size.

print_bins

private void print_bins(histo.bin[] histoBins)

Print a histogram bin to stanard output.


integrate_curve

public void integrate_curve(statistics.point[] curve)

The amount of Gaussian noise in the Haar wavelet coefficients can be seen by graphing a histogram of the coefficients along with a Gaussian (normal) curve. For this graph to be meaningful the two histograms must be expressed in the same scale.

The statistics.normal_curve function generates a normal bell curve around the median where the x-axis is the number range over which the curve is plotted and the y-axis the the percentage probability for a point to appear at the associated place on the x-axis.

In contrast the y-axis for the histogram calculated for the Haar coefficients reflects the percentage of the total points in that particular histogram bin range.

The histogram of the Haar coefficients is plotted by calculating the percentage of the total for each histogram bin. This means that all the Haar histogram bins sum to one. To plot the normal curve in the same units as the histogram plot of the Haar coefficients, the normal curve is integrated over each histogram bin. The area under the normal curve is one also. The output is written to the standard output.

Summary:

Input argument curve:

x-axis: number range
y-axis: probability fraction

normal_curve

public static statistics.point[] normal_curve(statistics.bell_info info,
                                              int num_points)
Calculate the information for a graph (composed of point objects) based on the bell_info argument. The graph will have a number of point objects equal to num_points. The equation to calculate a normal curve is used:
f(y) = (1/(s * sqrt(2 * pi)) e-(1/(2 * s2)(y-u)2

Where u is the mean and s is the standard deviation.