Frage

Meine aktuelle Methode ermöglicht es mir, die genaueste Array zu bestimmen, aber ich kann nicht einen guten Weg finden, um informative Ergebnisse anzuzeigen.

Hier ist meine Situation ...

I vergleichen X Menge von ganzzahligen Arrays zu einem statischen Integer-Array. Für jede Position im Array die Berechnung I Position der Genauigkeit Ergebnisses von in dem statischen Feld zu der entsprechenden Position verglichen werden. Nach dem letzten Positionsgenauigkeit Ergebnis des Arrays wurde festgestellt, ich speichern Sie die Summe aller Genauigkeit Ergebnisse für das Array für Vergleich zu einem späteren Zeitpunkt .

Sobald jeder Arrays Summe aller Genauigkeit Ergebnisse gespeichert wurde, werden sie miteinander verglichen. Der Array mit der niedrigsten Summe ist die genaueste .

als

Pseudo-Code ...

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

Genauigkeit wird, indem der absolute Wert der Differenz des SingleArray Wert aus der Staticarray und Dividieren durch eine Konstante bestimmt. Wenn Genauigkeit Ergebnis <1 , dann wird das Ergebnis genau angesehen. Wenn Ergebnis> 1 , dann ist es ungenau und Ergebnisse = 0 sind perfekt.

Hier ist ein Szenario ... wir verwenden zwei Arrays der Einfachheit halber

S = [56, 53, 50, 64]

A = [56, 54, 52, 64]

B = [54, 52, 51, 63]

jeden Array Looping durch, beginnend mit A .

Vergleich Position [1] von A ( 56 ) und S ( 56 ) für die Richtigkeit. Bestimmen Genauigkeit (Ich werde verwenden zwei für meine Konstante) | 56-56 | = 0 , 0 / 2 = 0 ; Perfekte Genauigkeit

Weiter jede Position und Rechengenauigkeit vergleichen | 53-54 | = 1 , 1 / 2 = 0,5 ; Accuracte weil <= 1

| 50-52 | = 2 , 2 / 2 = 1 ; Genau

| 64-64 | = 0 ; Perfekt

berechnen nun die Summe aller Accuray Ergebnisse für Array A 0 + 0,5 + 1 + 0 = 1.5

Wenn wir die gleichen Operationen für Array B tun das Endergebnis sein wird 1 + 0,5 + 0,5 + 0,5 = 2.5

Wenn wir nun Array A nach B vergleichen wir das Array sehen können A ist genauer als B, weil die Summe niedriger ist .

Das Problem ist, 1,5 und 2,5 sind nicht sehr aussagekräftig, wenn sie versuchen, wie angezeigt werden viel genauer A nach B ist.

Was wäre die beste Methode, um diese Ergebnisse zu sehen? Ich dachte über die Anzeige Prozent ... wie 17% besser als B. ist oder die BestArray 6% besser als der Durchschnitt.

Wie würde ich diese Ergebnisse berechnen?

Haben Sie Logik Probleme in meiner Art und Weise sehen Genauigkeit der Berechnung oder kennen einen besseren Weg?

Vielen Dank für jede Einsicht können Sie zur Verfügung stellen!

War es hilfreich?

Lösung

Ich neige dazu, mit @ Martin zustimmen, dass numerische Werte unter Verwendung der Differenz zwischen qualitativen Messungen zu quantifizieren ist ein wenig schmuddelig. Allerdings machen die Leute es die ganze Zeit, so dass, wenn du tust, es nach rechts weiter gehen tragen wollen!

Nun, was ich wirklich schreiben wollte, ist, dass Ihr Pseudo-Code nicht schrecklich überhaupt pseudo ist. Hier ist der Pseudo-Code, ich würde schreiben:

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

, die die gleiche Berechnung wie Ihre Version angibt. Nun können Sie oder können dies nicht erkennen, eine gültige Mathematica Aussage zu sein, aber das ist nebensächlich. Der Punkt ist, dass man auf einem von unzähligen Funktionen getroffen hat zur Messung des Abstandes zwischen zwei Vektoren. Andere Distanz Maßnahmen sind die euklidische Distanz, und der Abstand Schachbrett.

könnten Sie auch eine beliebige einer Anzahl von Vektornormen für den Abstand zwischen Vektoren zu messen. Zum Beispiel gibt Mathematica das Ergebnis sqrt (5) für die Berechnung:

Norm[S - A]

Also, wenn Sie nicht wollen, zu schwelgen in einigen zwielichtigen Pseudo Statistiken Google um für einige Definitionen von Vektorabständen und Normen. Ich denke, man Code oder zumindest zwingend notwendig, Algorithmen finden.

Viele Grüße

Mark

PS Do not tell jemand half ich Ihnen mit Pseudowissenschaft: -)

Andere Tipps

Relative Prozentsätze sind eine schlechte Idee, weil die Menschen bei der Beurteilung sehr schlecht sind, was das bedeutet in der Praxis -. Weitere Erläuterungen finden Sie im Buch Bad Wissenschaft

Anzeige einfach die Summen, um von den meisten genau dest und das Rating-System erklären. Ich glaube nicht, sie in jede Art von Prozentsatz dreht hilfreich ist, aber es wäre eine gute Idee sein, einige Führungsfiguren zu geben oder Banding (etwa durch den Text oder die Hintergrundfärbung) von dem, was gut, mittelmäßig und schlecht Genauigkeit wäre.

Schließlich ist Ihre Frage sehr spezifisch für Ihr Programmierprogramm und ist unwahrscheinlich, dass viele andere Menschen von Nutzen zu sein, wie es formuliert ist. Hier bevorzugen wir Frage in technischen Thema spezifisch zu sein, sondern allgemein anwendbar auf andere Probleme, wenn Sie also Ausdruck Ihrer Probleme generell beim nächsten Mal für eine bessere Ressource machen.

Ihre „Positionsgenauigkeit“ ist nur ein Fehler, wenn normal verteilt (wie man erwarten würde) mit einer Gaußschen Verteilung modelliert werden. Wenn ja, da Summen von Gaußschen Zufallsvariablen selbst Gaußsche sind, Ihre „Summe aller Genauigkeit“ -Nummer ist auch eine Gaußsche verteilte Zufallsvariable. Sie können einen Mittelwert und die Varianz dieser Fehlersummen berechnen und eine Gaußsche PDF (Wahrscheinlichkeitsverteilungsfunktion) haben Ihr System modelliert und es verwenden, Fragen wie „das letzte klobig Vektor leuchtend rot sein sollte, zu beantworten, weil es eine Fehlersumme größer als 95% hatten aller solcher Vektoren“. Oder „wow das letzte Vektor war A +, da es einen Fehler von weniger als 1% aller andere solcher Vektoren hatte“.

Die Wiki Post kann auch helfen.

Paul

mittlere quadratische Fehler wird häufig in technischen Kreisen verwendet Fehler zwischen einer Lösung zu quantifizieren und eine Schätzung der Lösung.

Um Probleme mit einer großen Varianz in den Werten zu vermeiden prüfen, mit log (Fehler) ... dies natürlich seine eigene Probleme mit Protokoll hat (0) sein -unendlich und wenn (0

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top