Class LoessInterpolator
- java.lang.Object
 - 
- org.hipparchus.analysis.interpolation.LoessInterpolator
 
 
- 
- All Implemented Interfaces:
 Serializable,UnivariateInterpolator
public class LoessInterpolator extends Object implements UnivariateInterpolator, Serializable
Implements the Local Regression Algorithm (also Loess, Lowess) for interpolation of real univariate functions.For reference, see William S. Cleveland - Robust Locally Weighted Regression and Smoothing Scatterplots
This class implements both the loess method and serves as an interpolation adapter to it, allowing one to build a spline on the obtained loess fit.
- See Also:
 - Serialized Form
 
 
- 
- 
Field Summary
Fields Modifier and Type Field Description static doubleDEFAULT_ACCURACYDefault value for accuracy.static doubleDEFAULT_BANDWIDTHDefault value of the bandwidth parameter.static intDEFAULT_ROBUSTNESS_ITERSDefault value of the number of robustness iterations. 
- 
Constructor Summary
Constructors Constructor Description LoessInterpolator()Constructs a newLoessInterpolatorwith a bandwidth ofDEFAULT_BANDWIDTH,DEFAULT_ROBUSTNESS_ITERSrobustness iterations and an accuracy of {#link #DEFAULT_ACCURACY}.LoessInterpolator(double bandwidth, int robustnessIters)Construct a newLoessInterpolatorwith given bandwidth and number of robustness iterations.LoessInterpolator(double bandwidth, int robustnessIters, double accuracy)Construct a newLoessInterpolatorwith given bandwidth, number of robustness iterations and accuracy. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PolynomialSplineFunctioninterpolate(double[] xval, double[] yval)Compute an interpolating function by performing a loess fit on the data at the original abscissae and then building a cubic spline with aSplineInterpolatoron the resulting fit.double[]smooth(double[] xval, double[] yval)Compute a loess fit on the data at the original abscissae.double[]smooth(double[] xval, double[] yval, double[] weights)Compute a weighted loess fit on the data at the original abscissae. 
 - 
 
- 
- 
Field Detail
- 
DEFAULT_BANDWIDTH
public static final double DEFAULT_BANDWIDTH
Default value of the bandwidth parameter.- See Also:
 - Constant Field Values
 
 
- 
DEFAULT_ROBUSTNESS_ITERS
public static final int DEFAULT_ROBUSTNESS_ITERS
Default value of the number of robustness iterations.- See Also:
 - Constant Field Values
 
 
- 
DEFAULT_ACCURACY
public static final double DEFAULT_ACCURACY
Default value for accuracy.- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Constructor Detail
- 
LoessInterpolator
public LoessInterpolator()
Constructs a newLoessInterpolatorwith a bandwidth ofDEFAULT_BANDWIDTH,DEFAULT_ROBUSTNESS_ITERSrobustness iterations and an accuracy of {#link #DEFAULT_ACCURACY}. SeeLoessInterpolator(double, int, double)for an explanation of the parameters. 
- 
LoessInterpolator
public LoessInterpolator(double bandwidth, int robustnessIters)Construct a newLoessInterpolatorwith given bandwidth and number of robustness iterations.Calling this constructor is equivalent to calling {link
LoessInterpolator(bandwidth, robustnessIters, LoessInterpolator.DEFAULT_ACCURACY)- Parameters:
 bandwidth- when computing the loess fit at a particular point, this fraction of source points closest to the current point is taken into account for computing a least-squares regression. A sensible value is usually 0.25 to 0.5, the default value isDEFAULT_BANDWIDTH.robustnessIters- This many robustness iterations are done. A sensible value is usually 0 (just the initial fit without any robustness iterations) to 4, the default value isDEFAULT_ROBUSTNESS_ITERS.- See Also:
 LoessInterpolator(double, int, double)
 
- 
LoessInterpolator
public LoessInterpolator(double bandwidth, int robustnessIters, double accuracy) throws MathIllegalArgumentExceptionConstruct a newLoessInterpolatorwith given bandwidth, number of robustness iterations and accuracy.- Parameters:
 bandwidth- when computing the loess fit at a particular point, this fraction of source points closest to the current point is taken into account for computing a least-squares regression. A sensible value is usually 0.25 to 0.5, the default value isDEFAULT_BANDWIDTH.robustnessIters- This many robustness iterations are done. A sensible value is usually 0 (just the initial fit without any robustness iterations) to 4, the default value isDEFAULT_ROBUSTNESS_ITERS.accuracy- If the median residual at a certain robustness iteration is less than this amount, no more iterations are done.- Throws:
 MathIllegalArgumentException- if bandwidth does not lie in the interval [0,1].MathIllegalArgumentException- ifrobustnessItersis negative.- See Also:
 LoessInterpolator(double, int)
 
 - 
 
- 
Method Detail
- 
interpolate
public final PolynomialSplineFunction interpolate(double[] xval, double[] yval) throws MathIllegalArgumentException
Compute an interpolating function by performing a loess fit on the data at the original abscissae and then building a cubic spline with aSplineInterpolatoron the resulting fit.- Specified by:
 interpolatein interfaceUnivariateInterpolator- Parameters:
 xval- the arguments for the interpolation pointsyval- the values for the interpolation points- Returns:
 - A cubic spline built upon a loess fit to the data at the original abscissae
 - Throws:
 MathIllegalArgumentException- ifxvalnot sorted in strictly increasing order.MathIllegalArgumentException- ifxvalandyvalhave different sizes.MathIllegalArgumentException- ifxvaloryvalhas zero size.MathIllegalArgumentException- if any of the arguments and values are not finite real numbers.MathIllegalArgumentException- if the bandwidth is too small to accomodate the size of the input data (i.e. the bandwidth must be larger than 2/n).
 
- 
smooth
public final double[] smooth(double[] xval, double[] yval, double[] weights) throws MathIllegalArgumentExceptionCompute a weighted loess fit on the data at the original abscissae.- Parameters:
 xval- Arguments for the interpolation points.yval- Values for the interpolation points.weights- point weights: coefficients by which the robustness weight of a point is multiplied.- Returns:
 - the values of the loess fit at corresponding original abscissae.
 - Throws:
 MathIllegalArgumentException- ifxvalnot sorted in strictly increasing order.MathIllegalArgumentException- ifxvalandyvalhave different sizes.MathIllegalArgumentException- ifxvaloryvalhas zero size.MathIllegalArgumentException- if any of the arguments and values are not finite real numbers.MathIllegalArgumentException- if the bandwidth is too small to accomodate the size of the input data (i.e. the bandwidth must be larger than 2/n).
 
- 
smooth
public final double[] smooth(double[] xval, double[] yval) throws MathIllegalArgumentExceptionCompute a loess fit on the data at the original abscissae.- Parameters:
 xval- the arguments for the interpolation pointsyval- the values for the interpolation points- Returns:
 - values of the loess fit at corresponding original abscissae
 - Throws:
 MathIllegalArgumentException- ifxvalnot sorted in strictly increasing order.MathIllegalArgumentException- ifxvalandyvalhave different sizes.MathIllegalArgumentException- ifxvaloryvalhas zero size.MathIllegalArgumentException- if any of the arguments and values are not finite real numbers.MathIllegalArgumentException- if the bandwidth is too small to accomodate the size of the input data (i.e. the bandwidth must be larger than 2/n).
 
 - 
 
 -