Class MultiGaussianFitter

java.lang.Object
edu.cnu.mdi.splot.fit.ALeastSquaresFitter
edu.cnu.mdi.splot.fit.MultiGaussianFitter
All Implemented Interfaces:
IFitStringGetter, IFitter

public final class MultiGaussianFitter extends ALeastSquaresFitter
Fit a sum of Gaussians (optionally with a constant baseline).

Model

 y(x) = sum_{k=0..m-1} A_k * exp(-(x - mu_k)^2 / (2*sigma_k^2))  +  B   (if includeBaseline)
 y(x) = sum_{k=0..m-1} A_k * exp(-(x - mu_k)^2 / (2*sigma_k^2))        (otherwise)
 

Parameter vector

For each component k, parameters appear in blocks:
   A_k, mu_k, sigma_k
 
followed by baseline B if enabled.

By default we enforce sigma_k >= DEFAULT_MIN_SIGMA for all components.

  • Field Details

    • DEFAULT_MIN_SIGMA

      public static final double DEFAULT_MIN_SIGMA
      See Also:
    • paramNames

      public static final String[] paramNames
      Base Parameter names.
  • Constructor Details

    • MultiGaussianFitter

      public MultiGaussianFitter(int m, boolean includeBaseline)
      Create a MultiGaussianFitter.
      Parameters:
      m - number of Gaussian components (must be >= 1)
      includeBaseline - true to include constant baseline term
    • MultiGaussianFitter

      public MultiGaussianFitter(int m, boolean includeBaseline, org.apache.commons.math3.fitting.leastsquares.LeastSquaresOptimizer optimizer)
      Create a MultiGaussianFitter.
      Parameters:
      m - number of Gaussian components (must be [1..6])
      includeBaseline - true to include constant baseline term
      optimizer - least squares optimizer to use
  • Method Details

    • numGaussians

      public int numGaussians()
      Number of Gaussian components.
    • isIncludeBaseline

      public boolean isIncludeBaseline()
    • getParameterCount

      protected int getParameterCount()
      Specified by:
      getParameterCount in class ALeastSquaresFitter
      Returns:
      number of parameters for this fitter.
    • model

      protected org.apache.commons.math3.fitting.leastsquares.MultivariateJacobianFunction model(double[] x)
      Description copied from class: ALeastSquaresFitter
      Build the model + analytic (or numeric) Jacobian for this fitter, given x values.
      Specified by:
      model in class ALeastSquaresFitter
      Parameters:
      x - x data (length n)
      Returns:
      a MultivariateJacobianFunction compatible with Commons Math least-squares
    • defaultInitialGuess

      protected double[] defaultInitialGuess(double[] x, double[] y, double[] weights)
      Description copied from class: ALeastSquaresFitter
      Default initial guess used if the caller does not provide an explicit override. The default implementation delegates to the ALeastSquaresFitter.initialGuesser.

      Subclasses may override if they have a better model-specific guess.

      Overrides:
      defaultInitialGuess in class ALeastSquaresFitter
      Parameters:
      x - x data
      y - y data
      weights - optional weights (may be null)
      Returns:
      initial parameter vector of length ALeastSquaresFitter.getParameterCount()
    • defaultValidator

      protected org.apache.commons.math3.fitting.leastsquares.ParameterValidator defaultValidator()
      Description copied from class: ALeastSquaresFitter
      Default validator/bounds policy (optional).

      Return null for "no validation". For simple bound constraints, consider using ALeastSquaresFitter.clampingValidator(double[], double[]).

      Overrides:
      defaultValidator in class ALeastSquaresFitter
      Returns:
      a parameter validator or null
    • fit

      public FitResult fit(double[] x, double[] y, double[] weights, MultiGaussianFitter.ParameterBounds bounds, double[] initialGuess)
      Expert overload: fit with optional weights, optional bounds, and optional initial guess.
      Parameters:
      x - x data
      y - y data
      weights - optional weights, may be null
      bounds - optional bounds, may be null
      initialGuess - optional guess, may be null
      Returns:
      fit result
    • asEvaluator

      public Evaluator asEvaluator(FitResult fit)
      Description copied from class: ALeastSquaresFitter
      Create an evaluator for the fit result.
      Specified by:
      asEvaluator in class ALeastSquaresFitter
      Parameters:
      fit - the fit result
      Returns:
      an evaluator
    • modelName

      public String modelName()
      Returns:
      model name suitable for a legend or report
    • functionForm

      public String functionForm()
      Returns:
      mathematical function form suitable for display
    • parameterName

      public String parameterName(int index)
      Get the parameter name for the given index.
      Parameters:
      index - the parameter index
      Returns:
      the parameter name
    • getStringGetter

      public IFitStringGetter getStringGetter()
      Description copied from class: ALeastSquaresFitter
      Get the descriptive string getter for this fitter.
      Specified by:
      getStringGetter in class ALeastSquaresFitter
      Returns:
      the string getter