二项分布的正态逼近:为什么 np>5?

机器算法验证 正态分布 二项分布 近似
2022-03-06 16:53:33

几乎每本讨论二项式分布的正态近似的教科书都提到了一个经验法则,即如果可以使用近似值。有些书建议代替。测试中何时合并单元格的讨论中经常出现相同的常数我找到的所有文本都没有为这条经验法则提供理由或参考。np5n(1p)5np(1p)55χ2

这个常数 5 是从哪里来的?为什么不是 4 或 6 或 10?这个经验法则最初是在哪里引入的?

4个回答

维基百科关于二项式分布的文章提供了一些可能性,在Normal approximation部分下,目前包括以下评论(强调我的):

另一个常用的规则是值都必须大于 5。但是,具体数字因源而异,取决于人们想要的近似值有多好。npn(1p)

现在,这与确保正态逼近的合法范围内有关xN(μ,σ)x[0,n]

为了说明这一点,如果我们根据z-score参数化所需的覆盖概率,那么我们有 使用二项式矩,上述约束需要 所以对于这种方法,对应的覆盖概率为 其中标准的普通 CDF z>0

μ±zσ[0,n]zσmin[μ,nμ]z2min[μ2σ2,(nμ)2σ2]
μ=npσ2=np(1p)
min[p,1p]nz2
z2=5
Φ[5]Φ[5]97.5%
Φ.

所以在某种程度上这个覆盖概率是“漂亮的”并且 5 是一个很好的整数......也许可以给出一些理由?我对概率文本没有太多经验,所以不能说“5”与其他“特定数字”相比有多常见,以使用维基百科的措辞。我的感觉是 5 并没有什么特别之处,维基百科建议 9 也很常见(对应于 3 的“漂亮”)。z

不是一个完整的解释,但有趣的是回到 Cochran 1952 Annals of Math Stats “The test of goodness of fit”(http://www.jstor.org/stable/2236678),第二部分(“测试的实际使用的一些方面”),这在该领域相当古老...... Cochran 讨论了测试的理论基础的历史(Pearson 1900,Fisher 1922,1924),但没有触及根据经验法则,直到以下段落...... [强调添加]χ2

7. 最小期望由于 x2 已被确定为 X2 在大样本中的极限分布,因此习惯上建议在测试的应用中,任何类别中的最小预期数应为 10 或(对于某些作者而言)5. ... 这这个话题最近在心理学家中引起了激烈的讨论[17],[18]。数字 10 和 5 似乎是任意选择的。一些调查揭示了该规则的适当性。该方法一直是通过数学方法或抽样实验来检查 X2 的确切分布,当某些或所有期望很小时。

调查很少而且范围很窄,这是意料之中的,因为这种类型的工作很耗时。因此,当有新证据可用时,下面给出的建议可能需要修改。

暂时离题,当期望值很小时调查 X2 的行为的问题是与应用统计相关的一整类问题的一个例子。在应用中,在我们知道或强烈怀疑理论中的某些假设无效的情况下使用理论体系的结果是每天都会发生的事情。因此,文献包含对父总体非正态时的 t 分布的研究,以及当总体中的回归实际上是非线性时线性回归估计的性能。对于应用来说幸运的是,即使某些假设不成立,理论的结果有时仍然基本正确。这一事实往往使统计学成为比纯数学更令人困惑的学科,

除了已经发布的出色答案之外,我认为可视化探索不同值的观察比例分布可能会有所帮助。np

为了生成下面的直方图,我从伯努利试验中以概率样本,并将这个过程重复了 10,000 次。然后,我从这 10,000 个实验中的每一个中生成了观察到的比例的直方图。np

所述直方图的图

从视觉上看,看起来是相当合理的。尽管当似乎仍然存在一些剪裁一旦达到,影响似乎很小。np5n=50np=5.5np=6.5np=7.5

另请注意,如果我们采用值,这些图将是对称的pp=(1p)

用于生成绘图的 Python 代码。如果您想自己进行实验,可以使用它来调整np

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(20190915)


def make_hists(axs, n):
    proportions = np.linspace(0.01, 0.19, len(axs))
    for i, prop in enumerate(proportions):
        # Draw n samples 10,000 times
        x = np.random.rand(n, 10_000) < prop
        means = x.mean(axis=0)
        axs[i].hist(means, bins=np.linspace(0, 0.5, n//2))
        axs[i].set_xlim([0, 0.5])
        axs[i].set_yticklabels([])
        ylim_mean = np.mean(axs[i].get_ylim())
        axs[i].text(-0.08, ylim_mean * 3/2, f'$p={prop:.2f}$', va='center')
        axs[i].text(-0.08, ylim_mean * 2/3, f'$np={n * prop:.1f}$', va='center')
    axs[0].set_title(f'$n={n}$')

def main():
    f, axs = plt.subplots(10, 2, sharex=True, figsize=(12, 8))
    make_hists(axs[:, 0], 50)
    make_hists(axs[:, 1], 250)
    f.suptitle(
        'Histograms of 10,000 sample proportions, varying $p$ and $n$',
        fontsize=14
    )
    plt.show()

main()

该规则提供了一个标准,可确保 p 既不接近 0 也不接近 1。如果它接近 0 或 1,则生成的分布将不能很好地近似于正态分布。

您可以在此处看到相同的图示理由