public class LoessInterpolator extends Object implements UnivariateInterpolator, Serializable
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.| Modifier and Type | Field and Description |
|---|---|
static double |
DEFAULT_ACCURACY
Default value for accuracy.
|
static double |
DEFAULT_BANDWIDTH
Default value of the bandwidth parameter.
|
static int |
DEFAULT_ROBUSTNESS_ITERS
Default value of the number of robustness iterations.
|
| Constructor and Description |
|---|
LoessInterpolator()
Constructs a new
LoessInterpolator
with a bandwidth of DEFAULT_BANDWIDTH,
DEFAULT_ROBUSTNESS_ITERS robustness iterations
and an accuracy of {#link #DEFAULT_ACCURACY}. |
LoessInterpolator(double bandwidth,
int robustnessIters)
Construct a new
LoessInterpolator
with given bandwidth and number of robustness iterations. |
LoessInterpolator(double bandwidth,
int robustnessIters,
double accuracy)
Construct a new
LoessInterpolator
with given bandwidth, number of robustness iterations and accuracy. |
| Modifier and Type | Method and Description |
|---|---|
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 a
SplineInterpolator
on 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.
|
public static final double DEFAULT_BANDWIDTH
public static final int DEFAULT_ROBUSTNESS_ITERS
public static final double DEFAULT_ACCURACY
public LoessInterpolator()
LoessInterpolator
with a bandwidth of DEFAULT_BANDWIDTH,
DEFAULT_ROBUSTNESS_ITERS robustness iterations
and an accuracy of {#link #DEFAULT_ACCURACY}.
See LoessInterpolator(double, int, double) for an explanation of
the parameters.public LoessInterpolator(double bandwidth,
int robustnessIters)
LoessInterpolator
with given bandwidth and number of robustness iterations.
Calling this constructor is equivalent to calling {link LoessInterpolator(bandwidth,
robustnessIters, LoessInterpolator.DEFAULT_ACCURACY)
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 is
DEFAULT_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 is
DEFAULT_ROBUSTNESS_ITERS.LoessInterpolator(double, int, double)public LoessInterpolator(double bandwidth,
int robustnessIters,
double accuracy)
throws OutOfRangeException,
NotPositiveException
LoessInterpolator
with given bandwidth, number of robustness iterations and accuracy.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 is
DEFAULT_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 is
DEFAULT_ROBUSTNESS_ITERS.accuracy - If the median residual at a certain robustness iteration
is less than this amount, no more iterations are done.OutOfRangeException - if bandwidth does not lie in the interval [0,1].NotPositiveException - if robustnessIters is negative.LoessInterpolator(double, int)public final PolynomialSplineFunction interpolate(double[] xval, double[] yval) throws NonMonotonicSequenceException, DimensionMismatchException, NoDataException, NotFiniteNumberException, NumberIsTooSmallException
SplineInterpolator
on the resulting fit.interpolate in interface UnivariateInterpolatorxval - the arguments for the interpolation pointsyval - the values for the interpolation pointsNonMonotonicSequenceException - if xval not sorted in
strictly increasing order.DimensionMismatchException - if xval and yval have
different sizes.NoDataException - if xval or yval has zero size.NotFiniteNumberException - if any of the arguments and values are
not finite real numbers.NumberIsTooSmallException - if the bandwidth is too small to
accomodate the size of the input data (i.e. the bandwidth must be
larger than 2/n).public final double[] smooth(double[] xval,
double[] yval,
double[] weights)
throws NonMonotonicSequenceException,
DimensionMismatchException,
NoDataException,
NotFiniteNumberException,
NumberIsTooSmallException
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.NonMonotonicSequenceException - if xval not sorted in
strictly increasing order.DimensionMismatchException - if xval and yval have
different sizes.NoDataException - if xval or yval has zero size.NotFiniteNumberException - if any of the arguments and values are
not finite real numbers.NumberIsTooSmallException - if the bandwidth is too small to
accomodate the size of the input data (i.e. the bandwidth must be
larger than 2/n).public final double[] smooth(double[] xval,
double[] yval)
throws NonMonotonicSequenceException,
DimensionMismatchException,
NoDataException,
NotFiniteNumberException,
NumberIsTooSmallException
xval - the arguments for the interpolation pointsyval - the values for the interpolation pointsNonMonotonicSequenceException - if xval not sorted in
strictly increasing order.DimensionMismatchException - if xval and yval have
different sizes.NoDataException - if xval or yval has zero size.NotFiniteNumberException - if any of the arguments and values are
not finite real numbers.NumberIsTooSmallException - if the bandwidth is too small to
accomodate the size of the input data (i.e. the bandwidth must be
larger than 2/n).Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.