利用递推快速计算方差和均值

问题来源:算法第四版习题1.2.18,累加器的方差里用递推来计算平均值和方差:


 
 
  1. public class Accumulator
  2. {
  3. private double m;
  4. private double s;
  5. private int N;
  6. public void addDateValue(double x)
  7. {
  8. N++;
  9. s=s+ 1.0*(N- 1)/N*(x-m)*(x-m);
  10. m=m+(x-m)/N;
  11. }
  12. public double mean()
  13. {
  14. return m;
  15. }
  16. public double var()
  17. {
  18. return s/(N- 1);
  19. }
  20. public double stddev()
  21. {
  22. return Math.sqrt( this.var());
  23. }
  24. }
均值的更新很好理解,那么方差的更新是怎么做到的呢?

公式推导:

均值定义:


方差定义:


均值的递推:


方差的推导:



其中

这样递推的好处:

1.实时更新数据;2.减小运算量;3.更好的避免四舍五入带来的误差。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值