我需要跟踪一周内的整数数据(例如40、30、25、55、5、40等),当出现偏离常态的情况时(如上例中的’5’),发出警报。额外的一个好功能是能够学习判断5是否是该星期某一天的正常事件。
你知道有针对这个问题的Ruby实现吗?如果这是一个经典问题,这个问题/算法的名称是什么?
回答:
计算这个非常简单,但你需要调整一个参数。你想知道任何给定值是否偏离均值X个标准差。要解决这个问题,计算标准差(参见维基百科),然后将每个值的偏差abs(mean - value)
与均值进行比较。如果某个值的偏差超过均值的两个标准差,就标记它。
编辑:
要按工作日跟踪偏差,保持一个整数数组,每天一个。每次遇到偏差时,将该天的计数器加一。你也可以使用双精度数,并维护该天偏差的百分比,例如(num_friday_deviations/num_fridays)
。