Was sind die effiziente und präzise Algorithmen, um Ausreißer aus einem Satz von Daten ausschließen?

StackOverflow https://stackoverflow.com/questions/2069793

  •  20-09-2019
  •  | 
  •  

Frage

Ich habe Satz von 200 Datenzeilen (impliziert einen kleinen Satz von Daten). Ich möchte einige statistische Analysen durchzuführen, aber vorher möchte ich Ausreißer auszuschließen.

Was ist die mögliche algos zum Zweck? Die Genauigkeit ist besorgniserregend.

Ich bin sehr neu zu Stats, so braucht Hilfe in sehr einfacher algos.

War es hilfreich?

Lösung

Starten Sie durch das Plotten Hebel der Ausreißer und gehen dann für einige gute ol 'interocular Trauma (aka am Scatterplot aussehen).

Viele statistische Pakete haben Ausreißer / Rest Diagnostik, aber ich ziehe Cook D. Sie können es von Hand berechnen, wenn Sie verwenden möchten, diese Formel von mtsu.edu (Original-Link ist tot, wird dieser aus dem Archiv stammen .org).

Andere Tipps

Insgesamt ist die Sache, die eine Frage stellt, wie dies schwer ist, dass es keine strenge Definition eines Ausreißer ist.

: Ich würde eine bestimmte Anzahl von Standardabweichungen als Cutoff aus den folgenden Gründen gegen die Verwendung von tatsächlich empfehlen
  1. Ein paar Ausreißer können eine großen Auswirkungen auf Ihrer Schätzung der Standardabweichung, als Standardabweichung nicht eine robuste Statistik ist.
  2. Die Interpretation der Standardabweichung hängt enorm von der Verteilung Ihrer Daten. Wenn Ihre Daten normalerweise dann 3 Standardabweichungen verteilt wird, ist eine Menge, aber wenn es zum Beispiel lognormalverteilt, dann 3 Standardabweichungen nicht viel ist.

Es gibt ein paar gute Möglichkeiten, um fortzufahren:

  1. Halten Sie alle Daten, und verwenden Sie nur robust Statistiken (Median statt Mittelwert, Wilcoxon-Test anstelle von T-Test, etc.). Wahrscheinlich gut, wenn Ihre Datenmenge groß ist.

  2. Trim oder Winsorize Ihre Daten. Trimmittel die obere und die untere x% zu entfernen. Winsorizing Mittel, um die oberen und die unteren x% auf die x-ten und 1-x-te Perzentil Einstellung ist.

  3. Wenn Sie eine kleine Datenmenge haben, können Sie einfach Ihre Daten zeichnen und untersuchen sie manuell für unplausible Werte.

  4. Wenn Ihre Daten Aussehen ziemlich nahe an normalverteilt sind (keine Schwer Schwänze und etwa symmetrisch), dann verwenden Sie die

    Sie haben den Ausdruck 'Six Sigma' gehört.

    Dies bezieht sich auf plus und minus 3 Sigma (dh Standardabweichungen) um den Mittelwert.

    Alles, was außerhalb des 'Six Sigma' Bereich könnte behandelt als Ausreißer.

    Nach einigem Nachdenken, ich glaube 'Six Sigma' zu breit ist.

    Dieser Artikel beschreibt, wie es beträgt „3,4 defekte Teile pro Million Möglichkeiten.“

    Es scheint wie eine ziemlich strenge Anforderung für Zertifizierungszwecke. Nur können Sie entscheiden, ob es Ihnen passt.

Abhängig von Ihrer Daten und ihre Bedeutung haben, können Sie in aussehen wollen RANSAC (random Probe Konsens). Dies ist weit verbreitet in Computer Vision verwendet, und gibt im Allgemeinen hervorragende Ergebnisse, wenn sie fit Daten mit vielen Ausreißern zu einem Modell versuchen.

Und es ist sehr einfach zu konzipieren und zu erklären. Auf der anderen Seite ist es nicht deterministisch, was zu Problemen in Abhängigkeit von der Anwendung führen kann.

Berechnen Sie die Standardabweichung auf dem Set, und schließen alles, was außerhalb des ersten, zweiten oder dritten Standardabweichung.

Hier ist, wie ich es in SQL Server gehen würde

Die Abfrage unten wird das durchschnittliche Gewicht von einer fiktiven Skala Tisch bekommen, die eine einzelne Waage für jede Person, die zwar nicht diejenigen erlaubt, die übermäßig dick sind oder dünn, um die realistischere Durchschnitt abzuwerfen:

  select w.Gender, Avg(w.Weight) as AvgWeight
    from ScaleData w
    join ( select d.Gender, Avg(d.Weight) as AvgWeight, 
                  2*STDDEVP(d.Weight) StdDeviation
             from ScaleData d
            group by d.Gender
         ) d
      on w.Gender = d.Gender
     and w.Weight between d.AvgWeight-d.StdDeviation 
                      and d.AvgWeight+d.StdDeviation
   group by w.Gender  

Es kann ein besserer Weg, um dies zu realisieren, aber es funktioniert und funktioniert gut. Wenn Sie über eine andere effizientere Lösung gekommen sind, würde ich gerne davon hören.

Hinweis: die oben entfernt die obere und unter 5% des Ausreißer aus dem Bild für Zwecke des Durchschnitts. : http: / Sie können die Anzahl der Ausreißer durch Einstellen der 2 * im 2 * STDDEVP gemäß entfernt einstellen /en.wikipedia.org/wiki/Standard_deviation

Wenn Sie nur wollen, es analysieren, sagen Sie die Korrelation mit anderen Variablen berechnen möchten, ist es ok Ausreißer auszuschließen. Aber wenn Sie modellieren möchten / vorhersagen, ist es nicht immer am besten, sie sofort auszuschließen.

Versuchen Sie es mit Methoden zu behandeln wie Capping oder wenn Sie die Ausreißer enthalten Informationen / Muster vermuten, ersetzen Sie es dann mit fehlenden und Modell / vorhersagen es. Ich habe einige Beispiele geschrieben, wie Sie mit R dieser über hier gehen .

scroll top