Rilevamento anomalo nelle serie temporali: come ridurre i falsi positivi?


11

Sto cercando di automatizzare il rilevamento anomalo nelle serie temporali e ho usato una modifica della soluzione proposta da Rob Hyndman qui .

Ad esempio, misuro le visite giornaliere a un sito Web di vari paesi. Per alcuni paesi in cui le visite giornaliere sono poche centinaia o migliaia, il mio metodo sembra funzionare ragionevolmente.

Tuttavia, nei casi in cui un paese porta a solo 1 o 2 visite al giorno, i limiti dell'algoritmo sono molto stretti (ad es. 1 ± 0,001) e quindi le 2 visite sono considerate un valore anomalo. Come potrei rilevare automaticamente tali casi e come potrei trattarli per identificare i valori anomali? Non vorrei impostare una soglia manuale di, diciamo, 100 visite al giorno.

Grazie!


2
Un modo semplice e naturale che potrebbe risolvere il tuo problema - che è dovuto (almeno in parte) a una varianza altamente variabile - è quello di applicare una trasformazione stabilizzante la varianza, come una trasformazione Anscombe o Freeman-Tukey , ai dati prima di cercare valori anomali.
whuber

Risposte:


3

Non aspettarti molto per conteggi piccoli e discreti. Passare da 1 a 2 visite è un aumento del 100% e passare da 0 a 1 visite è un aumento infinito. A livelli bassi potresti avere a che fare con modelli a zero gonfiaggio e può anche essere molto rumoroso laggiù.

Nella mia esperienza, contare i dati con una combinazione di conteggi grandi e piccoli come questo comporta due problemi con i conteggi piccoli: 1) sono troppo grossolani per fare molto, 2) sono generati da processi diversi. (Pensa all'ufficio postale piccolo e rurale rispetto all'ufficio postale della grande città). Quindi devi almeno dividere la modellazione in due: fai quello che stai facendo con successo per i conteggi più grandi e fai qualcosa di diverso - più grossolano e più approssimativo - con piccoli conteggi. Ma non aspettarti molto dai piccoli conteggi.

La buona notizia è che i grandi numeri, per definizione, includono più transazioni, quindi il tuo modello migliore copre più dati, anche se potrebbe non coprire la maggior parte dei tuoi siti.

(Dico che la "modellazione" è generale, ma ovviamente il rilevamento anomalo sta assumendo un modello particolare e sta trovando punti che sono altamente improbabili con le ipotesi di quel modello.)


1

Ogni valore delle serie storiche è un campione di una distribuzione di probabilità. Devi prima trovare qual è la distribuzione di probabilità e poi definire cosa significa la parola raro all'interno di quella distribuzione.

Quindi calcola il cdf empirico e calcola l'intervallo di confidenza al 95%. Ogni volta che si è verificato qualcosa al di fuori di quella regione, allora per definizione sai che deve essere un evento raro.


0

Una cosa è rilevare un valore anomalo a un determinato livello di confidenza e un altro ancora stabilire una seconda specifica che limiti ulteriormente l'accettazione del valore anomalo. Una volta mi è stata posta la seguente domanda: "AUTOBOX è in grado di rilevare uno spostamento medio di unità xx a un livello di sicurezza predefinito". In sostanza ciò che era richiesto era un doppio test. AUTOBOX è un software che ho aiutato a sviluppare e che potresti trovare conveniente poiché nessun software gratuito ha implementato questo doppio test.

Grazie Nick: stavo usando uno spostamento di livello come esempio particolare di "outlier" o in generale l'impatto deterministico identificato empiricamente. Altre forme di "valori anomali" sono gli impulsi, gli impulsi stagionali e le tendenze dell'ora locale E combinazioni particolari come un passaggio temporaneo a un nuovo livello. Il punto principale era che potrebbero esserci due ipotesi che riflettono il significato statistico e il significato del mondo reale. Il cliente che aveva originariamente portato questo problema alla mia attenzione era interessato a entrambi.


Un outlier non ha bisogno di implicare uno spostamento medio ... In effetti, il cambiamento graduale o dilagante tra regimi con mezzi diversi non deve necessariamente comportare valori anomali. Lo sai molto bene, ma ciò che penso implica è che sarebbe di grande aiuto per gli altri dare forma alla tua risposta.
Nick Cox,

Grazie ad entrambi. Sono interessato al significato del mondo reale. Dopo aver identificato un valore anomalo, apprezzo il suo significato con, diciamo, la percentuale di visite rispetto alle visite totali per ottenere il significato finale. Sebbene tale proporzione sia davvero ridotta nei casi di 2 visite, poiché i valori previsti sono 1 ± 0,001, la "distanza" del punto effettivo dai limiti previsti è molto elevata (ad es. 2 / 0,002 dove 0,002 è "iqr") . Quindi, il problema diventa molto importante alla fine. Qualche idea?
Stergios,

Contrassegnerei che l'uso esteso di "outlier" qui è molto più ampio anche del generoso senso di qualcosa di estremo che è comune in molte letterature. I lettori esperti sapranno che @IrishStat si attiene al suo forte, analisi delle serie storiche.
Nick Cox,

0

Stai riscontrando questo problema perché i tuoi dati sono lungi dall'essere una distribuzione normale. Se la distribuzione è altamente asimmetrica, con dossi, dossi o code troppo lunghe / corte si incontrano problemi. Una buona idea è applicare una trasformazione come Box Cox o Yeo-Johnson prima di usare il metodo. Nel tuo esempio se usi F (x) = log (1 + x) eviti il ​​diverso problema di magnitudo e puoi riconvertirlo usando: exp (z) -1

Esistono diverse procedure che è possibile utilizzare per trovare automaticamente una buona lambda per la trasformazione di Box-Cox. Personalmente uso la mediana di tutti i metodi della funzione boxcoxnc dal pacchetto AID in R. Se i tuoi dati non sono strettamente positivi, dovrai aggiungere 1 o un altro numero positivo prima di usarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.