Detección de valores atípicos en los datos de conteo

21

Tengo lo que ingenuamente pensé que era un problema bastante sencillo que implica la detección de valores atípicos para muchos conjuntos diferentes de datos de conteo. Específicamente, quiero determinar si uno o más valores en una serie de datos de conteo son más altos o más bajos de lo esperado en relación con el resto de los conteos en la distribución.

El factor de confusión es que necesito hacer esto para 3.500 distribuciones y es probable que algunas de ellas se ajusten a un poisson sobredispersado inflado a cero, mientras que otras pueden ajustarse mejor a un binomio negativo o ZINB, mientras que otras pueden distribuirse normalmente. Por esta razón, los puntajes Z simples o el trazado de la distribución no son apropiados para gran parte del conjunto de datos. Aquí hay un ejemplo de los datos de conteo para los cuales quiero detectar valores atípicos.

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.

Inicialmente pensé que necesitaría escribir un bucle en Python o R que aplicara un conjunto de modelos a cada distribución y seleccionar el mejor modelo de ajuste de acuerdo con AIC u otro (¿tal vez el fitdistrplus en R?). Entonces podría preguntar cuáles fueron los extremos para la distribución dada (los conteos que caen en las colas, por ejemplo, ¿un conteo de "4" sería un valor atípico en la distribución de conteos1 anterior?). Sin embargo, no estoy seguro de que esta sea una estrategia válida, y se me ocurrió que puede haber una metodología simple para determinar valores atípicos en los datos de conteo de los que no estaba al tanto. He buscado mucho y no he encontrado nada que parezca apropiado para mi problema dada la cantidad de distribuciones que quiero ver.

Mi objetivo final es detectar aumentos o disminuciones significativas en un recuento para cada distribución de recuentos, utilizando la metodología más estadísticamente apropiada.

Joe Gomphus
fuente

Respuestas:

23

No puede usar la distancia de una observación desde un ajuste clásico de sus datos para detectar de manera confiable valores atípicos porque el procedimiento de ajuste que usa en sí mismo puede ser arrastrado hacia los valores atípicos (esto se denomina efecto de enmascaramiento). Una manera simple de detectar de manera confiable los valores atípicos es usar la idea general que sugirió (distancia desde el ajuste) pero reemplazando los estimadores clásicos por otros robustos, mucho menos susceptibles de ser influenciados por los valores atípicos. A continuación, presento una ilustración general de la idea y luego analizo la solución para su problema específico.

Una ilustración: considere las siguientes 20 observaciones extraídas de un (redondeado al segundo dígito):norte(0 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)

(los dos últimos realmente deberían ser .81 y 1.76 pero han sido accidentalmente mal diseñados).

Usar una regla de detección de valores atípicos basada en la comparación de la estadística

El |Xyo-Cra(Xyo)El |Dakota del Sur(Xyo)

los cuantiles de una distribución normal nunca lo llevarían a sospechar que 8.1 es un valor atípico, lo que le lleva a estimar que el de la serie 'recortado' es 2 (para comparar la estimación bruta, por ejemplo, no recortada de es 4.35).Dakota del SurDakota del Sur

Si hubiera utilizado una estadística robusta en su lugar:

El |Xyo-medicina(Xyo)El |enojado(Xyo)

y al comparar las puntuaciones robustas resultantes con los cuantiles de una normal, habría marcado correctamente las dos últimas observaciones como valores atípicos (y habría estimado correctamente el de la serie recortada en 0,96).zDakota del Sur

(en aras de la exhaustividad, debo señalar que algunas personas, incluso en esta edad y día, prefieren aferrarse a la estimación cruda, sin recortar, de 4.35 en lugar de utilizar la estimación más precisa basada en el recorte, pero esto es ininteligible para mí )

Para otras distribuciones, la situación no es tan diferente, simplemente que primero tendrá que transformar sus datos. Por ejemplo, en tu caso:

Suponga que son sus datos de conteo originales. Un truco es usar la transformación:X

Y=2X

y para excluir una observación como atípica si (esta regla no es simétrica y yo, por mi parte, sería muy precavido al excluir observaciones de la 'cola' izquierda de una variable de conteo de acuerdo con un umbral basado en datos Las observaciones negativas, obviamente, deberían ser bastante seguras de eliminar)Y>medicina(Y)+3

X

Ynorte(medicina(Y),1)

λ

λλ=3

pags

usuario603
fuente