2013-03-15 48 views
2

这里是我做过什么:如何使用boost库获取SAMPLE标准偏差?

accumulator_set<double, stats<tag::variance> > accumulator; 
accumulator = for_each(x.begin(), x.end(), accumulator); 
double sDeviation = sqrt(variance(accumulator)); 

但返回的标准偏差是总体标准差。我需要样本标准差(由n-1除)。

可能促进做到这一点?

回答

3

在取平方根之前,只需乘以n /(n-1)的方差。有关数学的标准偏差,请参阅wikipedia page。请记住,虽然样本方差是无偏的,但如果您不知道问题的分布情况,则在取平方根后,样本标准偏差总会略有偏差。

+0

我测试这种方法(乘以N/N-1),并发现它确实产生预期的结果。 – Boinst 2016-04-15 01:54:27