比较两个离散分布(具有小细胞计数)

机器算法验证 分布 假设检验 卡方检验
2022-04-05 20:25:10

我需要将样本分布与理论分布进行比较,这通常通过卡方检验完成。问题是我的分布中一个或多个单元格的值较低,因此卡方检验报告的 p 值非常小。例如,典型的预期和观察频率是 [152 2 9] 和 [140 5 18],p 值为 0.0007。基于领域知识,这两个分布没有显着差异。

可以使用什么检验来代替卡方检验,这样可以消除小值单元格出现的偏差?

编辑:为这个问题添加一些背景信息。

我有许多过程产生输出某些技术参数,记录为时间序列。我有大约 4000 个这样的过程,每个产生大约 150 个这样的时间序列(一个过程的时间序列数量遵循幂律)。我想找出这些过程中哪些是异常的,即产生与其他过程显着不同的输出。为此,我使用 k-means 对时间序列进行聚类,然后基于聚类生成“预期”分布(所有时间序列的平均值)和每个过程的聚类分布。

例如,在聚类之后,我可能有 4 个具有以下大小的集群。

Cluster number | Cluster size
-----------------------------
1              | 100
2              | 200
3              | 300
4              | 400

集群在进程之间的分布可能如下

          | Cluster 1 | Cluster 2 | Cluster 3 | Cluster 4
----------------------------------------------------------
Process 1 | 11        | 19        | 35        | 42
Process 2 | 3         | 10        | 14        | 19
Process 3 | 30        | 8         | 12        | 12              <----anomaly
....

在这种情况下,过程 1 和过程 2 足够接近预期,而过程 3 的分布与平均值不同。我想找到一个很好的测试来衡量这种差异。(也欢迎任何其他关于异常检测的建议)

1个回答

有两个技术问题需要处理:(1)测量观测值和预期值之间的差异;(2)计算 p 值。

我们可以保留差异的卡方度量(从而精炼问题 1)并计算精确的 p 值。简单的方法是从预期分布中模拟采样。这是在 R 中执行的 10,000 个样本的分布:

直方图

这些数据的实际卡方统计量为显然它在这个直方图的上尾很远:(0.25%)等于或超过它。是的,这个比例几乎是卡方检验报告的四倍,但它仍然很小。我们得出结论,观察到的分布与预期分布显着不同。549/3814.4472510,0000.0007

“领域知识”可能确实正确地表明差异的数量并不重要。然而,这与观察到的频率不太可能从具有预期频率的分布中随机出现 的发现无关。这就是统计显着性的全部含义。