数据流标准差计算方法-不用事先计算均值
挑战
标准差(Standard Deviation)是误差有效值的估计,在信号处理里面代表偏差有效值。公式定义需要事先知道均值(引自百度百科):
数据流进来,你事先不知道均值,怎么办?
解决方案
运用数学手册的推论公式即可:
伪代码
准备
Sxx=0;
Sx=0;
n=0;
每次来一个数据x:
Sxx += x*x;
Sx += x;
n++;
Variation = (Sxx/n) - Power(Sx/n,2);
Sigma = Sqrt(Variation)
注意
有时候数据比较病态,计算舍入会导致Variation <0,需要写一个条件保护根号有效性。
其他
标准差的统计方法分母是n-1,教科书上说,是有限样本统计的偏差期望使然。当n比较大的时候我们就忽略这个差异了,不然程序变得奇怪了。
啰嗦一句
这是比较简单的统计概论内容,我在Bing搜了好几个关键字都找不到。这个公式在英语搜索网站一把就指向了StackExchange上正确的答案。特此写了这个备忘。