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

正态总体参数的假设检验(二)

约 42 分钟

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

正态总体参数的假设检验(二):方差与两总体比较

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

在上一节学习了单正态总体均值的检验方法后,本节将深入探讨单正态总体方差的检验,并扩展到两个正态总体参数的比较。方差是衡量数据波动性的核心指标,而比较两个总体(如比较两种工艺的精度、男女某项指标的差异)则是数据分析中的常见任务。掌握这些检验方法,你将能够科学地判断一个过程的稳定性是否达标,或者两个群体在某个指标上是否存在显著差异。

💡 核心导读

本节你将掌握:

  1. 单正态总体方差的检验:学习在总体均值已知和未知两种情况下,如何利用卡方分布对方差进行双边和单边检验。
  2. 两正态总体均值的比较:掌握在方差已知、方差未知但相等、以及一般情况(大样本或小样本)下,比较两个总体均值的U检验、T检验及其应用。
  3. 两正态总体方差的比较:学习利用F分布检验两个总体方差是否相等(即方差齐性检验),这是进行两样本T检验的重要前提。
  4. 假设检验与区间估计的对偶关系:理解拒绝域与置信区间之间的内在联系,深化对统计推断统一性的认识。
  5. Python实战:使用scipy.stats模块快速实现各类正态总体参数的假设检验。

单正态总体方差的假设检验

X1,X2,,Xni.i.d.N(μ,σ2)X_1, X_2, \ldots, X_n \stackrel{\text{i.i.d.}}{\sim} N(\mu, \sigma^2)。我们关心总体方差 σ2\sigma^2 的假设检验问题。与均值检验类似,我们根据总体均值 μ\mu 是否已知,分为两种情况讨论。

情况一:总体均值 μ\mu 已知

μ\mu 已知时,σ2\sigma^2 的一个良好点估计为 1ni=1n(Xiμ)2\frac{1}{n} \sum_{i=1}^{n} (X_i - \mu)^2。根据抽样分布定理,在原假设 H0:σ2=σ02H_0: \sigma^2 = \sigma_0^2 成立时,有: χ2=i=1n(Xiμ)2σ02χ2(n)\chi^2 = \frac{\sum_{i=1}^{n} (X_i - \mu)^2}{\sigma_0^2} \sim \chi^2(n) 其中 χ2(n)\chi^2(n) 表示自由度为 nn 的卡方分布。

基于此统计量,我们可以构造以下三类检验:

  1. 双边检验H0:σ2=σ02vs.H1:σ2σ02H_0: \sigma^2 = \sigma_0^2 \quad vs. \quad H_1: \sigma^2 \neq \sigma_0^2

    • 检验统计量χ2=i=1n(Xiμ)2σ02\chi^2 = \frac{\sum_{i=1}^{n} (X_i - \mu)^2}{\sigma_0^2}
    • 拒绝域W={χ2χ1α/22(n)χ2χα/22(n)}W = {\chi^2 \leq \chi^2_{1-\alpha/2}(n) \quad \text{或} \quad \chi^2 \geq \chi^2_{\alpha/2}(n)}
    • 思想:当估计的方差与假设方差之比过小或过大时,拒绝原假设。由于卡方分布非对称,通常两侧各取 α/2\alpha/2 的面积。
  2. 左侧单边检验H0:σ2σ02vs.H1:σ2<σ02H_0: \sigma^2 \geq \sigma_0^2 \quad vs. \quad H_1: \sigma^2 < \sigma_0^2

    • 检验统计量:同上。
    • 拒绝域W={χ2χ1α2(n)}W = {\chi^2 \leq \chi^2_{1-\alpha}(n)}
    • 思想:备择假设是方差变小,因此当统计量取值过小时拒绝 H0H_0
  3. 右侧单边检验H0:σ2σ02vs.H1:σ2>σ02H_0: \sigma^2 \leq \sigma_0^2 \quad vs. \quad H_1: \sigma^2 > \sigma_0^2

    • 检验统计量:同上。
    • 拒绝域W={χ2χα2(n)}W = {\chi^2 \geq \chi^2_{\alpha}(n)}
    • 思想:备择假设是方差变大,因此当统计量取值过大时拒绝 H0H_0

:与均值检验类似,H0:σ2=σ02vs.H1:σ2>σ02H_0: \sigma^2 = \sigma_0^2 \quad vs. \quad H_1: \sigma^2 > \sigma_0^2 这类检验的拒绝域与右侧单边检验相同,且其第一类错误概率 α\leq \alpha,因此在实际中常被归为同一类处理。

情况二:总体均值 μ\mu 未知

μ\mu 未知时,我们用样本均值 Xˉ\bar{X} 代替,并使用样本方差 Sn2=1n1i=1n(XiXˉ)2S_n^2 = \frac{1}{n-1}\sum_{i=1}^{n} (X_i - \bar{X})^2 来估计 σ2\sigma^2。此时有: χ2=(n1)Sn2σ02χ2(n1)\chi^2 = \frac{(n-1)S_n^2}{\sigma_0^2} \sim \chi^2(n-1) 检验的构造逻辑与 μ\mu 已知时完全一致,只需将自由度从 nn 替换为 n1n-1,并用 Sn2S_n^2 替换公式中的 1n(Xiμ)2\frac{1}{n}\sum (X_i - \mu)^2

  1. 双边检验H0:σ2=σ02vs.H1:σ2σ02H_0: \sigma^2 = \sigma_0^2 \quad vs. \quad H_1: \sigma^2 \neq \sigma_0^2

    • 检验统计量χ2=(n1)Sn2σ02\chi^2 = \frac{(n-1)S_n^2}{\sigma_0^2}
    • 拒绝域W={χ2χ1α/22(n1)χ2χα/22(n1)}W = {\chi^2 \leq \chi^2_{1-\alpha/2}(n-1) \quad \text{或} \quad \chi^2 \geq \chi^2_{\alpha/2}(n-1)}
  2. 单边检验:拒绝域的构造原则同上,对应使用自由度为 n1n-1 的卡方分位数。

两正态总体参数的假设检验

在实际研究中,经常需要比较两个总体的差异。设两个相互独立的样本: X1,X2,,Xmi.i.d.N(μ1,σ12),Y1,Y2,,Yni.i.d.N(μ2,σ22)X_1, X_2, \ldots, X_m \stackrel{\text{i.i.d.}}{\sim} N(\mu_1, \sigma_1^2), \quad Y_1, Y_2, \ldots, Y_n \stackrel{\text{i.i.d.}}{\sim} N(\mu_2, \sigma_2^2) 我们关心两个总体均值 (μ1,μ2)(\mu_1, \mu_2) 和方差 (σ12,σ22)(\sigma_1^2, \sigma_2^2) 的比较。

两正态总体均值的比较

核心问题是检验 H0:μ1=μ2H_0: \mu_1 = \mu_2。根据对方差信息的了解程度,分为以下几种情况:

情况一:两总体方差已知 (σ12,σ22\sigma_1^2, \sigma_2^2 已知)

利用样本均值之差 XˉYˉ\bar{X} - \bar{Y} 的分布。在原假设 H0:μ1=μ2H_0: \mu_1 = \mu_2 下,有: U=XˉYˉσ12m+σ22nN(0,1)U = \frac{\bar{X} - \bar{Y}}{\sqrt{\frac{\sigma_1^2}{m} + \frac{\sigma_2^2}{n}}} \sim N(0, 1)

  1. 双边检验 (H1:μ1μ2H_1: \mu_1 \neq \mu_2):拒绝域为 W={Uuα/2}W = { |U| \geq u_{\alpha/2} }
  2. 右侧单边检验 (H1:μ1>μ2H_1: \mu_1 > \mu_2):拒绝域为 W={Uuα}W = { U \geq u_{\alpha} }
  3. 左侧单边检验 (H1:μ1<μ2H_1: \mu_1 < \mu_2):拒绝域为 W={Uuα}W = { U \leq -u_{\alpha} }

情况二:两总体方差未知但相等 (σ12=σ22=σ2\sigma_1^2 = \sigma_2^2 = \sigma^2,但 σ2\sigma^2 未知)

此时需要联合估计共同的方差 σ2\sigma^2。定义合并样本方差: Sp2=(m1)S1m2+(n1)S2n2m+n2S_p^2 = \frac{(m-1)S_{1m}^2 + (n-1)S_{2n}^2}{m+n-2} 其中 S1m2S_{1m}^2S2n2S_{2n}^2 分别是两个样本的样本方差。在原假设 H0:μ1=μ2H_0: \mu_1 = \mu_2 下,有: T=XˉYˉSp1m+1nt(m+n2)T = \frac{\bar{X} - \bar{Y}}{S_p \sqrt{\frac{1}{m} + \frac{1}{n}}} \sim t(m+n-2)

  1. 双边检验:拒绝域为 W={Ttα/2(m+n2)}W = { |T| \geq t_{\alpha/2}(m+n-2) }
  2. 单边检验:拒绝域方向与U检验类似,使用 tt 分布的分位数。

情况三:一般情况 (两总体方差未知且不一定相等)

这是更符合实际的情形,称为 Behrens-Fisher 问题

  • 大样本情形 (m,nm, n 都较大):由中心极限定理,仍可使用 U统计量,用样本方差 S1m2,S2n2S_{1m}^2, S_{2n}^2 代替总体方差: U=XˉYˉS1m2m+S2n2n近似N(0,1)U = \frac{\bar{X} - \bar{Y}}{\sqrt{\frac{S_{1m}^2}{m} + \frac{S_{2n}^2}{n}}} \stackrel{\text{近似}}{\sim} N(0, 1) 检验方法与情况一相同。
  • 小样本情形:可采用 Welch’s t检验。其检验统计量与上述大样本U统计量形式相同,但将其分布近似为 tt 分布,自由度 ν\nu 由以下公式估计(Satterthwaite 近似): ν=(S1m2m+S2n2n)2(S1m2/m)2m1+(S2n2/n)2n1\nu = \frac{\left( \frac{S_{1m}^2}{m} + \frac{S_{2n}^2}{n} \right)^2}{\frac{(S_{1m}^2/m)^2}{m-1} + \frac{(S_{2n}^2/n)^2}{n-1}}Tt(ν)T \sim t(\nu)。然后按 tt 检验确定拒绝域。

两正态总体方差的比较 (方差齐性检验)

在比较两个总体均值之前,通常需要先检验其方差是否相等 (σ12=σ22\sigma_1^2 = \sigma_2^2),即方差齐性检验。这是选择正确均值检验方法(等方差T检验 vs. Welch’s t检验)的前提。

根据均值 μ1,μ2\mu_1, \mu_2 是否已知,构造不同的统计量。最常见的是均值未知的情形。

情况:两总体均值未知

利用样本方差 S1m2S_{1m}^2S2n2S_{2n}^2。由抽样分布定理: (m1)S1m2σ12χ2(m1),(n1)S2n2σ22χ2(n1)\frac{(m-1)S_{1m}^2}{\sigma_1^2} \sim \chi^2(m-1), \quad \frac{(n-1)S_{2n}^2}{\sigma_2^2} \sim \chi^2(n-1) 且两者独立。因此,可以构造 F统计量F=S1m2/σ12S2n2/σ22F = \frac{S_{1m}^2 / \sigma_1^2}{S_{2n}^2 / \sigma_2^2} 在原假设 H0:σ12=σ22H_0: \sigma_1^2 = \sigma_2^2 下,σ12/σ22=1\sigma_1^2 / \sigma_2^2 = 1,故: F=S1m2S2n2F(m1,n1)F = \frac{S_{1m}^2}{S_{2n}^2} \sim F(m-1, n-1) 其中 F(m1,n1)F(m-1, n-1) 表示第一自由度为 m1m-1,第二自由度为 n1n-1 的F分布。

  1. 双边检验 (H1:σ12σ22H_1: \sigma_1^2 \neq \sigma_2^2):拒绝域为 W={FF1α/2(m1,n1)FFα/2(m1,n1)}W = { F \leq F_{1-\alpha/2}(m-1, n-1) \quad \text{或} \quad F \geq F_{\alpha/2}(m-1, n-1) }
    • F1α/2(m1,n1)=1/Fα/2(n1,m1)F_{1-\alpha/2}(m-1, n-1) = 1 / F_{\alpha/2}(n-1, m-1)
  2. 右侧单边检验 (H1:σ12>σ22H_1: \sigma_1^2 > \sigma_2^2):拒绝域为 W={FFα(m1,n1)}W = { F \geq F_{\alpha}(m-1, n-1) }
  3. 左侧单边检验 (H1:σ12<σ22H_1: \sigma_1^2 < \sigma_2^2):拒绝域为 W={FF1α(m1,n1)}W = { F \leq F_{1-\alpha}(m-1, n-1) }

假设检验与区间估计的对偶关系

讲师在视频中多次强调,假设检验的拒绝域与区间估计的置信区间存在紧密的对偶关系。以单正态总体均值 μ\mu 的检验(方差已知)为例:

  • 双边检验 H0:μ=μ0H_0: \mu = \mu_0 的接受域为:Xˉμ0uα/2σn|\bar{X} - \mu_0| \leq u_{\alpha/2} \frac{\sigma}{\sqrt{n}}
  • μ\mu1α1-\alpha 置信区间为:Xˉ±uα/2σn\bar{X} \pm u_{\alpha/2} \frac{\sigma}{\sqrt{n}}

可以发现,μ0\mu_0 落在 μ\mu 的置信区间内 等价于 假设检验接受 H0:μ=μ0H_0: \mu = \mu_0。这种关系在方差检验、两总体均值差检验中同样成立。这体现了Neyman统计思想的一致性:区间估计是在控制置信度下寻找最短区间,而假设检验是在控制第一类错误下寻找最有功效的检验。

📝 动手练一练

  1. 单总体方差检验:某精密仪器生产零件,要求直径的方差 σ20.0004mm2\sigma^2 \leq 0.0004 , \text{mm}^2。现从一批产品中抽取10个零件测量直径(单位:mm): [10.01, 10.02, 9.99, 10.00, 10.01, 9.98, 10.02, 10.00, 9.99, 10.01] 假设直径服从正态分布,在显著性水平 α=0.05\alpha=0.05 下,能否认为这批零件的方差符合要求?(即检验 H0:σ20.0004H_0: \sigma^2 \leq 0.0004

    参考答案: 首先计算样本方差 Sn2S_n^2。经计算,xˉ=10.003\bar{x} = 10.003Sn21.79×104S_n^2 \approx 1.79 \times 10^{-4}。 检验统计量 χ2=(n1)Sn2σ02=9×1.79×1044×1044.03\chi^2 = \frac{(n-1)S_n^2}{\sigma_0^2} = \frac{9 \times 1.79 \times 10^{-4}}{4 \times 10^{-4}} \approx 4.03。 右侧检验拒绝域为 χ2χ0.052(9)16.92\chi^2 \geq \chi^2_{0.05}(9) \approx 16.92。 由于 4.03<16.924.03 < 16.92,未落入拒绝域,故没有充分证据拒绝原假设,可以认为这批零件的方差符合要求。

  2. 两总体均值与方差检验:为比较两种教学方法(A和B)的效果,分别随机抽取两组学生进行测试。A组10人,得分样本均值为85,样本标准差为6;B组12人,得分样本均值为80,样本标准差为5。假设测试成绩均服从正态分布。

    • (a) 首先,在 α=0.1\alpha=0.1 水平下,检验两种方法对应的成绩方差是否相等(方差齐性)。
    • (b) 根据(a)的结论,在 α=0.05\alpha=0.05 水平下,检验两种教学方法的平均成绩是否有显著差异。

    参考答案: (a) 方差齐性检验(双边)。 F=SA2SB2=6252=1.44F = \frac{S_A^2}{S_B^2} = \frac{6^2}{5^2} = 1.44。 拒绝域为 FF0.95(9,11)F \leq F_{0.95}(9, 11)FF0.05(9,11)F \geq F_{0.05}(9, 11)。查表得 F0.05(9,11)2.90F_{0.05}(9,11) \approx 2.90F0.95(9,11)=1/F0.05(11,9)1/3.070.326F_{0.95}(9,11) = 1/F_{0.05}(11,9) \approx 1/3.07 \approx 0.326。 由于 0.326<1.44<2.900.326 < 1.44 < 2.90,未落入拒绝域,可以认为两总体方差无显著差异。 (b) 基于(a),采用等方差的两样本T检验。 Sp2=(101)×62+(121)×5210+122=9×36+11×2520=324+27520=29.95S_p^2 = \frac{(10-1)\times6^2 + (12-1)\times5^2}{10+12-2} = \frac{9\times36 + 11\times25}{20} = \frac{324+275}{20} = 29.95T=858029.95×(110+112)=529.95×0.183355.4952.3432.13T = \frac{85-80}{\sqrt{29.95 \times (\frac{1}{10}+\frac{1}{12})}} = \frac{5}{\sqrt{29.95 \times 0.1833}} \approx \frac{5}{\sqrt{5.49}} \approx \frac{5}{2.343} \approx 2.13。 双边检验拒绝域为 Tt0.025(20)2.086|T| \geq t_{0.025}(20) \approx 2.086。 由于 2.13>2.0862.13 > 2.086,落入拒绝域,故拒绝原假设,认为两种教学方法的平均成绩有显著差异。

import numpy as np
from scipy import stats

# 设置随机种子保证可复现
np.random.seed(321)

# 1. 模拟单总体方差检验
print("=== 单总体方差检验模拟 ===")
sigma0_sq = 0.0004
n = 10
# 假设真实方差为0.00035,小于标准0.0004
true_sigma = np.sqrt(0.00035)
sample = np.random.normal(loc=10.00, scale=true_sigma, size=n)
print(f"样本数据: {np.round(sample, 4)}")
sample_var = np.var(sample, ddof=1)  # 样本方差,ddof=1
print(f"样本方差 S^2 = {sample_var:.6f}")
chi2_stat = (n-1) * sample_var / sigma0_sq
print(f"卡方检验统计量 = {chi2_stat:.4f}")
chi2_critical = stats.chi2.ppf(0.95, df=n-1)  # 右侧检验临界值
print(f"卡方临界值 (alpha=0.05, df={n-1}) = {chi2_critical:.4f}")
if chi2_stat > chi2_critical:
    print("结论: 拒绝H0,方差不符合要求。")
else:
    print("结论: 不拒绝H0,方差符合要求。")

# 2. 模拟两总体均值与方差检验
print("\n=== 两总体均值与方差检验模拟 ===")
# 生成模拟数据:A组方差稍大,但均值更高
mu_a, sigma_a = 85, 6
mu_b, sigma_b = 80, 5
n_a, n_b = 10, 12
sample_a = np.random.normal(mu_a, sigma_a, n_a)
sample_b = np.random.normal(mu_b, sigma_b, n_b)
print(f"A组样本均值: {np.mean(sample_a):.2f}, 样本标准差: {np.std(sample_a, ddof=1):.2f}")
print(f"B组样本均值: {np.mean(sample_b):.2f}, 样本标准差: {np.std(sample_b, ddof=1):.2f}")

# (a) 方差齐性检验 (F检验)
var_a = np.var(sample_a, ddof=1)
var_b = np.var(sample_b, ddof=1)
f_stat = var_a / var_b if var_a >= var_b else var_b / var_a  # 确保F>=1,方便查表
df1, df2 = (n_a-1, n_b-1) if var_a >= var_b else (n_b-1, n_a-1)
f_critical_upper = stats.f.ppf(0.95, df1, df2)  # 双边检验上侧临界值
print(f"\n(a) 方差齐性检验 (F检验):")
print(f"   F统计量 = {f_stat:.4f} (已调整使F>=1)")
print(f"   上侧临界值 F_0.05({df1},{df2}) = {f_critical_upper:.4f}")
if f_stat > f_critical_upper:
    print("   结论: 拒绝方差齐性假设 (方差不相等)")
    var_equal = False
else:
    print("   结论: 不拒绝方差齐性假设 (可认为方差相等)")
    var_equal = True

# (b) 两总体均值检验
print(f"\n(b) 两总体均值检验:")
# 使用scipy内置函数进行检验,它会自动根据var_equal选择方法
t_stat, p_val = stats.ttest_ind(sample_a, sample_b, equal_var=var_equal)
print(f"   T检验统计量 = {t_stat:.4f}")
print(f"   双边检验p值 = {p_val:.4f}")
if p_val < 0.05:
    print("   结论: p值 < 0.05,拒绝原假设,认为两总体均值有显著差异。")
else:
    print("   结论: p值 >= 0.05,不拒绝原假设,认为两总体均值无显著差异。")

# 验证对偶关系:均值差的置信区间与假设检验
alpha = 0.05
if var_equal:
    # 等方差,计算合并方差置信区间
    sp_sq = ((n_a-1)*var_a + (n_b-1)*var_b) / (n_a+n_b-2)
    se = np.sqrt(sp_sq * (1/n_a + 1/n_b))
    df = n_a + n_b - 2
else:
    # 异方差 (Welch's t)
    se = np.sqrt(var_a/n_a + var_b/n_b)
    df = (var_a/n_a + var_b/n_b)**2 / ((var_a/n_a)**2/(n_a-1) + (var_b/n_b)**2/(n_b-1))
t_critical = stats.t.ppf(1-alpha/2, df)
mean_diff = np.mean(sample_a) - np.mean(sample_b)
ci_lower = mean_diff - t_critical * se
ci_upper = mean_diff + t_critical * se
print(f"\n均值差 {mean_diff:.2f}{100*(1-alpha)}% 置信区间: [{ci_lower:.2f}, {ci_upper:.2f}]")
print("若该区间包含0,则对应均值检验的p值将大于0.05(不拒绝H0)。")

本章小结

本节系统学习了正态总体参数的假设检验中关于方差比较和两总体比较的核心内容。

要点回顾

  1. 单正态总体方差检验:基于卡方分布,需区分总体均值是否已知,关键在自由度的选择(nnn1n-1)。
  2. 两正态总体均值比较:是数据分析的基石。根据方差信息,选择正确的检验方法:
    • 方差已知 → U检验(Z检验)。
    • 方差未知但相等 → 等方差T检验(Student’s t-test)。
    • 方差未知且不等 → 大样本用U检验小样本用Welch’s t检验
  3. 两正态总体方差比较:基于F分布的方差齐性检验,是进行等方差T检验前的必要步骤。
  4. 内在联系:假设检验的接受域与参数的置信区间存在对偶关系,这统一了统计推断的区间估计与假设检验两大分支。

行动清单

  1. 明确检验路径:面对两样本均值比较问题时,养成先做方差齐性检验,再根据结果选择相应均值检验方法的习惯。
  2. 善用工具验证:使用scipy.stats模块中的ttest_indlevenebartlettchi2等函数快速完成计算,并与手动推导结果相互验证。
  3. 理解输出内涵:不仅关注检验的“显著与否”,更要理解p值的含义、置信区间的宽度,并结合实际问题背景做出合理解释。

— 小象教研组

配套学习资源与课件
  • 第4章课件:假设检验(PDF · 7.6MB)
    下载
🎁 免费学习资源

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

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

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