Rilevamento anomalo su distribuzioni distorte


24

Secondo una definizione classica di valore anomalo come punto dati esterno all'IQR 1.5 * dal quartile superiore o inferiore, si presume una distribuzione non distorta. Per le distribuzioni distorte (esponenziale, Poisson, geometrico, ecc.) È il modo migliore per rilevare un valore anomalo analizzando una trasformazione della funzione originale?

Ad esempio, le distribuzioni vagamente governate da una distribuzione esponenziale, potrebbero essere trasformate con una funzione log - a che punto è accettabile cercare valori anomali basati sulla stessa definizione IQR?


4
Ci sono molte domande su questo sito sulla valutazione dei valori anomali. Una cosa che dovresti aggiungere qui per ottenere una risposta ragionevole è ciò che stai davvero cercando di fare o scoprire. Ma per cominciare, la 1.5*IQRdefinizione di outlier non è universalmente accettata. Prova a scaricare la domanda e ad espandere il problema che stai cercando di risolvere.
Giovanni

L'affermazione che un valore superiore a 1,5 IQR è un valore anomalo è semplicemente una sciocchezza. I dati superiori a 1,5 IQR sarebbero del tutto coerenti con un numero infinito di distribuzioni e, man mano che le dimensioni del campione aumentano, si potrebbe avere una sicurezza quasi perfetta che tali dati NON siano anomali.
lupi

Risposte:


18

Secondo una definizione classica di valore anomalo come punto dati esterno all'IQR 1.5 * dal quartile superiore o inferiore,

Questa è la regola per identificare i punti al di fuori delle estremità dei baffi in un diagramma a scatole. Lo stesso Tukey obietterebbe senza dubbio a chiamarli valori anomali su questa base (non considerava necessariamente i punti al di fuori di tali limiti come valori anomali). Si tratterebbe piuttosto di punti che - se ci si aspettava che i tuoi dati provenissero da una distribuzione in qualche modo simile a una distribuzione normale - uno potrebbe essere soggetto a ulteriori indagini (come il controllo che non hai trasposto due cifre, per esempio) - al massimo questi potrebbero essere potenziali valori anomali. Come Nick Cox sottolinea nei commenti sotto questa risposta , una coda di molti di questi punti sarebbe considerata più un indicatore che una re-espressione potrebbe essere adatta che un'indicazione della necessità di considerare i punti come valori anomali.

c'è un'ipotesi di una distribuzione non distorta.

Suppongo che per "non distorto" intendi simmetrico. Quindi il presupposto è più di questo. Una distribuzione dalla coda pesante ma simmetrica potrebbe avere molti punti al di fuori dei limiti di quella regola.

Per le distribuzioni distorte (esponenziale, Poisson, geometrico, ecc.) È il modo migliore per rilevare un valore anomalo analizzando una trasformazione della funzione originale?

Dipende da ciò che costituisce un valore anomalo per i tuoi scopi. Non esiste una definizione singola adatta per ogni scopo, anzi, in genere probabilmente è meglio fare altre cose che (diciamo) raccogliere valori anomali e ometterli.

Per l'esponenziale o geometrico, potresti fare un calcolo simile a quello per un diagramma a scatole, ma che identificherebbe una frazione simile solo nella coda destra (non avrai punti di fascia bassa identificati in un esponenziale o geometrico) .. oppure potresti fare qualcos'altro.

In campioni di grandi dimensioni, il diagramma a scatole segna circa lo 0,35% dei punti su ciascuna estremità, o circa lo 0,7% in totale. Per un esponenziale potresti segnare un multiplo della mediana, per esempio. Se si desidera taggare circa lo 0,7% dei punti in totale per un esponenziale effettivo, ciò suggerirebbe di segnare punti oltre circa 7,1 volte la mediana.

Contrassegnare punti superiori a 7,1 volte la mediana per n = 1000 raggiungerà tipicamente tra 0,4% e 1,1% di valori:

ae <- rexp(1000)
table( ae > 7.1*median(ae) )

FALSE  TRUE 
  993     7 

Ad esempio, le distribuzioni vagamente governate da una distribuzione esponenziale, potrebbero essere trasformate con una funzione log - a che punto è accettabile cercare valori anomali basati sulla stessa definizione IQR?

Dipende totalmente da cosa intendi per "accettabile". Si noti, tuttavia, che -

i) la distribuzione risultante non è in realtà simmetrica, ma distintamente inclinata a sinistra.

inserisci qui la descrizione dell'immagine

Di conseguenza, di solito segnerai solo punti nell'estremità sinistra (cioè vicino a zero, dove ti aspetti che i valori esponenziali siano comunque) piuttosto che nella destra (dove potrebbero essere gli "outlier"), a meno che non siano davvero estremo.

ii) l'idoneità di tale regola dipenderà fortemente da ciò che stai facendo.

Se sei preoccupato per lo strano strano valore che influenza la tua inferenza, in generale, probabilmente stai meglio usando procedure solide che identificare formalmente i valori anomali.

Se vuoi davvero usare una regola basata su normali per dati esponenziali o di Poisson trasformati, almeno suggerirei di applicarla alla radice quadrata per un Poisson (fintanto che la media non è troppo piccola, dovrebbe essere all'incirca normale) e cubare la radice o addirittura la quarta radice per l'esponenziale (e forse, per estensione, il geometrico).

o forse , come nellatrasformazione AnscombeX+38

inserisci qui la descrizione dell'immagine

Per un esponenziale, in grandi campioni l'approccio radice-cubo tenderà a segnare i punti solo nella coda superiore (approssimativamente alla stessa velocità li segna nella coda superiore per una normale) e l'approccio di quarta radice segna punti in entrambe le code (leggermente più nella coda inferiore, in totale a circa il 40% della velocità che fa per una normale). Delle possibilità, la radice del cubo ha più senso per me rispetto alle altre due, ma non consiglierei necessariamente di usarla come una regola dura e veloce.


1
"Una distribuzione dalla coda pesante ma simmetrica potrebbe avere molti punti al di fuori dei limiti di quella regola.". Nell'IQR c'è sempre esattamente il 50% di tutti i punti, no?
Julien D

2
(Q1-1.5×IQR,Q3+1.5×IQR)

@Glen_b La soglia di rifiuto superiore dell'esponenziale nella risposta presuppone che il parametro shift (o theta) sia noto. Penso che questo dovrebbe essere menzionato.
user603

1
@ user603 Il termine " distribuzione esponenziale " (vedi anche qui ) senza alcun aggettivo modificativo (come "spostato" o "due parametri") si riferisce più convenzionalmente alla versione a un parametro. Alcune persone chiamano la versione spostata "la distribuzione esponenziale", ma è relativamente raro; solo leggermente più comune di chiamare la distribuzione lognormale spostata "la distribuzione lognormale".
Glen_b

1
@ user603 Oh, scusa, una semplice comunicazione errata - in quel caso sì, non credo che abbiamo un sostanziale disaccordo - dove c'è la possibilità di grandi valori anomali a sinistra, l'approccio che ho citato non ha alcun senso . Semplicemente non stavo tentando di affrontare qualsiasi potenziale di quella situazione (ma a mia difesa, non mi sembrava che l'OP lo considerasse una possibilità - dubito che prendere i registri mi sarebbe venuto in mente se fosse).
Glen_b

14

Risponderò alle tue domande nell'ordine opposto in cui le hai poste, in modo che l'esposizione proceda dallo specifico al generale.

Innanzitutto, consideriamo una situazione in cui si può presumere che, fatta eccezione per una minoranza di valori anomali, la maggior parte dei dati possa essere ben descritta da una distribuzione nota (nel tuo caso l'esponenziale).

X

pX(X)=σ-1exp(-(X-θ)σ),X>0;σ>0

Xθ=0

Il solito stimatore MLE dei parametri è [0, p 506]:

θ^=minioXio

e

σ^=AveioXio-minioXio

Ecco un esempio in R:

n<-100
theta<-1
sigma<-2
set.seed(123) #for reproducibility
x<-rexp(n,rate=1/sigma)+theta
mean(x)-min(x)

σ2.08

Xio-Xio

m<-floor(0.2*n)
y<-x
y[1:m]<--y[1:m]
mean(y)-min(y)

σ11.12Xio100Xio

m<-floor(0.2*n)
z<-x
z[1:m]<-100*z[1:m]
mean(z)-min(z)

σ54

Un'alternativa alla MLE grezza è quella di (a) trovare i valori anomali utilizzando una solida regola di identificazione dei valori anomali , (b) metterli da parte come dati spuri e (c) calcolare la MLE sulla parte non spuria del campione.

La più nota di queste solide regole di identificazione anomala è la regola med / mad proposta da Hampel [3] che l'ha attribuita a Gauss (ho illustrato questa regola qui ). Nella regola med / mad, la soglia di rifiuto si basa sul presupposto che le osservazioni autentiche nel campione siano ben approssimate da una distribuzione normale.

Naturalmente, se si dispone di informazioni aggiuntive (come sapere che la distribuzione delle osservazioni autentiche è ben approssimata da una distribuzione di Poisson come in questo esempio ) non c'è nulla che ti impedisca di trasformare i tuoi dati e utilizzare la regola di rifiuto anomalo di base (il med / mad) ma questo mi sembra un po 'imbarazzante per trasformare i dati per preservare quella che è dopo tutto una regola ad hoc.

Mi sembra molto più logico preservare i dati ma adattare le regole di rifiuto. Quindi, useresti comunque la procedura in 3 passaggi che ho descritto nel primo link sopra, ma con la soglia di rifiuto adattata alla distribuzione sospetti che buona parte dei dati abbia. Di seguito, do la regola del rifiuto in situazioni in cui le osservazioni autentiche sono ben adattate da una distribuzione esponenziale. In questo caso, puoi costruire buone soglie di rifiuto usando la seguente regola:

θ

θ^'=medioXio-3,476Qn(X)ln2

3,476

2) respingere come false tutte le osservazioni al di fuori di [2, p 188]

[θ^',9(1+2/n)medioXio+θ^']

(il fattore 9 nella regola sopra è ottenuto come 7.1 nella risposta di Glen_b sopra, ma usando un cut-off più alto. Il fattore (1 + 2 / n) è un piccolo fattore di correzione del campione che è stato derivato dalle simulazioni in [2]. Per campioni di dimensioni sufficientemente grandi, è essenzialmente uguale a 1).

σ

σ^'=AveioHXio-minioHXio

H={io:θ^'Xio9(1+2/n)medioXio+θ^'}

usando questa regola negli esempi precedenti, otterresti:

library(robustbase)
theta<-median(x)-Qn(x,constant=3.476)*log(2)
clean<-which(x>=theta & x<=9*(1+2/n)*median(x)+theta)
mean(x[clean])-min(x[clean])

σ2.05

theta<-median(y)-Qn(y,constant=3.476)*log(2)
clean<-which(y>=theta & y<=9*(1+2/n)*median(y)+theta)
mean(y[clean])-min(y[clean])

σ2.2

Nel terzo esempio:

theta<-median(z)-Qn(z,constant=3.476)*log(2)
clean<-which(z>=theta & z<=9*(1+2/n)*median(z)+theta)
mean(z[clean])-min(z[clean])

σ2.2

{io:ioH}

Ora, per il caso generale in cui non hai una buona distribuzione candidata per adattarsi alla maggior parte delle tue osservazioni oltre a sapere che una distribuzione simmetrica non funzionerà, puoi usare il diagramma a scatole modificato [4]. Questa è una generalizzazione del boxplot che tiene conto di una misura (non parametrica e straordinariamente solida) dell'asimmetria dei tuoi dati (in modo che quando la maggior parte dei dati è simmetrica crolla fino al solito boxplot). Puoi anche controllare questa risposta per un'illustrazione.

  • [0] Johnson NL, Kotz S., Balakrishnan N. (1994). Distribuzioni univariate continue, Volume 1, 2a edizione.
  • [1] Rousseeuw PJ e Croux C. (1993). Alternative alla deviazione assoluta mediana. Journal of American Statistical Association, Vol. 88, n. 424, pagg. 1273-1283.
  • [2] JK Patel, CH Kapadia e DB Owen, Dekker (1976). Manuale delle distribuzioni statistiche.
  • [3] Hampel (1974). La curva di influenza e il suo ruolo nella stima robusta. Journal of American Statistical Association Vol. 69, n. 346 (giugno 1974), pagg. 383-393.
  • [4] Vandervieren, E., Hubert, M. (2004) "Un diagramma di scatola adattato per distribuzioni distorte". Statistica computazionale e analisi dei dati Volume 52, Numero 12, 15 agosto 2008, Pagine 5186–5201.

1

Innanzitutto, metterei in dubbio la definizione, classica o meno. Un "outlier" è un punto sorprendente. L'uso di una regola particolare (anche per distribuzioni simmetriche) è un'idea imperfetta, soprattutto al giorno d'oggi quando ci sono così tanti enormi set di dati. In un set di dati di (diciamo) un milione di osservazioni (non molto grandi, in alcuni campi), ci saranno molti casi oltre il limite di 1,5 IQR che citi, anche se la distribuzione è perfettamente normale.

Secondo, suggerirei di cercare valori anomali sui dati originali. Sarà quasi sempre più intuitivo. Ad esempio, con i dati sul reddito, è abbastanza comune prendere i registri. Ma anche qui cercherei valori anomali sulla scala originale (dollari o euro o altro) perché abbiamo una sensazione migliore per tali numeri. (Se prendi i log, suggerirei log base 10, almeno per il rilevamento anomalo, perché è almeno un po 'intuitivo).

Terzo, quando cerchi i valori anomali, fai attenzione al mascheramento.

Infine, sto attualmente ricercando l'algoritmo di "ricerca avanzata" proposto da Atkinson e Riani per vari tipi di dati e problemi. Sembra molto promettente.

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.