程序包 org.hipparchus.stat

类 StatUtils

java.lang.Object
org.hipparchus.stat.StatUtils

public final class StatUtils extends Object
StatUtils提供了基于存储在double[]数组中的数据计算统计量的静态方法。
  • 方法概要

    修饰符和类型
    方法
    说明
    static double
    geometricMean(double... values)
    返回输入数组中条目的几何平均值,如果数组为空则返回Double.NaN
    static double
    geometricMean(double[] values, int begin, int length)
    返回指定部分输入数组中条目的几何平均值,如果指定的子数组为空则返回Double.NaN
    static double
    max(double... values)
    返回输入数组中的条目的最大值,如果数组为空则返回Double.NaN
    static double
    max(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的最大值,如果指定的子数组为空则返回Double.NaN
    static double
    mean(double... values)
    返回输入数组中的条目的算术平均值,如果数组为空则返回Double.NaN
    static double
    mean(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的算术平均值,如果指定的子数组为空则返回Double.NaN
    static double
    meanDifference(double[] sample1, double[] sample2)
    返回输入数组的(有符号)差异的均值,即sum(sample1[i] - sample2[i]) / sample1.length。
    static double
    min(double... values)
    返回输入数组中的条目的最小值,如果数组为空则返回Double.NaN
    static double
    min(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的最小值,如果指定的子数组为空则返回Double.NaN
    static double[]
    mode(double... sample)
    返回样本的众数。
    static double[]
    mode(double[] sample, int begin, int length)
    返回样本的众数。
    static double[]
    normalize(double... sample)
    将样本标准化,使其均值为0,标准差为1。
    static double
    percentile(double[] values, double p)
    返回values数组中值的第p百分位数的估计值。
    static double
    percentile(double[] values, int begin, int length, double p)
    返回values数组中值的第p百分位数的估计值,从数组中的第begin位置(基于0)开始,包括length个值。
    static double
    populationVariance(double... values)
    返回输入数组中的条目的总体方差,如果数组为空则返回Double.NaN
    static double
    populationVariance(double[] values, double mean)
    返回输入数组中的条目的总体方差,使用预先计算的均值。
    static double
    populationVariance(double[] values, double mean, int begin, int length)
    返回指定部分输入数组中的条目的总体方差,使用预先计算的均值。
    static double
    populationVariance(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的总体方差,如果指定的子数组为空则返回Double.NaN
    static double
    product(double... values)
    返回输入数组中的条目的乘积,如果数组为空则返回Double.NaN
    static double
    product(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的乘积,如果指定的子数组为空则返回Double.NaN
    static double
    sum(double... values)
    返回输入数组中值的总和,如果数组为空则返回Double.NaN
    static double
    sum(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的总和,如果指定的子数组为空则返回Double.NaN
    static double
    sumDifference(double[] sample1, double[] sample2)
    返回输入数组中对应元素的(有符号)差异的总和,即sum(sample1[i] - sample2[i])。
    static double
    sumLog(double... values)
    返回输入数组中条目的自然对数的总和,如果数组为空则返回Double.NaN
    static double
    sumLog(double[] values, int begin, int length)
    返回指定部分输入数组中条目的自然对数的总和,如果指定的子数组为空则返回Double.NaN
    static double
    sumSq(double... values)
    返回输入数组中条目的平方和,如果数组为空则返回Double.NaN
    static double
    sumSq(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的平方和,如果指定的子数组为空则返回Double.NaN
    static double
    variance(double... values)
    返回输入数组中的条目的方差,如果数组为空则返回Double.NaN
    static double
    variance(double[] values, double mean)
    返回输入数组中的条目的方差,使用预先计算的均值。
    static double
    variance(double[] values, double mean, int begin, int length)
    返回指定部分输入数组中的条目的方差,使用预先计算的均值。
    static double
    variance(double[] values, int begin, int length)
    返回指定部分输入数组中的条目的方差,如果指定的子数组为空则返回Double.NaN
    static double
    varianceDifference(double[] sample1, double[] sample2, double meanDifference)
    返回输入数组中对应元素的(有符号)差异的方差,即var(sample1[i] - sample2[i])。

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 方法详细资料

    • sum

      public static double sum(double... values) throws MathIllegalArgumentException
      返回输入数组中的值的总和,如果数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 要求和的值数组
      返回:
      值的总和,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • sum

      public static double sum(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回指定部分输入数组中的条目的总和,如果指定的子数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 输入数组
      begin - 要包括的第一个数组元素的索引
      length - 要包括的元素数量
      返回:
      值的总和,如果length = 0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • sumSq

      public static double sumSq(double... values) throws MathIllegalArgumentException
      返回输入数组中的条目的平方和,如果数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 输入数组
      返回:
      平方值的总和,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • sumSq

      public static double sumSq(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回指定部分输入数组中的条目的平方和,如果指定的子数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 输入数组
      begin - 要包括的第一个数组元素的索引
      length - 要包括的元素数量
      返回:
      值的平方和,如果length = 0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • product

      public static double product(double... values) throws MathIllegalArgumentException
      返回输入数组中的条目的乘积,如果数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 输入数组
      返回:
      值的乘积,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • product

      public static double product(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回指定部分输入数组中的条目的乘积,如果指定的子数组为空则返回Double.NaN

      如果输入数组为null,则抛出IllegalArgumentException

      参数:
      values - 输入数组
      begin - 要包括的第一个数组元素的索引
      length - 要包括的元素数量
      返回:
      值的乘积,如果length = 0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • sumLog

      public static double sumLog(double... values) throws MathIllegalArgumentException
      返回输入数组中各元素的自然对数之和,如果数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见SumOfLogs

      参数:
      values - 输入数组
      返回:
      输入值的自然对数之和,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • sumLog

      public static double sumLog(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分元素的自然对数之和,如果指定的子数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见SumOfLogs

      参数:
      values - 输入数组
      begin - 起始数组元素的索引
      length - 要包括的元素数量
      返回:
      输入值的自然对数之和,如果长度为0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • mean

      public static double mean(double... values) throws MathIllegalArgumentException
      返回输入数组中各元素的算术平均值,如果数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见Mean中的计算算法。

      参数:
      values - 输入数组
      返回:
      输入值的平均值,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • mean

      public static double mean(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分元素的算术平均值,如果指定的子数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见Mean中的计算算法。

      参数:
      values - 输入数组
      begin - 起始数组元素的索引
      length - 要包括的元素数量
      返回:
      输入值的平均值,如果长度为0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • geometricMean

      public static double geometricMean(double... values) throws MathIllegalArgumentException
      返回输入数组中各元素的几何平均值,如果数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见GeometricMean中的计算算法。

      参数:
      values - 输入数组
      返回:
      输入值的几何平均值,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • geometricMean

      public static double geometricMean(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分元素的几何平均值,如果指定的子数组为空则返回Double.NaN

      如果数组为null,则抛出IllegalArgumentException异常。

      详见GeometricMean中的计算算法。

      参数:
      values - 输入数组
      begin - 起始数组元素的索引
      length - 要包括的元素数量
      返回:
      输入值的几何平均值,如果长度为0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • variance

      public static double variance(double... values) throws MathIllegalArgumentException
      返回输入数组中各元素的方差,如果数组为空则返回Double.NaN

      此方法返回偏差校正的样本方差(分母使用n - 1)。使用populationVariance(double[])获取非偏差校正的总体方差。

      详见Variance中的计算算法。

      对于单个值(即长度为1)的样本,返回0。

      如果数组为null,则抛出MathIllegalArgumentException异常。

      参数:
      values - 输入数组
      返回:
      输入值的方差,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • variance

      public static double variance(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分元素的方差,如果指定的子数组为空则返回Double.NaN

      此方法返回偏差校正的样本方差(分母使用n - 1)。使用populationVariance(double[], int, int)获取非偏差校正的总体方差。

      详见Variance中的计算算法。

      对于单个值(即长度为1)的样本,返回0。

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException异常。

      参数:
      values - 输入数组
      begin - 起始数组元素的索引
      length - 要包括的元素数量
      返回:
      输入值的方差,如果长度为0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • variance

      public static double variance(double[] values, double mean, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分元素的方差,使用预先计算的均值。如果指定的子数组为空则返回Double.NaN

      此方法返回偏差校正的样本方差(分母使用n - 1)。使用populationVariance(double[], double, int, int)获取非偏差校正的总体方差。

      详见Variance中的计算算法。

      使用的公式假定提供的均值是样本数据的算术平均值,而不是已知的总体参数。此方法仅用于在已计算均值的情况下节省计算。

      对于单个值(即长度为1)的样本,返回0。

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException异常。

      参数:
      values - 输入数组
      mean - 预先计算的均值
      begin - 起始数组元素的索引
      length - 要包括的元素数量
      返回:
      输入值的方差,如果长度为0则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • variance

      public static double variance(double[] values, double mean) throws MathIllegalArgumentException
      返回输入数组中各元素的方差,使用预先计算的均值。如果数组为空则返回Double.NaN

      此方法返回偏差校正的样本方差(分母使用n - 1)。使用populationVariance(double[], double)获取非偏差校正的总体方差。

      详见Variance中的计算算法。

      使用的公式假定提供的均值是样本数据的算术平均值,而不是已知的总体参数。此方法仅用于在已计算均值的情况下节省计算。

      对于单个值(即长度为1)的样本,返回0。

      如果数组为null,则抛出MathIllegalArgumentException异常。

      参数:
      values - 输入数组
      mean - 预先计算的均值
      返回:
      输入值的方差,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • populationVariance

      public static double populationVariance(double... values) throws MathIllegalArgumentException
      返回输入数组中各元素的总体方差,如果数组为空则返回Double.NaN

      详见Variance中的计算公式和算法。

      对于单个值(即长度为1)的样本,返回0。

      如果数组为null,则抛出MathIllegalArgumentException异常。

      参数:
      values - 输入数组
      返回:
      输入值的总体方差,如果数组为空则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • populationVariance

      public static double populationVariance(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回指定输入数组部分的条目的总体方差,如果指定的子数组为空,则返回Double.NaN

      有关计算算法的详细信息,请参见Variance

      对于单个值(即长度=1)的样本,返回0。

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException

      参数:
      values - 输入数组
      begin - 要包含的第一个数组元素的索引
      length - 要包含的元素数量
      返回:
      值的总体方差,如果长度=0,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • populationVariance

      public static double populationVariance(double[] values, double mean, int begin, int length) throws MathIllegalArgumentException
      返回使用预先计算的均值的输入数组指定部分的总体方差,如果指定的子数组为空,则返回Double.NaN

      有关计算算法的详细信息,请参见Variance

      使用的公式假定提供的均值是样本数据的算术平均值,而不是已知的总体参数。此方法仅用于在已经计算均值时节省计算。

      对于单个值(即长度=1)的样本,返回0。

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException

      参数:
      values - 输入数组
      mean - 预先计算的均值
      begin - 要包含的第一个数组元素的索引
      length - 要包含的元素数量
      返回:
      值的总体方差,如果长度=0,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • populationVariance

      public static double populationVariance(double[] values, double mean) throws MathIllegalArgumentException
      返回使用预先计算的均值的输入数组的总体方差,如果数组为空,则返回Double.NaN

      有关计算算法的详细信息,请参见Variance

      使用的公式假定提供的均值是样本数据的算术平均值,而不是已知的总体参数。此方法仅用于在已经计算均值时节省计算。

      对于单个值(即长度=1)的样本,返回0。

      如果数组为null,则抛出MathIllegalArgumentException

      参数:
      values - 输入数组
      mean - 预先计算的均值
      返回:
      值的总体方差,如果数组为空,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • max

      public static double max(double... values) throws MathIllegalArgumentException
      返回输入数组中的条目的最大值,如果数组为空,则返回Double.NaN

      如果数组为null,则抛出MathIllegalArgumentException

      • 如果所有值均为NaN(即NaN值对统计量的值没有影响),则结果为NaN
      • 如果任何值等于Double.POSITIVE_INFINITY,则结果为Double.POSITIVE_INFINITY
      参数:
      values - 输入数组
      返回:
      值的最大值,如果数组为空,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • max

      public static double max(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分的条目的最大值,如果指定的子数组为空,则返回Double.NaN

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException

      • 如果所有值均为NaN(即NaN值对统计量的值没有影响),则结果为NaN
      • 如果任何值等于Double.POSITIVE_INFINITY,则结果为Double.POSITIVE_INFINITY
      参数:
      values - 输入数组
      begin - 要包含的第一个数组元素的索引
      length - 要包含的元素数量
      返回:
      值的最大值,如果长度=0,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • min

      public static double min(double... values) throws MathIllegalArgumentException
      返回输入数组中的条目的最小值,如果数组为空,则返回Double.NaN

      如果数组为null,则抛出MathIllegalArgumentException

      • 如果所有值均为NaN(即NaN值对统计量的值没有影响),则结果为NaN
      • 如果任何值等于Double.NEGATIVE_INFINITY,则结果为Double.NEGATIVE_INFINITY
      参数:
      values - 输入数组
      返回:
      值的最小值,如果数组为空,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null
    • min

      public static double min(double[] values, int begin, int length) throws MathIllegalArgumentException
      返回输入数组指定部分的条目的最小值,如果指定的子数组为空,则返回Double.NaN

      如果数组为null或数组索引参数无效,则抛出MathIllegalArgumentException

      • 如果所有值均为NaN(即NaN值对统计量的值没有影响),则结果为NaN
      • 如果任何值等于Double.NEGATIVE_INFINITY,则结果为Double.NEGATIVE_INFINITY
      参数:
      values - 输入数组
      begin - 要包含的第一个数组元素的索引
      length - 要包含的元素数量
      返回:
      值的最小值,如果长度=0,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果数组为null或数组索引参数无效
    • percentile

      public static double percentile(double[] values, double p) throws MathIllegalArgumentException
      返回values数组中值的p百分位数的估计。
      • 如果values的长度为0,则返回Double.NaN
      • 如果values的长度为1,则无论p的值如何,返回values[0]
      • 如果values为null或p不是有效的分位数值(p必须大于0且小于或等于100),则抛出IllegalArgumentException

      有关使用的百分位数估算算法的描述,请参见Percentile

      参数:
      values - 值的输入数组
      p - 要计算的百分位数值
      返回:
      百分位数值,如果数组为空,则返回Double.NaN
      抛出:
      MathIllegalArgumentException - 如果values为null或p无效
    • percentile

      public static double percentile(double[] values, int begin, int length, double p) throws MathIllegalArgumentException
      返回values数组中值的p百分位数的估计,从数组中(从0开始)位置begin的元素开始,包括length个值。
      • 如果length = 0,则返回Double.NaN
      • 如果length = 1,则无论p的值如何,返回values[begin]
      • 如果values为null,beginlength无效,或p不是有效的分位数值(p必须大于0且小于或等于100),则抛出MathIllegalArgumentException

      有关使用的百分位数估算算法的描述,请参见Percentile

      参数:
      values - 值的输入数组
      begin - 要包含在计算中的第一个(从0开始)元素
      length - 要包含的数组元素数量
      p - 要计算的百分位数
      返回:
      百分位数值
      抛出:
      MathIllegalArgumentException - 如果参数无效或输入数组为null
    • sumDifference

      public static double sumDifference(double[] sample1, double[] sample2) throws MathIllegalArgumentException
      返回输入数组的对应元素之间的(有符号)差值之和--即,sum(sample1[i] - sample2[i])。
      参数:
      sample1 - 第一个数组
      sample2 - 第二个数组
      返回:
      成对差值的总和
      抛出:
      MathIllegalArgumentException - 如果数组长度不同(均为正)
      MathIllegalArgumentException - 如果样本数组为空
    • meanDifference

      public static double meanDifference(double[] sample1, double[] sample2) throws MathIllegalArgumentException
      返回输入数组的对应元素之间的(有符号)差值的平均值--即,sum(sample1[i] - sample2[i]) / sample1.length。
      参数:
      sample1 - 第一个数组
      sample2 - 第二个数组
      返回:
      成对差异的均值
      抛出:
      MathIllegalArgumentException - 如果数组长度不相同(且为正)。
      MathIllegalArgumentException - 如果样本数组为空。
    • varianceDifference

      public static double varianceDifference(double[] sample1, double[] sample2, double meanDifference) throws MathIllegalArgumentException
      返回输入数组对应元素之间(即var(sample1[i] - sample2[i]))的方差。
      参数:
      sample1 - 第一个数组
      sample2 - 第二个数组
      meanDifference - 对应条目之间的均值差异
      返回:
      成对差异的方差
      抛出:
      MathIllegalArgumentException - 如果数组长度不相同。
      MathIllegalArgumentException - 如果数组长度小于2。
      另请参阅:
    • normalize

      public static double[] normalize(double... sample)
      将样本标准化,使其均值为0,标准差为1。
      参数:
      sample - 要标准化的样本
      返回:
      标准化后的样本。
    • mode

      public static double[] mode(double... sample) throws MathIllegalArgumentException
      返回样本的众数。

      众数是样本中出现频率最高的值。如果有一个唯一的具有最大频率的值,则将此值作为输出数组的唯一元素返回。否则,返回的数组按升序包含最大频率的元素。

      例如,如果sample是{0, 12, 5, 6, 0, 13, 5, 17},返回的数组将有长度为2,第一个元素为0,第二个元素为5。

      计算众数时会忽略NaN值 - 即,在输出数组中永远不会出现NaN。如果样本仅包含NaN或长度为0,则返回一个空数组。

      参数:
      sample - 输入数据
      返回:
      按升序排序的最常出现的元素的数组数组。
      抛出:
      MathIllegalArgumentException - 如果索引无效或数组为空
    • mode

      public static double[] mode(double[] sample, int begin, int length)
      返回样本的众数。

      众数是样本中出现频率最高的值。如果有一个唯一的具有最大频率的值,则将此值作为输出数组的唯一元素返回。否则,返回的数组按升序包含最大频率的元素。

      例如,如果sample是{0, 12, 5, 6, 0, 13, 5, 17},返回的数组将有长度为2,第一个元素为0,第二个元素为5。

      计算众数时会忽略NaN值 - 即,在输出数组中永远不会出现NaN。如果样本仅包含NaN或长度为0,则返回一个空数组。

      参数:
      sample - 输入数据
      begin - 要包含的第一个数组元素的索引(从0开始)
      length - 要包含的元素数量
      返回:
      按升序排序的最常出现的元素的数组数组。
      抛出:
      MathIllegalArgumentException - 如果索引无效或数组为空