Sono interessato a trovare un metodo il più ottimale possibile per determinare quanti contenitori dovrei usare in un istogramma. I miei dati dovrebbero variare da 30 a 350 oggetti al massimo, e in particolare sto cercando di applicare la soglia (come il metodo di Otsu) dove oggetti “buoni”, di cui dovrei avere meno e dovrebbero essere più distribuiti, sono separati dagli oggetti “cattivi”, che dovrebbero avere un valore più denso. Un valore concreto avrebbe un punteggio di 1-10 per ogni oggetto. Avevo 5-10 oggetti con punteggio 6-10 e 20-25 oggetti con punteggi 1-4. Mi piacerebbe trovare un modello di raggruppamento dellistogramma che generalmente consenta a qualcosa come il metodo di Otsu di limitare gli oggetti con punteggio basso. Tuttavia, nellimplementazione di Otsu che ho visto, la dimensione del bin era 256, e spesso ho molti meno punti dati rispetto a 256, il che mi suggerisce che 256 non è un buon numero di bin. Con così pochi dati, quali approcci dovrei adottare per calcolare il numero di contenitori da utilizzare?
Commenti
- Penso che Sturges può essere utilizzata per n < 200; dove n è il numero di osservazioni
Risposta
Il Freedman-Diaconis è molto robusta e funziona bene nella pratica. La larghezza del bin è impostata su $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Quindi il numero di bin è $ (\ max- \ min) / h $ , dove $ n $ è il numero di osservazioni, max è il valore massimo e min è il valore minimo.
In base R, puoi usare:
hist(x, breaks="FD")
Per altre librerie di stampa senza questa opzione (ad esempio, ggplot2
), puoi calcolare la larghezza bin come:
bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)
Commenti
- @nico. Limpostazione predefinita in R è breaks = ” Sturges ” che non sempre dà buoni risultati.
- Come si fa calcola
IQR
? - @KurtMueller IQR significa intervallo interquartile. Cerca il 1 ° e il 3 ° quartile e la differenza è IQR. IQR viene già fornito con R, quindi puoi usarlo.
- Se non sbaglio, la risposta dovrebbe essere
num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
-
nclass.FD
non esisteva nove anni fa.
Risposta
Se utilizzi troppo pochi contenitori, listogramma non rappresenta molto bene i dati. Se hai troppi contenitori, si ottiene un aspetto a pettine rotto, il che non dà unidea della distribuzione.
Uno la soluzione è creare un grafico che mostri ogni valore. Un diagramma a punti o una distribuzione di frequenza cumulativa, che non richiede alcun bin.
Se si desidera creare una distribuzione di frequenza con bin equidistanti, è necessario decidere quanti bin (o la larghezza di ciascuno). La decisione dipende chiaramente dal numero di valori. Se hai molti valori, il grafico avrà un aspetto migliore e sarà più informativo se hai molti contenitori. Questo La pagina di wikipedia elenca diversi metodi per decidere la larghezza del bin dal numero di osservazioni. Il metodo più semplice è impostare il numero di bin uguale alla radice quadrata del numero di valori che stai raggruppando.
Questa pagina di Hideaki Shimazaki spiega un metodo alternativo. È un po più complicato da calcolare, ma sembra fare un ottimo lavoro. La parte superiore della pagina è unapp Java. Scorri oltre per vedere la teoria e la spiegazione, quindi continua a scorrere per trovare i collegamenti ai documenti che spiegano il metodo.
Commenti
- Il collegamento alla pagina di Hideaki ‘ è interrotto. ‘ non sono sicuro che sia la stessa cosa: toyoizumilab.brain.riken.jp/hideaki/res/histogram.html
Risposta
Forse il documento “ Le variazioni sullistogramma “di Denby e Mallows saranno interessanti:
Questa nuova visualizzazione che chiamiamo” dhist “(per diagonale -cut histogram) preserva le caratteristiche desiderabili sia dellhist di uguale larghezza che dellhist di uguale area. Mostrerà contenitori alti e stretti come ea hist quando sono presenti picchi nei dati e mostrerà valori anomali isolati proprio come il solito istogramma.
Menzionano anche quel codice in R è disponibile su richiesta.
Risposta
Hai visto il Shimazaki-Shinomoto ?
Sebbene sembri costoso dal punto di vista computazionale, può darti buoni risultati. Vale la pena provare se il tempo di calcolo non è il tuo problema.Ci sono alcune implementazioni di questo metodo in java, MATLAB, ecc., Nel seguente link, che funziona abbastanza velocemente: web-interface
Commenti
- Ecco unimplementazione: gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . E sì, è più costoso poiché scegli un intervallo per il numero di contenitori e devi creare un istogramma per ciascuno e quindi calcolare un costo, quindi scegliere quello con il costo più basso.
Risposta
Non sono sicuro che questo conti come una buona pratica, ma tendo a produrre più di un istogramma con diverse larghezze di bin e scelgo listogramma quale istogramma uso in base a quale istogramma si adatta allinterpretazione che sto cercando di comunicare al meglio. Anche se questo introduce un po di soggettività nella scelta dellistogramma, lo giustifico in base al fatto che ho avuto molto più tempo per comprendere i dati rispetto alla persona a cui sto dando listogramma, quindi devo dare loro un messaggio molto conciso.
Sono anche un grande fan della presentazione di istogrammi con lo stesso numero di punti in ogni bin piuttosto che la stessa larghezza del bin. Di solito trovo che questi rappresentino i dati molto meglio della larghezza costante del bin anche se sono più difficili da produrre.
Commenti
- scusa, avrei dovuto dire che ho bisogno di farlo in modo automatico. lopzione di ” più volte finché non trovo quella più adatta al mio scopo ” ha vinto ‘ t funziona per me. deve essere fatto in modo computazionale …
- Sono daccordo – lidea che ce ne sia uno ” ottimale ” bin la larghezza è un enorme presupposto semplificativo.
Risposta
Se ho bisogno di determinare il numero di contenitori in modo programmatico, di solito inizia con un istogramma che ha molti più contenitori del necessario. Una volta riempito listogramma, combino i contenitori finché non ho abbastanza voci per contenitore per il metodo che sto utilizzando, ad es. se voglio modellare le incertezze di Poisson in un esperimento di conteggio con incertezze da una distribuzione normale fino a quando non ho più di qualcosa come 10 voci.
Risposta
Vedi questa risposta come complementare di Mr. La risposta di Rob Hyndman .
Per creare grafici di istogrammi con esattamente gli stessi intervalli o “binwidths” utilizzando la regola Freedman – Diaconis con R di base o ggplot2
pacchetto, possiamo usarne uno dei valori della funzione hist()
, ovvero breaks
. Supponiamo di voler creare un istogramma di qsec
da mtcars
dati utilizzando la regola Freedman – Diaconis. In base R usiamo
x <- mtcars$qsec hist(x, breaks = "FD")
Nel frattempo, in ggplot2
pacchetto che utilizziamo
h <- hist(x, breaks = "FD", plot = FALSE) qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white"))
Oppure, in alternativa
ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white")
Tutti generano grafici di istogrammi con esattamente gli stessi intervalli e numero di bin come previsto.
Risposta
I ho 600 osservazioni per Au g / t. La dimensione del contenitore 1 mi dà questo:
La selezione automatica (ometti lintervallo bin) fornisce questo:
I dati appaiono O “K sul primo e sul secondo grafico, come se non ci sono problemi con lintegrità dei dati. Solo la dimensione del contenitore 0,1 (g / t) risponde alla domanda: le misurazioni erano sia imprecise che imprecise
Il mio giudizio: 1. Cè nessuna tecnica di misurazione sulla Terra per mostrare il vero valore del fenomeno naturale. Tutte le misurazioni sono approssimative, alcune vicine al valore reale. Dipende dalla progettazione del campionamento, dalla calibrazione, dalle qualifiche umane, ecc. 2. Questo è il motivo per cui la distribuzione è distorta piuttosto che simmetrica. 3. Tuttavia, la forma della distribuzione dovrebbe assomigliare a una sezione “a campana”, almeno approssimativamente. Una campana alla volta (a meno che non ci siano più ambienti geologici). 4. La distribuzione della frequenza con la manipolazione delle dimensioni del contenitore può aiutare a rivelare il modello su quanto accurate e precise siano state eseguite le misurazioni. Quindi è necessario un rilevamento sperimentale delle dimensioni del contenitore piuttosto che una regola tagliata sulla pietra.
Commenti
- Questo è più un commento che un rispondi a meno che tu non abbia spiegato la morale. ‘ dico che la morale è questa: tutte le regole sono regole pratiche, alcune hanno più basi statistiche di altre, ma la maggior parte delle regole potrebbe non fare ciò che desideri se le distribuzioni hanno unasimmetria molto elevata o curtosi. Quindi, usa anche il tuo giudizio.
- Hai aggiunto commenti, ma non è chiaro che alcun contributo contribuisca a nuovi dettagli utili al thread. 1.per me va bene, ma non è il problema qui. 2. ‘ non segue da 1. poiché alcune distribuzioni sono quasi simmetriche. 3. è dubbio: ci sono molte situazioni in cui sono previste forme diverse dalle campane. 4. è anche dubbio poiché la qualità delle misurazioni originali spesso non è evidente da alcun istogramma, ma spesso è meglio esaminarla con attenzione alla struttura molto fine di una distribuzione.
- 2. Quasi simmetrica non è simmetrica. Non puoi essere quasi incinta: incinta o no.
- Certo, ma la simmetria esatta nei dati è così rara che se avessi detto ” simmetrica ” qualcuno potrebbe ragionevolmente obiettare anche a questo. ‘ è molto facile essere quasi simmetrici; ecco perché e come abbiamo misure di asimmetria.
- Notato, ma il tuo commento era generale e mancava del contesto che fornisci ora. A mia volta ho detto ” dubious ” non ” sbagliato “. Il mio commento principale resta che la tua risposta non ‘ aggiunge molto al thread su come scegliere la dimensione del contenitore o il numero equivalente di contenitori. Avere un altro esempio in cui è ‘ difficile è un giro sulla domanda, non proprio una risposta.