Class LoessInterpolator
java.lang.Object
org.hipparchus.analysis.interpolation.LoessInterpolator
- All Implemented Interfaces:
Serializable
,UnivariateInterpolator
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:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final double
Default value for accuracy.static final double
Default value of the bandwidth parameter.static final int
Default value of the number of robustness iterations. -
Constructor Summary
ConstructorDescriptionConstructs a newLoessInterpolator
with a bandwidth ofDEFAULT_BANDWIDTH
,DEFAULT_ROBUSTNESS_ITERS
robustness iterations and an accuracy of {#link #DEFAULT_ACCURACY}.LoessInterpolator
(double bandwidth, int robustnessIters) Construct a newLoessInterpolator
with given bandwidth and number of robustness iterations.LoessInterpolator
(double bandwidth, int robustnessIters, double accuracy) Construct a newLoessInterpolator
with given bandwidth, number of robustness iterations and accuracy. -
Method Summary
Modifier and TypeMethodDescriptionfinal PolynomialSplineFunction
interpolate
(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 aSplineInterpolator
on the resulting fit.final double[]
smooth
(double[] xval, double[] yval) Compute a loess fit on the data at the original abscissae.final double[]
smooth
(double[] xval, double[] yval, double[] weights) Compute a weighted loess fit on the data at the original abscissae.
-
Field Details
-
DEFAULT_BANDWIDTH
public static final double DEFAULT_BANDWIDTHDefault value of the bandwidth parameter.- See Also:
-
DEFAULT_ROBUSTNESS_ITERS
public static final int DEFAULT_ROBUSTNESS_ITERSDefault value of the number of robustness iterations.- See Also:
-
DEFAULT_ACCURACY
public static final double DEFAULT_ACCURACYDefault value for accuracy.- See Also:
-
-
Constructor Details
-
LoessInterpolator
public LoessInterpolator()Constructs a newLoessInterpolator
with a bandwidth ofDEFAULT_BANDWIDTH
,DEFAULT_ROBUSTNESS_ITERS
robustness 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 newLoessInterpolator
with 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
public LoessInterpolator(double bandwidth, int robustnessIters, double accuracy) throws MathIllegalArgumentException Construct a newLoessInterpolator
with 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
- ifrobustnessIters
is negative.- See Also:
-
-
Method Details
-
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 aSplineInterpolator
on the resulting fit.- Specified by:
interpolate
in 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
- ifxval
not sorted in strictly increasing order.MathIllegalArgumentException
- ifxval
andyval
have different sizes.MathIllegalArgumentException
- ifxval
oryval
has 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 MathIllegalArgumentException Compute 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
- ifxval
not sorted in strictly increasing order.MathIllegalArgumentException
- ifxval
andyval
have different sizes.MathIllegalArgumentException
- ifxval
oryval
has 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
Compute 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
- ifxval
not sorted in strictly increasing order.MathIllegalArgumentException
- ifxval
andyval
have different sizes.MathIllegalArgumentException
- ifxval
oryval
has 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).
-