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

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

### Field Summary

Fields
`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
`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.