采用增量方式计算样本方差(完整版)

针对周期类型统计特征计算方差,为了避免记录每笔交易的统计属性值,造成Redis内存的大量占用和计算性能问题,采用增量的方式计算方差。

在方差计算过程中存在如下几种情况:

1)    已知一个样本的方差,当新增一个元素时,需重新计算样本的方差;

2)    已知两个样本的方差,将两样本合并,计算新的样本的方差;

3)    已知一个样本的方差,当需要从样本中删除一个元素时,需重新计算样本的方差

上述1)是2)的特例,所以针对增量计算需要考虑2)和3)两种情况。

(一)方差的定义

假设X样本有N个样本值:

 

X样本的平均值计算:

 

X样本的方差计算公式:

 

 

 

该公式计算过程,需要知道所有样本值明细。

 

(二)两个样本合并,增量方式计算方差,参考了博客:https://www.cnblogs.com/yoyaprogrammer/p/delta_variance.html 

假设我们现在有两组样本值,一组为历史样本值:

 

一组增量样本值:

 

根据(一)介绍的方差和均值的定义,可以得到两个样本的如下四个指标:

历史样本平均值:

 

历史样本方差:

 

增量样本平均值:

 

增量样本方差:

  

 

 

合并之后的全量样本:

 

全量样本的均值计算如下:

 

 

 

全量样本方差的计算和推导如下:

 

 

  从上述推导结果可以看出,通过两组样本的样本数、均值、方差,可以计算出全量样本的方差,无需样本中的明细。

 

(三)从样本中移除一个元素,增量方式计算方差

假设我们现在有两组样本值,一组为历史样本值:

 

从样本中移除某一个元素,假设为 ,为记录方便,将该元素记为D。

历史样本平均值:

 

历史样本方差:

 

 

 推导新的方差,过程如下:

新样本均值:

 

新样本方差:

 

 

 从上述推导结果可以看出,通过历史样本的平方和、均值、删除元素值,可以计算出新样本的方差,无需历史样本中的明细。

 

 

 

posted @ 2019-09-10 16:50  成长的程序员  阅读(3264)  评论(0编辑  收藏  举报