尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

方差的迭代计算公式 - 指南

方差的迭代计算公式 - 指南
📅 发布时间:2026/6/19 21:05:55

1️、方差基础公式

给定一组数据 x1,x2,…,xnx_1, x_2, \dots, x_nx1​,x2​,…,xn​,其 均值 和 方差 定义如下:

均值:

xˉn=1n∑i=1nxi \bar{x}_n = \frac{1}{n} \sum_{i=1}^{n} x_i xˉn​=n1​i=1∑n​xi​

方差:

无偏样本方差:
sn2=1n−1∑i=1n(xi−xˉn)2 s_n^2 = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x}_n)^2 sn2​=n−11​i=1∑n​(xi​−xˉn​)2

总体方差:
σn2=1n∑i=1n(xi−xˉn)2 \sigma_n^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x}_n)^2 σn2​=n1​i=1∑n​(xi​−xˉn​)2

注意:样本方差比总体方差除以 n−1n-1n−1,以消除偏差。


2️、为什么需要迭代公式?

直接计算方差需要存储所有数据,尤其对于大规模数据或流式数据(streaming data),这是不现实的。
迭代公式允许 每来一个新数据 xn+1x_{n+1}xn+1​ 时更新均值和方差,无需重新扫描整个数据集。


3️、均值迭代公式

已有 nnn 个样本均值 xˉ∗n\bar{x}*nxˉ∗n,加入新样本 x∗n+1x*{n+1}x∗n+1 后,新的均值 xˉn+1\bar{x}_{n+1}xˉn+1​:

xˉn+1=xˉn+xn+1−xˉnn+1 \bar{x}_{n+1} = \bar{x}_n + \frac{x_{n+1} - \bar{x}_n}{n+1} xˉn+1​=xˉn​+n+1xn+1​−xˉn​​

简单理解:新均值是旧均值加上新数据偏差的 1/(n+1)1/(n+1)1/(n+1)。


4️、方差迭代公式推导(Welford 算法)

  1. 定义当前样本数量 nnn 的 累计平方差:
    M2,n=∑i=1n(xi−xˉn)2 M_{2,n} = \sum_{i=1}^{n} (x_i - \bar{x}_n)^2 M2,n​=i=1∑n​(xi​−xˉn​)2

  2. 当加入新样本 xn+1x_{n+1}xn+1​:

    • 更新均值:
      xˉn+1=xˉn+xn+1−xˉnn+1 \bar{x}_{n+1} = \bar{x}_n + \frac{x_{n+1} - \bar{x}_n}{n+1} xˉn+1​=xˉn​+n+1xn+1​−xˉn​​
    • 差值:
      δ=xn+1−xˉn \delta = x_{n+1} - \bar{x}_n δ=xn+1​−xˉn​
      δ2=xn+1−xˉn+1 \delta_2 = x_{n+1} - \bar{x}_{n+1} δ2​=xn+1​−xˉn+1​
  3. 更新累计平方差:
    M2,n+1=M2,n+δ⋅δ2 M_{2,n+1} = M_{2,n} + \delta \cdot \delta_2 M2,n+1​=M2,n​+δ⋅δ2​

  4. 迭代计算方差:

  • 样本方差:
    sn+12=M2,n+1n s_{n+1}^2 = \frac{M_{2,n+1}}{n} sn+12​=nM2,n+1​​
    或无偏样本方差:
    sn+12=M2,n+1n s_{n+1}^2 = \frac{M_{2,n+1}}{n} sn+12​=nM2,n+1​​

核心思想:每次只用上一轮累计平方差 + 新样本与均值的偏差,保证数值稳定,不容易溢出。


5️、数值稳定性说明

Welford 方法相比直接公式:
sn2=1n∑xi2−xˉn2 s_n^2 = \frac{1}{n} \sum x_i^2 - \bar{x}_n^2 sn2​=n1​∑xi2​−xˉn2​
优势:

  • 不需要存储所有 xix_ixi​;
  • 避免 平方和减去平方均值 导致的数值精度丢失;
  • 可以实时处理大规模或流式数据。

6️、C++ 实战示例

#include <vector>#include <iostream>class OnlineVariance {private:int n = 0;double mean = 0.0;double M2 = 0.0;  // 累计平方差public:void addSample(double x) {n++;double delta = x - mean;mean += delta / n;double delta2 = x - mean;M2 += delta * delta2;}double getMean() const { return mean; }double getVariance() const { return n > 1 ? M2 / (n-1) : 0.0; } // 样本方差double getPopulationVariance() const { return n > 0 ? M2 / n : 0.0; } // 总体方差};int main() {std::vector<double> data = {2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0};OnlineVariance ov;for (auto x : data) {ov.addSample(x);std::cout << "n=" << ov.n << ", mean=" << ov.getMean()<< ", variance=" << ov.getVariance() << std::endl;}return 0;}

输出示例(部分):

n=1, mean=2, variance=0
n=2, mean=3, variance=2
n=3, mean=3.33333, variance=2.33333
...

每增加一个数据点,均值和方差都会被实时更新。


7️、总结公式

  • 均值迭代:
    xˉn+1=xˉn+xn+1−xˉnn+1 \bar{x}_{n+1} = \bar{x}_n + \frac{x_{n+1}-\bar{x}_n}{n+1} xˉn+1​=xˉn​+n+1xn+1​−xˉn​​
  • 累计平方差迭代:
    M2,n+1=M2,n+(xn+1−xˉn)(xn+1−xˉn+1) M_{2,n+1} = M_{2,n} + (x_{n+1}-\bar{x}_n)(x_{n+1}-\bar{x}_{n+1}) M2,n+1​=M2,n​+(xn+1​−xˉn​)(xn+1​−xˉn+1​)
  • 方差:
    sn+12=M2,n+1n(总体方差) s_{n+1}^2 = \frac{M_{2,n+1}}{n} \quad \text{(总体方差)} sn+12​=nM2,n+1​​(总体方差)
    sn+12=M2,n+1n−1(样本方差) s_{n+1}^2 = \frac{M_{2,n+1}}{n-1} \quad \text{(样本方差)} sn+12​=n−1M2,n+1​​(样本方差)

这种迭代方式适合大数据、流式数据和实时计算,数值稳定且无需存储所有历史数据。


相关新闻

  • K8S中Ingress的采用
  • 进程监控:通过 SSH 远程监测嵌入式设备进程重启
  • 【ZeroRange WebRTC】对称加密 vs 非对称加密(从原理到实践) - 详解

最新新闻

  • 2026 赣州防水补漏靠谱服务商盘点:屋面 / 厨卫 / 外墙 / 地下室渗水维修详解,适配赣南多雨山区高湿防水甄选指南 - 宅安选房屋修缮
  • 紧急收藏!2026台州戒网瘾学校TOP5揭晓,纽特心理,军事化管理帮孩子戒网逆袭 - 辛云教育资讯
  • Fluent二维刚体平移运动UDF:基于质心运动宏的动网格控制源码包
  • 吴恩达《深度学习》之看懂 YOLO 目标检测的“鹰眼”直觉
  • 精选10所|2026南京市十大叛逆青少年戒网瘾封闭式管教学校名单,解家长焦虑,助少年归正 - 辛云教育资讯
  • 梯度裁剪:G-Crop革新小样本图像分类

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号