类 Variance
- 所有已实现的接口:
-
Serializable
,DoubleConsumer
,AggregatableStatistic<Variance>
,StorelessUnivariateStatistic
,UnivariateStatistic
,WeightedEvaluation
,MathArrays.Function
方差 = sum((x_i - mean)^2) / (n - 1)
其中mean是Mean
,n
是样本观测值的数量。
定义公式在数值上没有很好的性质,因此此实现不使用定义公式计算统计量。
getResult
方法使用基于West算法的更新公式计算方差,如Chan, T. F.和J. G. Lewis 1979年所述,ACM通讯,第22卷第9期,第526-531页。evaluate
方法利用它们在内存中具有完整值数组的事实执行两遍算法。具体来说,这些方法使用来自Chan, Golub, Levesque的“修正的两遍算法”,用于计算样本方差的算法,美国统计学家,第37卷,第3期(1983年)第242-247页。
请注意,使用increment
或incrementAll
添加值,然后执行getResult
有时会给出不同且不太准确的结果,而使用完整值数组执行evaluate
。前一种方法仅在无法使用完整值数组时使用。
也可以使用此统计量计算“总体方差”(sum((x_i - mean)^2) / n)。isBiasCorrected
属性确定evaluate
和getResult
方法返回“总体”还是“样本”值。要计算总体方差,请将此属性设置为false。
请注意,此实现未同步。如果多个线程同时访问此类的实例,并且至少有一个线程调用increment()
或clear()
方法,则必须在外部进行同步。
- 另请参阅:
-
字段概要
-
构造器概要
构造器说明Variance()
使用默认(true)isBiasCorrected
属性构造一个方差。Variance
(boolean isBiasCorrected) 使用指定的isBiasCorrected
属性构造一个方差。Variance
(boolean isBiasCorrected, SecondMoment m2) 使用指定的isBiasCorrected
属性和提供的外部第二矩构造一个方差。Variance
(SecondMoment m2) 基于外部第二矩构造一个方差。复制构造函数,创建与original
相同的新Variance
。 -
方法概要
修饰符和类型方法说明void
将提供的实例聚合到此实例中。void
clear()
清除统计量的内部状态copy()
返回具有相同内部状态的统计量的副本。double
evaluate
(double[] values, double mean) 返回输入数组中条目的方差,使用预先计算的均值。double
evaluate
(double[] values, double[] weights, double mean) 返回输入数组中值的加权方差,使用预先计算的加权均值。double
evaluate
(double[] values, double[] weights, double mean, int begin, int length) 返回输入数组指定部分的值的加权方差,使用预先计算的加权均值。double
evaluate
(double[] values, double[] weights, int begin, int length) 返回指定输入数组部分的值的加权方差,如果指定的子数组为空,则返回Double.NaN
。double
evaluate
(double[] values, double mean, int begin, int length) 返回输入数组指定部分的值的方差,使用预先计算的均值。double
evaluate
(double[] values, int begin, int length) 返回输入数组指定部分的值的方差,如果指定的子数组为空,则返回Double.NaN
。long
getN()
返回已添加的值的数量。double
返回统计量的当前值。void
increment
(double d) 更新统计量的内部状态,以反映新值的添加。boolean
检查是否已校正偏差。withBiasCorrection
(boolean biasCorrection) 返回具有给定偏差校正设置的此方差的新副本。从类继承的方法 org.hipparchus.stat.descriptive.AbstractStorelessUnivariateStatistic
equals, hashCode, toString
从接口继承的方法 org.hipparchus.stat.descriptive.AggregatableStatistic
aggregate, aggregate
从接口继承的方法 java.util.function.DoubleConsumer
andThen
从接口继承的方法 org.hipparchus.stat.descriptive.StorelessUnivariateStatistic
accept, incrementAll, incrementAll
从接口继承的方法 org.hipparchus.stat.descriptive.UnivariateStatistic
evaluate
从接口继承的方法 org.hipparchus.stat.descriptive.WeightedEvaluation
evaluate
-
字段详细资料
-
moment
SecondMoment用于增量计算方差 -
incMoment
protected final boolean incMoment是否应该增加内部第二矩。当使用外部SecondMoment作为构造函数参数构造方差时,此属性设置为false,增量必须直接应用于第二矩。
-
-
构造器详细资料
-
Variance
public Variance()使用默认(true)isBiasCorrected
属性构造一个方差。 -
Variance
基于外部第二矩构造一个方差。使用此构造函数时,统计量只能通过矩增量化,即,
increment(double)
不起作用;而m2.increment(value)
会增加m2
和从中构造的方差实例。- 参数:
-
m2
- 第二矩(第三或第四矩也适用)
-
Variance
public Variance(boolean isBiasCorrected) 使用指定的isBiasCorrected
属性构造一个方差。- 参数:
-
isBiasCorrected
- 偏差校正设置 - true表示将校正偏差,等效于使用无参数构造函数
-
Variance
使用指定的isBiasCorrected
属性和提供的外部第二矩构造一个方差。- 参数:
-
isBiasCorrected
- 偏差校正设置 - true表示将校正偏差 -
m2
- 第二矩(第三或第四矩也适用)
-
Variance
复制构造函数,创建与original
相同的新Variance
。- 参数:
-
original
- 要复制的Variance
实例 - 抛出:
-
NullArgumentException
- 如果original为null
-
-
方法详细资料
-
increment
public void increment(double d) 更新统计量的内部状态,以反映新值的添加。如果所有值都可用,则使用
UnivariateStatistic.evaluate(double[])
比使用此方法逐个添加值然后执行getResult()
更准确,因为evaluate
利用具有完整值列表的事实一起执行两遍算法。请参阅Variance
。还要注意,当使用
Variance(SecondMoment)
创建方差时,此方法不起作用。在这种情况下,应直接增加SecondMoment。- 指定者:
-
increment
在接口中StorelessUnivariateStatistic
- 指定者:
-
increment
在类中AbstractStorelessUnivariateStatistic
- 参数:
-
d
- 新值。
-
getResult
public double getResult()返回统计量的当前值。- 指定者:
-
getResult
在接口中StorelessUnivariateStatistic
- 指定者:
-
getResult
在类中AbstractStorelessUnivariateStatistic
- 返回:
-
统计量的值,如果已清除或刚刚实例化,则为
Double.NaN
。
-
getN
public long getN()返回已添加值的数量。- 指定者:
-
getN
在接口中StorelessUnivariateStatistic
- 返回:
- 值的数量。
-
clear
public void clear()清除统计量的内部状态- 指定者:
-
clear
在接口中StorelessUnivariateStatistic
- 指定者:
-
clear
在类中AbstractStorelessUnivariateStatistic
-
aggregate
将提供的实例聚合到此实例中。此方法可用于组合在分区或子样本上计算的统计量 - 即,此操作后此实例的值应与在组合数据集上应用单个统计量时的值相同。
- 指定者:
-
aggregate
在接口中AggregatableStatistic<Variance>
- 参数:
-
other
- 要聚合到此实例中的实例
-
evaluate
返回输入数组指定部分的条目的方差,如果指定的子数组为空,则返回Double.NaN
。请注意,如果输入包含NaN和/或无限值,则也可能返回Double.NaN。有关计算算法的详细信息,请参见
Variance
。对于单个值(即长度=1)的样本,返回0。
不更改统计量的内部状态。
如果数组为null,则抛出
MathIllegalArgumentException
。- 指定者:
-
evaluate
在接口中MathArrays.Function
- 指定者:
-
evaluate
在接口中StorelessUnivariateStatistic
- 指定者:
-
evaluate
在接口中UnivariateStatistic
- 参数:
-
values
- 输入数组 -
begin
- 要包括的第一个数组元素的索引 -
length
- 要包括的元素数 - 返回:
- 值的方差,如果长度=0,则为Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果数组为null或数组索引参数无效 - 另请参阅:
-
evaluate
public double evaluate(double[] values, double[] weights, int begin, int length) throws MathIllegalArgumentException 返回输入数组指定部分的加权方差,如果指定的子数组为空,则返回Double.NaN
。使用公式
Σ(weights[i]*(values[i] - weightedMean)²)/(Σ(weights[i]) - 1)
其中weightedMean是加权平均值。当所有权重相等时,此公式将不返回与未加权方差相同的结果,除非所有权重都等于1。该公式假定权重应被视为“扩展值”,例如,如果权重代表频率计数,则将是这种情况。要使权重归一化,以便方差计算中的分母等于输入向量的长度减1,请使用
evaluate(values, MathArrays.normalizeArray(weights, values.length));
对于单个值(即长度=1)的样本,返回0。
如果以下任一情况为真,则抛出
IllegalArgumentException
:- 值数组为null
- 权重数组为null
- 权重数组的长度与值数组的长度不同
- 权重数组包含一个或多个无限值
- 权重数组包含一个或多个NaN值
- 权重数组包含负值
- 开始和长度参数未确定有效数组
不更改统计量的内部状态。
- 指定者:
-
evaluate
在接口中WeightedEvaluation
- 参数:
-
values
- 输入数组 -
weights
- 权重数组 -
begin
- 要包括的第一个数组元素的索引 -
length
- 要包括的元素数 - 返回:
- 值的加权方差,如果长度=0,则为Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果参数无效
-
evaluate
public double evaluate(double[] values, double mean, int begin, int length) throws MathIllegalArgumentException 返回输入数组指定部分的条目的方差,使用预先计算的平均值。如果指定的子数组为空,则返回Double.NaN
。有关计算算法的详细信息,请参见
Variance
。使用的公式假定提供的平均值是样本数据的算术平均值,而不是已知的总体参数。仅当已经计算了平均值时,才提供此方法以节省计算。
对于单个值(即长度=1)的样本,返回0。
不更改统计量的内部状态。
- 参数:
-
values
- 输入数组 -
mean
- 预先计算的平均值 -
begin
- 要包括的第一个数组元素的索引 -
length
- 要包括的元素数 - 返回:
- 值的方差,如果长度=0,则为Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果数组为null或数组索引参数无效
-
evaluate
返回输入数组的条目的方差,使用预先计算的平均值。如果数组为空,则返回Double.NaN
。有关计算算法的详细信息,请参见
Variance
。如果
isBiasCorrected
为true
,则使用的公式假定提供的平均值是样本数据的算术平均值,而不是已知的总体参数。如果平均值是已知的总体参数,或者如果需要总体版本的方差,请在调用此方法之前将isBiasCorrected
设置为false
。对于单个值(即长度=1)的样本,返回0。
不更改统计量的内部状态。
- 参数:
-
values
- 输入数组 -
mean
- 预先计算的平均值 - 返回:
- 值的方差,如果数组为空,则为Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果数组为null
-
evaluate
public double evaluate(double[] values, double[] weights, double mean, int begin, int length) throws MathIllegalArgumentException 返回指定部分输入数组中条目的加权方差,使用预先计算的加权均值。如果指定的子数组为空,则返回Double.NaN
。使用以下公式
Σ(weights[i]*(values[i] - mean)²)/(Σ(weights[i]) - 1)
使用的公式假定提供的均值是样本数据的加权算术平均值,而不是已知的总体参数。此方法仅用于在已计算均值时节省计算。
当所有权重不相等时,此公式将不会返回与未加权方差相同的结果,除非所有权重均等于1。该公式假定权重应被视为“扩展值”,例如,如果权重代表频率计数,则情况将是如此。要规范化权重,使方差计算中的分母等于输入向量的长度减一,请使用
evaluate(values, MathArrays.normalizeArray(weights, values.length), mean);
对于单个值(即长度=1)样本,返回0。
如果以下任一情况为真,则抛出
MathIllegalArgumentException
:- 值数组为null
- 权重数组为null
- 权重数组的长度与值数组的长度不同
- 权重数组包含一个或多个无穷大值
- 权重数组包含一个或多个NaN值
- 权重数组包含负值
- 开始和长度参数未确定有效数组
不更改统计数据的内部状态。
- 参数:
-
values
- 输入数组 -
weights
- 权重数组 -
mean
- 预先计算的加权均值 -
begin
- 要包括的第一个数组元素的索引 -
length
- 要包括的元素数量 - 返回:
- 值的方差,如果长度=0,则返回Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果参数无效
-
evaluate
public double evaluate(double[] values, double[] weights, double mean) throws MathIllegalArgumentException 返回输入数组中值的加权方差,使用预先计算的加权均值。使用以下公式
Σ(weights[i]*(values[i] - mean)²)/(Σ(weights[i]) - 1)
使用的公式假定提供的均值是样本数据的加权算术平均值,而不是已知的总体参数。此方法仅用于在已计算均值时节省计算。
当所有权重不相等时,此公式将不会返回与未加权方差相同的结果,除非所有权重均等于1。该公式假定权重应被视为“扩展值”,例如,如果权重代表频率计数,则情况将是如此。要规范化权重,使方差计算中的分母等于输入向量的长度减一,请使用
evaluate(values, MathArrays.normalizeArray(weights, values.length), mean);
对于单个值(即长度=1)样本,返回0。
如果以下任一情况为真,则抛出
MathIllegalArgumentException
:- 值数组为null
- 权重数组为null
- 权重数组的长度与值数组的长度不同
- 权重数组包含一个或多个无穷大值
- 权重数组包含一个或多个NaN值
- 权重数组包含负值
不更改统计数据的内部状态。
- 参数:
-
values
- 输入数组 -
weights
- 权重数组 -
mean
- 预先计算的加权均值 - 返回:
- 值的方差,如果长度=0,则返回Double.NaN
- 抛出:
-
MathIllegalArgumentException
- 如果参数无效
-
isBiasCorrected
public boolean isBiasCorrected()检查是否已校正偏差。- 返回:
- 返回isBiasCorrected。
-
withBiasCorrection
返回具有给定偏差校正设置的此方差的新副本。- 参数:
-
biasCorrection
- 要设置的偏差校正标志。 - 返回:
- 具有给定偏差校正设置的此实例的副本
-
copy
返回具有相同内部状态的统计数据的副本。- 指定者:
-
copy
在接口中StorelessUnivariateStatistic
- 指定者:
-
copy
在接口中UnivariateStatistic
- 指定者:
-
copy
在类中AbstractStorelessUnivariateStatistic
- 返回:
- 统计数据的副本
-