我有一个应用程序正在比较来自两个不同报告的数字。当两个数字之间的差异超过某个阈值时,它将提醒用户。我本来打算使用10%的阈值,但我意识到当A计数是前。 10,000的10%的方差太高(意味着如果有999会过多),但是当计数A只有10时,10%的方差太低(意味着2-3 / 10将是可接受的方差)
除了编码
之外,无法弄清楚如何做到这一点IF CountA <= 10 THEN AcceptableRate = 20%
If CountA > 10 THEN AcceptableRate = 15%
有人知道如何在数学上解释我想要做什么,以及如何实现它? 我相信这对于一个比我更好的数学家来说可能是一个简单的问题。
答案 0 :(得分:4)
如果我理解正确,您正在尝试比较两个应该相似的不同数据集,并且您希望定义两个数据集之间的差异级别,这是某种可接受的级别。
我认为我采取的方法将依赖于几个因素,首先,您是否知道这两个数据集的基础分布?例如,如果数据是正态分布的,那么就不可能找到另一组中存在的每个数据的概率吗?
另一方面,可以使用a Chi-square test来检查两个数据集之间的差异。
另一种可能性是使用Kolmogorov-Smirnov test来获得一个样本来自另一个样本的概率。
这些将是我的建议,但是决定这种事情的截止值总是主观的。我在学习期间使用的标准是Chauvenet's criterion,这也可能对您有所帮助。
答案 1 :(得分:0)
基本上,您需要一个标准,它是数据集大小的一个更复杂的函数而不仅仅是比例。从您给出的示例中,我将猜测包含基于数据集大小日志的术语可能就是您想要的。玩弄像
这样的表达式AcceptableN = 10 * log10(N) + 2
其中AcceptableN
是可接受的异常值数,N是总数据集大小,然后是AcceptableRate = 100*AcceptableN / N
。
但是,在更清楚地了解您认为不同N的标准应该是什么之前,没有明确的直接数学公式可以满足您的需求。
答案 2 :(得分:0)
除了前面答案中提到的公式之外,还要考虑使用n的一些幂(其中n是来自一个报告或另一个报告的参考编号)作为容差。下面是一些python代码及其结果,说明了n的几种不同的权力:
j=10
for i in range(6):
print '{:8} {:8.1f} {:8.1f} {:8.1f} {:8.1f}'.format(j, j**0.33, j**.35, j**.37, j**.39)
j *= 10
10 2.1 2.2 2.3 2.5
100 4.6 5.0 5.5 6.0
1000 9.8 11.2 12.9 14.8
10000 20.9 25.1 30.2 36.3
100000 44.7 56.2 70.8 89.1
1000000 95.5 125.9 166.0 218.8
答案 3 :(得分:0)
我发现标准差比方差更直观,因为它的测量单位与您正在处理的潜在不确定数量相同。也许某些百分比的标准偏差是一个合适的衡量标准,因为如果你选择正确的百分比,它会将你的例子推向正确的方向。