Domanda:
Calcolo del valore medio ignorando i valori anomali
Max
2011-05-16 19:01:19 UTC
view on stackexchange narkive permalink

Questa è più una questione di statistica generale, anche se se è importante sto scrivendo codice PHP.

Supponiamo che stia cercando di calcolare il valore medio di un giocattolo che viene comunemente acquistato e venduto sul mercato secondario e ho una serie di valori di prezzo estratti sia dalle aste che dai dati "prezzo pagato" inseriti dall'utente. I punti dati che rappresentano le aste sono abbastanza affidabili, ma ho anche il tipo di punto dati occasionale "vendita di garage", in cui qualcuno potrebbe aver pagato un dollaro per comprare qualcosa da zia Polly a una vendita di garage. Il problema è che il tipo di punti dati $ 1 non è molto prezioso per me, in quanto non indica un valore reale: la zia Polly non ne sapeva niente di meglio e non se ne curava. Allo stesso modo, a volte posso ottenere un punto dati proveniente da un burlone che immette $ 9000 per un giocattolo che in realtà vale solo $9.

Quindi, quando si lavora valore, qual è il modo migliore per escludere questi tipi di anomalie da dati altrimenti utili?

Ho letto di valori anomali e qualcosa sull'ignorare generalmente tutto ciò che è più di 2,5 deviazioni standard al di fuori del resto dati, ma sto cercando la ricetta completa, qui.

Grazie mille!

La ricetta completa è che puoi controllare l'input. Dovresti farlo. Convalida le risposte o richiedi risposte numeriche. L'aggiunta di un campo commento potrebbe fornire alcune preziose qualifiche ai prezzi che puoi rivedere in seguito.
Cerco davvero una soluzione statistica, ma grazie comunque.
Cordiali saluti, _outlier_ è un termine scientifico valido.
Cinque risposte:
#1
+9
Nick Sabbe
2011-05-16 19:22:43 UTC
view on stackexchange narkive permalink

Nei grafici a scatole, i valori che sono più di 1,5 volte l'IQR (intervallo interquartile, differenza tra quartile 1 e 3) lontano (come in: nella direzione dalla mediana) i quartili sono generalmente considerati valori anomali.

Non posso dire se questa sia una misura appropriata per i tuoi dati, però ...

Questo è l'approccio giusto. Il criterio di solito è di 1,5 IQR di distanza dai * quartili *, non dalla mediana. Vedi il testo * EDA * di Tukey, per esempio. (Credo che abbia originato questa regola, che analizza rigorosamente in un documento sepolto da qualche parte nelle sue opere raccolte.) Diventa appropriato quando i dati vengono prima riespressi in un modo che rende la distribuzione approssimativamente simmetrica rispetto alla sua mediana. Per modi semplici per determinare una riespressione, vedere * EDA * * op. cit. *
#2
+5
mark999
2011-05-17 00:10:28 UTC
view on stackexchange narkive permalink

Potresti considerare l'utilizzo di una media ridotta. Ciò comporterebbe l'eliminazione, ad esempio, del 10% più alto dei valori e del 10% più basso dei valori, indipendentemente dal fatto che li consideri negativi.

Le medie troncate sono una buona idea, in linea con la necessità di una statistica robusta. Ma l'OP dovrebbe essere a suo agio con un taglio del 10%? Forse il taglio del 20% sarebbe migliore? Questo pensiero ci porta abbastanza rapidamente a un estremo di riportare solo la mediana (una media ridotta del 50%). L'altro estremo è un'analisi dei valori anomali, il rifiuto dei valori anomali e la rivalutazione di qualsiasi statistica si desideri.
Non sono esattamente un esperto, ma solo buttare fuori il 10% più alto e più basso suona molto diverso dal buttare fuori valori che sono chiaramente anomali. Se ho un centinaio di valori intorno a dove mi aspetterei, perché dovrei tagliare qualcuno di loro? Sono solo uno o due nel campo sinistro che voglio prendere e scartare ...
@whuber Ho appena usato il 10% come esempio. Non so quale sarebbe la scelta migliore, né come sarebbe definita "migliore". @Max Non so che i mezzi tagliati siano decisamente buoni per la tua situazione, ma almeno saresti coerente ed eviterai decisioni soggettive su cosa scartare.
@Max L'idea è che è improbabile che la rimozione di pochi valori a entrambe le estremità dei dati influisca sulla stima di dove si trovano la maggior parte dei valori, indipendentemente dal fatto che ciò che si butta fuori sia un valore anomalo. Sto solo spingendo un po 'questo punto, sapendo quanto possono essere cattivi i dati Web e suggerendo un approccio ancora più semplice di utilizzare il valore medio per stimare il tuo prezzo tipico: è come "buttare via" tutto tranne un valore! Potresti anche esaminare una statistica strettamente correlata, la [Winsorized mean] (http://en.wikipedia.org/wiki/Winsorized_mean)
#3
+2
Tom Gullen
2011-05-16 19:13:38 UTC
view on stackexchange narkive permalink

L'ho pubblicato originariamente su SO prima che venisse cancellato:

https://stats.stackexchange.com/ probabilmente ti aiuterà a farlo meglio e ti darà di più risposta esauriente. Non sono un matematico, ma sospetto che ci siano molti modi per risolvere questo problema.

Come programmatore questo è il modo in cui affronterei il problema. Non sono abbastanza in grado di dirti se questo è corretto, ma per dati semplici dovrebbe essere accettabile.

A seconda del tipo di dati, potrebbe essere accettabile avere quantità troncate. Probabilmente vorrai una media mobile (spesso utilizzata nei mercati azionari) che prenda il prezzo medio degli ultimi n mesi, questo aiuta a negare l'impatto dell'inflazione e quindi ha un taglio di $ n o una percentuale valore limite basato, ovvero qualsiasi valore che devia + -20% o + - $ n della media mobile verrà ignorato.

Ciò funzionerebbe abbastanza bene per mercati relativamente stabili , se la tua entità esiste in un mercato volatile che oscilla selvaggiamente, probabilmente vorrai trovare un approccio diverso.

Devi anche prendere seriamente in considerazione la possibilità di tagliare i dati, menzioni la svendita della nonna che è probabilmente un taglio legittimo spento, ma devi accettare che probabilmente perderai anche punti di dati legittimi che potrebbero avere un effetto significativo sui tuoi risultati.

Ma ancora una volta, ci saranno diversi modi per raggiungere questo obiettivo.

Il set di dati su cui sto lavorando rappresenta gli ultimi 6 mesi di dati, quindi molti sono già disponibili. E grazie per l'aiuto, ma sto davvero cercando una soluzione dichiarata in termini statistici.
#4
  0
Thies Heidecke
2011-05-16 23:31:09 UTC
view on stackexchange narkive permalink

Forse qui potrebbe essere utilizzato un valido strumento di stima come RANSAC.

#5
  0
IrishStat
2011-05-16 23:58:16 UTC
view on stackexchange narkive permalink

spero che questo aiuti

Gli approcci semplicistici, come suggerito qui, spesso falliscono a causa della loro mancanza di generalità. In generale si può avere una serie che ha più tendenze e / o più livelli quindi per rilevare anomalie bisogna "controllare" questi effetti. Inoltre potrebbe esserci un effetto stagionale che potrebbe essere iniziato negli ultimi k periodi e non essere presente nei primi valori n-k. Ora veniamo al nocciolo del problema. Si supponga che nei dati non vi siano spostamenti medi / cambiamenti di tendenza / struttura dell'impulso stagionale. I dati possono essere autocorrelati facendo sì che la deviazione standard semplice sia sopra o sotto stimata a seconda della natura dell'autocorrelazione. La possibile esistenza di Polsi, Polsi Stagionali, Spostamenti di Livello e / o trend temporali locali offusca l'identificazione delle "eccezioni". L'uso di una "deviazione standard errata" per cercare di identificare le anomalie è errato perché è un test fuori modello rispetto a un "test in modello" che in definitiva è ciò che viene utilizzato per concludere sulla significatività statistica delle anomalie. Potresti cercare su Google "come eseguire il rilevamento dell'intervento statistico" per trovare fonti / software per farlo.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...