Come chiami una media che non include valori anomali?
Ad esempio, se hai un set:
{90,89,92,91,5 } avg = 73.4
ma escludendo il valore anomalo (5) abbiamo
{90,89,92,91 (, 5)} avg = 90.5
Come descrivi questa media nelle statistiche?
Come chiami una media che non include valori anomali?
Ad esempio, se hai un set:
{90,89,92,91,5 } avg = 73.4
ma escludendo il valore anomalo (5) abbiamo
{90,89,92,91 (, 5)} avg = 90.5
Come descrivi questa media nelle statistiche?
Si chiama media ridotta. Fondamentalmente quello che fai è calcolare la media dell'80% medio dei tuoi dati, ignorando il 10% superiore e inferiore. Naturalmente, questi numeri possono variare, ma questa è l'idea generale.
Un approccio statisticamente ragionevole consiste nell'utilizzare un valore limite della deviazione standard.
Ad esempio, rimuovere qualsiasi risultato +/- 3 deviazioni standard.
Usare una regola come "il 10% più grande" non ha senso. E se non ci fossero valori anomali? La regola del 10% eliminerebbe comunque alcuni dati. Inaccettabile.
Un altro test standard per identificare i valori anomali consiste nell'usare LQ $ - $ (1,5 $ \ times $ IQR) e UQ $ + $ (1,5 $ \ times $ IQR). Questo è un po 'più facile che calcolare la deviazione standard e più generale poiché non fa alcuna ipotesi sui dati sottostanti provenienti da una distribuzione normale.
La "media" di cui parli in realtà è chiamata "media".
Non risponde esattamente alla tua domanda, ma una statistica diversa che non è influenzata dai valori anomali è la mediana, ovvero , il numero centrale.
{90,89,92,91,5} media: 73,4 {90,89,92,91,5} mediana: 90
Potrebbe esserti utile, non lo so.
Per un nome molto specifico, dovrai specificare il meccanismo per il rifiuto dei valori anomali. Un termine generale è "robusto".
dsimcha menziona un approccio: trimming. Un altro è il clipping: tutti i valori al di fuori di un intervallo noto-buono vengono scartati.
Non esiste un nome ufficiale a causa dei vari meccanismi, come il test Q, utilizzati per eliminare i valori anomali.
La rimozione dei valori anomali si chiama trimming.
Nessun programma che abbia mai usato ha average () con un trim () integrato
Non so se ha un nome, ma potresti facilmente trovare una serie di algoritmi per rifiutare i valori anomali:
Trova tutti i numeri tra il 10 ° e il 90 ° percentili (eseguire l'ordinamento, quindi rifiutare i primi $ N / 10 $ e gli ultimi $ N / 10 $) e prendere il valore medio dei valori rimanenti.
Ordinare i valori , rifiuta i valori alti e bassi purché in tal modo la deviazione media / standard cambi più di $ X \% $.
Ordina i valori, rifiuta i valori alti e bassi come purché in tal modo i valori in questione siano più di $ K $ deviazioni standard dalla media.
Il modo più comune per avere una media Robusta (la parola usuale che significa resistente a dati non validi) è utilizzare la mediana . Questo è solo il valore medio nell'elenco ordinato (a metà tra i due valori centrali), quindi per il tuo esempio sarebbe 90,5 = a metà tra 90 e 91.
Se vuoi ottenere davvero in statistiche affidabili (come stime affidabili della deviazione standard ecc.) Suggerirei di perdere il codice nel gruppo AGORAS, ma potrebbe essere troppo avanzato per i tuoi scopi.
... {90,89,92,91 (, 5)} avg = 90.5
Come descrivi questa media nelle statistiche? ...
Non esiste una designazione speciale per quel metodo. Chiamalo con il nome che desideri, a condizione che tu dica sempre al pubblico come sei arrivato al risultato e che tu abbia i valori anomali in mano da mostrare loro se lo richiedono (e credimi: lo richiederanno).
Se tutto ciò che hai è una variabile (come implichi tu), penso che alcuni degli intervistati sopra siano stati eccessivamente critici nei confronti del tuo approccio. Certamente altri metodi che considerano cose come la leva finanziaria sono più statisticamente validi; tuttavia ciò implica che stai facendo modellazione di qualche tipo. Se ad esempio hai solo punteggi su un test o l'età degli anziani (casi plausibili del tuo esempio), penso che sia pratico e ragionevole sospettare del valore anomalo che porti in ballo. È possibile osservare la media complessiva e la media ridotta e vedere quanto cambia, ma ciò sarà una funzione della dimensione del campione e della deviazione dalla media per i valori anomali.
Con valori anomali del genere, vorresti sicuramente esaminare il processo di generazione dei dati per capire perché è così. È un'immissione di dati o un colpo di fortuna amministrativo? Se è così e probabilmente non è correlato al valore reale effettivo (che non viene osservato) mi sembra perfettamente a posto. Se è un valore vero per quanto puoi dire, potresti non essere in grado di rimuoverlo a meno che tu non sia esplicito nella tua analisi al riguardo.
Adoro la discussione qui: la media ridotta è uno strumento potente per ottenere una stima della tendenza centrale concentrata intorno alla metà dei dati.
L'unica cosa che vorrei aggiungere è che c'è una scelta da fare su quale "metrica" utilizzare nei casi di campioni di piccole e grandi dimensioni. In alcuni casi si parla di
Ovviamente quanto sopra è una generalizzazione grossolana, ma ci sono articoli interessanti che parlano delle famiglie e delle classi di stimatori in ambienti campione grandi e piccoli e delle loro proprietà. Lavoro in bioinformatica e di solito ti occupi di piccoli campioni (3-10 secondi) di solito in modelli di topi, e cosa no, e questo articolo fornisce una buona panoramica tecnica di quali alternative esistono e quali proprietà hanno questi stimatori.
R Stima robusta in campioni molto piccoli
Questo è un articolo fuori rotta, ma ce ne sono molti altri che discutono di questi tipi di stimatori. Spero che sia di aiuto.
disclaimer: questo metodo è ad hoc e senza uno studio rigoroso. Utilizzare a proprio rischio :)
Quello che ho trovato abbastanza buono è stato ridurre la rilevanza di un contributo in punti alla media da parte di square del suo numero di deviazioni standard dalla media , ma solo se il punto è più di una deviazione standard dalla media.
Passaggi:
esempio: stddev = 0,5 media = 10 valore = 11
quindi, deviazioni = distanza dalla media / stddev = | 10-11 | /0.5 = 2
quindi il valore cambia da 11 a 11 / (2) ^ 2 = 11/4
anche N cambia, è ridotto a N-3/4.
codice:
def mean (data):
"" "Restituisce la media aritmetica dei dati campione." ""
n = len (dati)
se n < 1:
raise ValueError ('la media richiede almeno un punto dati')
return 1.0 * sum (data) / n # in Python 2 usa sum (data) / float (n)
def _ss (dati):
"" "Restituisce la somma delle deviazioni quadrate dei dati di sequenza." ""
c = media (dati)
ss = sum ((x-c) ** 2 per x nei dati)
return ss, c
def stddev (dati, ddof = 0):
"" "Calcola la deviazione standard della popolazione
per impostazione predefinita; specificare ddof = 1 per calcolare il campione
deviazione standard."""
n = len (dati)
se n < 2:
raise ValueError ('la varianza richiede almeno due punti dati')
ss, c = _ss (dati)
pvar = ss / (n-ddof)
return pvar ** 0,5, c
def rob_adjusted_mean (valori, s, m):
n = 0,0
tot = 0,0
per v nei valori:
diff = abs (v - m)
deviazioni = diff / s
se deviazioni > 1:
# è un valore anomalo, quindi riduci la sua rilevanza / ponderazione per il quadrato del suo numero di deviazioni
n + = 1.0 / deviazioni ** 2
tot + = v / deviazioni ** 2
altro:
n + = 1
tot + = v
ritorno tot / n
def rob_adjusted_ss (valori, s, m):
"" "Restituisce la somma delle deviazioni quadrate dei dati di sequenza." ""
c = rob_adjusted_mean (valori, s, m)
ss = sum ((x-c) ** 2 for x in values)
return ss, c
def rob_adjusted_stddev (data, s, m, ddof = 0):
"" "Calcola la deviazione standard della popolazione
per impostazione predefinita; specificare ddof = 1 per calcolare il campione
deviazione standard."""
n = len (dati)
se n < 2:
raise ValueError ('la varianza richiede almeno due punti dati')
ss, c = rob_adjusted_ss (data, s, m)
pvar = ss / (n-ddof)
return pvar ** 0,5, c
s, m = stddev (valori, ddof = 1)
stampa s, m
s, m = rob_adjusted_stddev (valori, s, m, ddof = 1)
stampa s, m
output prima e dopo la regolazione delle mie 50 misurazioni:
0.0409789841609 139.04222 0,0425867309757 139,030745443
Esistono metodi superiori ai metodi basati su IQR o SD. A causa della presenza di valori anomali, la distribuzione probabilmente ha già problemi con la normalità (a meno che gli oulier non siano distribuiti uniformemente ad entrambe le estremità della distribuzione). Questo gonfia molto la SD, rendendo le SD meno desiderabili, tuttavia il metodo SD ha alcuni aspetti desiderabili rispetto al metodo IQR, vale a dire 1,5 volte l'IQR è un limite relativamente soggettivo. Sebbene la soggettività in queste materie sia inevitabile, è preferibile ridurla.
D'altra parte, un identificatore Hampel utilizza metodi affidabili per stimare i valori anomali. Essenzialmente è lo stesso del metodo SD, ma sostituiresti le medie con le mediane e la DS con le deviazioni assolute mediane (MAD). I MAD sono solo la distanza mediana dai media. Questo MAD viene moltiplicato per una costante di scala .675. La formula risulta in (X - Median) / (. 675 * MAD). La statistica risultante viene trattata in modo identico a uno Z-score. Questo aggira il problema della probabile non normalità che se si hanno valori anomali potrebbero essere presenti.
Per quanto riguarda come chiamarlo. I mezzi tagliati sono normalmente riservati al metodo di taglio del dieci percento inferiore e superiore menzionato da @dsimcha. Se è stato completamente pulito, puoi chiamarlo il mezzo pulito, o semplicemente il mezzo. Assicurati solo di essere chiaro cosa hai fatto nel tuo articolo.
Hampel, F. R., Ronchetti, E. M., Rousseeuw, P. J., & Stahel, W. A. (1986). Statistiche robuste. John Wiley & Sons, New York.
Può essere la mediana. Non sempre, ma a volte. Non ho idea di come si chiami in altre occasioni. Spero che questo abbia aiutato. (Almeno un po '.)
Il mio libro di testo sulle statistiche fa riferimento a questa media come a una media della popolazione. L'esempio implica che è stata applicata una restrizione al set di dati completo, sebbene non sia stata apportata alcuna modifica (rimozione) al set di dati.