获取流输入数据的人口标准偏差

时间:2017-01-06 13:18:29

标签: javascript math statistics standard-deviation microprocessors

所以,让我们说我有一个传感器可以给我一个数字,让我们说一下当地的温度,或者每隔1/100秒说一次。

所以在一秒钟内,我已经填满了一百个数字的数组。

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

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

当我查看获得标准差的数学时,我想到只存储一些数字:

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

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

然而,这种方法存在一些问题:

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

对于(数 - 均值)^ 2的总和,不能保持相同的置信水平,因为它是平方数的总和。

最重要的是,这种方法非常不准确,因为对于每个数字,使用新的均值,这完全抹去了标准差的整个数学值,尤其是人口标准差。

如果您认为无法实现人口标准差,那么我应该如何进行样本标准差?取每个第n个数字仍然会导致同样的问题。

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

是否存在任何类型的数学工作来获得总体,或者至少是一组不断增加的数字的样本标准偏差,而不实际存储该集合,因为这是不可能的,并且仍然能够准确地检测到什么东西是多个标准偏差?

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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