Regressione lineare rapida robusta per i valori anomali


50

Ho a che fare con dati lineari con valori anomali, alcuni dei quali sono al massimo le 5 deviazioni standard dalla linea di regressione stimata. Sto cercando una tecnica di regressione lineare che riduca l'influenza di questi punti.

Finora quello che ho fatto è stato stimare la linea di regressione con tutti i dati, quindi scartare il punto dati con residui quadrati molto grandi (diciamo il 10% superiore) e ripetere la regressione senza quei punti.

In letteratura ci sono molti possibili approcci: quadrati meno rifiniti, regressione quantile, stimatori m, ecc. Non so davvero quale approccio dovrei provare, quindi sto cercando suggerimenti. L'importante per me è che il metodo scelto dovrebbe essere veloce perché la regressione robusta verrà calcolata ad ogni passo di una routine di ottimizzazione. Molte grazie!


2
Un metodo che non hai menzionato è l'uso di errori con gradi di libertà sconosciuti. Tuttavia, questo potrebbe non essere veloce quanto è necessario. t

@Procrastinator: (È facile immaginare una configurazione di valori anomali in cui) questo non funzionerà.
user603

@ user603 Questo è vero per qualsiasi metodo, non esiste Panacea;). Stavo semplicemente sottolineando un altro metodo. +1 alla tua risposta.

3
@Procrastinator: sono d'accordo che tutti i metodi falliranno per un certo grado di contaminazione . E 'fallimento' in questo contesto può essere definito quantitativamente ed empiricamente. Ma l'idea è quella di favorire ancora quei metodi che falliranno solo a tassi più alti di contaminazione.
user603

4
Dato che questo viene fatto ripetutamente durante una routine di ottimizzazione, forse i dati nella regressione stanno (eventualmente) cambiando lentamente. Ciò suggerisce un algoritmo adattato alla tua situazione: iniziare con una qualche forma di regressione robusta, ma quando si eseguono piccoli passi durante l'ottimizzazione, assumere semplicemente nel passaggio successivo che qualsiasi valore anomalo precedente rimanga un valore anomalo. Utilizzare OLS sui dati, quindi verificare se i valori anomali presuntivi sono ancora esterni. In caso contrario, ricominciare con la solida procedura, ma in tal caso - cosa che potrebbe accadere spesso - avrai risparmiato un sacco di calcoli.
whuber

Risposte:


55

Se i tuoi dati contengono un singolo valore anomalo, puoi trovarli in modo affidabile usando l'approccio che suggerisci (senza però le iterazioni). Un approccio formale a questo è

Cook, R. Dennis (1979). Osservazioni influenti nella regressione lineare . Journal of American Statistical Association (American Statistical Association) 74 (365): 169–174.

Per trovare più di un valore anomalo, per molti anni, il metodo principale è stata la cosiddetta famiglia di approccio stimazione. Questa è una famiglia piuttosto ampia di stimatori che include lo stimatore di regressione di Huber, la regressione L1 di Koenker e l'approccio proposto da Procastinator nel suo commento alla tua domanda. Gli stimatori con funzioni convesse hanno il vantaggio di avere circa la stessa complessità numerica di una stima di regressione regolare. Il grande svantaggio è che possono trovare in modo affidabile i valori anomali solo se:M M ρMMMρ

  • la percentuale di contaminazione del campione è inferiore a dove è il numero di variabili di progettazione, p11+pp
  • o se i valori anomali non si trovano nello spazio di progettazione (Ellis e Morgenthaler (1992)).

Puoi trovare una buona implementazione delle stime ( ) della regressione nel pacchetto ( ) . l 1Ml1robustbasequantregR

Se i tuoi dati contengono più di outlier potenzialmente anche periferico nello spazio di progettazione, trovarli equivale a risolvere un problema combinatorio (equivalentemente la soluzione a uno stimatore con ri funzione decrescente / non convessa ). Mρnp+1Mρ

Negli ultimi 20 anni (e specialmente negli ultimi 10) è stato progettato un gran numero di algoritmi di rilevamento anomalo veloci e affidabili per risolvere approssimativamente questo problema combinatorio. Questi sono ora ampiamente implementati nei pacchetti statistici più popolari (R, Matlab, SAS, STATA, ...).

Tuttavia, la complessità numerica della ricerca di valori anomali con questi approcci è in genere dell'ordine . La maggior parte dell'algoritmo può essere utilizzata in pratica per i valori di nella metà degli adolescenti. In genere questi algoritmi sono lineari in (il numero di osservazioni), quindi il numero di osservazioni non è un problema. Un grande vantaggio è che la maggior parte di questi algoritmi è imbarazzantemente parallela. Più recentemente, sono stati proposti molti approcci specificamente progettati per dati di dimensione superiore.p nO(2p)pn

Dato che non hai specificato nella tua domanda, elencherò alcuni riferimenti per il caso . Ecco alcuni articoli che spiegano questo in modo più dettagliato in queste serie di articoli di revisione:p < 20pp<20

Rousseeuw, PJ e van Zomeren BC (1990). Smascherare valori anomali multivariati e punti di leva . Journal of American Statistical Association , Vol. 85, n. 411, pagg. 633-639.

Rousseeuw, PJ e Van Driessen, K. (2006). Regressione LTS di calcolo per set di dati di grandi dimensioni . Archivio 12 Data mining e Knowledge Discovery Volume 12 Numero 1, pagine 29-45.

Hubert, M., Rousseeuw, PJ e Van Aelst, S. (2008). Metodi multivariati robusti ad alta suddivisione . Statistical Science , Vol. 23, n. 1, 92-119

Ellis SP e Morgenthaler S. (1992). Leva e ripartizione nella regressione L1. Journal of American Statistical Association , Vol. 87, n. 417, pagg. 143-148

Un recente libro di consultazione sul problema dell'identificazione anomala è:

Maronna RA, Martin RD e Yohai VJ (2006). Statistica solida: teoria e metodi . Wiley, New York.

Questi (e molte altre varianti di questi) metodi sono implementati (tra l'altro) nel pacchetto.robustbase R


4
Questa è un'ottima risposta!
Peter Flom - Ripristina Monica

p<10p

2
p<10M

1
"Un grande vantaggio è che la maggior parte di questi algoritmi è imbarazzantemente parallela." Mi piace la formulazione. ;)
Mateen Ulhaq,

1
@Mateen, beh, dopo tutto è il termine dell'arte . :)
JM non è uno statistico il

19

Per una semplice regressione (singola x), c'è qualcosa da dire per la linea Theil-Sen in termini di robustezza ai valori anomali y e ai punti influenti, nonché in generale buona efficienza (al normale) rispetto a LS per la pendenza. Il punto di rottura per la pendenza è di quasi il 30%; fintanto che l'intercettazione (ci sono varie intercettazioni possibili che le persone hanno usato) non ha una suddivisione più bassa, l'intera procedura affronta abbastanza bene una considerevole frazione di contaminazione.

La sua velocità potrebbe sembrare negativa - la mediana delle di sembra essere anche con una mediana - ma il mio ricordo è che può essere fatto più rapidamente se la velocità è davvero un problema ( , credo)(n2)O ( n ) O ( n log n )O(n2)O(n)O(nlogn)

Modifica: l'utente 603 ha chiesto un vantaggio della regressione di Theil rispetto alla regressione di L1. La risposta è l'altra cosa che ho citato: punti influenti:

Theil_vs_L1

La linea rossa corrisponde (dalla funzione nel pacchetto). Il verde si adatta con una pendenza di Theil. Tutto ciò che serve è un singolo refuso nel valore x - come digitare 533 anziché 53 - e questo genere di cose può accadere. Quindi l' adattamento non è affidabile per un singolo errore di battitura nello spazio x.L 1L1rqquantregL1


può infatti essere calcolato in tempo . Potresti approfondire quale vantaggio (nel singolo caso x) lo stimatore TS ha, per esempio, una regressione ? l 1nlognl1
user603

1
@ user603 Vedi la modifica.
Glen_b

(+1) grazie per la modifica. È importante sottolineare questa funzionalità.
user603

1
E qual è il vantaggio rispetto a una stima MM, come lmrob () dal pacchetto R robustbase o anche {non è necessario installare altro che 'base R'} rlm (*, ... method = "MM") dal pacchetto MASS? Questi hanno un punto di rottura completo (~ 50%) e sono probabilmente ancora più efficienti al normale.
Martin Mächler,

1
@ MartinMächler Sembra che tu stia litigando contro un'affermazione che non ho fatto lì. Se desideri fornire una risposta che contenga anche un confronto di altri stimatori robusti, in particolare quelli che sono più o meno semplici da capire per qualcuno a livello di PO, non vedo l'ora di leggerlo.
Glen_b,

12

Hai visto RANSAC (Wikipedia) ?

Questo dovrebbe essere buono nel calcolare un modello lineare ragionevole anche quando ci sono molti valori anomali e rumore, poiché si basa sul presupposto che solo una parte dei dati appartenga effettivamente al meccanismo.


sì, ma aggiungendo una semplice fase di ripesatura si ottiene uno stimatore (LTS) altrettanto robusto , molto più stabile e statisticamente efficiente. Perché non farlo?
user603

1

Ho trovato migliore la regressione dell'errore penalizzata . Puoi anche usarlo in modo iterativo e ripesare i campioni, che non sono molto coerenti con la soluzione. L'idea di base è di aumentare il modello con errori: dove è il vettore di errore sconosciuto. Ora esegui la regressione su . È interessante notare che puoi ovviamente usare "lasso fuso" per questo quando puoi stimare in anticipo la certezza delle tue misurazioni e metterlo come ponderazione in e risolvere il nuovo compito leggermente diverso y = A x + e e y - A x - e 2 2 + λ e 1 W = d i a g ( w i ) y - A x - e 2 2 + λ W e 1l1

y=Ax+e
e
yAxe22+λe1
W=diag(wi)
yAxe22+λWe1

Maggiori informazioni sono disponibili qui: http://statweb.stanford.edu/~candes/papers/GrossErrorsSmallErrors.pdf


l'hai provato sull'esempio Glen_b (se aggiungi un secondo valore anomalo accanto a dove ha posizionato il suo) o ho pubblicato?
user603

@ user603 no, l'ho appena applicato su casi più pratici per la modellazione 3D dalle immagini della fotocamera. Lì ha aiutato molto. Tuttavia, una lezione appresa è: se hai più possibilità di eliminare i tuoi valori anomali, usali.
Mojovski,
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.