📑 查看全课大纲(第 40 / 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.整群随机抽样
分层随机抽样
约 20 分钟
分层随机抽样
小象实战讲义 · 数据科学的统计基础
在实际的抽样调查中,我们常常面临一个困境:总体内部存在明显的异质性。例如,要调查全国大学生的月均消费,不同地区、不同专业、不同年级的学生消费水平差异巨大。如果采用简单随机抽样,样本可能偶然地集中到某些特定群体,导致估计结果偏差较大。分层随机抽样正是为了解决这一问题而设计的。本节我们将系统学习分层随机抽样的原理、实施步骤、估计量的构造及其优良性质,理解“层内差异小、层间差异大”这一核心原则背后的数学原理,并掌握利用Python进行分层抽样模拟与估计的方法。
💡 核心导读
- 核心思想:将异质性强的总体划分为若干个内部同质性强的“层”,然后在各层内独立进行简单随机抽样,最后加权汇总得到总体估计。
- 关键原则:分层应遵循“层内差异尽可能小,层间差异尽可能大”,这是提高估计精度的核心。
- 估计方法:总体均值的估计量是各层样本均值的加权平均,权重为各层单位数占总体的比例。
- 方差分解:总体方差可分解为层内方差与层间方差之和。分层估计量的方差仅与层内方差有关,而与层间方差无关,这从数学上解释了为何“层间差异大”能提高精度。
- 实施要点:需要已知各层的单位总数,各层抽样相互独立,且每个总体单位必须且只能属于某一层。
分层随机抽样的基本概念与步骤
分层随机抽样,顾名思义,其核心在于“分层”。它是在简单随机抽样的基础上发展起来的一种更高效、更灵活的抽样方法。
为什么要分层?
进行分层随机抽样通常基于以下理由:
- 获取子总体信息:调查不仅需要了解总体特征(如全国大学生平均月消费),还需要了解各子总体(如各年级、各专业)的特征。
- 便于行政管理:调查对象可能分属不同的管理机构(如教育部直属高校、省属高校、民办高校),分层便于组织实施。
- 适应不同抽样框:总体中不同部分的抽样框(名单)可能不同,且特征差异显著(如大型商场与小型便利店),分层处理更为便利。
- 提高估计精度:这是分层抽样最重要的优势。通过科学分层,可以在相同样本量下获得比简单随机抽样更精确的总体估计。
记号、定义与重要命题
首先,我们建立分层抽样的标准记号体系:
- 总体单位总数:
- 层数:
- 第 层 的单位总数:,满足 。
- 第 层的权重:,满足 。
- 第 层第 个单位的观测值: 。
- 第 层的总体均值:i = \frac{1}{N_i} \sum{j=1}^{N_i} Y_{ij}。
- 总体均值:。可见,总体均值是各层均值的加权平均。
- 第 层的总体方差:。
- 层内方差:各层方差的加权平均,记为 。
- 层间方差:各层均值与总体均值离差平方的加权平均,记为 。
命题一(方差分解定理):总体方差 (定义为 )可以分解为层内方差与层间方差之和,即: 这是一个近似式,其精确基础是平方和恒等式: 恒成立;当各层容量 与 都较大时,、,上述方差分解式近似成立。这个定理是理解分层抽样优势的基石,它与方差分析(ANOVA)中总平方和分解为组内平方和与组间平方和的原理一致。
分层抽样的主要步骤
- 划分层:将总体 个单位划分为 个互不重叠且穷尽的子总体(层)。划分的依据应使得层内单位尽可能相似( 小),而层间差异尽可能明显( 大)。
- 确定各层样本量:设总的样本量为 ,需要将其分配到各层。最常用的是按比例分配,即第 层的样本量 。这保证了样本结构与总体结构一致。
- 独立抽样:在各层内,根据确定的 ,独立地进行简单随机抽样(可重复或不重复)。
- 估计与推断:首先计算各层的样本统计量(如层样本均值 i),然后通过加权平均等方式,构造总体参数的估计量(如总体均值 的估计量 {st}),并进行统计推断。
总体均值的估计及其性质
估计量的构造
假设我们在第 层抽取了 个样本,观测值为 。
- 第 层的样本均值为:i = \frac{1}{n_i} \sum{j=1}^{n_i} y_{ij}。
- 根据简单随机抽样的性质, 是 的无偏估计,即 。
总体均值 的分层估计量定义为各层样本均值的加权平均,权重为层权 : {st} = \sum{i=1}^{K} W_i \bar{y}_i 其中下标 代表 stratified(分层)。
估计量的无偏性
由于各层抽样独立,且 i 是 i 的无偏估计,容易证明 {st} 是 的无偏估计: {st}) = E\left( \sum_{i=1}^{K} W_i \bar{y}i \right) = \sum{i=1}^{K} W_i E(\bar{y}i) = \sum{i=1}^{K} W_i \bar{Y}_i = \bar{Y}
估计量的方差
估计量 的方差取决于各层内的抽样方式。
- 各层内为重复抽样: {st}) = \sum{i=1}^{K} W_i^2 \cdot \frac{S_i^2}{n_i}
- 各层内为不重复抽样(更常见): {st}) = \sum{i=1}^{K} W_i^2 \cdot \frac{S_i^2}{n_i} \left(1 - \frac{n_i}{N_i}\right) 其中 是第 层的有限总体校正系数。
核心结论:分层为何能提高精度?
观察方差公式,无论是重复还是不重复抽样, 都只与各层的方差 有关。结合命题一(),我们可以得出关键结论:
在总体方差 固定的情况下,层间方差 越大,则层内方差 就越小。而 依赖于 (具体是各 的加权组合),因此 越小,估计量的方差就越小,估计精度就越高。
这就从数学上严格证明了分层抽样的核心原则:划分层时,应使层内差异尽可能小( 小),层间差异尽可能大( 大)。
估计量方差的估计与样本量分配
方差估计量的构造
在实际中,各层的总体方差 通常是未知的,需要用样本方差来估计。
- 第 层的样本方差:。
- 是 的无偏估计,即 。
由此,我们可以构造 的无偏估计量:
- 对于重复抽样:{st}) = \sum{i=1}^{K} W_i^2 \cdot \frac{s_i^2}{n_i}
- 对于不重复抽样:{st}) = \sum{i=1}^{K} W_i^2 \cdot \frac{s_i^2}{n_i} \left(1 - \frac{n_i}{N_i}\right)
样本量的分配
给定总样本量 ,如何分配各层样本量 以最小化估计量的方差?除了最常用的按比例分配()外,还有:
- 内曼最优分配:在按比例分配的基础上,考虑层内变异程度。对于估计总体均值,最优分配为 。即层内标准差 越大,分配的样本量越多。
- 最优分配:进一步考虑各层抽样成本 ,使得在固定总费用下方差最小,或在固定方差下总费用最小。公式为 。
误差限与样本量确定
在给定置信水平 和允许的绝对误差限 时,若 {st} 近似服从正态分布,则有: {st} - \bar{Y}| \le d) \approx 1-\alpha 其中 {st})}。由此可以反推出所需的总样本量 。对于按比例分配的不重复抽样,总样本量公式为: {i=1}^{K} W_i S_i^2}{\frac{d^2}{z_{\alpha/2}^2} + \frac{1}{N}\sum_{i=1}^{K} W_i S_i^2} 其中 可用历史数据或预调查估计。
下面我们通过一个Python示例来模拟分层抽样,并验证估计量的无偏性以及按比例分配的效果。
import numpy as np
import pandas as pd
from scipy import stats
# 设置随机种子,确保结果可复现
np.random.seed(2025)
# 模拟一个总体:假设调查某校三个年级男生的月消费(单位:元)
# 总体结构:高一(N1=300),高二(N2=400),高三(N3=300),总人数N=1000
# 各年级消费服从不同的正态分布
N1, N2, N3 = 300, 400, 300
N = N1 + N2 + N3
W1, W2, W3 = N1/N, N2/N, N3/N
# 生成总体数据:年级间差异大(均值不同),年级内差异相对小
# 高一:均值1000,标准差150
# 高二:均值1200,标准差180
# 高三:均值1500,标准差200
pop_grade1 = np.random.normal(loc=1000, scale=150, size=N1)
pop_grade2 = np.random.normal(loc=1200, scale=180, size=N2)
pop_grade3 = np.random.normal(loc=1500, scale=200, size=N3)
population = np.concatenate([pop_grade1, pop_grade2, pop_grade3])
grade_labels = np.array(['高一']*N1 + ['高二']*N2 + ['高三']*N3)
# 计算真实的总体参数
true_overall_mean = np.mean(population)
true_grade_means = [np.mean(pop_grade1), np.mean(pop_grade2), np.mean(pop_grade3)]
true_grade_vars = [np.var(pop_grade1, ddof=1), np.var(pop_grade2, ddof=1), np.var(pop_grade3, ddof=1)]
print("=== 总体真实参数 ===")
print(f"总体真实均值 Y_bar: {true_overall_mean:.2f} 元")
print(f"各层真实均值 Y_i_bar: 高一{true_grade_means[0]:.2f}, 高二{true_grade_means[1]:.2f}, 高三{true_grade_means[2]:.2f}")
print(f"各层真实方差 S_i^2: 高一{true_grade_vars[0]:.2f}, 高二{true_grade_vars[1]:.2f}, 高三{true_grade_vars[2]:.2f}")
print(f"层权 W_i: 高一{W1:.3f}, 高二{W2:.3f}, 高三{W3:.3f}")
# 模拟分层随机抽样(不重复)与简单随机抽样对比
n_total = 100 # 总样本量
n_sim = 5000 # 模拟次数
# 存储结果
est_means_strat = [] # 分层估计的均值
est_means_srs = [] # 简单随机抽样估计的均值
for _ in range(n_sim):
# --- 分层随机抽样 (按比例分配) ---
n1 = int(n_total * W1) # 高一样本量
n2 = int(n_total * W2) # 高二样本量
n3 = n_total - n1 - n2 # 高三样本量(确保总样本量准确)
# 各层内简单随机抽样(不重复)
samp1 = np.random.choice(pop_grade1, size=n1, replace=False)
samp2 = np.random.choice(pop_grade2, size=n2, replace=False)
samp3 = np.random.choice(pop_grade3, size=n3, replace=False)
# 计算层样本均值
y1_bar = np.mean(samp1)
y2_bar = np.mean(samp2)
y3_bar = np.mean(samp3)
# 计算分层估计量 y_st
y_st = W1*y1_bar + W2*y2_bar + W3*y3_bar
est_means_strat.append(y_st)
# --- 简单随机抽样 (SRS) ---
srs_sample = np.random.choice(population, size=n_total, replace=False)
y_srs = np.mean(srs_sample)
est_means_srs.append(y_srs)
# 转换为numpy数组
est_means_strat = np.array(est_means_strat)
est_means_srs = np.array(est_means_srs)
# 分析模拟结果
print("\n=== 模拟结果分析 (基于5000次重复实验) ===")
print(f"总样本量 n = {n_total}")
print("\n1. 分层随机抽样估计量 y_st:")
print(f" 均值 E(y_st): {np.mean(est_means_strat):.2f}")
print(f" 偏差 (E(y_st) - Y_bar): {np.mean(est_means_strat) - true_overall_mean:.4f}")
print(f" 标准差 (估计精度): {np.std(est_means_strat, ddof=1):.2f}")
print(f" 95% 置信区间半宽 (近似): {1.96 * np.std(est_means_strat, ddof=1):.2f}")
print("\n2. 简单随机抽样估计量 y_srs:")
print(f" 均值 E(y_srs): {np.mean(est_means_srs):.2f}")
print(f" 偏差 (E(y_srs) - Y_bar): {np.mean(est_means_srs) - true_overall_mean:.4f}")
print(f" 标准差 (估计精度): {np.std(est_means_srs, ddof=1):.2f}")
print(f" 95% 置信区间半宽 (近似): {1.96 * np.std(est_means_srs, ddof=1):.2f}")
print("\n3. 比较:")
precision_gain = (np.std(est_means_srs, ddof=1)**2 - np.std(est_means_strat, ddof=1)**2) / np.std(est_means_srs, ddof=1)**2
print(f" 分层抽样估计量的方差比简单随机抽样减少了 {precision_gain*100:.1f}%")
print(" (验证了'层间差异大'时,分层抽样能显著提高估计精度)")📝 动手练一练
分层设计分析:假设你要调查某市居民的年均通勤费用。已知该市有A、B、C三个行政区,人口分别为50万、30万、20万。根据历史数据,各行政区居民通勤费用的标准差估计分别为1200元、800元、1500元。若采用分层随机抽样,总样本量定为1000人。
- a) 若采用按比例分配,计算A、B、C三个行政区分别应抽取多少样本?
- b) 若采用内曼最优分配(以最小化总体均值估计量的方差为目标),计算各行政区应抽取的样本量。
方差计算:接上题,假设采用按比例分配的不重复抽样,且已知各行政区的总体方差即为上述标准差的平方(即 )。请计算在此抽样设计下,总体年均通勤费用估计量 {st} 的理论方差 {st})。
参考答案:
- a) 按比例分配:。样本量 , , 。 b) 内曼最优分配:首先计算 。则 , , 。
- 方差计算:。由于 很大,有限总体校正系数 。代入数值: 因此,估计量的标准差约为 元。
本章小结
本节系统介绍了分层随机抽样这一重要的概率抽样方法。我们首先理解了其适用场景和核心优势——在获取子总体信息的同时,能显著提高对总体参数的估计精度。通过建立完整的记号体系,我们学习了分层抽样的实施步骤,重点掌握了总体均值估计量 的构造方法(各层样本均值的加权平均)及其无偏性。
核心洞见来自于方差分解定理()与估计量方差公式的结合分析:分层估计量的方差仅依赖于层内方差 。因此,通过科学分层,最大化层间差异 ,从而最小化层内差异 ,就能在相同样本量下获得更小方差的估计量,这是分层抽样提升精度的数学本质。
我们还探讨了样本量的分配策略(按比例分配、内曼分配)以及如何根据精度要求确定总样本量。最后的Python模拟直观验证了,当总体存在明显异质性(层间差异大)时,分层随机抽样相比简单随机抽样具有显著的精度优势。
学完本节,你可以立刻:
- 设计分层方案:面对一个异质性总体(如不同区域、不同等级的用户),能够根据调查目标,选择合适的分层变量,并遵循“层内同质、层间异质”的原则进行分层。
- 计算样本分配与估计量:给定总体各层大小和总样本量,能进行按比例分配或最优分配的计算,并能根据抽样数据计算分层估计量 及其方差的估计。
- 评估与比较:能解释为何在特定场景下分层抽样优于简单随机抽样,并能通过模拟或公式计算量化其精度提升的幅度。
— 小象教研组
- 第8章课件:抽样调查(PDF · 7.7MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问