什么是抽样分布

发布时间:2026/7/1 2:46:57
什么是抽样分布 想象一下你想了解全市高中生的平均身高由于时间和资源限制你不可能测量每个学生。你的做法是去学校随机挑选100位学生这是一个样本Sample。计算这100位学生的平均身高比如是150cm这是统计量Statistic。但是一次抽样可靠吗如果你运气不好刚好选到的学生都是个子偏高的怎么办于是你决定重复这个过程第2次再选100位学生算平均值是155cm。第3次再选100位学生算平均值是148cm。……你重复了1000次。现在你手里有了1000个“平均身高”的数据。如果你把这1000个数据画成一个直方图这个图展示的分布就是抽样分布。一句话定义抽样分布不是原始数据的分布而是统计量如平均值、方差的概率分布。2. 抽样分布的重要性在现实工作中我们通常只有一次抽样的机会因为成本太高我们手里只有一个样本数据。我们面临的终极问题是既然我看不到总体所有中学生身高我怎么敢用手里这唯一的样本100位学生的身高去代表总体抽样分布就是连接“样本”和“总体”的桥梁总体是未知的真相样本是我们手里的碎片。抽样分布告诉我们样本统计量围绕总体真值波动的规律。知道了这个规律分布我们就能算出我手里这个样本有多大的概率是靠谱的这就是置信区间和假设检验的基础。3. 四大常用抽样分布接下来我们介绍四种最常用的抽样分布并使用Python代码来做简单的演示。3.1. Z分布Z分布是统计学中的“皇冠”。当样本量足够大通常n 30时根据中心极限定理样本均值的分布近似于正态分布。使用Z分布的前提是假设已知总体方差或者样本量极大以至于样本方差可以代替总体方差。它的使用场景一般在大样本的均值检验如网站百万流量下的转化率分析。这种方法的优点在于其数学性质非常好查表非常方便而且计算过程也很简单。然而它也存在一些局限性在现实生活中我们很难准确地知道整个群体的方差情况。此外在样本数量较少的情况下使用这种方法可能会导致较大的误差。下面用代码模拟一个Z分布的示例。import numpy as np import scipy.stats as stats # 演示Z分布在置信区间计算中的应用 # 假设我们调查了100名学生的月支出平均值为2500元已知总体标准差为500元 sample_mean 2500 # 样本平均值 population_std 500 # 总体标准差 sample_size 100 # 样本数量 confidence_level 0.95 # 置信水平 # 计算标准误差 standard_error population_std / np.sqrt(sample_size) # 计算Z值 (95%置信水平对应的Z值) z_value stats.norm.ppf((1 confidence_level) / 2) # 计算置信区间 margin_of_error z_value * standard_error confidence_interval (sample_mean - margin_of_error, sample_mean margin_of_error) print(f样本均值: {sample_mean}元) print(f95%置信区间: [{confidence_interval[0]:.2f}, {confidence_interval[1]:.2f}]元) print( f这意味着我们有95%的把握认为总体平均月支出在{confidence_interval[0]:.2f}元到{confidence_interval[1]:.2f}元之间 ) # 运行结果 样本均值: 2500元 95%置信区间: [2402.00, 2598.00]元 这意味着我们有95%的把握认为总体平均月支出在2402.00元到2598.00元之间 代码中用到了scipy库中的stats.norm.ppf()函数这是累积分布函数(CDF)的反函数可用来计算Z值。使用测试数据绘制的图如下# 生成Z分布数据 x np.linspace(-4, 4, 1000) z_distribution stats.norm.pdf(x)3.2. T分布T分布是为了解决“小样本”问题而生的。当你手头数据很少比如n 30且不知道总体方差时Z分布会低估误差这时候必须用T分布。比如在小样本实验比如只有10只小白鼠参与的药物实验或AB测试的早期阶段中优先考虑使用T分布。当处理小规模的数据集时T分布能够提供更加准确的结果。这是因为T分布具有所谓的“厚尾”特征这意味着它对于数据中的不确定性给予了更多的关注特别是提高了对极端值出现可能性的认可。这样的特性使得在面对有限数量样本的情况下T分布相较于Z分布而言能更真实地反映出数据的变异程度。然而T分布并非没有缺点。随着收集到的数据量不断增加我们会观察到T分布逐渐趋向于标准正态分布也就是我们常说的Z分布。这表明在大规模数据集面前T分布所提供的额外灵活性变得不那么显著了。下面用代码模拟一个T分布的示例。# T分布在置信区间计算中的应用 # 假设我们调查了25名员工的月薪平均值为8000元样本标准差为1500元 sample_mean 8000 # 样本平均值 sample_std 1500 # 样本标准差 sample_size 25 # 样本数量 confidence_level 0.95 # 置信水平 # 计算标准误 standard_error sample_std / np.sqrt(sample_size) # 计算T值 (95%置信水平自由度n-1) t_value stats.t.ppf((1 confidence_level) / 2, sample_size - 1) # 计算置信区间 margin_of_error t_value * standard_error confidence_interval (sample_mean - margin_of_error, sample_mean margin_of_error) print(f样本均值: {sample_mean}元) print(f样本标准差: {sample_std}元) print(f样本大小: {sample_size}) print(f95%置信区间: [{confidence_interval[0]:.2f}, {confidence_interval[1]:.2f}]元) print(f注意由于样本量较小且总体方差未知我们使用T分布而不是Z分布) # 运行结果 样本均值: 8000元 样本标准差: 1500元 样本大小: 25 95%置信区间: [7380.83, 8619.17]元 注意由于样本量较小且总体方差未知我们使用T分布而不是Z分布 使用测试数据绘制不同自由度的T分布图形如下# 生成数据 x np.linspace(-4, 4, 1000) z_distribution stats.norm.pdf(x) # 绘制不同自由度的T分布 degrees_of_freedom [1, 5, 10, 30] for df in degrees_of_freedom: t_distribution stats.t.pdf(x, df)3.3. 卡方分布