2013-09-09 5 views
1

У меня есть очень большой файл трассировки сети с двумя временными метками на каждом пакете. Я вычисляю разницу между отметками времени для каждой пары последовательных пакетов.дисперсия вычисления и стандартное отклонение в одном анализе

delta_ts1 = ts1(packet N) - ts1(packet N-1) 
delta_ts2 = ts2(packet N) - ts2(packet N-1) 

Предположим ts_2 значение является эталонным, и я хочу, чтобы проверить ts_1 против ts_2.

И дисперсия ts_variance = (delta_ts2 - mean_ts)^2/packet_count

Теперь проблема с выше подходом заключается в том, что я не получаю среднее, пока я не достигну конца file.i хочет для достижения этого одним разом. Я думаю об использовании подхода ниже

running_mean_till_now += ts2/packet_count_till_now 

ts_variance = (delta_ts2 - running_mean_till_now)^2/packet_count_till_now 

Этот подход приемлемый? Насколько точным будет оцененная дисперсия и, следовательно, стандартное отклонение, с использованием этого подхода.?

+1

Вы можете вычислить среднее значение в любое время на основании имеющихся данных в это время. Является ли это приемлемым, зависит от того, соответствует ли оно вашим требованиям. Точность среднего значения и дисперсии будет менее точной, чтобы начать с нее, но после нескольких выборок вы, вероятно, начнете получать стабильные значения - если в данных, которые пересказывают значения, есть сетевая проблема. Возможно, вы захотите рассмотреть средний пробег в N-позиции (и дисперсию). –

ответ

2

Формула не совсем правильная. Here У вас есть описание онлайн-алгоритма, который вы можете использовать.

0

Прежде всего, не делая никаких исследований, могу сказать, что можно вычислить текущее среднее числа чисел. БЕЗ РАСПРОСТРАНЕНИЯ серии каждый раз.

Основная идея состоит в том, что у вас есть среднее из четырех чисел (2,3,4,1 среднее = 10/4). Теперь ваш код читает пятое число (скажем, 5). Теперь вычислите новое среднее значение как (10/4 * 4 + 5)/5 = 3.

Теперь, когда вы читаете шестое число, следующее новое среднее означает (15 + 9)/6 = 4.

Ссылка, предоставленная Михаем Марусекаком, показывает символические вычисления за этим примером и показывает, как вычислить «рабочий» (онлайн) std dev.