Package edu.cnu.mdi.splot.fit
Class MultiGaussianFitter
java.lang.Object
edu.cnu.mdi.splot.fit.ALeastSquaresFitter
edu.cnu.mdi.splot.fit.MultiGaussianFitter
- All Implemented Interfaces:
IFitStringGetter,IFitter
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_kfollowed by baseline B if enabled.
By default we enforce sigma_k >= DEFAULT_MIN_SIGMA for all
components.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classBounds for the full parameter vector. -
Field Summary
FieldsFields inherited from class edu.cnu.mdi.splot.fit.ALeastSquaresFitter
CAPSIG, checker, covarianceThreshold, initialGuesser, maxEvaluations, maxIterations, MU, OMEGA, optimizer, PHI, SMALLSIG, SUB0, SUB1, SUB2, subArray, SUBN, SUP0, SUP1, SUP2, SUPN -
Constructor Summary
ConstructorsConstructorDescriptionMultiGaussianFitter(int m, boolean includeBaseline) Create a MultiGaussianFitter.MultiGaussianFitter(int m, boolean includeBaseline, org.apache.commons.math3.fitting.leastsquares.LeastSquaresOptimizer optimizer) Create a MultiGaussianFitter. -
Method Summary
Modifier and TypeMethodDescriptionasEvaluator(FitResult fit) Create an evaluator for the fit result.protected double[]defaultInitialGuess(double[] x, double[] y, double[] weights) Default initial guess used if the caller does not provide an explicit override.protected org.apache.commons.math3.fitting.leastsquares.ParameterValidatorDefault validator/bounds policy (optional).fit(double[] x, double[] y, double[] weights, MultiGaussianFitter.ParameterBounds bounds, double[] initialGuess) Expert overload: fit with optional weights, optional bounds, and optional initial guess.protected intGet the descriptive string getter for this fitter.booleanprotected org.apache.commons.math3.fitting.leastsquares.MultivariateJacobianFunctionmodel(double[] x) Build the model + analytic (or numeric) Jacobian for this fitter, given x values.intNumber of Gaussian components.parameterName(int index) Get the parameter name for the given index.Methods inherited from class edu.cnu.mdi.splot.fit.ALeastSquaresFitter
buildFitResult, clampingValidator, fit, fit, fit, getChecker, getCovarianceThreshold, getMaxEvaluations, getMaxIterations, safeCovariances, validateWeights, validateXY, weightsFromSigmaY
-
Field Details
-
DEFAULT_MIN_SIGMA
public static final double DEFAULT_MIN_SIGMA- See Also:
-
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 termoptimizer- 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:
getParameterCountin classALeastSquaresFitter- Returns:
- number of parameters for this fitter.
-
model
protected org.apache.commons.math3.fitting.leastsquares.MultivariateJacobianFunction model(double[] x) Description copied from class:ALeastSquaresFitterBuild the model + analytic (or numeric) Jacobian for this fitter, given x values.- Specified by:
modelin classALeastSquaresFitter- Parameters:
x- x data (length n)- Returns:
- a
MultivariateJacobianFunctioncompatible with Commons Math least-squares
-
defaultInitialGuess
protected double[] defaultInitialGuess(double[] x, double[] y, double[] weights) Description copied from class:ALeastSquaresFitterDefault initial guess used if the caller does not provide an explicit override. The default implementation delegates to theALeastSquaresFitter.initialGuesser.Subclasses may override if they have a better model-specific guess.
- Overrides:
defaultInitialGuessin classALeastSquaresFitter- Parameters:
x- x datay- y dataweights- 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:ALeastSquaresFitterDefault validator/bounds policy (optional).Return null for "no validation". For simple bound constraints, consider using
ALeastSquaresFitter.clampingValidator(double[], double[]).- Overrides:
defaultValidatorin classALeastSquaresFitter- 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 datay- y dataweights- optional weights, may be nullbounds- optional bounds, may be nullinitialGuess- optional guess, may be null- Returns:
- fit result
-
asEvaluator
Description copied from class:ALeastSquaresFitterCreate an evaluator for the fit result.- Specified by:
asEvaluatorin classALeastSquaresFitter- Parameters:
fit- the fit result- Returns:
- an evaluator
-
modelName
- Returns:
- model name suitable for a legend or report
-
functionForm
- Returns:
- mathematical function form suitable for display
-
parameterName
Get the parameter name for the given index.- Parameters:
index- the parameter index- Returns:
- the parameter name
-
getStringGetter
Description copied from class:ALeastSquaresFitterGet the descriptive string getter for this fitter.- Specified by:
getStringGetterin classALeastSquaresFitter- Returns:
- the string getter
-