Ich arbeite an Statistiken für Software-Builds. Ich habe Daten für jeden Build auf Pass / Fail und abgelaufene Zeit und wir generieren ~ 200 davon / Woche.
Die Erfolgsquote lässt sich leicht zusammenfassen. Ich kann sagen, dass 45% einer Woche vergangen sind. Aber ich möchte auch die verstrichene Zeit zusammenfassen und sicherstellen, dass die Daten nicht zu schlecht dargestellt werden. Dachte mir, ich frag besser die Profis :-)
Angenommen, ich habe 10 Dauern. Sie repräsentieren sowohl Bestehen als auch Nichtbestehen. Einige Builds schlagen sofort fehl, was die Dauer ungewöhnlich kurz macht. Einige hängen während des Testens und haben möglicherweise eine Zeitüberschreitung, was zu sehr langen Wartezeiten führt. Wir bauen verschiedene Produkte, so dass selbst erfolgreiche Builds zwischen 90 Sekunden und 4 Stunden variieren.
Ich könnte ein Set wie dieses bekommen:
[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]
Mein erster Ansatz bestand darin, den Median der Zeit zu ermitteln, indem ich die Menge sortierte und den Mittelwert auswählte, in diesem Fall 7812 (ich habe mich nicht mit dem arithmetischen Mittelwert für geradzahlige Mengen befasst.)
Leider scheint dies eine Menge Variationen zu erzeugen, da ich nur einen bestimmten Wert auswähle. Wenn ich diesen Wert trendete, bewegte er sich zwischen 5000 und 10000 Sekunden, abhängig davon, welcher Build sich im Median befand.
Um dies auszugleichen, habe ich einen anderen Ansatz gewählt: Entfernen Sie Ausreißer und berechnen Sie dann einen Mittelwert über die verbleibenden Werte. Ich habe beschlossen, es in tertiles aufzuteilen und nur an dem mittleren zu arbeiten:
[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]
Der Grund, warum mir das besser erscheint, ist zweierlei:
- Wir wollen keine Aktion für die schnelleren Builds, sie sind bereits in Ordnung
- Die längsten Builds sind wahrscheinlich vom Timeout abhängig und werden immer vorhanden sein. Wir haben andere Mechanismen, um diese aufzuspüren
Es scheint mir also, dass dies die Daten sind, nach denen ich suche, aber ich mache mir Sorgen, dass ich die Glätte erreicht habe, indem ich die Wahrheit entfernt habe.
Ist das umstritten? Ist die Methode vernünftig?
Vielen Dank!
Antworten:
Ihre Herangehensweise ist für mich unter Berücksichtigung Ihres Ziels sinnvoll. Es ist einfach, unkompliziert, erledigt die Arbeit und Sie möchten wahrscheinlich keine wissenschaftliche Arbeit darüber schreiben.
Eine Sache, die man im Umgang mit Ausreißern immer tun sollte, ist, sie zu verstehen , und Sie leisten bereits hervorragende Arbeit. Mögliche Möglichkeiten zur Verbesserung Ihres Ansatzes wären: Können Sie Informationen dazu verwenden, welche Builds hängen? Sie erwähnen, dass Sie "andere Mechanismen haben, um diese zu erkennen" - können Sie sie erkennen und dann nur diejenigen aus der Probe entfernen?
Andernfalls, wenn Sie mehr Daten haben, könnten Sie darüber nachdenken, nicht Tertiles, sondern Quintiles zu entfernen ... aber irgendwann wird dies wahrscheinlich keinen großen Unterschied machen.
quelle
Was Sie tun, wird als beschnittenes Mittel bezeichnet .
Wie Sie es getan haben, ist es üblich, von jeder Seite den gleichen Anteil (den Zuschnittanteil) zuzuschneiden.
Sie können alles zwischen 0% (ein gewöhnlicher Mittelwert) bis (fast) 50% (was den Median ergibt) trimmen. Ihr Beispiel hat 30% von jedem Ende abgeschnitten.
Siehe diese Antwort und den entsprechenden Wikipedia-Artikel .
[Bearbeiten: Siehe Nick Cox ausgezeichnete Diskussion zu diesem Thema.]
Es ist ein ziemlich vernünftiger, etwas robuster Standortschätzer. Es wird allgemein als geeigneter für nahezu symmetrische Verteilungen angesehen als für stark verzerrte, aber wenn es Ihrem Zweck entspricht *, gibt es keinen Grund, es nicht zu verwenden. Wie viel am besten zu trimmen ist, hängt von der Verteilung und den Eigenschaften ab, die Sie suchen.
* Es ist nicht ganz klar, was Sie hier schätzen möchten.
Es gibt eine Vielzahl anderer robuster Ansätze zur Zusammenfassung des Verteilungszentrums, von denen Sie einige möglicherweise auch nützlich finden. (zB M-Schätzer könnten für Sie von Nutzen sein)
[Wenn Sie ein entsprechendes Maß für die Variabilität benötigen, das zu Ihrem getrimmten Mittelwert passt , kann eine Winsorized- Standardabweichung hilfreich sein (ersetzen Sie bei der Berechnung des SD im Wesentlichen die Werte, die Sie beim Trimmen abschneiden würden, durch die extremsten Werte, die Sie haben nicht abgeschnitten).]
quelle
Eine weitere Methode besteht darin, den Median aller paarweisen Mittelwerte zu berechnen oder ein Bootstrapping durchzuführen.
Aktualisieren:
Der Median aller paarweisen Mittelwerte wird als Hodges-Lehmann-Schätzer bezeichnet . Dieser Schätzer hat normalerweise einen hohen Wirkungsgrad. In diesem Lexikoneintrag von Scott L. Hershberger heißt es:
Bootstrapping mag weniger relevant und rechenintensiver sein, aber Sie könnten eine kleine zufällige Stichprobe der Daten mit Ersetzung nehmen und den Mittelwert dieser Teilstichprobe berechnen, dies viele Male tun und den Median aller Mittelwerte berechnen.
In beiden Fällen müssen Sie nicht mehr einen Wert aus den Werten Ihrer Daten auswählen (wenn Sie den gewöhnlichen Median berechnen), sondern Sie müssen aus vielen Mittelwerten aus Teilmengen der Daten auswählen.
quelle
Scheint vernünftig, was Sie tun: Nur zur Information benutze ich das folgende Verfahren ziemlich oft für einen ähnlichen Zweck: Aber ich interessiere mich immer nur für die oberen Ausreißer.
Berechnen Sie eine Zusammenfassung mit fünf Zahlen: Min, Q1, Median, Q3, Max. Interquartilbereich berechnen: Q3-Q1. Stellen Sie Ihre Ausreißer-Zäune auf Q1-IQR * X und Q3 + IQR * X ein, wobei ein angemessener Wert von "X" 1,5 ist.
Unter Verwendung von Excel und Ihren Zahlen ergibt das oben Gesagte (unter Verwendung von 1,5 für 'X' **) einen oberen Ausreißer: 21011
Der untere Zaun hier ist für Ihr Beispiel also nicht sinnvoll oder realistisch. Dies belegt, wie wichtig es ist, die Bedeutung Ihrer spezifischen Daten zu verstehen.
(** Ich habe ein Zitat für die '1.5'-Regel gefunden: Ich sage nicht, dass es maßgeblich ist, aber es scheint mir ein vernünftiger Ausgangspunkt zu sein: http://statistics.about.com/od/Descriptive-Statistics/a/ Was-ist-die-Interquartil-Range-Regel.htm )
Sie können sich auch (vielleicht) dafür entscheiden, nur die Datenpunkte zu verwenden, die in den IQR selbst fallen: Dies scheint sinnvolle Ergebnisse zu liefern (da die Zugehörigkeit zu Ihrer Methode sehr ähnlich ist).
Unter Verwendung der gleichen Daten würden die folgenden Datenpunkte in den Bereich von Interesse platziert:
Auf einem Boxplot: Diese Punkte würden alle in den Box-Teil (und nicht in den Whisker-Teil) des Diagramms fallen.
Zu sehen ist, dass diese Liste einige Elemente enthält, die nicht in Ihrer ursprünglichen Liste enthalten sind (die länger laufenden Builds). Ich kann nicht sagen, ob eine Liste in irgendeiner Weise genauer ist. (Wieder kommt es darauf an, Ihren Datensatz zu verstehen).
quelle