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