Algunas anomalías no aparecen en ninguna venta concreta
¿Buscar valores raros es lo mismo que buscar comportamientos raros?
1 El problema
La página 8 busca ventas cuyo importe se sale del rango. Ese criterio encuentra una clase de problema y deja fuera otras dos, que en una empresa real pueden costar más.
Un pedido de 6.000 € es normal en el histórico. En una provincia que nunca ha pasado de 3.000, no lo es. Y un mes en el que nadie facturó nada raro puede ser, una vez sumado, el peor del histórico.
2 Por qué engaña
Un solo detector responde a una sola pregunta. Al mirar solo los valores extremos, lo que se escapa es precisamente lo que no destaca por sí mismo: el fraude pequeño repetido, la caída lenta de un canal, el cliente que deja de comprar sin avisar.
3 El principio
Puntual: el valor es raro contra todo el conjunto.
Contextual: el valor es normal en general y raro en su contexto, que puede ser su provincia, su trimestre o su segmento.
Colectiva: ningún valor suelto es raro y el conjunto sí.
4 La solución
Cada una pide su propio cálculo. La puntual sale del límite global. La contextual exige agrupar antes de medir, aquí por provincia y trimestre. La colectiva compara los totales mensuales con su propia banda, sin mirar las ventas una a una.
5 Qué pasa con estos datos
Las 76 contextuales son el resultado nuevo: ninguna habría aparecido en la página 8, porque todas están por debajo del límite global. Son ventas que solo llaman la atención cuando se las compara con lo que suele pasar en su provincia ese trimestre. Ninguna está entre las anomalías de la regla, así que son un criterio que hay que validar antes de usarlo, no errores encontrados.
Y hay 6 meses cuyo total se sale de la banda de dos desviaciones, que va de 431.300 a 669.327 €. No bastan para hablar de anomalía colectiva. La banda se calculó con todas las ventas, anomalías incluidas, y al menos uno de esos meses se sale solo por una de ellas. Además, si los meses se repartieran como una campana, unos 4 de 88 quedarían fuera por puro azar. Habría que mirar qué pasó en cada uno.
6 Para qué sirve
Para saber qué no está vigilando un control. Un detector de valores extremos no ve ni el fraude repartido en pedidos pequeños ni la caída progresiva de un canal.
En contabilidad esto tiene nombre propio: el fraccionamiento de pagos justo por debajo del umbral de autorización es un ejemplo típico de anomalía colectiva y ningún control de importe máximo la encuentra.
El detalle técnico
Límite de Tukey en las dos primeras, con el contexto agrupado por provincia y trimestre y un mínimo de 20 ventas por grupo. La colectiva usa media más menos dos desviaciones sobre los totales mensuales, dejando fuera el mes en curso por incompleto.
Ver los tres criterios
# Puntual: rara contra TODO el histórico
puntual = importe > q3 + 1.5 * iqr_global
# Contextual: normal en el total, rara DENTRO de su provincia y su trimestre
for (reg, trimestre), g in datos.groupby(["reg", trimestre]):
contextual += ((g.importe > limite_local(g)) & (g.importe <= limite_global)).sum()
# Colectiva: ninguna venta llama la atencion, el MES entero se sale
mensual = datos.groupby(mes)["importe"].sum()
colectiva = (abs(mensual - mensual.mean()) > 2 * mensual.std()).sum()
Fuente: atipicos_kpi.json, campo e9_clases_de_anomalia.