документация ошибки< Функция Mean> для повышающих аккумуляторов утверждает, что она вычисляет ошибку среднего значения по формуле:
sqrt (дисперсия / (количество — 1)),
где дисперсия рассчитывается по формуле:
дисперсия = 1 / сумма подсчета [(x_i — x_m) ^ 2], где сумма перебирает все значения x_i i = 1..count выборки, а x_m — среднее значение. Это дает используемую формулу (для значения ошибки):
sqrt (1 / (count (count — 1)) sum [(x_i — x_m) ^ 2]),
Википедия заявляет, что для стандартного отклонения используют либо стандартное отклонение без исправления, либо с исправлением выборки. Последний рассчитывается по:
sqrt (1 / (count-1) * sum [(x_i — x_m) ^ 2])
Это тот, который я обычно использую для вычисления ошибок средних значений.
Так какова цель error_of< значит>? А какая ошибка там рассчитывается?
Общая формула 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.Acumulator было бы полезно определить эти две версии стандартного отклонения.
Я в настоящее время поддерживаю Boost.Acumulator, и я написал большую часть этого, но не математические биты. Я отложил все такие решения до эксперта в области, который работал со мной в тесном контакте. Я задала ему ваш вопрос. Вот ответ, который я получил:
Стандартное отклонение не является ошибкой среднего. Наше уравнение верное.
<пожимание плечами> Это не самый яркий ответ, но, может быть, это поможет?