Outlier Detection bei großer Datenmenge

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Tom
Beiträge: 20
Registriert: Mi Nov 13, 2019 4:21 pm

Outlier Detection bei großer Datenmenge

Beitrag von Tom »

Hallo zusammen,

weiß jemand, wie ich am besten bei einem großen Datensatz Ausreißer mit R-Studio bestimmen kann?

Danke schonmal im Voraus für Eure Hilfe :)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von bigben »

Es gibt keine allgemeine Definition des Ausreißers und deshalb auch keine eindeutige Antwort auf Deine Frage. Manche verwenden die Definition aus dem Boxplot. Kommt das für Dich infrage?

LG Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von student »

Hallo Tom,

ich verwende lieber den Begriff Extremwert als Ausreißer. Extremwert finde ich angemessener, weil er für ein seltenes aber dennoch wahrscheinliches Ereignis steht. Das bedeutet, dass z .B. das Entfernen von Extremwerten aus den Beobachtungen erklärt und dokumentiert werden muss.

Einer meiner ersten Datenanalyseschritten ist die Visualisierung (wie der erwähnte Boxplot) und dann abhängig vom Bild der Verteilung gehe ich dann tiefer, bis hin zu den Extremwerten (wenn sie möglicherweise vorhanden sind.)

Ich gehe natürlich davon aus, dass Du die Daten validiert hast.
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von bigben »

"Extremwert" finde ich schwierig - bei der Kurvendiskussion im Mathematikunterricht waren das lokale Maximum und das lokale Minimum Extremwerte.

Die Bedeutung einer visuellen Beurteilung der Daten ist natürlich enorm. Man kann sich aber auch vorstellen, dass es Situationen gibt, in denen man einen Algorithmus zum Erkennen von Ausreißern braucht. Boxplots liefern eben nicht nur eine weit verbreitete Art der visuellen Inspektion, sondern auch einen gängigen Algorithmus zu identifizieren von Ausreißern

Code: Alles auswählen

set.seed(as.Date("30-03-2020"))

messungen <- c(10*rbeta(100, 1,5), 9.5,10)
plot(density(messungen), ylim=c(0,.9), main="")
boxplot(messungen, horizontal = TRUE, at=.7, add=TRUE, boxwex = .5)
rug(messungen)
Rplot.png
Rplot.png (4.22 KiB) 876 mal betrachtet


Die Hälfte der Werte ist in den Box, die andere Hälfte im Bereich der Whiskers und vier Werte sind automatisch/algorothmisch als Ausreißer erkannt und als Kreise im Boxplot dargestellt. Man mag im Einzelfall darüber streiten, ob das eine sinnvoller Algorithmus ist, oder nicht. In der Masse der denkbaren ist er sicherlich einer der bekanntesten. Die Ausreißerwerte gehören zum Rückgabewert der Funktion histogram:

Code: Alles auswählen

boxplot(messungen, plot = FALSE)$out
Mit dem Argument range lässt sich auch einstellen, ob man empfindlicher oder unempfindlicher sein möchte. Hier vier Histogramme vom gleichen Datensatz mit 4 verschiedenen range -Werten:
Rplot01.png
Rplot01.png (10.78 KiB) 874 mal betrachtet

HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von student »

Mit
"Extremwert" finde ich schwierig - bei der Kurvendiskussion im Mathematikunterricht waren das lokale Maximum und das lokale Minimum Extremwerte.
hast Du recht, ich meine natürlich Extremwert im Kontext "Statistik". ;)

Deine Beschreibung im Umgang mit Extremwerten ( ;) ) ist recht anschaulich, entspricht auch meiner Erfahrung: Leider habe ich erlebt, dass solange mit den Parametern experimentiert wurde, bis es passte (= so kann ich es gebrauchen, um ....). Oftmals wurde das Info-Potenzial ausgeblendet, dass in Extremwerten steckt. Aber damit möchte ich keine Extremwert-/Ausreißer-Diskussion lostreten, ich habe nur meine 2 Cent zum Besten gegeben! ;)
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von bigben »

Hallo Günther,

ich finde es gar nicht falsch, eine Ausreißer-Diskussion zu führen. Im Statistik-Forum hat 2016 mal jemand gefragt, ob er seine Ausreißer löschen soll und ich zitiere jetzt einfach mal meine Antwort im anderen Forum, auch wenn ich nicht weiß, ob das dem Hintergedanken des OP entspricht:
Die von Dir aufgeworfene Frage ist hoch komplex und kann nicht mit einem simplen Schema beantwortet werden. Extreme Werte können unsinnig entstandene Werte sein (Messwert falsch auf den Erhebungsbogen übertragen) oder das Ergebnis einer tatsächlichen Streuung der Messgröße sein. In Fukushima hatte man Mauern gegen 5,5m hohe Wellen gebaut. Dann kam die 10m hohe Welle. Sie war ein Extremwert, aber einer, den das Meer tatsächlich produziert hat. Die 10m Welle war real und es wäre verfälschend, sie aus den Archiven streichen zu wollen. Hätte aber jemand versehentlich eine 10cm Welle als 10m Welle dokumentiert, dann müsste man diesen offensichlich falschen Wert aus den Messungen streichen. Das hat gar nichts damit zu tun, welchen z-Wert eine 10m-Welle vor Fukushima hat.

Es muss also um die Frage gehen, wie es am wahrscheinlichsten zu den extremen Werten gekommen ist und ob man den kleineren Fehler macht, wenn man sie streicht oder ob man den kleineren Fehler macht, wenn man sie drin lässt (eine zu hohe Mauer für Fukushima wäre teuer gewesen. Eine zu niedrige war fatal). Ohne Sachkunde in Ozeanographie, Hydrologie, Physik und Katastrophenschutz lässt sich die Frage nach der angemessenen Mauerhöhe nicht beantworten. Auch wir werden Deine Frage nicht beantworten können, ohne die Hintergründe genauestens zu kennen. Ohne sachwissenschaftlichen Hintergrund kann man Dir da nicht anständig raten.
( http://www.statistik-forum.de/post26808.html )

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Tom
Beiträge: 20
Registriert: Mi Nov 13, 2019 4:21 pm

Re: Outlier Detection bei großer Datenmenge

Beitrag von Tom »

bigben hat geschrieben: Mo Mär 30, 2020 7:58 am Manche verwenden die Definition aus dem Boxplot. Kommt das für Dich infrage?


Danke für Eure schnellen Antworten. Mein Problem ist hauptsächlich, dass ich die Ausreißer nicht grafisch erkennen kann, weil ich bspw. für ein Scatterplot oder Boxplot zu viele "Datenpunkte" habe, sodass mir dann überhaupt nichts angezeigt wird (stattdessen erhalte ich eine Fehlermeldung, dass es aufgrund der Datenmenge nicht angezeigt werden kann). Bei kleineren Datenmengen weiß ich, wie sich Ausreißer am besten erkennen lassen, allerdings besteht meine Variable aus über 2000 Fällen...
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Outlier Detection bei großer Datenmenge

Beitrag von EDi »

Tom hat geschrieben: Mo Mär 30, 2020 4:30 pm
bigben hat geschrieben: Mo Mär 30, 2020 7:58 am Manche verwenden die Definition aus dem Boxplot. Kommt das für Dich infrage?


Danke für Eure schnellen Antworten. Mein Problem ist hauptsächlich, dass ich die Ausreißer nicht grafisch erkennen kann, weil ich bspw. für ein Scatterplot oder Boxplot zu viele "Datenpunkte" habe, sodass mir dann überhaupt nichts angezeigt wird (stattdessen erhalte ich eine Fehlermeldung, dass es aufgrund der Datenmenge nicht angezeigt werden kann). Bei kleineren Datenmengen weiß ich, wie sich Ausreißer am besten erkennen lassen, allerdings besteht meine Variable aus über 2000 Fällen...
:shock: :shock: :shock:

Also ich kann auf meinem alten notebook (8GB RAM) einen vektor mit 100 Millionen Einträgen durchjagen

Code: Alles auswählen

x <- rlnorm(100000000)
bp <- boxplot(x, plot = FALSE)
bp$stats
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von bigben »

Tom hat geschrieben: Mo Mär 30, 2020 4:30 pm
bigben hat geschrieben: Mo Mär 30, 2020 7:58 am Manche verwenden die Definition aus dem Boxplot. Kommt das für Dich infrage?

Danke für Eure schnellen Antworten. Mein Problem ist hauptsächlich, dass ich die Ausreißer nicht grafisch erkennen kann, weil ich bspw. für ein Scatterplot oder Boxplot zu viele "Datenpunkte" habe, sodass mir dann überhaupt nichts angezeigt wird (stattdessen erhalte ich eine Fehlermeldung, dass es aufgrund der Datenmenge nicht angezeigt werden kann). Bei kleineren Datenmengen weiß ich, wie sich Ausreißer am besten erkennen lassen, allerdings besteht meine Variable aus über 2000 Fällen...
Mir ist so, als ob Du meine Frage nicht beantwortet hast. Einen Boxplot von 2000 Fällen zeichnet R schneller als Du blinzeln kannst

Code: Alles auswählen

boxplot(rnorm(2000))
Und für große Datenmengen hatte ich extra geschrieben, dass es mir nicht um den Plot, sondern um den Algorithmus geht und auch Code gezeigt, wie man der Funktion boxplot die Ausreißer entlockt, ohne eine Grafik zu zeichnen.
zu viele "Datenpunkte" habe, sodass mir dann überhaupt nichts angezeigt wird
Versuch bitte mal folgenden Code

Code: Alles auswählen

plot(rnorm(2000), rnorm(2000), col="#000000A0", pch=16)
und ändere Deine Meinung darüber, ob R 2000 Datenpunkte zeichnen kann oder poste wörtlich die dabei entstehende Fehlermeldung.


Also nochmal: Ist der Boxplot-Algorithmus (mehr als 1,5 IQR entfernt vom Median) für Dich inhaltlich brauchbar?

Gruß,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Outlier Detection bei großer Datenmenge

Beitrag von student »

Hallo Bernhard,

das ist doch eine sehr schöne Beschreibung, besonders der Vergleich einer 10m oder 10cm hohen Mauer. Das ist Domainwissen und ohne dieses Wissen, ist das Identifizieren und der Umgang möglicher Extremwerte schwerlich möglich.

Hallo Tom,
allerdings besteht meine Variable aus über 2000 Fällen...
ist wirklich kein großer Datensatz. Ich habe mal einen Boxplot mit Beobachtungen aus einem meiner Lieblingsspieldatensätze gemacht. Er besteht aus 6497 Beobachtungen z. B. für das Merkmal Alkohol. Der Boxplot zeigt mit den Standardparametern 3 Extremwerte. Diese Extremwerte sind aber keine Ausreißer, sondern wesentliche Informationen und dürfen nicht einfach entfernt werden (Grafik Tabelle). Mögliche Maßnahmen will ich gar nicht beschreiben...

Also kurzum, Dein Boxplot-Problem beruht auf ein anderes Problem.
Dateianhänge
3 Beobachtungen mit einem Alkoholgehalt von 14%
3 Beobachtungen mit einem Alkoholgehalt von 14%
Tabelle.jpg (30.48 KiB) 828 mal betrachtet
Boxplot mit obigen &quot;Ausreißern&quot;.
Boxplot mit obigen "Ausreißern".
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Antworten