0

我目前的方法允许我确定最准确的数组,但我无法找到显示信息结果的好方法。

这是我的情况……</p>

我将X数量的整数数组与静态整数数组进行比较。对于数组中的每个位置,我通过与静态数组中的等效位置进行比较来计算位置的精度结果。在确定阵列的最后一个位置精度结果后,我存储该阵列的所有精度结果的总和,以供以后比较

一旦保存了每个阵列的所有准确度结果的总和,它们就会相互比较。总和最小的数组被认为是最准确的。

伪代码……</p>

foreach (ComparableArray as SingleArray) {
    for (i = 0; i < count(SingleArray); i++) {
        AccuracyResults[SingleArray] += |StaticArray[i] - SingleArray[i]| / CONSTANT;
    }   
}   
BestArray = AscendingSort(AccuracyResults)[0];

精度是通过将 SingleArray 值与 StaticArray 的差值的绝对值除以某个常数来确定的。如果准确度结果 < 1,则认为结果准确。如果result > 1,那么它是不准确的,results = 0是完美的。

这是一个场景......为简单起见,让我们使用两个数组

S = [ 56, 53, 50, 64 ]

A = [ 56, 54, 52, 64 ]

B = [ 54, 52, 51, 63 ]

循环遍历从A开始的每个数组。

比较 A( 56 ) 和 S( 56 ) 的位置 [1] 的准确性。确定精度(我将使用两个作为常数)|56-56|= 0 , 0 / 2 = 0 ; 完美的准确性

继续比较每个位置并计算精度 |53-54|= 1 , 1 / 2 = 0.5 ; 准确,因为 <= 1

|50-52|= 2 , 2 / 2 = 1 ; 准确的

|64-64| = 0 ; 完美的

现在计算数组 A 0 + 0.5 + 1 + 0 = 1.5的所有准确结果的总和

如果我们对数组 B 执行相同的操作,最终结果将是 1 + 0.5 + 0.5 + 0.5 = 2.5

现在,如果我们将数组 A 与 B 进行比较,我们可以看到数组A 比 B 更准确,因为总和更低

问题是 1.5 和 2.5 在尝试显示 A 比 B 更准确时意义不大。

显示这些结果的最佳方法是什么?我考虑过显示百分比……比如 A 比 B 好 17%。或者 BestArray 比平均值好 6%。

我将如何计算这些结果?

您在我计算准确性的方式中看到任何逻辑问题或知道更好的方法吗?

感谢您提供的任何见解!

4

4 回答 4

1

相对百分比是个坏主意,因为人们非常不善于判断这在实践中意味着什么——有关更多解释,请参阅《坏科学》一书。

只需按从最准确到最不准确的顺序显示总和并解释评级系统。我不认为将它们转换为任何类型的百分比是有帮助的,但最好给出一些指导性数字或条带(例如通过为文本或背景着色)来说明准确度的好、中等和差。

最后,您的问题非常具体到您的编程程序,并且不太可能像它的措辞方式对许多其他人有用。在这里,我们更喜欢问题是具体的技术主题,但通常适用于其他问题,所以如果你下次更一般地表达你的问题,它会提供更好的资源。

于 2010-01-15T09:52:16.830 回答
1

我倾向于同意@Martin 的观点,即使用数值来量化定性测量之间的差异有点不靠谱。然而,人们一直都在这样做,所以如果你想继续这样做,那就去吧!

现在,我真正想写的是,你的伪代码根本就不是很伪。这是我要编写的伪代码:

ManhattanDistance[{56, 53, 50, 64},{56, 54, 52, 64}]

它指定与您的版本相同的计算。现在,您可能会也可能不会认为这是一个有效的 Mathematica 语句,但这不是重点。关键是您已经找到了用于测量两个向量之间距离的无数函数之一。其他距离度量包括欧几里得距离和棋盘距离。

您还可以使用多种矢量范数中的任何一种来测量矢量之间的距离。例如,Mathematica 给出了计算的结果 sqrt(5):

Norm[S - A]

因此,如果您确实想沉迷于一些狡猾的伪统计,请在谷歌周围寻找向量距离和范数的一些定义。我猜你也会找到代码或者至少是命令式算法。

问候

标记

PS不要告诉任何人我用伪科学帮助过你:-)

于 2010-01-15T11:47:05.880 回答
1

您的“位置精度”只是一个错误,如果正态分布(正如人们所期望的那样)可以用高斯分布建模。如果是这样,由于高斯随机变量的总和本身就是高斯的,因此您的“所有准确度之和”数也是高斯分布的随机变量。您可以计算这些误差和的均值和方差,并使用高斯 PDF(概率分布函数)对您的系统进行建模,并使用它来回答诸如“最后一个笨重的向量应该是鲜红色,因为它的误差总和大于 95%所有这些向量”。或者“哇,最后一个向量是 A+,因为它的误差小于所有其他此类向量的 1%”。

这篇wiki帖子也可能有帮助。

保罗

于 2010-01-16T06:51:42.930 回答
0

Mean Squared Error is often used in engineering circles to quantify error between a solution and an estimate of the solution.

To avoid problems with a large variance in the values consider using log(error) ...of course this has it's own issues with log(0) being -infinity and if (0 < error < 1) log gives negative numbers

于 2010-01-18T12:34:47.673 回答