采用增量方式计算样本方差(完整版)
针对周期类型统计特征计算方差,为了避免记录每笔交易的统计属性值,造成Redis内存的大量占用和计算性能问题,采用增量的方式计算方差。
在方差计算过程中存在如下几种情况:
1) 已知一个样本的方差,当新增一个元素时,需重新计算样本的方差;
2) 已知两个样本的方差,将两样本合并,计算新的样本的方差;
3) 已知一个样本的方差,当需要从样本中删除一个元素时,需重新计算样本的方差
上述1)是2)的特例,所以针对增量计算需要考虑2)和3)两种情况。
(一)方差的定义
假设X样本有N个样本值:
X样本的平均值计算:
X样本的方差计算公式:
该公式计算过程,需要知道所有样本值明细。
(二)两个样本合并,增量方式计算方差,参考了博客:https://www.cnblogs.com/yoyaprogrammer/p/delta_variance.html
假设我们现在有两组样本值,一组为历史样本值:
一组增量样本值:
根据(一)介绍的方差和均值的定义,可以得到两个样本的如下四个指标:
历史样本平均值:
历史样本方差:
增量样本平均值:
增量样本方差:
合并之后的全量样本:
全量样本的均值计算如下:
全量样本方差的计算和推导如下:
从上述推导结果可以看出,通过两组样本的样本数、均值、方差,可以计算出全量样本的方差,无需样本中的明细。
(三)从样本中移除一个元素,增量方式计算方差
假设我们现在有两组样本值,一组为历史样本值:
从样本中移除某一个元素,假设为 ,为记录方便,将该元素记为D。
历史样本平均值:
历史样本方差:
推导新的方差,过程如下:
新样本均值:
新样本方差:
从上述推导结果可以看出,通过历史样本的平方和、均值、删除元素值,可以计算出新样本的方差,无需历史样本中的明细。