org.apache.commons.math3.optimization.fitting
Class GaussianFitter.ParameterGuesser

java.lang.Object
  extended by org.apache.commons.math3.optimization.fitting.GaussianFitter.ParameterGuesser
Enclosing class:
GaussianFitter

public static class GaussianFitter.ParameterGuesser
extends Object

Guesses the parameters norm, mean, and sigma of a Gaussian.Parametric based on the specified observed points.


Field Summary
private  double mean
          Mean.
private  double norm
          Normalization factor.
private  double sigma
          Standard deviation.
 
Constructor Summary
GaussianFitter.ParameterGuesser(WeightedObservedPoint[] observations)
          Constructs instance with the specified observed points.
 
Method Summary
private  double[] basicGuess(WeightedObservedPoint[] points)
          Guesses the parameters based on the specified observed points.
private  int findMaxY(WeightedObservedPoint[] points)
          Finds index of point in specified points with the largest Y.
private  WeightedObservedPoint[] getInterpolationPointsForY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y)
          Gets the two bounding interpolation points from the specified points suitable for determining X at the specified Y.
 double[] guess()
          Gets an estimation of the parameters.
private  double interpolateXAtY(WeightedObservedPoint[] points, int startIdx, int idxStep, double y)
          Interpolates using the specified points to determine X at the specified Y.
private  boolean isBetween(double value, double boundary1, double boundary2)
          Determines whether a value is between two other values.
private  WeightedObservedPoint[] sortObservations(WeightedObservedPoint[] unsorted)
          Sort the observations.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

norm

private final double norm
Normalization factor.


mean

private final double mean
Mean.


sigma

private final double sigma
Standard deviation.

Constructor Detail

GaussianFitter.ParameterGuesser

public GaussianFitter.ParameterGuesser(WeightedObservedPoint[] observations)
Constructs instance with the specified observed points.

Parameters:
observations - Observed points from which to guess the parameters of the Gaussian.
Throws:
NullArgumentException - if observations is null.
NumberIsTooSmallException - if there are less than 3 observations.
Method Detail

guess

public double[] guess()
Gets an estimation of the parameters.

Returns:
the guessed parameters, in the following order:
  • Normalization factor
  • Mean
  • Standard deviation

sortObservations

private WeightedObservedPoint[] sortObservations(WeightedObservedPoint[] unsorted)
Sort the observations.

Parameters:
unsorted - Input observations.
Returns:
the input observations, sorted.

basicGuess

private double[] basicGuess(WeightedObservedPoint[] points)
Guesses the parameters based on the specified observed points.

Parameters:
points - Observed points, sorted.
Returns:
the guessed parameters (normalization factor, mean and sigma).

findMaxY

private int findMaxY(WeightedObservedPoint[] points)
Finds index of point in specified points with the largest Y.

Parameters:
points - Points to search.
Returns:
the index in specified points array.

interpolateXAtY

private double interpolateXAtY(WeightedObservedPoint[] points,
                               int startIdx,
                               int idxStep,
                               double y)
                        throws OutOfRangeException
Interpolates using the specified points to determine X at the specified Y.

Parameters:
points - Points to use for interpolation.
startIdx - Index within points from which to start the search for interpolation bounds points.
idxStep - Index step for searching interpolation bounds points.
y - Y value for which X should be determined.
Returns:
the value of X for the specified Y.
Throws:
ZeroException - if idxStep is 0.
OutOfRangeException - if specified y is not within the range of the specified points.

getInterpolationPointsForY

private WeightedObservedPoint[] getInterpolationPointsForY(WeightedObservedPoint[] points,
                                                           int startIdx,
                                                           int idxStep,
                                                           double y)
                                                    throws OutOfRangeException
Gets the two bounding interpolation points from the specified points suitable for determining X at the specified Y.

Parameters:
points - Points to use for interpolation.
startIdx - Index within points from which to start search for interpolation bounds points.
idxStep - Index step for search for interpolation bounds points.
y - Y value for which X should be determined.
Returns:
the array containing two points suitable for determining X at the specified Y.
Throws:
ZeroException - if idxStep is 0.
OutOfRangeException - if specified y is not within the range of the specified points.

isBetween

private boolean isBetween(double value,
                          double boundary1,
                          double boundary2)
Determines whether a value is between two other values.

Parameters:
value - Value to test whether it is between boundary1 and boundary2.
boundary1 - One end of the range.
boundary2 - Other end of the range.
Returns:
true if value is between boundary1 and boundary2 (inclusive), false otherwise.


Copyright (c) 2003-2013 Apache Software Foundation