我有一个测量液体体积的传感器。
这种液体会慢慢消耗,需要时会补充。
我要检测的是这种液体被“偷走”或充满的次数。
偷来的意思是液体的体积突然下降反之则视为填充从传感器获取的值具有较小的峰值,如果有足够的测量值,则应忽略这些峰值。
是否有任何统计方法(文档)或编程算法(任何语言)或更好的sql函数/查询(任何db)来完成上述场景?
最佳答案
你通常会发现outliers。
你有一个你想保留的基线值吗?或者你想与你当前的平均值进行比较吗?
你认为是什么突然下降-是一个绝对值(如5L)还是一个相对值(当前体积的5%)。
这里是一个近似的描述,如果你依赖于运行的平均值。
on volumeChange do
calculate new runningAverage
if (runningAverage outside allowedRange(oldRunningAverage)) then raise warning
oldRunningAverage := runningAverage
你需要知道的是:
如何进行测量(你能相信他们会定期进行吗)
如何定义
下面是5次测量(蓝色)的简单移动平均数(红色)的图示: