Können wir einen Mittelwert und eine Standardabweichung auslassen, um die Ausreißer zu ermitteln?

17

Angenommen, ich habe normalverteilte Daten. Für jedes Element der Daten möchte ich überprüfen, wie viele SDs vom Mittelwert entfernt sind. Es kann einen Ausreißer in den Daten geben (wahrscheinlich nur einen, aber möglicherweise auch zwei oder drei) oder nicht, aber dieser Ausreißer ist im Grunde das, wonach ich suche. Ist es sinnvoll, das aktuell betrachtete Element vorübergehend von der Berechnung des Mittelwerts und der SD auszuschließen? Meiner Meinung nach hat es keine Auswirkungen, wenn es nahe am Mittelwert liegt. Wenn es sich um einen Ausreißer handelt, wird möglicherweise die Berechnung von Mittelwert und SD verzerrt und die Wahrscheinlichkeit verringert, dass er erkannt wird. Ich bin kein Statistiker, daher ist jede Hilfe willkommen!

Oliver
quelle
7
Es macht durchaus Sinn und ist die Basis für viele Ausreißererkennungstechniken. Aber anstatt eine eigene Methode zu erfinden, die funktionieren könnte oder auch nicht (und letztere ist viel wahrscheinlicher, selbst bei Methoden, die von Statistikern neu erfunden wurden, weshalb sie sorgfältig studiert werden müssen), warum verwenden Sie keine theoretische Methode? geprüft und empirisch getestet?
Whuber
Vielen Dank für den Hinweis. Ich werde diese Techniken nachschlagen und sehen, ob sie mit meinen Daten gut funktionieren!
Oliver
1
Lesen
Ben Ogorek,
.... und diese Antwort zur Veranschaulichung, warum man sich nicht darauf verlassen kann, mehr als einen einzigen Ausreißer zu finden.
User603
Großartige Gedanken über die Idee, Ausreißer zu markieren. Vor einiger Zeit hatte ich einen Artikel über die Idee von Loss-Pass-Filtern zur Kennzeichnung von Anomalien geschrieben. Hoffe, dies hilft bei der Erweiterung der oben dargestellten Idee. Link zum Artikel: datascience.com/blog/python-anomaly-detection
Pramit

Antworten:

25

Es mag kontraintuitiv erscheinen, aber die Verwendung des von Ihnen beschriebenen Ansatzes ist nicht sinnvoll (um Ihre Formulierung zu verstehen , würde ich lieber schreiben "kann zu Ergebnissen führen, die sich von den beabsichtigten unterscheiden") und man sollte es niemals tun: die Risiken von Es funktioniert nicht, und außerdem gibt es eine einfachere, viel sicherere und besser etablierte Alternative, die ohne zusätzliche Kosten erhältlich ist.

Erstens ist es wahr, dass wenn es einen einzelnen Ausreißer gibt, Sie ihn schließlich mit dem von Ihnen vorgeschlagenen Verfahren finden. Im Allgemeinen (wenn die Daten möglicherweise mehr als einen Ausreißer enthalten) funktioniert der von Ihnen vorgeschlagene Algorithmus jedoch nicht mehr. Dies kann dazu führen, dass Sie einen guten Datenpunkt als Ausreißer ablehnen oder Ausreißer als gute Datenpunkte beibehalten mit möglicherweise katastrophalen Folgen.

Im Folgenden gebe ich ein einfaches numerisches Beispiel, in dem die von Ihnen vorgeschlagene Regel zusammenbricht, und dann schlage ich eine viel sicherere und etabliertere Alternative vor. Vorher werde ich jedoch erklären, a) was mit der von Ihnen vorgeschlagenen Methode falsch ist und b) was die normalerweise bevorzugte ist Alternative dazu ist.

Im Wesentlichen können Sie den Abstand einer Beobachtung vom Auslassmittelwert und der Standardabweichung Ihrer Daten nicht verwenden, um Ausreißer zuverlässig zu erkennen, da die Schätzungen, die Sie verwenden (Auslassmittelwert und Standardabweichung), immer noch dazu neigen, in den verbleibenden Bereich gezogen zu werden Ausreißer: Dies nennt man den Maskierungseffekt.

Kurz gesagt, eine einfache Möglichkeit, Ausreißer zuverlässig zu erkennen, besteht darin, die von Ihnen vorgeschlagene allgemeine Idee zu verwenden (Entfernung von der Schätzung des Standorts und des Maßstabs), die von Ihnen verwendeten Schätzer jedoch durch robuste zu ersetzen (dh Schätzungen) entwickelt, um viel weniger anfällig für Ausreißer zu sein.

Betrachten Sie dieses Beispiel, in dem ich 3 Ausreißer zu 47 echten Beobachtungen addiere, die aus einer Normalen von 0,1 gezogen wurden:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

Der folgende Code berechnet den Outlyingness-Index auf der Grundlage des Auslassungsmittels und der Standardabweichung (z. B. des von Ihnen vorgeschlagenen Ansatzes).

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

und dieser Code erzeugt die Grafik, die Sie unten sehen.

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

Bild 1 zeigt den Wert Ihres Outlying-Index als Funktion des Werts der Beobachtungen (der am weitesten von den Ausreißern entfernte Wert liegt außerhalb des Bereichs dieses Diagramms, die beiden anderen sind als rote Punkte dargestellt). Wie Sie sehen, würde ein so konstruierter Outlying-Index, mit Ausnahme des extremsten, die Ausreißer nicht aufdecken: Der zweite und der dritte (mildere) Ausreißer haben sogar einen Wert (auf Ihrem Outlying-Index), der kleiner als alle istdie echten Beobachtungen! ... Unter dem von Ihnen vorgeschlagenen Ansatz würde man diese beiden extremen Ausreißer in der Menge der echten Beobachtungen belassen und Sie dazu veranlassen, die verbleibenden 49 Beobachtungen so zu verwenden, als stammten sie aus demselben homogenen Prozess, was Ihnen ein Endergebnis verschafft Schätzung der mittleren und sd basierend auf diesen 49 Datenpunkte von 0,45 und 2,32, eine sehr schlechte Beschreibung der beiden Teil Ihrer Probe!

image2

xichX

Ö(xich,X)=|xich-med(X)|wütend(X)

med(X)Xwütend(X)

In R kann dieser zweite Outlying-Index wie folgt berechnet werden:

out_2 <- abs( x-median(x) )/mad(x)

und geplottet (wie zuvor) mit:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

image2

Bild 2 zeigt den Wert dieses alternativen Outlying-Index für denselben Datensatz. Wie Sie sehen, sind nun alle drei Ausreißer als solche klar erkennbar. Darüber hinaus hat diese Ausreißererkennungsregel einige festgelegte statistische Eigenschaften. Dies führt unter anderem zu verwendbaren Cutoff-Regeln. Wenn beispielsweise angenommen werden kann, dass der Originalteil der Daten aus einer symmetrischen Verteilung mit einem endlichen zweiten Moment stammt, können Sie alle Datenpunkte verwerfen, für die

|xich-med(X)|wütend(X)>3.5

als Ausreißer. Im obigen Beispiel würde die Anwendung dieser Regel dazu führen, dass Sie die Beobachtungen 1, 2 und 3 korrekt kennzeichnen. Wenn Sie dies ablehnen, ist der Mittelwert und der Sd der verbleibenden Beobachtungen 0,021 und 0,93, was eine viel bessere Beschreibung des Originalteils der Probe darstellt !

user603
quelle
2
+1 trotz des ersten Satzes, die Sie sofort Widerspruch (der Vorschlag der OP macht Sinn, wenn höchstens ein Ausreißer angenommen wird, Ihr Einwand betrifft Probleme mit diesem Verfahren , wenn diese Annahme verletzt wird).
whuber
1
Vielen Dank. In der Zwischenzeit habe ich meinen vorherigen Kommentar gelöscht, da ich davon ausgehe, dass er nach Ihren Änderungen veraltet ist.
whuber
3
Das Phänomen, bei dem mehrere Ausreißer die Erkennung einzelner Ausreißer für einen von ihnen blind machen, wird häufig als Maskierung bezeichnet . Dies kann dazu beitragen, dass Benutzer mehr Informationen zu diesem Problem finden.
Glen_b
1
@ user603 Netter Job, der ein anschauliches Szenario schafft, aber ich denke, Sie werfen das Baby mit dem Badewasser raus. Die Diagnose der Regressionslöschung ist nicht perfekt, aber sie ist allgemein anwendbar und hat sich bewährt. Der Median ist in Ordnung, aber ich frage mich, wie Sie Ihren Ansatz auf komplexere Wahrscheinlichkeitsmodelle ausweiten würden.
Ben Ogorek
2
+6, Das ist eine wirklich gute Antwort - klar und gründlich erklärt, mit Code, Zahlen und Formeln illustriert. Ich habe die Code-Formatierung leicht angepasst, um die Lesbarkeit zu verbessern. Wenn Sie es nicht mögen, rollen Sie es mit meiner Entschuldigung zurück.
gung - Wiedereinsetzung von Monica