繁体   English   中英

获取流输入数据的总体标准差

[英]Get the Population Standard Deviation of streaming input data

假设我有一个传感器,它会每 1/100 秒给我一个数字,比如说当地温度,或者其他什么真的。

所以在一秒钟内,我用一百个数字填充了一个数组。

我想要做的是,随着时间的推移,创建一个统计模型,很可能是这个流数据的钟形曲线,这样我就可以得到这些数据的总体标准偏差。

现在,在具有大量存储空间的计算机上,这不会成为问题,但在像树莓派这样的小东西或任何微处理器上,存储多个传感器在几个月内生成的所有数字变得非常不现实。

当我查看获得标准偏差的数学时,我想到了简单地存储几个数字:

到目前为止所有数字的总运行和,数字的计数,最后是(每个数字 - 当前平均值)^2 的运行总和。

使用这个,每当我得到一个新数字时,我只需在计数中加一,将数字添加到运行总和中,得到新平均值,将(新数字 - 新平均值)^2 添加到运行总和中,然后除以通过计数和根,得到新的标准偏差。

但是,这种方法存在一些问题:

假设数据类型是温度,平均温度是 60 华氏度,并且数字以 100hz 流传输,则需要 476 年才能溢出流过的数字总和。

不能对 (number - mean)^2 的总和保持相同的置信度,因为它是平方数的总和。

最重要的是,这种方法非常不准确,因为对于每个数字都使用了一个新的平均值,这完全消除了标准差的整个数学值,尤其是总体标准差。

如果您认为不可能达到总体标准差,那么我应该如何处理样本标准差? 取每 n 个数字仍然会导致相同的问题。

我也不想将我的数据集限制在一个时间间隔内,(即只制作最近 24 小时传感器数据的模型),因为我希望我的统计模型能够代表传感器数据的长期时间,也就是一年,如果我要等一年才能做测试和调试,甚至得到一个可用的模型,我都不会玩得开心。

是否有任何数学方法来获得总体,或者至少是不断增加的一组数字的样本标准偏差,而无需实际存储该组,因为这是不可能的,并且仍然能够准确地检测出什么时候是多个标准偏差?

我见过的最接近的答案是: wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm ,但是,但我不知道这是什么意思,以及这是否需要存储一组数字。

谢谢!

链接显示代码,很明显您只需要存储 3 个变量:到目前为止的样本数、当前均值和二次差的总和

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM