Erkennen von Ausreißern in Zähldaten


21

Ich habe das, was ich naiv für ein recht einfaches Problem hielt, das die Erkennung von Ausreißern für viele verschiedene Sätze von Zähldaten beinhaltet. Insbesondere möchte ich feststellen, ob einer oder mehrere Werte in einer Reihe von Zählungsdaten im Verhältnis zu den restlichen Zählungen in der Verteilung höher oder niedriger als erwartet sind.

Der verwirrende Faktor ist, dass ich dies für 3.500 Verteilungen tun muss, und es ist wahrscheinlich, dass einige von ihnen für ein überdisperses Poisson mit Null passen, während andere am besten für ein negatives Binom oder einen ZINB passen, während andere normal verteilt sein können. Aus diesem Grund sind einfache Z-Scores oder das Auftragen der Verteilung für einen Großteil des Datensatzes nicht geeignet. Hier ist ein Beispiel für die Zähldaten, für die ich Ausreißer erkennen möchte.

counts1=[1 1 1 0 2 1 1 0 0 1 1 1 1 1 0 0 0 0 1 2 1 1 2 1 1 1 1 0 0 1 0 1 1 1 1 0 
         0 0 0 0 1 2 1 1 1 1 1 1 0 1 1 2 0 0 0 1 0 1 2 1 1 0 2 1 1 1 0 0 1 0 0 0 
         2 0 1 1 0 2 1 0 1 1 0 0 2 1 0 1 1 1 1 2 0 3]
counts2=[0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 
         0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
         0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
         1 1 0 0 0]
counts3=[14 13 14 14 14 14 13 14 14 14 14 14 15 14 14 14 14 14 14 15 14 13 14 14 
         15 12 13 17 13 14 14 14 14 15 14 14 13 14 13 14 14 14 14 13 14 14 14 15 
         15 14 14 14 14 14 15 14 1414 14 15 14 14 14 14 14 14 14 14 14 14 14 14 13 16]
counts4=[0 3 1.......]
and so on up to counts3500.

Ursprünglich dachte ich, ich müsste eine Schleife in Python oder R schreiben, die eine Reihe von Modellen auf jede Distribution anwendet und das am besten passende Modell nach AIC oder anderem auswählt (vielleicht das fitdistrplus in R?). Ich könnte dann fragen, was für Extreme für die gegebene Verteilung waren (die Zählungen, die in die Schwänze fallen, z. B. wäre eine Zählung von "4" ein Ausreißer in der obigen Verteilung von Zählungen1?). Ich bin mir jedoch nicht sicher, ob dies eine gültige Strategie ist, und es ist mir aufgefallen, dass es eine einfache Methode zur Bestimmung von Ausreißern in Zähldaten gibt, die mir nicht bekannt waren. Ich habe ausgiebig gesucht und nichts gefunden, das für mein Problem angemessen erscheint, wenn man die Anzahl der Distributionen bedenkt, die ich betrachten möchte.

Mein letztendliches Ziel ist es, mit der statistisch am besten geeigneten Methode signifikante Zu- oder Abnahmen der Anzahl für jede Zählerverteilung zu ermitteln.

Antworten:


23

Sie können die Entfernung einer Beobachtung von einer klassischen Anpassung Ihrer Daten nicht verwenden, um Ausreißer zuverlässig zu erkennen, da das von Ihnen verwendete Anpassungsverfahren selbst dazu neigt, zu den Ausreißern gezogen zu werden (dies wird als Maskierungseffekt bezeichnet). Eine einfache Möglichkeit, Ausreißer zuverlässig zu erkennen, besteht darin, die von Ihnen vorgeschlagene allgemeine Idee (Distanz von der Anpassung) zu verwenden und die klassischen Schätzer durch robuste zu ersetzen, die weniger anfällig dafür sind, von Ausreißern beeinflusst zu werden. Nachstehend präsentiere ich eine allgemeine Illustration der Idee und diskutiere dann die Lösung für Ihr spezifisches Problem.

N(0,1)

x<-c(-2.21,-1.84,-.95,-.91,-.36,-.19,-.11,-.1,.18,
.3,.31,.43,.51,.64,.67,.72,1.22,1.35,8.1,17.6)

(die letzten beiden sollten eigentlich 0,81 und 1,76 sein, wurden aber versehentlich falsch geschrieben).

Verwenden einer Ausreißererkennungsregel basierend auf dem Vergleich der Statistik

|xich-Ave.(xich)|sd(xich)

sdsd

Hatten Sie stattdessen eine robuste Statistik verwendet:

|xich-med(xich)|wütend(xich)

zsd

(im Interesse der Vollständigkeit soll mich darauf hinweisen, dass einige Leute, auch in diesem Alter und Tag, am liebsten klammert die rohe --untrimmed-- Schätzung von 4,35 anstatt die genaueren Schätzung basierend auf Trimmen , aber das ist unverständlich ich )

Bei anderen Distributionen ist die Situation nicht so anders, lediglich, dass Sie Ihre Daten zuerst vorab transformieren müssen. Zum Beispiel in Ihrem Fall:

X

Y.=2X

Y.>med(Y.)+3

X

Y.N(med(Y.),1)

λ

λλ=3

p

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.