Ich habe einige multivariate Daten von Schönheit gegen Alter. Das Alter reicht von 20 bis 40 in Intervallen von 2 (20, 22, 24 ... 40), und für jede Datenaufzeichnung erhalten sie ein Alter und eine Schönheitsbewertung von 1 bis 5. Wenn ich Boxplots dieser Daten mache (Alter auf der X-Achse, Schönheitsbewertungen auf der Y-Achse), werden einige Ausreißer außerhalb der Whisker jeder Box dargestellt.
Ich möchte diese Ausreißer aus dem Datenrahmen selbst entfernen, bin mir aber nicht sicher, wie R Ausreißer für seine Box-Plots berechnet. Unten finden Sie ein Beispiel dafür, wie meine Daten aussehen könnten.
r
statistics
outliers
Dan Q.
quelle
quelle
boxplot
Funktion gibt die Ausreißer (unter anderem Statistiken) unsichtbar zurück. Versuchen Sie zufoo <- boxplot(...); foo
lesen?boxplot
, um die Ausgabe zu verstehen.Antworten:
OK, Sie sollten so etwas auf Ihren Datensatz anwenden. Nicht ersetzen und speichern, sonst zerstören Sie Ihre Daten! Übrigens sollten Sie (fast) niemals Ausreißer aus Ihren Daten entfernen:
Um es in Aktion zu sehen:
Und noch einmal, Sie sollten dies niemals alleine tun, Ausreißer sollen es nur sein! =)
BEARBEITEN: Ich habe
na.rm = TRUE
als Standard hinzugefügt .EDIT2: Entfernte
quantile
Funktion hinzugefügt Subskribierung, damit die Funktion schneller gemacht! =)quelle
boxplot
. Das ist überschaubar, und Sie sollten dann die Antwort von @ Prasad markieren, da Ihre Frage beantwortet wurde. Wenn Sie Ausreißer mithilfe der "Ausreißerregel" ausschließen möchtenq +/- (1.5 * H)
, führen Sie daher eine Analyse durch, und verwenden Sie diese Funktion. Übrigens, ich habe das von Grund auf neu gemacht, ohne zu googeln, also besteht die Möglichkeit, dass ich das Rad mit meiner Funktion neu erfunden habe ...Niemand hat die einfachste Antwort gepostet:
Siehe auch: http://www.r-statistics.com/2011/01/how-to-label-all-the-outliers-in-a-boxplot/
quelle
result = x[!x %in% boxplot.stats(x)$out]
Verwenden
outline = FALSE
Sie diese Option als Option, wenn Sie das Boxplot erstellen (lesen Sie die Hilfe!).quelle
out
undgroup
Elemente in der Liste).Die Boxplot-Funktion gibt die Werte zurück, die für das Plotten verwendet wurden (was dann tatsächlich von bxp () gemacht wird:
Ich habe die spezifische Frage absichtlich nicht beantwortet, weil ich es für statistisch falsch halte, "Ausreißer" zu entfernen. Ich halte es für akzeptabel, sie nicht in einem Boxplot zu zeichnen, sondern sie zu entfernen, nur weil sie eine bestimmte Anzahl von Standardabweichungen oder eine bestimmte Anzahl von Interquartilbreiten überschreiten, ist eine systematische und unwissenschaftliche Verfälschung des Beobachtungsprotokolls.
quelle
Ich habe nach Paketen gesucht, die sich auf das Entfernen von Ausreißern beziehen, und dieses Paket gefunden (überraschenderweise "Ausreißer" genannt!): Https://cran.r-project.org/web/packages/outliers/outliers.pdf,
wenn Sie es durchgehen Sehen Sie sich verschiedene Möglichkeiten zum Entfernen von Ausreißern an. Unter diesen fand ich
rm.outlier
die bequemste und wie im obigen Link angegeben: "Wenn der Ausreißer durch statistische Tests erkannt und bestätigt wird, kann diese Funktion ihn entfernen oder durch Stichprobenmittelwert oder Median ersetzen." und auch hier ist der Nutzungsteil aus derselben Quelle:" Nutzung
Argumente
x ein Datensatz, am häufigsten ein Vektor. Wenn das Argument ein Datenrahmen ist, wird der Ausreißer durch sapply aus jeder Spalte entfernt. Das gleiche Verhalten wird angewendet, indem angewendet wird, wenn die Matrix angegeben wird.
fill Wenn auf TRUE gesetzt, wird der Median oder Mittelwert anstelle des Ausreißers platziert. Andernfalls werden die Ausreißer einfach entfernt.
Median Wenn TRUE festgelegt ist, wird beim Ersetzen von Ausreißern anstelle des Mittelwerts der Median verwendet. Gegenteil, wenn auf WAHR gesetzt, ergibt sich ein entgegengesetzter Wert (wenn der größte Wert eine maximale Differenz zum Mittelwert aufweist, ergibt er den kleinsten und umgekehrt) "
quelle
Ich finde es sehr einfach, Ausreißer zu entfernen. Im obigen Beispiel extrahiere ich nur 2 Perzentile bis 98 Perzentile der Attributwerte.
quelle
Würde nicht:
diese Aufgabe ganz einfach erfüllen?
quelle
Wenn man den Vorschlag von @sefarkas ergänzt und Quantil als Grenzwert verwendet, könnte man die folgende Option untersuchen:
Dadurch werden die Punktpunkte jenseits des 99. Quantils entfernt. Vorsicht ist geboten, wie es aL3Xa über das Halten von Ausreißern gesagt hat. Es sollte nur entfernt werden, um eine alternative konservative Ansicht der Daten zu erhalten.
quelle
0.91
oder0.99
? wie inmydata$var < quantile(mydata$var, probs=c(.01, .91))[1])
odermydata$var < quantile(mydata$var, probs=c(.01, .99))[1])
Ein Weg, dies zu tun, ist
oder
quelle
Ausreißer sind Spitzen sehr ähnlich, daher kann ein Spitzendetektor zur Identifizierung von Ausreißern nützlich sein. Die hier beschriebene Methode hat unter Verwendung von Z-Scores eine recht gute Leistung. Die Animation auf der Seite zeigt die Methodensignalisierung für Ausreißer oder Peaks.
Peaks sind nicht immer dasselbe wie Ausreißer, aber sie sind häufig ähnlich.
Hier wird ein Beispiel gezeigt: Dieser Datensatz wird über serielle Kommunikation von einem Sensor gelesen. Gelegentliche serielle Kommunikationsfehler, Sensorfehler oder beides führen zu wiederholten, eindeutig fehlerhaften Datenpunkten. In diesem Punkt gibt es keinen statistischen Wert. Sie sind wohl keine Ausreißer, sie sind Fehler. Der Z-Score-Peakdetektor konnte auf falschen Datenpunkten signalisieren und erzeugte einen sauberen resultierenden Datensatz:
quelle
Versuche dies. Geben Sie Ihre Variable in die Funktion ein und speichern Sie das O / P in der Variablen, die entfernte Ausreißer enthalten würde
quelle