我有一个非常大的网络跟踪文件,每个数据包有两个时间戳。我计算每对连续数据包的时间戳之间的差异。
delta_ts1 = ts1(packet N) - ts1(packet N-1)
delta_ts2 = ts2(packet N) - ts2(packet N-1)
假设ts_2是参考值,我想针对ts_2测试ts_1。
差异 ts_variance =(delta_ts2 - mean_ts)^ 2 / packet_count
现在上面方法的问题是我到达文件末尾之前没有得到平均值。我想在单个parse中实现这个。我正在考虑使用如下方法
running_mean_till_now += ts2/packet_count_till_now
ts_variance = (delta_ts2 - running_mean_till_now)^2/packet_count_till_now
这种方法可以接受吗?使用这种方法估计的方差和标准偏差的准确程度如何。?
答案 0 :(得分:2)
这个公式不太合适。 Here您有一个可以使用的在线算法的描述。
答案 1 :(得分:0)
首先,在没有做任何研究的情况下,我可以说可以计算一系列数字的运行平均值。无需每次都扫描系列。
基本思想是让你得到四个数字的平均值(2,3,4,1 mean = 10/4)。现在,您的代码读取第五个数字(例如5)。现在,将新均值计算为(10/4 * 4 + 5)/ 5 = 3.
现在,当您阅读第六个数字时,下一个新均值为(15 + 9)/ 6 = 4.
Mihai Maruseac给出的链接显示了这个例子背后的符号计算,它显示了如何计算“运行”(在线)标准开发。