非常大样本量的拟合优度

机器算法验证 拟合优度 大数据
2022-02-17 13:05:53

我每天收集非常大的分类数据样本(> 1,000,000),并希望看到数据在几天之间看起来“显着”不同,以检测数据收集中的错误。

我认为使用拟合优度检验(特别是 G 检验)非常适合(双关语)。预期分布由前一天的分布给出。

但是,由于我的样本量很大,因此该测试具有很高的功效并会产生许多误报。也就是说,即使是非常小的每日波动也会给出接近于零的 p 值。

我最终将我的测试统计量乘以某个常数(0.001),这很好地解释了以该速率对数据进行采样。这篇文章似乎同意这种做法。他们说:

卡方最可靠,样本大约在 100 到 2500 人之间

我正在寻找一些更权威的评论。或者,在对大型数据集进行统计测试时,可能会有一些替代解决方案来解决误报。

4个回答

测试返回正确的结果。每天的分布不一样。当然,这对你没有用。您面临的问题早已为人所知。参见:Karl Pearson 和 RA Fisher 关于统计检验:1935 年自然交流

相反,您可以回顾以前的数据(您的数据或其他地方的数据)并获取每个类别的日常变化分布。然后,您检查当前更改是否可能在该分布下发生。如果不了解错误的数据和类型,很难更具体地回答,但这种方法似乎更适合您的问题。

让我们继续干掉百分之五的圣牛。

您(正确地)指出问题在于测试的旺盛力量。您可能希望将其重新校准为更相关的功率,例如更传统的 80% 值:

  1. 确定要检测的效应大小(例如,0.2% 偏移)
  2. 确定对你来说足够好的功率,以免它被压倒(例如,1β=80%)
  3. 从现有的 Pearson 测试理论回溯,以确定使您的测试实用的水平。

假设您有 5 个概率相等的类别,,您的替代方案是所以对于渐近分布是非中心卡方 (# categories-1) = 4 df 和非中心参数 有了这个的值很大足够接近80%-tile 是p1=p2=p3=p4=p5=0.2p+δ/n=(0.198,0.202,0.2,0.2,0.2)n=106δ=(2,+2,0,0,0)k=

λ=jδj2/pj=4/0.2+4/0.2=40
λN(μ=λ+k=44,σ2=2(k+2λ)=168)44+13Φ1(0.8)=44+130.84=54.91. 因此,您期望的测试水平是从 54.91 的逆尾 cdf: 所以这将是你应该的水平考虑测试您的数据,以便它有 80% 的能力来检测 0.2% 的差异。χ42
Prob[χ42>54.91]=3.31011

(请检查我的数学,这是一个荒谬的测试水平,但这就是你想要的大数据,不是吗?另一方面,如果你经常看到 Pearson在一对夫妇的范围内一百,这可能是一个完全有意义的关键价值来招待。)χ2

请记住,尽管 null 和替代的近似值可能在尾部效果不佳,请参阅此讨论

在这些情况下,我的教授建议计算 Cramér's V,它是基于卡方统计量的关联度量。这应该会给您力量并帮助您确定测试是否过敏。但是,我不确定您是否可以将 V 与 G2 测试返回的那种统计数据一起使用。

这应该是 V 的公式:

ϕc=χ2n(k1)

其中是观测值的总和,是行数或列数,以较小者为准。或者对于拟合优度测试,显然不是。的行。nkk

一种方法是通过在较小的数据块上执行拟合优度测试来使它们更有意义。

您可以将给定日期的数据分成例如 1000 个块,每个块包含 1000 个样本,并为每个块运行单独的拟合优度测试,预期分布由前一天的完整数据集给出。将每个单独测试的显着性水平保持在您使用的水平(例如)。然后寻找阳性测试总数与预期假阳性数的显着偏离(在分布没有差异的零假设下,阳性测试总数呈二项式分布,参数为)。α=0.05α

你可以通过从两天中获取数据集来找到一个好的块大小,你可以假设分布是相同的,并查看什么块大小给出的阳性测试频率大致等于(即,什么块大小停止您的测试报告虚假差异)。α