在统计学中,经常需要样本的方差计算,比较麻烦的方式是
(1)第一次遍历计算出样本的平均值
(2)第二次遍历才能计算出样本的方差
上述方法在样本较少的情况下,非常合适,但如果样本非常大,这种方式就不可取了,而且如果样本是持续增长的,就都不适用了。
先上代码
#第一步:遍历一遍样本
样本e in 样本集:
self.n += 1
self.sum += e.val
self.sum_sq += e.val * eval
#第二步:计算样本的均值、均差和方差,
self.mean = self.sum / self.n
tmp = (self.sum_sq - (self.sum * self.sum) / self.n)
self.var = tmp / (self.n - 1)
self.var = math.sqrt(self.var)
一次遍历,即可求出样本的方差。