Estoy tratando de automatizar la detección de valores atípicos en series de tiempo y utilicé una modificación de la solución propuesta por Rob Hyndman aquí .
Digamos que mido las visitas diarias a un sitio web de varios países. Para algunos países donde las visitas diarias son de cientos o miles, mi método parece estar funcionando razonablemente.
Sin embargo, en los casos en que un país solo realiza 1 o 2 visitas por día, los límites del algoritmo son muy estrechos (por ejemplo, 1 ± 0,001) y, por lo tanto, las 2 visitas se consideran atípicas. ¿Cómo podría detectar automáticamente tales casos y cómo podría tratarlos para identificar valores atípicos? No me gustaría establecer un umbral manual de, digamos, 100 visitas por día.
¡Gracias!
Respuestas:
No esperes mucho para cuentas pequeñas y discretas. Pasar de 1 a 2 visitas es un aumento del 100%, y pasar de 0 a 1 visitas es un aumento infinito. A niveles bajos, puede estar lidiando con modelos inflados a cero , y puede ser muy ruidoso allí también.
En mi experiencia, los datos de conteo con una combinación de conteos grandes y pequeños como este resultan en dos problemas con sus conteos pequeños: 1) son demasiado gruesos para hacer mucho, 2) son generados por diferentes procesos. (Piense en la oficina de correos rural pequeña versus la oficina de correos de la gran ciudad). Por lo tanto, debe dividir al menos su modelado en dos: haga lo que está haciendo con éxito para los recuentos más grandes y haga algo diferente, más grueso y más aproximado, con recuentos pequeños. Pero no esperes mucho de los recuentos pequeños.
La buena noticia es que los grandes recuentos, por definición, incluyen más de sus transacciones, por lo que su mejor modelo cubre más datos, aunque puede que no cubra la mayoría de sus sitios.
(Digo que "modelar" es general, pero, por supuesto, la detección de valores atípicos supone un modelo en particular y encuentra puntos que son altamente improbables con los supuestos de ese modelo).
fuente
Cada valor de su serie temporal es una muestra de una distribución de probabilidad. Primero debe encontrar cuál es la distribución de probabilidad y luego definir qué significa la palabra raro dentro de esa distribución.
Así que calcule el cdf empírico y calcule el intervalo de confianza del 95%. Cada vez que ocurre algo fuera de esa región, entonces, por definición, sabes que debe ser un evento raro.
fuente
Una cosa es detectar un valor atípico en un nivel particular de confianza y otra más es colocar una segunda especificación que restringiría aún más la aceptación del valor atípico. Una vez me hicieron la siguiente pregunta: "¿Puede AUTOBOX detectar un cambio medio de unidades xx a un nivel de confianza previamente especificado"? Esencialmente, lo que se requería era una prueba doble. AUTOBOX es un software que he ayudado a desarrollar y que puede ser rentable ya que ningún software gratuito ha implementado esta doble prueba.
Gracias Nick: estaba usando un cambio de nivel como un ejemplo particular de un "valor atípico" o en general el impacto determinista identificado empíricamente. Otras formas de "valores atípicos" son Pulsos, Pulsos estacionales y Tendencias de tiempo local Y combinaciones particulares como un cambio transitorio a un nuevo nivel. El punto principal era que puede haber dos hipótesis en juego que reflejen la significación estadística y la significación del mundo real. El cliente que originalmente me había llamado la atención sobre este problema estaba interesado en ambos.
fuente
Tiene ese problema porque sus datos están lejos de ser una distribución normal. Si la distribución es muy asimétrica, con protuberancias, jorobas o colas demasiado largas / cortas, encontrará problemas. Una buena idea es aplicar una transformación como Box Cox o Yeo-Johnson antes de usar su método. En su ejemplo, si usa F (x) = log (1 + x), evita el problema de diferente magnitud y puede volver a convertir usando: exp (z) -1
Hay varios procedimientos que puede usar para encontrar automáticamente una buena lambda para la transformación de Box-Cox. Personalmente, utilizo la mediana de todos los métodos de la función boxcoxnc del paquete AID en R. Si sus datos no son estrictamente positivos, deberá agregar 1 u otro número positivo antes de usarlo.
fuente