針對周期類型統計特征計算方差,為了避免記錄每筆交易的統計屬性值,造成Redis內存的大量占用和計算性能問題,采用增量的方式計算方差。
在方差計算過程中存在如下幾種情況:
1) 已知一個樣本的方差,當新增一個元素時,需重新計算樣本的方差;
2) 已知兩個樣本的方差,將兩樣本合並,計算新的樣本的方差;
3) 已知一個樣本的方差,當需要從樣本中刪除一個元素時,需重新計算樣本的方差
上述1)是2)的特例,所以針對增量計算需要考慮2)和3)兩種情況。
(一)方差的定義
假設X樣本有N個樣本值:
X樣本的平均值計算:
X樣本的方差計算公式:
該公式計算過程,需要知道所有樣本值明細。
(二)兩個樣本合並,增量方式計算方差,參考了博客:https://www.cnblogs.com/yoyaprogrammer/p/delta_variance.html
假設我們現在有兩組樣本值,一組為歷史樣本值:
一組增量樣本值:
根據(一)介紹的方差和均值的定義,可以得到兩個樣本的如下四個指標:
歷史樣本平均值:
歷史樣本方差:
增量樣本平均值:
增量樣本方差:
合並之后的全量樣本:
全量樣本的均值計算如下:
全量樣本方差的計算和推導如下:
從上述推導結果可以看出,通過兩組樣本的樣本數、均值、方差,可以計算出全量樣本的方差,無需樣本中的明細。
(三)從樣本中移除一個元素,增量方式計算方差
假設我們現在有兩組樣本值,一組為歷史樣本值:
從樣本中移除某一個元素,假設為 ,為記錄方便,將該元素記為D。
歷史樣本平均值:
歷史樣本方差:
推導新的方差,過程如下:
新樣本均值:
新樣本方差:
從上述推導結果可以看出,通過歷史樣本的平方和、均值、刪除元素值,可以計算出新樣本的方差,無需歷史樣本中的明細。