📑 查看全课大纲(第 23 / 41 节)
- 1.数理统计中的基本概念
- 2.统计量与抽样分布(一)
- 3.统计量与抽样分布(二)
- 4.次序统计量
- 5.充分统计量与完备统计量
- 6.统计中常用分布族(一)
- 7.统计中常用分布族(二)
- 8.矩估计
- 9.极大似然估计
- 10.无偏估计与一致最小方差无偏估计(一)
- 11.无偏估计与一致最小方差无偏估计(二)
- 12.完备统计量
- 13.CR不等式及有效估计
- 14.相合估计
- 15.置信区间
- 16.正态总体参数的置信区间
- 17.大样本置信区间
- 18.Fisher显著性检验
- 19.正态总体参数的假设检验(一)
- 20.正态总体参数的假设检验(二)
- 21.似然比检验
- 22.Neyman-Pearson基本引理
- 23.一致最优势检验
- 24.无偏检验与一致最优势无偏检验
- 25.正态概率纸检验
- 26.拟合优度检验
- 27.列联表的独立性检验
- 28.Kolmogorov检验
- 29.正态性检验
- 30.Bayes统计
- 31.先验分布的确定
- 32.Bayes统计推断
- 33.统计判决理论
- 34.Minimax准则
- 35.非参数统计
- 36.符号检验
- 37.Wilcoxon符号秩检验
- 38.抽样调查
- 39.简单随机抽样
- 40.分层随机抽样
- 41.整群随机抽样
一致最优势检验
约 23 分钟
一致最优势检验 (UMP Test)
小象实战讲义 · 数据科学的统计基础
在上一节,我们学习了 Neyman-Pearson 基本引理,它为我们提供了在简单原假设对简单备择假设下寻找最优势检验 (MP Test) 的方法。然而,在实际的数据分析中,我们面临的假设检验问题往往是复合的,即原假设或备择假设对应的是一个参数集合。本节将引入一致最优势检验 (Uniformly Most Powerful Test, UMP Test) 的概念,它是在控制第一类错误概率的前提下,对备择假设参数空间中所有参数点都具有最大功效(即最小第二类错误)的检验。我们将学习 UMP 检验的定义、存在性定理,并重点探讨在单调似然比分布族 (MLR Family) 下单边假设和双边假设的 UMP 检验构造方法。掌握 UMP 检验的理论,能帮助我们在面对复杂的参数假设时,找到理论上最优的决策规则。
💡 核心导读
- 从 MP 到 UMP:理解一致最优势检验 (UMP) 是最优势检验 (MP) 在复合备择假设下的自然推广,其核心要求是检验的功效函数在整个备择参数空间上都达到最大。
- MLR 分布族:认识单调似然比分布族 (MLR Family),这是一类重要的分布族,其似然比是某个统计量的单调函数。许多常见分布(如正态、指数、泊松、二项分布)都属于 MLR 族,这为 UMP 检验的存在和构造提供了基础。
- 单边假设的 UMP 检验:学习对于形如 vs 的单边假设检验问题,当总体属于 MLR 族时,如何构造其水平为 的 UMP 检验,并确定其拒绝域。
- 双边假设的 UMP 检验:了解对于形如 vs 的双边假设检验问题,在单参数指数族下,UMP 检验的存在性及其构造形式。
一致最优势检验的定义
考虑一个一般的参数假设检验问题: 其中 和 是参数空间 的两个不相交子集,它们都可以是复合的。
设 和 是该检验问题的两个水平为 的检验函数,即满足:
定义(一致优于):如果对于备择假设空间 中的每一个参数 ,都有 则称检验 一致地优于检验 。
定义(一致最优势检验,UMP Test):如果一个水平为 的检验 ,对于任何其他水平为 的检验 ,都满足 一致地优于 ,则称 是该假设检验问题的一个水平为 的一致最优势检验。
核心思想:UMP 检验在严格控制第一类错误概率不超过 的前提下,使得在备择假设 中所有可能参数值处的功效(即正确拒绝 的概率)都达到最大。MP 检验是 UMP 检验当 只包含一个点(简单备择假设)时的特例。
单调似然比分布族 (MLR Family)
为了讨论单边和双边假设的 UMP 检验,我们需要引入一个重要的分布族概念。
定义(单调似然比分布族):设总体分布族为 ,其中 是直线上的一个区间。如果对于任意 ,似然比 都是某个统计量 的非降函数,则称该分布族是关于 的单调似然比分布族 (Monotone Likelihood Ratio Family)。如果是非增函数,则称为单调递减似然比族。
重要性:MLR 族广泛存在。单参数指数族是 MLR 族的一个重要子类。单参数指数族的密度/概率函数可写为: 如果 是 的严格单调函数(通常假设严格递增),则该分布族是关于充分统计量 的 MLR 族。
常见例子:正态分布 ( 已知时关于 )、指数分布 、泊松分布 、二项分布 等,在适当的参数化下,都属于 MLR 族。
单边假设的 UMP 检验
考虑如下单边假设检验问题:
定理(单边 UMP 检验):设总体分布族 是关于统计量 的非降 MLR 族。则对于假设检验问题 (5.3.7),存在一个水平为 的 UMP 检验,其检验函数具有如下形式: 其中常数 和 由下列方程确定: 并且,该 UMP 检验的势函数 是 的非降函数,且在 上严格递增。
直观理解:由于分布族是 MLR 族,当备择假设 成立时,样本更倾向于产生较大的 值。因此,最优的拒绝域自然应取为 较大的区域,即 。常数 和 的作用是精确控制第一类错误概率在边界点 处等于 。对于连续型分布,通常 ,此时 可取任意值,检验退化为非随机化检验:。
例子(正态总体均值的单边检验):设 ,考虑检验: 样本联合密度为: 这属于单参数指数族, 是 的严格增函数,充分统计量 。因此,该分布族是关于 (或 )的 MLR 族。 根据定理,其水平为 的 UMP 检验为: 为确定 ,令在 边界 处犯第一类错误的概率为 : 由于 ,故 ,解得 ,其中 是标准正态分布的 分位数。 因此,UMP 检验的拒绝域为:。
我们可以用模拟来验证该检验的功效确实优于其他水平为 的检验(例如一个基于错误统计量构造的检验)。
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
# 固定随机种子以确保结果可复现
np.random.seed(42)
# 参数设置
n = 10 # 样本量
alpha = 0.05 # 显著性水平
mu0 = 0 # 原假设边界
sigma = 1 # 已知标准差
z_alpha = stats.norm.ppf(1 - alpha) # z_{1-alpha}
c = z_alpha / np.sqrt(n) # UMP检验的临界值
# 定义两个检验函数
def test_ump(sample):
"""UMP检验:基于样本均值"""
x_bar = np.mean(sample)
return 1 if x_bar > c else 0
# 对比检验的临界值:在H0下中位数的(1-alpha)分位数。
# 注意:该临界值只与H0分布有关,与具体样本无关,因此只需在函数外模拟一次,
# 避免在每次检验调用时重复进行上万次模拟。
n_sim_crit = 5000
medians_h0 = np.array([np.median(stats.norm.rvs(loc=mu0, scale=sigma, size=n)) for _ in range(n_sim_crit)])
critical_val_other = np.percentile(medians_h0, 100*(1-alpha))
def test_other(sample):
"""另一个水平为alpha的检验:基于样本中位数(仅作对比示例)"""
# 为了构造一个水平也为alpha的检验,临界值通过在mu=0下中位数的模拟分布近似确定(见上方)。
# 注意:这只是一个用于对比的、功效可能较差的检验。
median = np.median(sample)
return 1 if median > critical_val_other else 0
# 计算势函数:对于不同的真实mu,计算检验拒绝H0的概率
mu_values = np.linspace(-0.5, 2, 50)
power_ump = []
power_other = []
n_sim_power = 1000 # 每个mu值下的模拟次数
for mu in mu_values:
reject_ump = 0
reject_other = 0
for _ in range(n_sim_power):
sample = stats.norm.rvs(loc=mu, scale=sigma, size=n)
reject_ump += test_ump(sample)
reject_other += test_other(sample)
power_ump.append(reject_ump / n_sim_power)
power_other.append(reject_other / n_sim_power)
# 绘制势函数曲线
plt.figure(figsize=(10, 6))
plt.plot(mu_values, power_ump, 'b-', linewidth=2, label='UMP检验 (基于均值)')
plt.plot(mu_values, power_other, 'r--', linewidth=2, label='其他检验 (基于中位数)')
plt.axvline(x=mu0, color='k', linestyle=':', label=f'<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>H</mi><mn>0</mn></msub></mrow><annotation encoding="application/x-tex">H_0</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.0813em;">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">0</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>边界 <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><mo>=</mo><mrow><mi>m</mi><mi>u</mi><mn>0</mn></mrow></mrow><annotation encoding="application/x-tex">\\mu={mu0}</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 class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6444em;"></span><span class="mord"><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span><span class="mord">0</span></span></span></span></span>')
plt.axhline(y=alpha, color='gray', linestyle='--', label=f'显著性水平 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mspace linebreak="newline"></mspace><mi>a</mi><mi>l</mi><mi>p</mi><mi>h</mi><mi>a</mi><mo>=</mo><mrow><mi>a</mi><mi>l</mi><mi>p</mi><mi>h</mi><mi>a</mi></mrow></mrow><annotation encoding="application/x-tex">\\alpha={alpha}</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.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.0197em;">l</span><span class="mord mathnormal">p</span><span class="mord mathnormal">ha</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.0197em;">l</span><span class="mord mathnormal">p</span><span class="mord mathnormal">ha</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><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>', fontsize=12)
plt.ylabel('势函数 <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>e</mi><mi>t</mi><mi>a</mi><mo stretchy="false">(</mo><mspace linebreak="newline"></mspace><mi>m</mi><mi>u</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\\beta(\\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:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">b</span><span class="mord mathnormal">e</span><span class="mord mathnormal">t</span><span class="mord mathnormal">a</span><span class="mopen">(</span></span><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span><span class="mclose">)</span></span></span></span>', fontsize=12)
plt.title(f'单边检验 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>H</mi><mn>0</mn></msub><mo>:</mo><mspace linebreak="newline"></mspace><mi>m</mi><mi>u</mi><mspace linebreak="newline"></mspace><mi>l</mi><mi>e</mi><mrow><mi>m</mi><mi>u</mi><mn>0</mn></mrow></mrow><annotation encoding="application/x-tex">H_0: \\mu \\le {mu0}</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.0813em;">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0813em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">0</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="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span></span><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 class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:0.6944em;"></span><span class="mord mathnormal" style="margin-right:0.0197em;">l</span><span class="mord mathnormal">e</span><span class="mord"><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span><span class="mord">0</span></span></span></span></span> vs <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>H</mi><mn>1</mn></msub><mo>:</mo><mspace linebreak="newline"></mspace><mi>m</mi><mi>u</mi><mo>></mo><mrow><mi>m</mi><mi>u</mi><mn>0</mn></mrow></mrow><annotation encoding="application/x-tex">H_1: \\mu > {mu0}</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.0813em;">H</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0813em;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><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="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span></span><span class="mspace katex-newline"></span><span class="katex-base"><span class="katex-strut" style="height:0.5782em;vertical-align:-0.0391em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6444em;"></span><span class="mord"><span class="mord mathnormal">m</span><span class="mord mathnormal">u</span><span class="mord">0</span></span></span></span></span> 的势函数比较 (n={n})', fontsize=14)
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()运行上述代码,你将看到基于样本均值的 UMP 检验的势函数曲线(蓝色实线)在整个备择假设区域 () 上都位于基于中位数的检验的势函数曲线(红色虚线)之上,这直观地验证了 UMP 检验的“一致最优”性。在原假设区域 (),两者的势函数都保持在 以下。
对于另一个方向的单边检验 vs ,其 UMP 检验的形式类似,但拒绝域为 。
双边假设的 UMP 检验
考虑如下双边假设检验问题:
定理(双边 UMP 检验):设 ,其中 属于单参数指数族: 且 为自然参数。则对于假设检验问题 (5.3.8),存在一个水平为 的 UMP 检验,其检验函数具有如下形式: 其中常数 和 由下列方程组确定:
直观理解:对于形如 (5.3.8) 的双边假设,备择假设对应参数的一个中间区间。在单参数指数族( 为自然参数)下,其充分统计量 的分布在 取中间值时,会倾向于集中在某个中间范围;而当 取两端值 ( 或 ) 时, 的分布会偏向两边。因此,最优的拒绝域是 取值过小或过大的区域,即 。常数 通过要求在两个边界点 和 处的第一类错误概率都恰好为 来确定。
例子(正态总体均值的双边检验):设 ,考虑检验: 样本联合密度可写为指数族形式,自然参数 ,充分统计量 。 根据定理,其水平为 的 UMP 检验形式为: (对于连续分布, 取特定值的概率为0,故随机化部分 可忽略)。 常数 满足: 由于正态分布的对称性,通常可以解得 。具体求解需要解上述方程组,可能涉及数值计算。
📝 动手练一练
单边 UMP 检验构造:设 是来自指数分布 的 i.i.d. 样本,其密度为 。考虑假设检验问题: (a) 证明该分布族关于某个统计量是 MLR 族。 (b) 求该检验问题水平为 的 UMP 检验。 (c) 当 时,给出该 UMP 检验的具体拒绝域。
参考答案: (a) 样本联合密度为 。这属于单参数指数族,令 ,则 ,。由于 是 的严格增函数,而 是 的严格减函数,因此该分布族关于 是单调递减似然比族。 (b) 对于 ,由于是 MLR 递减族,UMP 检验应拒绝较大的 。检验形式为 。常数 由 确定。注意到 ,即 。因此,,其中 是自由度为 的卡方分布的 分位数。 (c) 当 时,自由度 ,。因此 。拒绝域为 。
UMP 检验功效计算:对于上题中的指数分布检验问题,假设真实参数 。请编写 Python 代码,模拟计算当 时,该 UMP 检验的功效(即正确拒绝 的概率)。
参考答案:
import numpy as np import scipy.stats as stats np.random.seed(123) n = 15 alpha = 0.05 lambda0 = 2 # H0边界 lambda_true = 1.5 # 计算UMP检验的临界值c df = 2 * n c = stats.chi2.ppf(1 - alpha, df) / (2 * lambda0) # 模拟计算功效 n_sim = 10000 reject_count = 0 for _ in range(n_sim): sample = stats.expon.rvs(scale=1/lambda_true, size=n) # scale = 1/lambda T = np.sum(sample) if T > c: reject_count += 1 power = reject_count / n_sim print(f"模拟计算的UMP检验功效 (lambda={lambda_true}): {power:.4f}") # 也可以解析计算(基于卡方分布) # 在 lambda_true 下,2*lambda_true * T ~ Chi^2(2n) power_analytic = 1 - stats.chi2.cdf(2 * lambda_true * c, df) print(f"解析计算的UMP检验功效 (lambda={lambda_true}): {power_analytic:.4f}")运行结果将显示模拟功效与解析计算的理论功效非常接近。
本章小结
本节我们深入探讨了假设检验理论中的一个核心概念——一致最优势检验 (UMP Test)。我们首先将其定义为在控制第一类错误的前提下,对备择假设空间中所有参数点都具有最大功效的检验,这是对简单假设下 MP 检验的自然推广。为了构造 UMP 检验,我们引入了单调似然比分布族 (MLR Family),这是一类广泛存在且性质良好的分布族。基于 MLR 族,我们得到了两个关键定理:
- 对于单边假设(如 vs ),其 UMP 检验存在且形式简单,拒绝域基于充分统计量 的尾部区域( 或 )。
- 对于特定形式的双边假设( vs ),在单参数指数族下,其 UMP 检验也存在,拒绝域是 的两侧尾部区域( 或 )。
行动清单
- 概念辨析:清晰区分 MP 检验与 UMP 检验的适用场景(简单 vs 复合备择假设),理解“一致最优”中“一致”的含义是指对整个备择参数空间成立。
- 识别与构造:面对一个参数假设检验问题时,首先判断总体分布是否属于 MLR 族(特别是单参数指数族)。如果是单边假设,尝试套用本节定理构造其 UMP 检验。
- 代码验证:使用 Python 的
scipy.stats模块,对你构造的 UMP 检验进行模拟。计算其在不同真实参数下的势函数,并与一个随意构造的、但水平相同的检验进行对比,直观感受 UMP 检验的优越性。
— 小象教研组
- 第4章课件:假设检验(PDF · 7.6MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问