boost accumulator error_of <mean>?</mean>的目的是什么?

时间:2013-05-14 12:47:31

标签: c++ boost mean standard-deviation boost-accumulators

error_of&lt; documentation意思是&gt;增压累加器的功能表明它通过公式计算平均值的误差:

sqrt(差异/(计数-1)),

其中方差由以下公式计算:

方差= 1 /计数和[(x_i - x_m)^ 2]其中总和超过所有值x_i i = 1 ...样本的数量,x_m是平均值。这给出了使用的公式(对于误差值):

sqrt(1 /(count(count - 1))sum [(x_i - x_m)^ 2]),

Wikipedia指出,对于标准偏差,使用未校正或校正的样本标准偏差。后者的计算方法如下:

sqrt(1 /(count-1)* sum [(x_i - x_m)^ 2])

这是我通常用来计算平均值误差的那个。 那么error_of&lt;的目的是什么?意思是&gt;?那里计算了哪个错误?

2 个答案:

答案 0 :(得分:3)

Boost.Accumulators的总体公式确实是正确的,但它是以一种非标准的方式计算的。

首先,sample variance只是平方偏差的平均值

V_sample = sum[ (x_i - x_m)^2] / count
s_sample = sqrt[ V_sample ] 

s_sample是人口标准差sigma的偏差估计值。 unbiased estimator of the population standard deviation

s_pop = s_sample * sqrt[ count / count - 1 ]

其次,standard error on the mean是您测量平均值的错误。您可以使用均值上的标准误差来构建样本算术平均值周围的置信区间,作为总体均值mu的估计值。

平均值的标准误差是指人口标准差的无偏估计值除以观测数的平方根之比

s_mean = s_pop / sqrt[ count ]

Boost.Accumulator将s_mean计算为

s_mean = s_sample / sqrt[count - 1]

但这两个表达式实际上是等价的,直接替代s_pops_sample之间的关系可以很容易看出。

注意:我认为Boost.Accumulators也可以定义这两个版本的标准偏差。

答案 1 :(得分:1)

我是Boost.Accumulators的当前维护者,我写了很多,但不是数学的。我将所有这些决定推迟到与我密切合作的领域专家。我把你的问题告诉了他。这就是我得到的答案:

  

标准偏差不是均值误差。我们的等式是正确的。

&LT;耸肩&GT;这不是最有启发性的答案,但也许有帮助吗?