S1: Variance Standard Deviation Covariance

本文介绍了方差、标准差和协方差的概念及其在统计学中的应用。方差是衡量数据波动程度的指标,标准差是方差的平方根。协方差用于评估两个变量之间的变化关系,正值表示同向变化,负值表示反向变化。文中还提到了无偏估计和协方差矩阵,并提供了Python计算协方差的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习一下方差(variance),标准差(StandardDeviation),协方差(Covariance),协方差矩阵(Covariance Matrix)

1、方差 Variance

方差是各个数据与平均数之差的平方的平均数,方差反应了总体样本的波动情况。
方差公式,一般简单的这样写:
(1) σ 2 = ∑ i = 1 n ( x i − μ ) 2 n \sigma^{2} = \sum_{i=1}^{n}\frac{(x_i-\mu)^2}{n} \tag 1 σ2=i=1nn(xiμ)2(1)
但是有时候,方差公式也会这样写:
(2) σ 2 = ∑ i = 1 n ( x i − μ ) 2 n − 1 \sigma^{2} = \sum_{i=1}^{n}\frac{(x_i-\mu)^2}{n-1} \tag 2 σ2=i=1nn1(xiμ)2(2)
其实对于(1)式,规范的写法应该是:
(3) S 2 = ∑ i = 1 n ( x i − x ˉ ) 2 n S^{2} = \sum_{i=1}^{n}\frac{(x_i-\bar{x})^2}{n} \tag 3 S2=i=1nn(xixˉ)2(3)

这样就清晰了, S 2 S^2 S2是样本的方差, X ˉ \bar{X} Xˉ是样本的平均值;而 σ 2 \sigma^2 σ2是总体的方差, μ \mu μ是总体的平均值。

举一个例子说明:
  如果我想知道大学里一个班级学生平均体重,那我可以统计这个班级所有学生的体重信息,求出来这个班级学生体重的平均值 X ˉ \bar{X} Xˉ,通过公式(3),我就能求出来这个班级学生体重的方差 S 2 S^2 S2,此时分母 N N N就是该班级学生人数。

  但是现在我想知道全国大学生平均体重,我应该统计全国每一个大学生的体重,计算总体平均值 μ \mu μ,但是我不可能这么做。我会抽样统计,比如说我从一个学校抽出来80人,计算平均体重,也称样本平均值记作 X 1 ˉ \bar{X_1} X1ˉ,我再换一个学校抽出来80人,计算平均体重记作 X 2 ˉ \bar{X_2} X2ˉ,继续下去,我抽取了很多次,得到 X 3 ˉ \bar{X_3} X3ˉ X 4 ˉ \bar{X_4} X

<think>嗯,用户想了解如何用数学方法或编程实现计算标准差。首先,我需要回顾标准差的基本概念和计算公式。标准差是衡量数据离散程度的指标,公式我记得是方差的平方根。方差的话,是各个数据点与均值差的平方的平均数。对,公式应该是先计算均值,然后每个数减去均值,平方,再求平均,最后开根号。数学表达式应该写成$\sigma = \sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_i - \mu)^2}$,其中$\mu$是平均值,$N$是数据个数[^2]。 接下来,用户可能想知道的是样本标准差和总体标准差的区别。样本标准差的分母应该是$N-1$,而不是$N$,这样可以纠正样本方差估计的偏差。所以样本标准差的公式是$s = \sqrt{\frac{1}{N-1}\sum_{i=1}^{N}(x_i - \bar{x})^2}$,这里$\bar{x}$是样本均值。这点需要注意,避免混淆。 然后编程实现的话,可能需要用Python。Python中可以用statistics模块里的stdev和pstdev函数分别计算样本和总体标准差。不过用户可能想自己手动实现,比如先计算均值,再遍历数据计算平方差,最后求平均和平方根。比如用numpy的话,直接调用np.std函数,但要注意设置ddof参数,ddof=1时是样本标准差,ddof=0是总体标准差。 用户的问题还可能涉及到效率问题,比如如何高效计算运行中的标准差,比如不存储所有数据点,而是动态更新均值和平方差的和。这可能需要用递推公式,每次新数据进来时调整均值和平方和。例如,Welford算法可以在线计算,减少数值误差,适用于大数据量的情况[^4]。 另外,用户提供的引用里有提到标准差的Python实现,可能需要参考这些资料,确保回答的准确性。比如引用[3]提到Python实现的教程视频,引用[4]讨论如何高效计算运行标准差。所以在编程部分应该提到这些方法,并给出示例代码。 还要注意数学公式的正确LaTeX格式,比如行内公式用$...$,独立公式用$$...$$。例如,总体标准差和样本标准差的公式需要单独成段,使用双美元符号包围。 最后,用户可能需要相关的问题,比如标准差与方差的关系,不同编程语言中的实现区别,或者实际应用案例。根据提供的示例,相关问题可以包括标准差的应用场景、与均值的关系,或者Python中的库函数使用注意事项。</think>### 标准差的计算方法及实现 #### 数学定义 标准差(Standard Deviation)用于衡量数据与均值的偏离程度,计算公式为方差的平方根。根据数据类型(总体或样本),公式略有不同: 1. **总体标准差**: $$ \sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2} $$ 其中,$\mu = \frac{1}{N} \sum_{i=1}^{N} x_i$ 为总体均值,$N$ 为数据总量。 2. **样本标准差**(无偏估计): $$ s = \sqrt{\frac{1}{N-1} \sum_{i=1}^{N} (x_i - \bar{x})^2} $$ 其中,$\bar{x} = \frac{1}{N} \sum_{i=1}^{N} x_i$ 为样本均值,$N-1$ 用于修正样本方差估计的偏差。 --- #### 编程实现(Python示例) ##### 方法1:手动计算 ```python import math def calculate_std_dev(data, is_sample=True): n = len(data) if n < 2: return 0.0 mean = sum(data) / n squared_diff = [(x - mean)**2 for x in data] variance = sum(squared_diff) / (n - 1) if is_sample else sum(squared_diff) / n return math.sqrt(variance) # 示例 data = [2, 4, 4, 4, 5, 5, 7, 9] print("样本标准差:", calculate_std_dev(data)) # 输出 2.138 print("总体标准差:", calculate_std_dev(data, False)) # 输出 2.0 ``` ##### 方法2:使用`numpy`库 ```python import numpy as np data = [2, 4, 4, 4, 5, 5, 7, 9] sample_std = np.std(data, ddof=1) # 样本标准差(ddof=1表示自由度减1) population_std = np.std(data, ddof=0) # 总体标准差 print("样本标准差(numpy):", sample_std) # 输出 2.138 print("总体标准差(numpy):", population_std) # 输出 2.0 ``` ##### 方法3:高效在线计算(适用于流数据) 使用**Welford算法**动态更新均值和方差,减少数值误差: ```python class RunningStdDev: def __init__(self): self.count = 0 self.mean = 0.0 self.M2 = 0.0 # 平方差的累积和 def update(self, x): self.count += 1 delta = x - self.mean self.mean += delta / self.count delta2 = x - self.mean self.M2 += delta * delta2 def get_std_dev(self): if self.count < 2: return 0.0 return (self.M2 / (self.count - 1)) ** 0.5 # 示例 rstd = RunningStdDev() for x in data: rstd.update(x) print("动态计算样本标准差:", rstd.get_std_dev()) # 输出 2.138 ``` --- #### 关键区别与应用场景 - **样本 vs 总体**:样本标准差分母为$N-1$,总体标准差为$N$。 - **编程选择**:小数据集可手动计算,大数据集推荐`numpy`或在线算法。 - **应用场景**:金融风险评估、实验数据分析、质量控制等[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值