boost累加器的文档的error_of< mean >特性声明它根据公式计算平均值的误差:
平方米(方差/(计数- 1)),
如果差异是通过以下方法计算的:
方差=1/计数和(x_i - x_m)^2,其中和超过样本的所有值x_i i=1..count,x_m是平均值。这给出了使用的公式(用于错误值):
平方(1/(计数-1)和(x_i - x_m)^2 ),
维基百科指出,对于标准差,可以使用未校正的或校正的样本标准差。后者的计算方法是:
平方(1/(计数-1)*和(x_i - x_m)^2 )
这是我通常用来计算平均值误差的方法。那么,error_of<的目的是什么?哪里的误差是计算出来的?
发布于 2013-05-30 10:29:26
Boost.Accumulators的整体公式确实是正确的,但它是以某种非标准的方式计算的。
首先,样本方差只是平方偏差的平均值。
V_sample = sum[ (x_i - x_m)^2] / count
s_sample = sqrt[ V_sample ] 但s_sample是总体标准差sigma的一个有偏估计。总体标准差的无偏估计是
s_pop = s_sample * sqrt[ count / count - 1 ]其次,均值标准误差是测量平均值的误差。您可以使用均值上的标准误差来构造样本算术均值周围的置信区间,作为总体均值mu的估计量。
给出了均值的标准误差,即总体标准差的无偏估计量除以观测次数的平方根的比值。
s_mean = s_pop / sqrt[ count ]Boost.Accumulator将s_mean计算为
s_mean = s_sample / sqrt[count - 1]但这两个表达式实际上是等价的,从s_pop和s_sample之间的关系中可以很容易地看出。
注意到:我认为Boost.Accumulators也定义这两个版本的标准差是有用的。
发布于 2013-05-21 21:44:03
我现在是Boost.Accumulators的维护者,我写了很多,但不是数学方面的。我把所有这些决定都交给了一位与我密切合作的领域专家。我向他提出了你的问题。这就是我得到的答案:
标准差不是均值的误差。我们的方程式是正确的。
这不是最有启发性的答案,但也许会有帮助?
https://stackoverflow.com/questions/16543602
复制相似问题