¿Buena forma de eliminar los valores atípicos?

12

Estoy trabajando en estadísticas para compilaciones de software. Tengo datos para cada compilación en pasar / fallar y el tiempo transcurrido y generamos ~ 200 de estos / semana.

La tasa de éxito es fácil de agregar, puedo decir que el 45% pasó cualquier semana. Pero también me gustaría agregar el tiempo transcurrido, y quiero asegurarme de no tergiversar demasiado los datos. Pensé que sería mejor preguntarle a los profesionales :-)

Digamos que tengo 10 duraciones. Representan casos de aprobación y rechazo. Algunas compilaciones fallan inmediatamente, lo que hace que la duración sea inusualmente corta. Algunos se cuelgan durante las pruebas y eventualmente caducan, causando duraciones muy largas. Creamos diferentes productos, por lo que incluso las construcciones exitosas varían entre 90 segundos y 4 horas.

Podría obtener un conjunto como este:

[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]

Mi primer enfoque fue obtener el tiempo medio clasificando el conjunto y seleccionando el valor medio, en este caso 7812 (no me molesté con la media aritmética para conjuntos pares).

Desafortunadamente, esto parece generar mucha variación, ya que solo selecciono un valor dado. Entonces, si tuviera la tendencia de este valor, rebotaría entre 5000-10000 segundos dependiendo de qué construcción estuviera en la mediana.

Entonces, para suavizar esto, probé otro enfoque: eliminar los valores atípicos y luego calcular una media sobre los valores restantes. Decidí dividirlo en terciles y trabajar solo en el medio:

[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]

La razón por la que esto me parece mejor es doble:

  • No queremos ninguna acción en las compilaciones más rápidas, ya están bien
  • Las construcciones más largas son probablemente inducidas por el tiempo de espera, y siempre estarán allí. Tenemos otros mecanismos para detectar esos

Entonces, me parece que estos son los datos que estoy buscando, pero me preocupa que haya logrado la suavidad al eliminar, bueno, la verdad.

¿Es esto controvertido? ¿Es el método cuerdo?

¡Gracias!

Kim Gräsman
fuente
Todavía no ha dicho por qué quiere tener su medida del tiempo transcurrido. ¿Necesita estimar el tiempo total de la máquina que está pagando? ¿Necesita estimar cuántos viajes a la máquina de café podría hacer? ¿Cuál es la acción que probablemente tomarías si supieras los tiempos?
StasK
Además, si tiene productos heterogéneos que construye, entonces rebotar es natural, y no debe intentar deshacerse de él. Si tiene una medida de complejidad de un proyecto determinado (# de archivos, # de líneas de código, # de rutinas, etc.), entonces puede estar interesado en el tiempo transcurrido normalizado por la complejidad, que puede ser más estable. Si desea que sea realmente estable y plano con el tiempo, entonces no podrá aprender cuándo debe tomar sus medidas.
StasK
@StasK: gracias por sus comentarios, esta es una aportación valiosa. La acción ya se conoce: muchas de estas compilaciones tardan muuuucho tiempo, y deberíamos trabajar para hacerlas más rápidas. Quiero usar la medida agregada para ver si las cosas están mejorando o empeorando.
Kim Gräsman
Y sí, lo ideal sería que lo hiciera por producto, pero los datos de origen no mantienen esa información, por lo que hago trampa en función de lo que sé sobre la distribución. Esto podría cambiar con el tiempo, por supuesto, y podría tener que repensarlo.
Kim Gräsman
Bueno, me parece que tiene tres grupos en sus datos: (i) construye esa compilación; (ii) las compilaciones que fallan (y usted dice que tienden a fallar bastante rápido), y (iii) las compilaciones que cuelgan (o casi), y ese es probablemente el principal, si no el único, sobre el que desea actuar. La medida agregada del tiempo puede no ser de gran utilidad; pero algo como la décima construcción más larga, o el décimo percentil más alto de la distribución de tiempos de construcción, podría ser una mejor medida de lo que está al extremo de la distribución que le interesa. Eso es más o menos lo que la EPA usa en su monitoreo de la contaminación.
StasK

Respuestas:

8

Su enfoque tiene sentido para mí, teniendo en cuenta su objetivo. Es simple, es sencillo, hace el trabajo y es probable que no quieras escribir un artículo científico al respecto.

Una cosa que siempre se debe hacer al tratar con los valores atípicos es comprenderlos , y usted ya hace un gran trabajo al respecto. Entonces, las posibles formas de mejorar su enfoque serían: ¿puede usar información sobre qué compilaciones están colgando? Usted menciona que tiene "otros mecanismos para detectarlos". ¿Puede detectarlos y luego eliminar solo aquellos de la muestra?

De lo contrario, si tiene más datos, podría pensar en eliminar no los terciles, sino los quintiles ... pero en algún momento, esto probablemente no hará mucha diferencia.

Stephan Kolassa
fuente
Cuando digo "otros" mecanismos, quiero decir completamente diferente fuera de este conjunto de datos, por lo que no puedo tomar decisiones basadas en él aquí. Estamos agregando datos a diario, y solo obtenemos ~ 50 compilaciones por día, por lo que creo que los quintiles pueden producir muy pocos datos, pero gracias por la sugerencia, ¡puedo experimentar con ellos!
Kim Gräsman
13

Lo que estás haciendo se conoce como un medio recortado .

Como lo ha hecho, es común recortar la misma proporción de cada lado (la proporción de recorte).

Puede recortar cualquier cosa entre 0% (una media ordinaria) hasta (casi) 50% (lo que da la mediana). Su ejemplo tiene un 30% recortado de cada extremo.

Vea esta respuesta y el artículo relevante de Wikipedia .

[Editar: Vea la excelente discusión de Nick Cox sobre este tema.]

Es un estimador de ubicación bastante razonable y robusto. Generalmente se considera más adecuado para distribuciones casi simétricas que las muy sesgadas, pero si se adapta a su propósito * no hay razón para no usarlo. Cuánto es mejor recortar depende de los tipos de distribución que tenga y de las propiedades que busque.

* No está completamente claro lo que quieres estimar aquí.

Hay una gran cantidad de otros enfoques sólidos para resumir el 'centro' de distribuciones, algunos de los cuales también pueden serle útiles. (por ejemplo, los estimadores M podrían tener algún uso para usted, tal vez)

[Si necesita una medida de variabilidad correspondiente para ir con su media recortada, una desviación estándar Winsorized podría serle útil (esencialmente, al calcular el SD, reemplace los valores que cortaría al recortar con los valores más extremos que usted no se cortó).]

Glen_b -Reinstate a Monica
fuente
Realmente no he verificado la forma típica de mi distribución, creo que varía semana a semana dependiendo de dónde la gente haga cambios. De hecho, podría estar muy sesgado.
Kim Gräsman
Gracias por poner un nombre en mi trabajo de pirateo, por cierto. Inspira cierta confianza :-)
Kim Gräsman
2

Otro método más es calcular la mediana de todos los promedios por pares o hacer bootstrapping.

Actualizar:

La mediana de todas las avarages por pares se llama estimador de Hodges-Lehmann . Este estimador suele tener una alta eficiencia. Esta entrada de la enciclopedia de Scott L. Hershberger dice:

Mientras que tanto la mediana como el estimador de Hodges-Lehmann son preferibles a la media de la muestra para distribuciones no simétricas, el estimador de Hodges-Lehmann tiene una eficiencia relativa asintótica mayor con respecto a la media que la mediana

El arranque puede ser menos relevante y más intensivo en cómputo, pero podría tomar una pequeña muestra aleatoria de los datos con reemplazo y calcular la media de esa submuestra, hacerlo muchas veces y calcular la mediana de todas las medias.

En ambos casos, ya no tiene que elegir un valor entre los valores de sus datos (cuando calcula la mediana ordinaria), sino que elige entre muchos promedios de subconjuntos de datos.

Finn Årup Nielsen
fuente
2
¿Puedes describir las ventajas y desventajas de estos métodos? Una respuesta de una línea es insuficiente.
StasK
1
He intentado hacer una actualización con más explicaciones
Finn Årup Nielsen
Tanto los promedios por pares como el bootstrapping parecen implicar una serie de nuevos cálculos sobre todo el conjunto de datos. La muestra generalmente es bastante pequeña (<500 valores), por lo que probablemente no sea un problema, pero parece más complicado. Es bueno saber que hay más enfoques para experimentar si la media recortada resulta ser demasiado contundente. ¡Gracias!
Kim Gräsman
1

Parece razonable lo que está haciendo: solo para información, utilizo el siguiente proceso con bastante frecuencia para un propósito similar: pero solo estoy realmente interesado en los valores atípicos superiores.

Calcule el resumen de cinco números: Mín., Q1, Mediana, Q3, Máx. Calcule el rango intercuartil: Q3-Q1. Establezca sus 'cercas' atípicas en Q1-IQR * X y Q3 + IQR * X: donde un valor razonable de 'X' es 1.5.

Usando Excel y sus cifras, lo anterior (usando 1.5 para 'X' **) produce un valor atípico superior: 21011

MIN 50
Q1  3014
MEDIAN  8095
Q3  9073.25
MAX 21011
IQR 6059.25
UPPER FENCE 18162.125
LOWER FENCE -6074.875

Entonces, el límite inferior aquí no es útil o realista para su ejemplo, de hecho: lo que respalda el punto hecho por la otra publicación con respecto a la importancia de comprender el significado de sus datos específicos.

(** Encontré una cita para la regla '1.5': no ​​estoy diciendo que sea autorizada, pero me parece un punto de partida razonable: http://statistics.about.com/od/Descriptive-Statistics/a/ Qué-es-el-intercuartil-Gama-Rule.htm )

También podría decidir (tal vez) simplemente usar los puntos de datos que se encuentran dentro del IQR: esto parece arrojar resultados razonables (ya que la pertenencia a su método es muy similar).

utilizando los mismos datos, esto colocaría los siguientes puntos de datos en el 'área de interés':

7812
3014
13400
21011
8993
8378
9100

En un diagrama de caja: todos estos puntos caerían dentro de la parte de caja (en lugar de la parte de bigotes) del diagrama.

Se puede ver que esta lista incluye algunos elementos que no están en su lista original (las compilaciones de ejecución más larga); No puedo decir si una lista es más precisa de alguna manera. (de nuevo, se reduce a comprender su conjunto de datos).

monojohnny
fuente
Gracias, esto parece muy cercano en principio a lo que ya estoy haciendo. ¿De qué manera este método podría ser mejor que simplemente particionar el conjunto de datos?
Kim Gräsman
1
Realmente no puedo decir si alguno de los métodos es mejor o no: sugerí esto en base a lo que he leído en los libros / sitios de estadísticas. Una cosa (creo) que agrega el método es que le permite ajustar las 'cercas' a lo que considere adecuado (ajustando el factor 1.5); donde solo tomar el tercio medio podría ser más susceptible de incluir un valor atípico potencialmente alto (que posiblemente podría clasificarse mejor fuera de la cerca) ... pero no puedo decir eso con seguridad. Otra cosa sobre el uso de los cuartiles es que el resumen de 5 números se entiende bastante y se usa comúnmente.
monojohnny
Gracias por el detalle agregado! Hago esto en Python, por lo que ya tengo una función donde particiono el conjunto de datos en N partes y luego extraigo la parte central. Es un cambio de un personaje para hacer 5 o 7 particiones en su lugar. Pero su punto está bien tomado, y es bueno ver otra forma común de abordar este problema. Gracias de nuevo.
Kim Gräsman
A mí me suena bien: agregaré una cosa más para enfatizar sobre el uso de cuartiles y cercas (en lugar de tener particiones variables): es que se mapean directamente en diagramas de caja: en.wikipedia.org/wiki/Box_plot que permiten (entre otras cosas) Una forma estándar de comparar diferentes distribuciones gráficamente.
monojohnny