public class SemiVariance extends AbstractUnivariateStatistic implements Serializable
Computes the semivariance of a set of values with respect to a given cutoff value. We define the downside
semivariance of a set of values x
against the cutoff value cutoff
to be
Σ (x[i] - target)2 / df
where the sum is taken over all i
such that x[i] < cutoff
and df
is the length
of x
(non-bias-corrected) or one less than this number (bias corrected). The upside semivariance
is defined similarly, with the sum taken over values of x
that exceed the cutoff value.
The cutoff value defaults to the mean, bias correction defaults to true
and the "variance direction"
(upside or downside) defaults to downside. The variance direction and bias correction may be set using property
setters or their values can provided as parameters to
evaluate(double[], double, Direction, boolean, int, int)
.
If the input array is null, evaluate
methods throw IllegalArgumentException.
If the array
has length 1, 0
is returned, regardless of the value of the cutoff.
Note that this class is not intended to be threadsafe. If multiple threads access an instance of this class concurrently, and one or more of these threads invoke property setters, external synchronization must be provided to ensure correct results.
Modifier and Type | Class and Description |
---|---|
static class |
SemiVariance.Direction
The direction of the semivariance - either upside or downside.
|
Modifier and Type | Field and Description |
---|---|
static SemiVariance.Direction |
DOWNSIDE_VARIANCE
The DOWNSIDE Direction is used to specify that the observations below
the cutoff point will be used to calculate SemiVariance
|
static SemiVariance.Direction |
UPSIDE_VARIANCE
The UPSIDE Direction is used to specify that the observations above the
cutoff point will be used to calculate SemiVariance.
|
Constructor and Description |
---|
SemiVariance()
Constructs a SemiVariance with default (true)
biasCorrected property and default (Downside)
varianceDirection property. |
SemiVariance(boolean biasCorrectedIn)
Constructs a SemiVariance with the specified
biasCorrected property and default (Downside)
varianceDirection property. |
SemiVariance(boolean corrected,
SemiVariance.Direction direction)
Constructs a SemiVariance with the specified
isBiasCorrected property and the specified
Direction property. |
SemiVariance(SemiVariance.Direction direction)
Constructs a SemiVariance with the specified
Direction property
and default (true) biasCorrected property |
SemiVariance(SemiVariance original)
Copy constructor, creates a new
SemiVariance identical
to the original |
Modifier and Type | Method and Description |
---|---|
SemiVariance |
copy()
Returns a copy of the statistic with the same internal state.
|
static void |
copy(SemiVariance source,
SemiVariance dest)
Copies source to dest.
|
double |
evaluate(double[] values,
double cutoff)
Returns the
SemiVariance of the designated values against the cutoff, using instance properties
variancDirection and biasCorrection. |
double |
evaluate(double[] values,
double cutoff,
SemiVariance.Direction direction)
Returns the
SemiVariance of the designated values against the cutoff in the given direction, using the
current value of the biasCorrection instance property. |
double |
evaluate(double[] values,
double cutoff,
SemiVariance.Direction direction,
boolean corrected,
int start,
int length)
Returns the
SemiVariance of the designated values against the cutoff in the given direction with the
provided bias correction. |
double |
evaluate(double[] values,
int start,
int length)
Returns the
SemiVariance of the designated values against the mean, using instance properties
varianceDirection and biasCorrection. |
double |
evaluate(double[] values,
SemiVariance.Direction direction)
This method calculates
SemiVariance for the entire array against the mean, using
the current value of the biasCorrection instance property. |
SemiVariance.Direction |
getVarianceDirection()
Returns the varianceDirection property.
|
boolean |
isBiasCorrected()
Returns true iff biasCorrected property is set to true.
|
void |
setBiasCorrected(boolean biasCorrectedIn)
Sets the biasCorrected property.
|
void |
setVarianceDirection(SemiVariance.Direction varianceDirectionIn)
Sets the variance direction
|
public static final SemiVariance.Direction UPSIDE_VARIANCE
public static final SemiVariance.Direction DOWNSIDE_VARIANCE
public SemiVariance()
biasCorrected
property and default (Downside)
varianceDirection
property.public SemiVariance(boolean biasCorrectedIn)
biasCorrected
property and default (Downside)
varianceDirection
property.biasCorrectedIn
- setting for bias correction - true means
bias will be corrected and is equivalent to using the argumentless
constructorpublic SemiVariance(SemiVariance.Direction direction)
Direction
property
and default (true) biasCorrected
propertydirection
- setting for the direction of the SemiVariance
to calculatepublic SemiVariance(boolean corrected, SemiVariance.Direction direction)
isBiasCorrected
property and the specified
Direction
property.corrected
- setting for bias correction - true means
bias will be corrected and is equivalent to using the argumentless
constructordirection
- setting for the direction of the SemiVariance
to calculatepublic SemiVariance(SemiVariance original)
SemiVariance
identical
to the original
original
- the SemiVariance
instance to copyNullArgumentException
- if original is nullpublic SemiVariance copy()
copy
in interface UnivariateStatistic
copy
in class AbstractUnivariateStatistic
public static void copy(SemiVariance source, SemiVariance dest)
Neither source nor dest can be null.
source
- SemiVariance to copydest
- SemiVariance to copy toNullArgumentException
- if either source or dest is nullpublic double evaluate(double[] values, int start, int length)
Returns the SemiVariance
of the designated values against the mean, using instance properties
varianceDirection and biasCorrection.
Returns NaN
if the array is empty and throws IllegalArgumentException
if the array is
null.
evaluate
in interface UnivariateStatistic
evaluate
in interface MathArrays.Function
evaluate
in class AbstractUnivariateStatistic
values
- the input arraystart
- index of the first array element to includelength
- the number of elements to includeMathIllegalArgumentException
- if the parameters are not validpublic double evaluate(double[] values, SemiVariance.Direction direction)
SemiVariance
for the entire array against the mean, using
the current value of the biasCorrection instance property.values
- the input arraydirection
- the SemiVariance.Direction
of the semivarianceMathIllegalArgumentException
- if values is nullpublic double evaluate(double[] values, double cutoff)
Returns the SemiVariance
of the designated values against the cutoff, using instance properties
variancDirection and biasCorrection.
Returns NaN
if the array is empty and throws MathIllegalArgumentException
if the array
is null.
values
- the input arraycutoff
- the reference pointMathIllegalArgumentException
- if values is nullpublic double evaluate(double[] values, double cutoff, SemiVariance.Direction direction)
Returns the SemiVariance
of the designated values against the cutoff in the given direction, using the
current value of the biasCorrection instance property.
Returns NaN
if the array is empty and throws MathIllegalArgumentException
if the array
is null.
values
- the input arraycutoff
- the reference pointdirection
- the SemiVariance.Direction
of the semivarianceMathIllegalArgumentException
- if values is nullpublic double evaluate(double[] values, double cutoff, SemiVariance.Direction direction, boolean corrected, int start, int length)
Returns the SemiVariance
of the designated values against the cutoff in the given direction with the
provided bias correction.
Returns NaN
if the array is empty and throws IllegalArgumentException
if the array is
null.
values
- the input arraycutoff
- the reference pointdirection
- the SemiVariance.Direction
of the semivariancecorrected
- the BiasCorrection flagstart
- index of the first array element to includelength
- the number of elements to includeMathIllegalArgumentException
- if the parameters are not validpublic boolean isBiasCorrected()
public void setBiasCorrected(boolean biasCorrectedIn)
biasCorrectedIn
- new biasCorrected property valuepublic SemiVariance.Direction getVarianceDirection()
public void setVarianceDirection(SemiVariance.Direction varianceDirectionIn)
varianceDirectionIn
- the direction of the semivarianceCopyright © 2019 CNES. All Rights Reserved.