当前位置: 首页 > news >正文

正态分布 - 计算 Z-Score 的 无偏估计

正态分布 - 计算 Z-Score 的 无偏估计

flyfish

Z-Score公式与计算步骤

1 公式(样本Z-Score)

实际应用中,我们几乎不知道“总体均值/标准差”,所以常用样本数据计算:
zi=xi−xˉsz_i = \frac{x_i - \bar{x}}{s}zi=sxixˉ

xix_ixi:某个具体的数据点(如数学成绩80分);
xˉ\bar{x}xˉ:样本均值(如全班数学平均分70分);
sss:样本标准差(如全班数学成绩的标准差5分)。

2 标准差sss的补充公式

标准差衡量“数据的离散程度”,计算步骤:

  1. 算每个数据与均值的差:xi−xˉx_i - \bar{x}xixˉ
  2. 差的平方:(xi−xˉ)2(x_i - \bar{x})^2(xixˉ)2
  3. 平方和的均值(方差):1n−1∑i=1n(xi−xˉ)2\frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})^2n11i=1n(xixˉ)2(分母用n−1n-1n1是“无偏估计”);
  4. 方差开根号:s=方差s = \sqrt{\text{方差}}s=方差

3 计算步骤

上面的“数学考试”例子,假设全班5个同学的数学成绩为:[65, 70, 75, 80, 85],计算80分对应的Z-Score:

  1. 算样本均值xˉ\bar{x}xˉxˉ=(65+70+75+80+85)/5=75\bar{x} = (65+70+75+80+85)/5 = 75xˉ=(65+70+75+80+85)/5=75
  2. 算样本标准差sss
    • 差:65−75=−1065-75=-106575=1070−75=−570-75=-57075=575−75=075-75=07575=080−75=580-75=58075=585−75=1085-75=108575=10
    • 差的平方:100,25,0,25,100100, 25, 0, 25, 100100,25,0,25,100
    • 方差:(100+25+0+25+100)/(5−1)=250/4=62.5(100+25+0+25+100)/(5-1) = 250/4 = 62.5(100+25+0+25+100)/(51)=250/4=62.5
    • 标准差:s=62.5≈7.91s = \sqrt{62.5} ≈ 7.91s=62.57.91
  3. 算Z-Scorez=(80−75)/7.91≈0.63z = (80-75)/7.91 ≈ 0.63z=(8075)/7.910.63

数学成绩比全班均值高0.63个标准差,处于中等偏上水平。

无偏估计:为什么样本方差的分母用 n-1 而不是 n?

在计算Z-Score时,我们使用样本数据来估计总体的情况,而样本标准差 s 的公式中,方差的部分是 1n−1∑i=1n(xi−xˉ)2\frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2n11i=1n(xixˉ)2。这里的分母用 n-1(而不是 n)是为了实现“无偏估计”(unbiased estimation)。

1. 什么是“估计”?偏估计 vs. 无偏估计

首先,我们要明白:在现实中,我们很少能拿到“总体”(population)的所有数据。比如,全班数学成绩的“总体”可能是全国所有学生的成绩,但我们只能拿到一个“样本”(sample),如你班上的5个同学的成绩。我们用样本数据来“估计”总体的均值、方差等参数。

  • 估计器(estimator):就是一个公式或方法,用来从样本推算总体参数。比如,样本均值 xˉ\bar{x}xˉ 是总体均值 μ 的估计器;样本方差是总体方差 σ² 的估计器。
  • 偏估计(biased estimator):如果这个估计器在多次重复采样后,平均值不等于真实的总体参数,就叫有偏(biased)。简单说,它系统性地高估或低估了真实值。
  • 无偏估计(unbiased estimator):多次重复采样后,估计器的平均值等于真实的总体参数。它更“公平”、更可靠,尤其当样本量小的时候。

在方差的计算中:

  • 如果用分母 n,即样本方差 = 1n∑i=1n(xi−xˉ)2\frac{1}{n} \sum_{i=1}^n (x_i - \bar{x})^2n1i=1n(xixˉ)2,这是一个有偏估计,它会低估总体方差(平均来说,算出来的方差比真实的小)。
  • 如果用分母 n-1,即样本方差 = 1n−1∑i=1n(xi−xˉ)2\frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2n11i=1n(xixˉ)2,这是一个无偏估计,它在平均意义上等于总体方差。

为什么会这样?因为用样本均值 xˉ\bar{x}xˉ(而不是真实的总体均值 μ)来计算偏差,会让数据看起来“更集中”(离散度更小),从而低估方差。为了补偿这个“收缩效应”,我们用 n-1 来“放大”一点分母,让估计更接近真实。

2. 为什么用 n 会低估?直观解释和数学原因
直观解释:

想象一下:总体是一个大群体,数据很分散。但当你抽样时,样本数据往往更“像”样本均值 xˉ\bar{x}xˉ,因为 xˉ\bar{x}xˉ 就是从这些数据算出来的。所以,计算 ∑(xi−xˉ)2\sum (x_i - \bar{x})^2(xixˉ)2 时,偏差平方和会比用真实 μ 小(数据显得更紧凑)。这就好比用“自家尺子”量自家东西,总会量得偏小。

  • 如果样本量 n 很大(比如成千上万),这个偏差很小,用 n 或 n-1 差不多。
  • 但如果 n 小(比如例子 n=5),偏差明显。用 n 会显著低估方差。

为了修正,我们减掉1(n-1),相当于“损失了一个自由度”(degrees of freedom)。为什么是1?因为计算 xˉ\bar{x}xˉ 时,已经用掉了1个“信息”(均值固定了数据的平均位置),剩下 n-1 个独立偏差。

数学原因(简单证明):

总体方差 σ² = 1N∑i=1N(xi−μ)2\frac{1}{N} \sum_{i=1}^N (x_i - \mu)^2N1i=1N(xiμ)2(N 是总体大小,通常很大)。

现在,从总体中随机抽取 n 个样本,计算样本方差。

  • 如果用分母 n 的有偏方差,记为 s²_bias = 1n∑i=1n(xi−xˉ)2\frac{1}{n} \sum_{i=1}^n (x_i - \bar{x})^2n1i=1n(xixˉ)2

  • 数学上可以证明:期望值 E[s²_bias] = n−1nσ2\frac{n-1}{n} \sigma^2nn1σ2 < σ²(低估了 1n\frac{1}{n}n1 的比例)。

  • 如果用分母 n-1 的无偏方差,记为 s²_unbias = 1n−1∑i=1n(xi−xˉ)2\frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})^2n11i=1n(xixˉ)2 = nn−1sb2ias\frac{n}{n-1} s²_biasn1nsb2ias

  • 期望值 E[s²_unbias] = nn−1×n−1nσ2=σ2\frac{n}{n-1} \times \frac{n-1}{n} \sigma^2 = \sigma^2n1n×nn1σ2=σ2(正好等于真实方差,无偏)。

这个证明基于统计学的“期望值”计算(涉及χ²分布等),但核心是:n-1 补偿了使用 xˉ\bar{x}xˉ 代替 μ 带来的偏差。历史上,这是由德国数学家弗里德里希·贝塞尔(Friedrich Bessel)在19世纪提出的修正,因此也叫“Bessel’s correction”。

3. 比较:n vs. n-1 的区别

数学成绩样本:[65, 70, 75, 80, 85],n=5,均值 xˉ=75\bar{x}=75xˉ=75,偏差平方和 = 100 + 25 + 0 + 25 + 100 = 250。

  • 用 n=5(有偏)

    • 方差 = 250 / 5 = 50
    • 标准差 s = √50 ≈ 7.07
    • Z-Score for 80: (80 - 75) / 7.07 ≈ 0.71
  • 用 n-1=4(无偏)

    • 方差 = 250 / 4 = 62.5
    • 标准差 s = √62.5 ≈ 7.91
    • Z-Score for 80: (80 - 75) / 7.91 ≈ 0.63

区别:用 n 的Z-Score更大(0.71 vs. 0.63),因为标准差更小,显得成绩“更突出”。但这低估了真实的离散度。如果这个样本代表一个更大的班级,用 n 会让Z-Score“夸大”你的位置,而 n-1 更保守、更接近真实总体。

假设真实总体方差是62.5(只是假设),多次抽样平均下来,用 n-1 的方差会接近62.5,而用 n 的会接近50(低估20%)。

4. 在Z-Score计算中的重要性和应用注意

Z-Score 的本质是“标准化”数据,让不同分布的数据可比(比如比较数学和语文成绩)。公式 z = (x - 均值) / 标准差,其中标准差是“尺度”,如果标准差低估了,Z-Score就会高估偏差,导致解读错误。

为什么在Z-Score中必须用 n-1?

  • 因为Z-Score通常用于推断总体(如你的成绩在全校/全国的位置),我们希望估计无偏。统计软件(如Excel的STDEV.S、Python的numpy.std(ddof=1))默认用 n-1,就是这个原因。
  • 如果知道总体均值 μ 和 σ(罕见),用总体公式:z = (x - μ) / σ,分母就是 N,无需修正。
  • 但实际中,几乎总是用样本,所以 n-1 是标准实践。

什么时候可以忽略?

  • n 很大时(n > 30),n 和 n-1 区别小,可以近似用 n。
  • 纯描述样本(不推断总体)时,用 n 也行(叫“描述性标准差”)。

用 n-1 是为了让样本方差“公平”地代表总体,避免系统低估。这在小样本中特别重要,能让Z-Score更准确、更可靠

在这里插入图片描述

两种计算方式的分布对比

从已知总体方差(25)的正态分布中重复抽样(样本量 n=5)
红色分布:使用 n 作为分母计算的样本方差,其平均值明显低于真实总体方差(25),表现出系统性低估
蓝色分布:使用 n-1 作为分母计算的样本方差,其平均值非常接近真实总体方差(25),实现了无偏估计
黑色虚线:真实的总体方差值,清晰显示 n-1 的估计更接近真实值
在这里插入图片描述

不同样本量下的偏差对比

纵轴表示 “平均偏差”(估计值减去真实值),越接近 0 越好
红色线:使用 n 作为分母时,始终存在负偏差(低估),样本量越小偏差越大
蓝色线:使用 n-1 作为分母时,偏差接近 0,基本无偏
规律:随着样本量增大3, 5, 10, 20, 50, 100, 500,两种方法的差异逐渐减小,当 n 很大时(如 500),n 和 n-1 的结果几乎相同

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 设置中文字体
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题# 实验参数设置
np.random.seed(42)  # 设置随机种子,保证结果可重复
population_mean = 50  # 总体均值
population_variance = 25  # 总体方差(已知)
population_std = np.sqrt(population_variance)  # 总体标准差
sample_size = 5  # 样本量(小样本更能体现差异)
num_simulations = 10000  # 模拟次数# 存储每次模拟的两种方差结果
variances_n = []  # 用n作为分母的方差
variances_n_minus_1 = []  # 用n-1作为分母的方差# 进行多次抽样模拟
for _ in range(num_simulations):# 从已知总体中随机抽取样本sample = np.random.normal(population_mean, population_std, sample_size)sample_mean = np.mean(sample)# 计算偏差平方和squared_deviations = np.sum((sample - sample_mean) **2)# 两种方式计算方差var_n = squared_deviations / sample_sizevar_n_minus_1 = squared_deviations / (sample_size - 1)# 存储结果variances_n.append(var_n)variances_n_minus_1.append(var_n_minus_1)# 计算两种方法的平均值
mean_var_n = np.mean(variances_n)
mean_var_n_minus_1 = np.mean(variances_n_minus_1)# 创建可视化图形
plt.figure(figsize=(12, 6))# 绘制两种方差估计的分布直方图
sns.histplot(variances_n, bins=50, color='#FF6B6B', alpha=0.6, label=f'分母 = n (平均值 = {mean_var_n:.2f})')
sns.histplot(variances_n_minus_1, bins=50, color='#4ECDC4', alpha=0.6, label=f'分母 = n-1 (平均值 = {mean_var_n_minus_1:.2f})')# 绘制真实总体方差的参考线
plt.axvline(x=population_variance, color='black', linestyle='--', linewidth=2, label=f'真实总体方差 = {population_variance}')# 添加标签和标题
plt.title(f'n = {sample_size} 时两种方差计算方式的分布对比', fontsize=15)
plt.xlabel('样本方差值', fontsize=12)
plt.ylabel('频率', fontsize=12)
plt.xlim(0, population_variance * 2)  # 限制x轴范围,使对比更清晰
plt.legend(fontsize=11)
plt.grid(alpha=0.3)plt.tight_layout()
plt.show()# 不同样本量下的偏差对比
sample_sizes = [3, 5, 10, 20, 50, 100, 500]  # 测试不同样本量
#sample_sizes = [500]
bias_n = []
bias_n_minus_1 = []for n in sample_sizes:# 多次模拟sim_var_n = []sim_var_n1 = []for _ in range(1000):sample = np.random.normal(population_mean, population_std, n)sample_mean = np.mean(sample)sq_dev = np.sum((sample - sample_mean)** 2)sim_var_n.append(sq_dev / n)sim_var_n1.append(sq_dev / (n - 1))# 计算偏差(估计值 - 真实值)bias_n.append(np.mean(sim_var_n) - population_variance)bias_n_minus_1.append(np.mean(sim_var_n1) - population_variance)# 绘制不同样本量下的偏差图
plt.figure(figsize=(10, 5))
plt.plot(sample_sizes, bias_n, 'ro-', label='分母 = n 的偏差')
plt.plot(sample_sizes, bias_n_minus_1, 'bo-', label='分母 = n-1 的偏差')
plt.axhline(y=0, color='gray', linestyle='--')  # 零偏差参考线plt.title('不同样本量下两种方差计算方式的偏差', fontsize=14)
plt.xlabel('样本量 n', fontsize=12)
plt.ylabel('平均偏差(估计值 - 真实值)', fontsize=12)
plt.xscale('log')  # 对数刻度,便于展示不同量级的样本量
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
http://www.xdnf.cn/news/1479259.html

相关文章:

  • 计算机主板上的那颗纽扣电池的作用是什么?
  • OSG中TerrainManipulator(地形适配操纵器)
  • STM32CubeProgrammer软件安装
  • Qt 中的 Q_OBJECT 宏详解 —— 从源码到底层机制的全面剖析
  • 2023年ASOC SCI2区TOP,改进元启发式算法+考虑医护人员技能水平的家庭健康护理路径规划,深度解析+性能实测
  • 【Redis】缓存的穿透、击穿和雪崩
  • 一个正常的 CSDN 博客账号,需要做哪些基础准备?
  • C++基础知识
  • 《sklearn机器学习——聚类性能指标》Silhouette 系数
  • 用 Hashcat 提取哈希值并找回遗忘的密码:一次实用的尝试
  • 【Big Data】Apache Kafka 分布式流处理平台的实时处理实践与洞察
  • uniapp基础组件概述
  • SPI 三剑客:Java、Spring、Dubbo SPI 深度解析与实践​
  • 【开题答辩全过程】以电商数据可视化系统为例,包含答辩的问题和答案
  • 编辑shell脚本示例练习
  • 《sklearn机器学习——聚类性能指标》Davies-Bouldin Index (戴维斯-博尔丁指数)
  • Linux 96 shell:expect { }
  • 车载通信架构 --- DoIP企业规范中细节有哪些?
  • Huawei C 安全函数库
  • LabVIEW无线预警喷淋系统
  • 问题:指令译码前控制信号还没有产生,那么如何控制译码前指令的动作呢?
  • NV308NV309美光固态闪存NW388NW504
  • Docker部署搜索引擎SearXNG
  • (算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
  • 《云原生故障诊疗指南:从假活到配置漂移的根治方案》
  • Spark 中spark.implicits._ 中的 toDF和DataFrame 类本身的 toDF 方法
  • 【51单片机】【protues仿真】基于51单片机PM2.5空气质量检测系统
  • 云手机在企业办公中的作用
  • [论文阅读] 软件工程 - 需求工程 | 2012-2019年移动应用需求工程研究趋势:需求分析成焦点,数据源却藏着大问题?
  • Linux内核网络子系统框架介绍