我有这段代码:
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
我错过了什么?
答案 0 :(得分:0)
getVariance()
除以n-1
,来自docs:
返回可用值的(样本)方差。
此方法返回偏差校正的样本方差(在分母中使用
n - 1
)。使用getPopulationVariance()
进行非偏差校正的人口差异。
背景:通常,人群中有一个样本,通过计算偏差校正(或无偏)样本方差,计算出的估计值的预期值等于总体方差。我编写了示例代码,用于演示此answer。维基百科有population variance vs. sample variance的背景资料。