【发布时间】:2014-11-12 09:56:21
【问题描述】:
我有一个包含 n 个整数值 x[] 的数组,范围从低到高。因此有 m:=high-low+1 个可能的值。 我现在正在搜索一种算法,该算法计算输入值在区间 [低,高] 上的分布均匀程度。 它应该输出例如如果值尽可能一致,则为 1,如果所有 x[i] 相同,则为 0。
现在的问题是算法必须在 n 远低于和远高于 m 的情况下工作。
谢谢
【问题讨论】:
我有一个包含 n 个整数值 x[] 的数组,范围从低到高。因此有 m:=high-low+1 个可能的值。 我现在正在搜索一种算法,该算法计算输入值在区间 [低,高] 上的分布均匀程度。 它应该输出例如如果值尽可能一致,则为 1,如果所有 x[i] 相同,则为 0。
现在的问题是算法必须在 n 远低于和远高于 m 的情况下工作。
谢谢
【问题讨论】:
您可以计算Kolmogorov-Smirnov statistic,它是经验累积质量函数与测试 cmf 的最大绝对偏差,在这种情况下是一条直线(因为测试 pmf 是均匀分布)。
或者您可以计算数据的discrepancy。
【讨论】:
我找到了适合我的情况的解决方案:
首先我计算值的累积直方图 (一个离散函数,将 [min,max] 的每个可能值 v 映射到 |{x[i], x[i]
然后我以平方的方式计算通过直方图(从 0,0 到 m,n)到对角线的距离:将直方图中每个点到该线的平方距离相加。
该算法不提供归一化范数,但适用于极少和非常多的样本。我只需要该算法通过它们的一致性来比较两组或更多组值,而该算法为我完成了这项工作。
【讨论】: