apache-commons DescriptiveStatistics 给出了错误的 StandardDeviation?

apache-commons DescriptiveStatistics gives wrong StandardDeviation?

我有这个代码:

    DescriptiveStatistics stats = new DescriptiveStatistics( new double[] {2,4,4,4,5,5,7,9} );
    System.out.println("var="+stats.getVariance());
    System.out.println("sd="+stats.getStandardDeviation());

我从维基百科 https://en.wikipedia.org/wiki/Standard_deviation 中获取了示例。答案应该是var=4.0, sd=2.0,但是我得到的是:

    4.571428571428571
    2.138089935299395

我错过了什么?

getVariance()除以n-1,这里来自docs

Returns the (sample) variance of the available values.

This method returns the bias-corrected sample variance (using n - 1 in the denominator). Use getPopulationVariance() for the non-bias-corrected population variance.

背景:通常,一个人有一个来自总体的样本,并且通过计算偏差校正(或无偏差)的样本方差,计算出的估计值的期望值等于总体方差。我为此 answer. And Wikipedia has background on population variance vs. sample variance.

编写了示例代码来演示这一点