← 返回《数据科学的统计基础》
📑 查看全课大纲(第 3 / 41 节)

统计量与抽样分布(二)

约 42 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

经验分布函数与抽样分布

小象实战讲义 · 数据科学的统计基础

本节我们将深入探讨两个核心概念:经验分布函数与抽样分布。经验分布函数是连接样本与总体分布的关键桥梁,它用样本的频率来逼近总体的概率。而抽样分布则是统计推断的理论基石,它描述了统计量(如样本均值、样本方差)的随机波动规律。掌握这些内容,你将能理解统计推断背后的理论依据,并为后续的参数估计与假设检验打下坚实基础。

💡 核心导读

  1. 经验分布函数:基于样本构造的阶梯函数,是总体分布函数的“经验”近似。格列文科定理为其提供了坚实的理论保障。
  2. 抽样分布:统计量的概率分布,是进行统计推断的“地图”。它分为精确分布、渐近分布和近似分布三类。
  3. 正态总体的抽样分布定理(Fisher引理):当样本来自正态总体时,样本均值与样本方差相互独立,且分别服从正态分布和卡方分布,这是构造t检验、F检验等经典方法的核心。
  4. 三大重要抽样分布:由正态总体样本构造的t分布、卡方分布和F分布,是后续假设检验中最常用的工具。

经验分布函数:从样本窥见总体

在统计学中,我们通常无法获得总体的全部信息,只能通过样本来进行推断。经验分布函数(Empirical Distribution Function, EDF)就是一种仅基于样本来估计总体分布函数的强大工具。

定义与直观理解

X1,X2,,XnX_1, X_2, \ldots, X_n 是来自某个总体的一个简单随机样本。其经验分布函数 Fn(x)F_n(x) 定义为: Fn(x)=1ni=1nI(Xix)F_n(x) = \frac{1}{n} \sum_{i=1}^{n} I(X_i \le x) 其中 I()I(\cdot) 是示性函数,当事件 XixX_i \le x 成立时取值为1,否则为0。

直观解释Fn(x)F_n(x) 表示在 nn 个样本点中,取值不超过 xx 的样本所占的比例(频率)。因此,其核心思想是用频率来逼近概率,即用 Fn(x)F_n(x) 来估计总体真实的分布函数 F(x)=P(Xx)F(x) = P(X \le x)

经验分布函数也可以写成一个分段函数的形式。将样本观测值按从小到大排序为 X(1)X(2)X(n)X_{(1)} \le X_{(2)} \le \cdots \le X_{(n)},则: Fn(x)={0,x<X(1)kn,X(k)x<X(k+1),k=1,2,,n11,xX(n)F_n(x) = \begin{cases} 0, & x < X_{(1)} \ \frac{k}{n}, & X_{(k)} \le x < X_{(k+1)}, \quad k=1,2,\ldots,n-1 \ 1, & x \ge X_{(n)} \end{cases} 这是一个右连续的阶梯函数,在每个样本点 X(i)X_{(i)} 处发生一次跳跃,跳跃高度为 1/n1/n(假设样本点互不相同)。

性质与理论保证

经验分布函数 Fn(x)F_n(x) 本身是一个统计量,因为它是样本的函数。对于固定的 xxnFn(x)nF_n(x) 服从二项分布 B(n,F(x))B(n, F(x))。根据伯努利大数定律,对于任意固定的 xx,当 nn \to \infty 时,有 Fn(x)PF(x)F_n(x) \xrightarrow{P} F(x)。这是一种逐点收敛

然而,一个更强大、更全局的结论是格列文科定理(Glivenko-Cantelli Theorem): supxRFn(x)F(x)a.s.0,n\sup_{x \in \mathbb{R}} |F_n(x) - F(x)| \xrightarrow{a.s.} 0, \quad n \to \infty 这个定理表明,经验分布函数与真实分布函数之间的最大偏差(记为 DnD_n)几乎必然收敛于0。这从理论上保证了,当样本量足够大时,经验分布函数 Fn(x)F_n(x) 是总体分布函数 F(x)F(x) 的优良近似。

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# 模拟经验分布函数与真实分布函数的逼近
np.random.seed(42)

# 真实分布:标准正态分布
true_dist = stats.norm(loc=0, scale=1)
x_grid = np.linspace(-3, 3, 1000)
true_cdf = true_dist.cdf(x_grid)

# 不同样本量下的经验分布函数
sample_sizes = [10, 30, 100]
plt.figure(figsize=(12, 8))

for i, n in enumerate(sample_sizes, 1):
    sample = true_dist.rvs(size=n)
    # 计算经验分布函数
    # 方法:对每个x_grid点,计算样本中<=该点的比例
    empirical_cdf = np.array([np.mean(sample <= x) for x in x_grid])
    
    plt.subplot(2, 2, i)
    plt.plot(x_grid, true_cdf, 'b-', lw=2, label='真实分布函数 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F(x)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.1389em;">F</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span></span></span></span>')
    plt.step(x_grid, empirical_cdf, 'r-', where='post', lw=1.5, label=f'经验分布函数 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>F</mi><mi>n</mi></msub><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">F_n(x)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1389em;">F</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mclose">)</span></span></span></span>, n={n}')
    plt.fill_between(x_grid, true_cdf, empirical_cdf, color='gray', alpha=0.3, label='偏差区域')
    plt.title(f'样本量 n = {n}')
    plt.xlabel('x')
    plt.ylabel('累积概率')
    plt.legend()
    plt.grid(True, alpha=0.3)

# 绘制最大偏差 D_n 随样本量增大的变化
plt.subplot(2, 2, 4)
n_values = np.arange(10, 1001, 10)
Dn_values = []
for n in n_values:
    sample = true_dist.rvs(size=n)
    empirical_cdf = np.array([np.mean(sample <= x) for x in x_grid])
    Dn = np.max(np.abs(empirical_cdf - true_cdf))
    Dn_values.append(Dn)

plt.plot(n_values, Dn_values, 'g-', lw=2)
plt.axhline(y=0, color='k', linestyle='--', alpha=0.5)
plt.title('格列文科定理图示:<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>D</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">D_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">D</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> 随 n 增大而减小')
plt.xlabel('样本量 n')
plt.ylabel('最大偏差 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>D</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">D_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">D</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

抽样分布:统计量的“行为指南”

统计推断的核心是通过样本统计量来推断总体参数。然而,统计量本身也是随机变量,有其自身的概率分布。抽样分布(Sampling Distribution)就是指统计量的概率分布。了解抽样分布,就如同拿到了统计量在反复抽样下的“行为指南”,是进行区间估计和假设检验的前提。

抽样分布的分类

  1. 精确(抽样)分布:在总体分布已知时,能够精确推导出的统计量的分布。例如,正态总体下样本均值的分布。
  2. 渐近(抽样)分布:当样本量 nn \to \infty 时,统计量分布的极限形式。通常由中心极限定理等极限定理得到。
  3. 近似(抽样)分布:当精确分布难以求出,且样本量不够大时,通过某种近似方法得到的分布。

正态总体的抽样分布定理(Fisher引理)

这是数理统计中最重要的定理之一,为基于正态分布的统计推断提供了理论核心。

定理(抽样分布定理):设 X1,X2,,XnX_1, X_2, \ldots, X_n 是来自正态总体 N(μ,σ2)N(\mu, \sigma^2) 的简单随机样本。记样本均值 Xˉ=1ni=1nXi\bar{X} = \frac{1}{n}\sum_{i=1}^n X_i,样本方差 S2=1n1i=1n(XiXˉ)2S^2 = \frac{1}{n-1}\sum_{i=1}^n (X_i - \bar{X})^2。则有:

  1. Xˉ\bar{X}S2S^2 相互独立
  2. XˉN(μ,σ2n)\bar{X} \sim N(\mu, \frac{\sigma^2}{n})
  3. (n1)S2σ2χ2(n1)\frac{(n-1)S^2}{\sigma^2} \sim \chi^2(n-1),即服从自由度为 n1n-1 的卡方分布。

证明思路(关键步骤)

  1. 构造随机向量 X=(X1,,Xn)T\mathbf{X} = (X_1, \ldots, X_n)^T,它服从多元正态分布 Nn(μ1n,σ2In)N_n(\mu\mathbf{1}_n, \sigma^2 I_n)
  2. 构造一个特殊的 n×nn \times n 正交矩阵 AA,其第一行所有元素均为 1/n1/\sqrt{n},其余行构造满足每行元素之和为0,且行与行之间正交。例如: A=(1/n1/n1/n1/n1/21/2001/61/62/60)A = \begin{pmatrix} 1/\sqrt{n} & 1/\sqrt{n} & 1/\sqrt{n} & \cdots & 1/\sqrt{n} \ 1/\sqrt{2} & -1/\sqrt{2} & 0 & \cdots & 0 \ 1/\sqrt{6} & 1/\sqrt{6} & -2/\sqrt{6} & \cdots & 0 \ \vdots & \vdots & \vdots & \ddots & \vdots \ \end{pmatrix}
  3. 作正交变换 Y=AX\mathbf{Y} = A\mathbf{X}。根据多元正态分布的性质,Y\mathbf{Y} 也服从多元正态分布,且其分量相互独立。可以验证:
    • Y1=nXˉY_1 = \sqrt{n}\bar{X},故 Xˉ\bar{X} 仅与 Y1Y_1 有关。
    • i=2nYi2=(n1)S2\sum_{i=2}^n Y_i^2 = (n-1)S^2,故 S2S^2 仅与 Y2,,YnY_2, \ldots, Y_n 有关。
  4. 由于 Y1Y_1(Y2,,Yn)(Y_2, \ldots, Y_n) 独立,可推出 Xˉ\bar{X}S2S^2 独立。同时,Y1N(nμ,σ2)Y_1 \sim N(\sqrt{n}\mu, \sigma^2) 推出结论2;i=2n(Yi/σ)2χ2(n1)\sum_{i=2}^n (Y_i/\sigma)^2 \sim \chi^2(n-1) 推出结论3。

由抽样分布定理导出的重要分布

基于上述定理,我们可以推导出在假设检验中至关重要的 t 统计量F 统计量 的分布。

1. t 分布(单样本情形) 当总体方差 σ2\sigma^2 未知时,为了对均值 μ\mu 进行推断,我们构造 t 统计量: T=XˉμS/nT = \frac{\bar{X} - \mu}{S / \sqrt{n}} 可以证明: T=(Xˉμ)/(σ/n)(n1)S2σ2/(n1)=ZV/(n1)T = \frac{(\bar{X} - \mu)/(\sigma/\sqrt{n})}{\sqrt{\frac{(n-1)S^2}{\sigma^2} / (n-1)}} = \frac{Z}{\sqrt{V/(n-1)}} 其中 Z=Xˉμσ/nN(0,1)Z = \frac{\bar{X} - \mu}{\sigma/\sqrt{n}} \sim N(0,1)V=(n1)S2σ2χ2(n1)V = \frac{(n-1)S^2}{\sigma^2} \sim \chi^2(n-1),且 ZZVV 独立(由抽样分布定理)。根据 t 分布的定义,有: Tt(n1)T \sim t(n-1) 即服从自由度为 n1n-1 的 t 分布。

2. F 分布(两样本方差比) 设有两个独立的正态总体:XN(μ1,σ12)X \sim N(\mu_1, \sigma_1^2)YN(μ2,σ22)Y \sim N(\mu_2, \sigma_2^2)。分别从两个总体中抽取样本 X1,,Xn1X_1,\ldots,X_{n_1}Y1,,Yn2Y_1,\ldots,Y_{n_2},样本方差为 S12S_1^2S22S_2^2。 若想比较两个总体的方差,构造 F 统计量: F=S12/σ12S22/σ22F = \frac{S_1^2 / \sigma_1^2}{S_2^2 / \sigma_2^2} 根据抽样分布定理,有 (n11)S12σ12χ2(n11)\frac{(n_1-1)S_1^2}{\sigma_1^2} \sim \chi^2(n_1-1)(n21)S22σ22χ2(n21)\frac{(n_2-1)S_2^2}{\sigma_2^2} \sim \chi^2(n_2-1),且两者独立。根据 F 分布的定义: F=[(n11)S12/σ12]/(n11)[(n21)S22/σ22]/(n21)F(n11,n21)F = \frac{[(n_1-1)S_1^2/\sigma_1^2] / (n_1-1)}{[(n_2-1)S_2^2/\sigma_2^2] / (n_2-1)} \sim F(n_1-1, n_2-1) 特别地,当 σ12=σ22\sigma_1^2 = \sigma_2^2 时,F=S12/S22F(n11,n21)F = S_1^2 / S_2^2 \sim F(n_1-1, n_2-1)

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# 验证抽样分布定理及t分布、F分布
np.random.seed(2024)

# 1. 验证样本均值与样本方差的独立性(通过模拟协方差)
n = 20
mu, sigma = 5, 2
num_simulations = 5000

sample_means = np.zeros(num_simulations)
sample_vars = np.zeros(num_simulations)

for i in range(num_simulations):
    sample = np.random.normal(loc=mu, scale=sigma, size=n)
    sample_means[i] = np.mean(sample)
    sample_vars[i] = np.var(sample, ddof=1)  # 使用无偏估计 (n-1)

# 计算相关系数(独立性意味着相关系数接近0)
corr_coef = np.corrcoef(sample_means, sample_vars)[0, 1]
print(f"样本均值与样本方差之间的样本相关系数: {corr_coef:.4f}")
print("理论上应为0,模拟值接近0说明独立性成立。")

# 2. 验证 (n-1)S^2 / sigma^2 ~ Chi-square(n-1)
scaled_vars = (n - 1) * sample_vars / (sigma ** 2)

# 绘制直方图并与理论卡方分布密度对比
plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.hist(scaled_vars, bins=50, density=True, alpha=0.6, color='skyblue', edgecolor='black', label='模拟值')
x_chi2 = np.linspace(0, stats.chi2.ppf(0.995, n-1), 200)
plt.plot(x_chi2, stats.chi2.pdf(x_chi2, df=n-1), 'r-', lw=2, label=f'<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>χ</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\chi^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1.0085em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">χ</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span>({n-1})')
plt.title(f'验证: <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><msup><mi>S</mi><mn>2</mn></msup><mi mathvariant="normal">/</mi><mspace linebreak="newline"></mspace><mi>s</mi><mi>i</mi><mi>g</mi><mi>m</mi><msup><mi>a</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">(n-1)S^2/\\sigma^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1.0641em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord">/</span></span><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:1.0085em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.0359em;">g</span><span class="mord mathnormal">m</span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> 的分布 (n={n})')
plt.xlabel('<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><msup><mi>S</mi><mn>2</mn></msup><mi mathvariant="normal">/</mi><mspace linebreak="newline"></mspace><mi>s</mi><mi>i</mi><mi>g</mi><mi>m</mi><msup><mi>a</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">(n-1)S^2/\\sigma^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1.0641em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord">/</span></span><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:1.0085em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.0359em;">g</span><span class="mord mathnormal">m</span><span class="mord"><span class="mord mathnormal">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span>')
plt.ylabel('密度')
plt.legend()
plt.grid(True, alpha=0.3)

# 3. 验证 t 统计量的分布: T = (X_bar - mu) / (S / sqrt(n)) ~ t(n-1)
t_stats = (sample_means - mu) / (np.sqrt(sample_vars) / np.sqrt(n))

plt.subplot(1, 2, 2)
plt.hist(t_stats, bins=50, density=True, alpha=0.6, color='lightgreen', edgecolor='black', label='模拟值')
x_t = np.linspace(stats.t.ppf(0.001, n-1), stats.t.ppf(0.999, n-1), 200)
plt.plot(x_t, stats.t.pdf(x_t, df=n-1), 'b-', lw=2, label=f't({n-1})')
plt.title(f'验证: T 统计量的分布 (n={n})')
plt.xlabel('T = (<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mspace linebreak="newline"></mspace><mi>b</mi><mi>a</mi><mi>r</mi><mi>X</mi></mrow><annotation encoding="application/x-tex">\\bar{X}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:0.6944em;"></span><span class="mord mathnormal">ba</span><span class="mord mathnormal" style="margin-right:0.0278em;">r</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">X</span></span></span></span></span> - <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mspace linebreak="newline"></mspace><mi>m</mi><mi>u</mi></mrow><annotation encoding="application/x-tex">\\mu</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:0.4306em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span></span></span></span>) / (S / <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mspace linebreak="newline"></mspace><mi>s</mi><mi>q</mi><mi>r</mi><mi>t</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">\\sqrt{n}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:0.8095em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">s</span><span class="mord mathnormal" style="margin-right:0.0359em;">q</span><span class="mord mathnormal" style="margin-right:0.0278em;">r</span><span class="mord mathnormal">t</span><span class="mord"><span class="mord mathnormal">n</span></span></span></span></span>)')
plt.ylabel('密度')
plt.legend()
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

# 4. 验证 F 统计量的分布 (两样本方差比)
n1, n2 = 15, 12
sigma1, sigma2 = 2, 2  # 假设方差相等
num_simulations_f = 5000
f_stats = np.zeros(num_simulations_f)

for i in range(num_simulations_f):
    sample1 = np.random.normal(loc=0, scale=sigma1, size=n1)
    sample2 = np.random.normal(loc=0, scale=sigma2, size=n2)
    var1 = np.var(sample1, ddof=1)
    var2 = np.var(sample2, ddof=1)
    f_stats[i] = var1 / var2  # 因为 sigma1^2 = sigma2^2

plt.figure(figsize=(6, 4))
plt.hist(f_stats, bins=50, density=True, alpha=0.6, color='orange', edgecolor='black', label='模拟值')
x_f = np.linspace(0, stats.f.ppf(0.99, n1-1, n2-1), 200)
plt.plot(x_f, stats.f.pdf(x_f, dfn=n1-1, dfd=n2-1), 'purple', lw=2, label=f'F({n1-1},{n2-1})')
plt.title(f'验证: <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>S</mi><mn>1</mn><mn>2</mn></msubsup><mi mathvariant="normal">/</mi><msubsup><mi>S</mi><mn>2</mn><mn>2</mn></msubsup></mrow><annotation encoding="application/x-tex">S_1^2 / S_2^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1.0641em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4519em;margin-left:-0.0576em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2481em;"><span></span></span></span></span></span></span><span class="mord">/</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4519em;margin-left:-0.0576em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2481em;"><span></span></span></span></span></span></span></span></span></span> 的分布 (方差相等时)')
plt.xlabel('<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>S</mi><mn>1</mn><mn>2</mn></msubsup><mi mathvariant="normal">/</mi><msubsup><mi>S</mi><mn>2</mn><mn>2</mn></msubsup></mrow><annotation encoding="application/x-tex">S_1^2 / S_2^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1.0641em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4519em;margin-left:-0.0576em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2481em;"><span></span></span></span></span></span></span><span class="mord">/</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0576em;">S</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-2.4519em;margin-left:-0.0576em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2481em;"><span></span></span></span></span></span></span></span></span></span>')
plt.ylabel('密度')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

📝 动手练一练

  1. 经验分布函数的计算:从标准正态分布 N(0,1)N(0,1) 中随机抽取一个样本量为10的样本:[-0.71, 0.36, -0.13, 1.47, -0.23, -1.32, 0.81, 0.92, -0.51, 0.15]。 a) 计算并写出该样本的经验分布函数 F10(x)F_{10}(x) 的分段表达式。 b) 计算 F10(0.5)F_{10}(0.5)F10(1.0)F_{10}(1.0) 的值。

  2. 抽样分布的应用:某工厂生产的零件长度服从正态分布 N(μ,0.12)N(\mu, 0.1^2)(单位:mm)。质检员每日随机抽取16个零件测量其长度,得到样本均值 xˉ\bar{x}。 a) 请问样本均值 Xˉ\bar{X} 服从什么分布?写出其均值和方差。 b) 若某日测得样本均值为 xˉ=50.05\bar{x} = 50.05 mm,请计算 P(Xˉ>50.05)P(\bar{X} > 50.05)(假设总体均值 μ=50.00\mu = 50.00 mm)。这个概率值在假设检验中通常被称为什么?

参考答案

  1. a) 首先将样本排序:X(1)=1.32,X(2)=0.71,X(3)=0.51,X(4)=0.23,X(5)=0.13,X(6)=0.15,X(7)=0.36,X(8)=0.81,X(9)=0.92,X(10)=1.47X_{(1)}=-1.32, X_{(2)}=-0.71, X_{(3)}=-0.51, X_{(4)}=-0.23, X_{(5)}=-0.13, X_{(6)}=0.15, X_{(7)}=0.36, X_{(8)}=0.81, X_{(9)}=0.92, X_{(10)}=1.47。 则: F10(x)={0,x<1.320.1,1.32x<0.710.2,0.71x<0.510.3,0.51x<0.230.4,0.23x<0.130.5,0.13x<0.150.6,0.15x<0.360.7,0.36x<0.810.8,0.81x<0.920.9,0.92x<1.471.0,x1.47F_{10}(x) = \begin{cases} 0, & x < -1.32 \ 0.1, & -1.32 \le x < -0.71 \ 0.2, & -0.71 \le x < -0.51 \ 0.3, & -0.51 \le x < -0.23 \ 0.4, & -0.23 \le x < -0.13 \ 0.5, & -0.13 \le x < 0.15 \ 0.6, & 0.15 \le x < 0.36 \ 0.7, & 0.36 \le x < 0.81 \ 0.8, & 0.81 \le x < 0.92 \ 0.9, & 0.92 \le x < 1.47 \ 1.0, & x \ge 1.47 \end{cases} b) F10(0.5)F_{10}(0.5)0.5[0.36,0.81)0.5 \in [0.36, 0.81),故 F10(0.5)=0.7F_{10}(0.5)=0.7F10(1.0)F_{10}(1.0)1.0[0.92,1.47)1.0 \in [0.92, 1.47),故 F10(1.0)=0.9F_{10}(1.0)=0.9

  2. a) 根据抽样分布定理,XˉN(μ,σ2n)=N(μ,0.1216)=N(μ,0.000625)\bar{X} \sim N(\mu, \frac{\sigma^2}{n}) = N(\mu, \frac{0.1^2}{16}) = N(\mu, 0.000625)。 b) 当 μ=50.00\mu = 50.00 时,XˉN(50.00,0.000625)\bar{X} \sim N(50.00, 0.000625),即标准差为 0.000625=0.025\sqrt{0.000625}=0.025。 计算 Z=50.0550.000.025=2.0Z = \frac{50.05 - 50.00}{0.025} = 2.0P(Xˉ>50.05)=P(Z>2.0)=1Φ(2.0)0.0228P(\bar{X} > 50.05) = P(Z > 2.0) = 1 - \Phi(2.0) \approx 0.0228。 这个概率值在假设检验中被称为 p值(当原假设 μ=50.00\mu=50.00 成立时,观察到当前样本或更极端情况的概率)。

本章小结

本节我们构建了从样本通往总体推断的两座关键桥梁。

要点回顾

  • 经验分布函数 Fn(x)F_n(x) 是总体分布函数 F(x)F(x) 的样本版本,用频率估计概率。格列文科定理保证了当样本量增大时,Fn(x)F_n(x) 能一致地逼近 F(x)F(x)
  • 抽样分布是统计量的概率分布,是统计推断的理论基础。它分为精确分布、渐近分布和近似分布。
  • 正态总体的抽样分布定理(Fisher引理) 是核心结论:样本均值与样本方差独立;样本均值服从正态分布;样本方差(缩放后)服从卡方分布。
  • 基于该定理,我们推导出单样本均值检验使用的 t 分布和两样本方差比较使用的 F 分布

行动清单

  1. 动手验证:运行讲义中的Python代码,直观感受经验分布函数如何随样本量增大而逼近真实分布,并验证t统计量和F统计量的模拟分布与理论曲线是否吻合。
  2. 理解推导:尝试理解抽样分布定理的证明思路(正交变换),并掌握由它推导出t统计量分布的关键步骤(标准正态与独立卡方之比)。
  3. 联系应用:思考在产品质量控制(如零件尺寸检验)或实验数据分析(如A/B测试)中,哪些场景会用到本节介绍的t分布或F分布进行统计推断。

— 小象教研组

配套学习资源与课件
  • 第1章课件:统计量与抽样分布(PPT · 6.0MB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问