Quali sono gli algoritmi efficienti e precisi per escludere valori anomali da un insieme di dati?

StackOverflow https://stackoverflow.com/questions/2069793

  •  20-09-2019
  •  | 
  •  

Domanda

Ho un insieme di 200 righe di dati (implica un piccolo insieme di dati). Voglio effettuare alcune analisi statistiche, ma prima voglio escludere valori anomali.

Quali sono i potenziali algos per lo scopo? La precisione è una questione di interesse.

Sono molto nuovo per Statistiche, così bisogno di aiuto in algos molto di base.

È stato utile?

Soluzione

Inizia tracciando le href="http://en.wikipedia.org/wiki/Partial%5Fleverage" leva dei valori anomali e poi andare per qualche buon ol 'trauma interocular (aka cerca nella dispersione).

Un sacco di pacchetti statistici hanno valori anomali / diagnostica residue, ma io preferisco di Cook D. È possibile calcolare a mano se vuoi utilizzando questa formula da mtsu.edu (link originale è morto, questo proviene dall'archivio .org).

Altri suggerimenti

Nel complesso, la cosa che fa una domanda come questa difficile è che non esiste una definizione rigorosa di un outlier. Vorrei davvero consigliare di non usare un certo numero di deviazioni standard come il cut-off per i seguenti motivi:

  1. Alcuni valori anomali può avere un enorme impatto sulla vostra stima della deviazione standard, come deviazione standard non è una statistica robusta.
  2. L'interpretazione della deviazione standard dipende enormemente dalla distribuzione dei dati. Se i dati sono distribuiti normalmente poi 3 deviazioni standard è molto, ma se è, per esempio, log-distribuzione normale, poi 3 deviazioni standard non è molto.

Ci sono alcuni buoni modi per procedere:

  1. Tenere tutti i dati, e basta usare le statistiche robuste (mediana, invece di media, test di Wilcoxon invece di T-test, etc.). Probabilmente bene se l'insieme di dati è di grandi dimensioni.

  2. Tagliare o Winsorize tuoi dati. Rifilatura significa rimuovere la parte superiore e inferiore x%. mezzi di regolazione della parte superiore e inferiore x% al X e 1-x-esimo percentile rispettivamente winsorizzazione.

  3. Se si dispone di un piccolo insieme di dati, si può solo tracciare i dati ed esaminare manualmente per i valori non plausibili.

  4. Se i dati sembra ragionevolmente vicino alla distribuiti normalmente (nessun code pesanti e più o meno simmetrica), quindi utilizzare il deviazione media assoluta invece della deviazione standard come statistica test e filtro a 3 o 4 deviazioni assolute mediani distanza dalla mediana.

Si può avere sentito l'espressione 'Six Sigma'.

Si riferisce a più e meno 3 sigma (cioè deviazioni standard) intorno alla media.

Tutto ciò al di fuori del campo di 'Six Sigma' potrebbe essere trattati come un outlier.

Su riflessione, penso 'Six Sigma' è troppo ampio.

In questo articolo viene descritto come ammonta a "3,4 parti difettose per milione di opportunità."

Sembra un requisito piuttosto stringenti ai fini della certificazione. Solo tu puoi decidere se vi si addice.

A seconda dei dati e il suo significato, si potrebbe voler esaminare RANSAC (casuale consenso del campione). Questo è ampiamente usato in computer vision, e generalmente dà ottimi risultati quando si cerca di adattare i dati con un sacco di valori anomali ad un modello.

Ed è molto semplice da concettualizzare e spiegare. D'altra parte, è non deterministica, che potrebbe causare problemi a seconda dell'applicazione.

calcolare la deviazione standard sul set, ed escludere tutto al di fuori della prima, seconda o terza deviazione standard.

Ecco come vorrei andare su di esso in SQL Server

La query di seguito otterrà il peso medio di una tabella scala immaginaria possesso di un unico peso-in per ogni persona, pur non permettendo coloro che sono eccessivamente grasso o magro di buttare fuori la media più realistica:

  select w.Gender, Avg(w.Weight) as AvgWeight
    from ScaleData w
    join ( select d.Gender, Avg(d.Weight) as AvgWeight, 
                  2*STDDEVP(d.Weight) StdDeviation
             from ScaleData d
            group by d.Gender
         ) d
      on w.Gender = d.Gender
     and w.Weight between d.AvgWeight-d.StdDeviation 
                      and d.AvgWeight+d.StdDeviation
   group by w.Gender  

Ci può essere un modo migliore per andare su questo, ma funziona e funziona bene. Se siete venuti in un'altra soluzione più efficiente, mi piacerebbe sentire su di esso.

NOTA: È possibile che rimuove la parte superiore e inferiore del 5% dei valori anomali fuori l'immagine per scopo della media. È possibile regolare il numero di valori anomali rimosse regolando la 2 * in 2 * STDDEVP secondo: http: / /en.wikipedia.org/wiki/Standard_deviation

Se si vuole analizzare proprio questo, dire che si vuole calcolare la correlazione con un'altra variabile, il suo ok per escludere valori anomali. Ma se si vuole modellare / prevedere, non è sempre meglio escluderli immediatamente.

Prova a trattarlo con metodi come la tappatura o se si sospetta che i valori anomali contengono informazioni / modello, poi sostituirlo con mancanti, e il modello / prevederlo. Ho scritto alcuni esempi di come si può andare su questo qui usando R .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top