org.apache.commons.math3.optimization.fitting

## Class GaussianFitter.ParameterGuesser

- java.lang.Object
- - 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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private double` | `mean` Mean.
    `private double` | `norm` Normalization factor.
    `private double` | `sigma` Standard deviation.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GaussianFitter.ParameterGuesser(WeightedObservedPoint[] observations)` Constructs instance with the specified observed points.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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