Package org.apache.commons.math3.stat.descriptive.moment

# Class SecondMoment

java.lang.Object
org.apache.commons.math3.stat.descriptive.AbstractUnivariateStatistic
org.apache.commons.math3.stat.descriptive.AbstractStorelessUnivariateStatistic
org.apache.commons.math3.stat.descriptive.moment.SecondMoment

All Implemented Interfaces:
  `Serializable`, `StorelessUnivariateStatistic`, `UnivariateStatistic`, `MathArrays.Function`

public class SecondMoment extends AbstractStorelessUnivariateStatistic implements Serializable
Computes a statistic related to the Second Central Moment. Specifically, what is computed is the sum of squared deviations from the sample mean.

The following recursive updating formula is used:

Let

- dev = (current obs - previous mean)
- n = number of observations (including current obs)

Then

new value = old value + dev^2 * (n -1) / n.

Returns `Double.NaN` if no data values have been added and returns `0` if there is just one value in the data set. Note that Double.NaN may also be returned if the input includes NaN and / or infinite values.

Note that this implementation is not synchronized. If multiple threads access an instance of this class concurrently, and at least one of the threads invokes the `increment()` or `clear()` method, it must be synchronized externally.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`protected double`
`dev`
Deviation of most recently added value from previous first moment.
`protected double`
`m1`
First moment of values that have been added
`protected double`
`m2`
second moment of values that have been added
`protected long`
`n`
Count of values that have been added
`protected double`
`nDev`
Deviation of most recently added value from previous first moment, normalized by previous sample size.

## Constructor Summary

Constructors
Constructor
Description
`SecondMoment()`
Create a SecondMoment instance
`SecondMoment(SecondMoment original)`
Copy constructor, creates a new `SecondMoment` identical to the `original`

## Method Summary

Modifier and Type
Method
Description
`void`
`clear()`
Clears the internal state of the Statistic
`SecondMoment`
`copy()`
Returns a copy of the statistic with the same internal state.
`static void`
`copy(org.apache.commons.math3.stat.descriptive.moment.FirstMoment source, org.apache.commons.math3.stat.descriptive.moment.FirstMoment dest)`
Copies source to dest.
`static void`
`copy(SecondMoment source, SecondMoment dest)`
Copies source to dest.
`long`
`getN()`
Returns the number of values that have been added.
`double`
`getResult()`
Returns the current value of the Statistic.
`void`
`increment(double d)`
Updates the internal state of the statistic to reflect the addition of the new value.

### Methods inherited from class org.apache.commons.math3.stat.descriptive.AbstractStorelessUnivariateStatistic

`equals, evaluate, evaluate, hashCode, incrementAll, incrementAll`

### Methods inherited from class org.apache.commons.math3.stat.descriptive.AbstractUnivariateStatistic

`evaluate, getData, getDataRef, setData, setData, test, test, test, test`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### m2

protected double m2
second moment of values that have been added

### n

protected long n
Count of values that have been added

### m1

protected double m1
First moment of values that have been added

### dev

protected double dev
Deviation of most recently added value from previous first moment. Retained to prevent repeated computation in higher order moments.

### nDev

protected double nDev
Deviation of most recently added value from previous first moment, normalized by previous sample size. Retained to prevent repeated computation in higher order moments

## Constructor Details

### SecondMoment

public SecondMoment()
Create a SecondMoment instance

### SecondMoment

public SecondMoment(SecondMoment original) throws NullArgumentException
Copy constructor, creates a new `SecondMoment` identical to the `original`

Parameters:
  `original` - the `SecondMoment` instance to copy
Throws:
  `NullArgumentException` - if original is null

## Method Details

### increment

public void increment(double d)
Updates the internal state of the statistic to reflect the addition of the new value.

Specified by:
  `increment` in interface `StorelessUnivariateStatistic`
Parameters:
  `d` - the new value.

### clear

public void clear()
Clears the internal state of the Statistic

Specified by:
  `clear` in interface `StorelessUnivariateStatistic`

### getResult

public double getResult()
Returns the current value of the Statistic.

Specified by:
  `getResult` in interface `StorelessUnivariateStatistic`
Returns:
  value of the statistic, `Double.NaN` if it has been cleared or just instantiated.

### copy

public SecondMoment copy()
Returns a copy of the statistic with the same internal state.

Specified by:
  `copy` in interface `StorelessUnivariateStatistic`
Specified by:
  `copy` in interface `UnivariateStatistic`
Returns:
  a copy of the statistic

### copy

public static void copy(SecondMoment source, SecondMoment dest) throws NullArgumentException
Copies source to dest.

Neither source nor dest can be null.

Parameters:
  `source` - SecondMoment to copy
  `dest` - SecondMoment to copy to
Throws:
  `NullArgumentException` - if either source or dest is null

### getN

public long getN()
Returns the number of values that have been added.

Specified by:
  `getN` in interface `StorelessUnivariateStatistic`
Returns:
  the number of values.

### copy

public static void copy(org.apache.commons.math3.stat.descriptive.moment.FirstMoment source, org.apache.commons.math3.stat.descriptive.moment.FirstMoment dest) throws NullArgumentException
Copies source to dest.

Neither source nor dest can be null.

Parameters:
  `source` - FirstMoment to copy
  `dest` - FirstMoment to copy to
Throws:
  `NullArgumentException` - if either source or dest is null