So erkennen Sie Ausreißer in einer ArrayList
Ich versuche mir einige code, der mir erlauben wird, durch meine ArrayList und Erkennung von Werten außerhalb des gemeinsamen Reihe "gute Werte."
Beispiel:
100
105
102
13
104
22
101
Wie würde ich in der Lage sein, den code zu schreiben, um zu erkennen, dass (in diesem Fall) 13 und 22 fallen nicht in die "gute Werte" von rund 100?
- Sie gehen zu müssen, konsequent zu definieren, was meinen Sie mit "guten Werten". Sie sind Werte, die mehr als x-standard-Abweichungen vom Durchschnitt entfernt? Oder etwas anderes?
- Dies kann leicht getan werden mit einigen
if
Aussagen - Gelesen bis auf Ausreißer-Erkennung: en.wikipedia.org/wiki/Outlier#Identifying_outliers
- Können Sie uns erklären, wie dies mit if-Anweisungen @redFIVE. Dank
- Nein. Sie müssen lernen, wie man if-Anweisungen
- Ich wollte nur sicherstellen, dass ich war immer der richtige Ausgangspunkt. Ich verstehe, dass eine if-Anweisung ein Boolscher Vergleich, der nur ausgeführt wird, werden die Anweisungen innerhalb des Blocks verschachtelt unter den Vergleich, wenn, und nur wenn boolean-Vergleich geht, gibt den Wert 1 statt 0. Aber danke für deinen input. Ich dachte über die Verwendung von if-Anweisungen, und nur der Vergleich innerhalb einer Schleife, ob die beiden Variablen immer einen Wert größer als fünf oder weniger als -5. Aber ich lief in ein problem der Bestimmung, wie zu erkennen, welches element ist die eins, die entfernt werden soll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Kriterien für die Erkennung von Ausreißern. Den einfachsten, wie Chauvenet ' s Kriterium, verwenden Sie den Mittelwert und die Standardabweichung, berechnet aus der Probe zu bestimmen, einen "normalen" Bereich für die Werte. Jeder Wert außerhalb dieses Bereichs ist als ein Ausreißer.
Andere Kriterien sind Grubb ' s test und Dixon ' s Q-test und möglicherweise bessere Ergebnisse liefern als Chauvenet ' s zum Beispiel, wenn die Probe stammt aus einem Ungleichgewicht der Verteilung.
Ausgabe:
[20.0]
Erklärung:
"output" ArrayList
Einer Umsetzung der Grubb ' s test finden Sie unter MathUtil.java. Es befindet sich ein einzelner Ausreißer, die Sie entfernen aus der Liste und wiederholen Sie, bis Sie entfernt haben alle Ausreißer.
Hängt
commons-math
, so dass, wenn Sie mit Gradle:Map
dass Karten die Zahl mit dem Abstand vom Mittelwertn
Anzahl, so dass Sie sicher, es gibt kein Unrecht mit AbstandVerwenden Sie diesen Algorithmus. Dieser Algorithmus verwendet den Durchschnittswert und die Standardabweichung. Diese 2-Nummer optionale Werte (2 * standardDeviation).
Es ist nur eine sehr einfache Umsetzung, die holt sich die Informationen, die zahlen werden nicht in die Reihe:
Zusätzlich innerhalb der
isInRange
Methode Sie haben zu definieren, was meinst du mit "gute Werte". Nachfolgend finden Sie eine beispielhafte Umsetzung.Als Joni bereits erwähnt , können Sie beseitigen Ausreißer mit Hilfe von Standardabweichung und Mittelwert. Hier ist mein code, die Sie für Ihre Zwecke nutzen können.
Sie entfernen möchten Ausreißer: ich gehe Normalerweise mit 1,5 f-2f, je größer die variable,
die weniger Ausreißer entfernt werden
Die Ausgabe des Codes: