我当前的方法允许我确定最准确的数组,但我无法找到显示信息结果的好方法。
这是我的情况......
我将 X 整数数组的数量与静态整数数组进行比较。对于数组中的每个位置,我通过与静态数组中的等效位置进行比较来计算位置的精度结果。在确定了阵列的最后位置精度结果之后,我将该阵列的所有精度结果的总和存储在稍后进行比较。
一旦保存了每个数组的所有精度结果的总和,就将它们相互比较。具有最低总和的数组被视为最准确。
伪代码......
foreach (ComparableArray as SingleArray) {
for (i = 0; i < count(SingleArray); i++) {
AccuracyResults[SingleArray] += |StaticArray[i] - SingleArray[i]| / CONSTANT;
}
}
BestArray = AscendingSort(AccuracyResults)[0];
准确度是通过从StaticArray中取出SingleArray值的差值的绝对值并除以某个常量来确定的。如果准确度结果是&lt; 1 ,然后结果被认为是准确的。如果结果&gt; 1 ,那么它是不准确的,结果= 0 是完美的。
这是一个场景......让我们使用两个数组来简化
S = [56,53,50,64]
A = [56,54,52,64]
B = [54,52,51,63]
以 A 开始循环遍历每个数组。
比较A( 56 )的位置[1]和S( 56 )的准确度。 确定准确性(我将使用两个为我的常数) | 56-56 | = 0 , 0 / 2 = 0 ;完美准确
继续比较每个位置和计算精度 | 53-54 | = 1 , 1 / 2 = 0.5 ; Accuracte因为&lt; = 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%。
我如何计算这些结果?
您是否在我的计算准确性方面遇到任何逻辑问题或者知道更好的方法?
感谢您提供的任何见解!
答案 0 :(得分:1)
相对百分比是一个坏主意,因为人们在判断实际意义上是非常糟糕的 - 有关更多解释,请参阅“坏科学”一书。
只需按照从最准确到最低的顺序显示总和,并解释评级系统。我不认为将它们变成任何百分比是有帮助的,但是给出一些指导数字或条带(比如通过着色文本或背景)将是好的,中等的和差的准确性将是一个好主意。 / p>
最后,你的问题对你的编程程序是非常具体的,并且不太可能像其他人那样对其他人有用。在这里,我们更倾向于在技术主题中具体提出问题,但通常适用于其他问题,因此,如果您下次更频繁地表达问题,那么它就可以提供更好的资源。
答案 1 :(得分:1)
我倾向于同意@Martin使用数值来量化定性测量之间的差异有点狡猾。然而,人们总是这样做,所以如果你想继续这样做,那就去吧!
现在,我真正想写的是你的伪代码根本不是伪代码。这是我要写的伪代码:
ManhattanDistance[{56, 53, 50, 64},{56, 54, 52, 64}]
指定与您的版本相同的计算。现在,您可能会或可能不会认识到这是一个有效的Mathematica声明,但这不是重点。关键是你已经找到了无数函数中的一个来测量两个向量之间的距离。其他距离测量包括欧几里德距离和棋盘距离。
您还可以使用多个矢量范数中的任何一个来测量矢量之间的距离。例如,Mathematica为计算提供了结果sqrt(5):
Norm[S - A]
所以,如果你真的想沉迷于一些狡猾的伪统计数据谷歌周围的一些矢量距离和规范的定义。我想你也会找到代码或至少是命令式算法。
此致
标记
PS请不要告诉任何我用伪科学帮助过你的人: - )答案 2 :(得分:1)
您的“位置准确度”只是一个错误,如果正态分布(正如人们所期望的那样)可以用高斯分布建模。如果是这样,由于高斯随机变量的和本身是高斯的,所以“所有精度之和”数也是高斯分布随机变量。您可以计算这些误差总和的均值和方差,并使用高斯PDF(概率分布函数)对系统进行建模,并使用它来回答“最后一个笨重的矢量应该是鲜红色的问题,因为它的误差总和大于95%所有这些载体“。或者“哇,最后一个向量是A +,因为它的误差小于所有其他此类向量的1%”。
此wiki帖子也可能会有所帮助。
保
答案 3 :(得分:0)
平均误差通常用于工程界,以量化解决方案与解决方案估算值之间的误差。
为了避免值中存在较大差异的问题,请考虑使用log(错误)...当然这有自己的问题,log(0)是-infinity并且if(0&lt; error&lt; 1)log给出了负数