Beregning af det optimale antal skraldespande i et histogram

Jeg er interesseret i at finde en så optimal metode som muligt til at bestemme, hvor mange skraldespande jeg skal bruge i en histogram. Mine data skal højst variere fra 30 til 350 objekter, og især forsøger jeg at anvende tærskelværdi (som Otsus metode) hvor “gode” objekter, som jeg skulle have færre af og skulle være mere spredt, er adskilt fra “dårlige” objekter, som burde være mere tætte i værdi. En konkret værdi ville have en score på 1-10 for hvert objekt. Jeg havde 5-10 objekter med score 6-10 og 20-25 objekter med score 1-4. Jeg vil gerne finde et histogram-binning-mønster, der generelt gør det muligt for noget i retning af Otsus metode at afskære objekter med lav score. Imidlertid i implementeringen af Otsus “jeg har set, var papirkurven størrelse 256, og ofte har jeg mange færre datapunkter end 256, hvilket for mig antyder, at 256 ikke er et godt binummer. Med så få data, hvilke tilgange skal jeg tage til beregning af antallet af skraldespande, der skal bruges?

Kommentarer

  • Jeg tror, at det ryster ‘ -reglen kan bruges til n < 200; hvor n er antallet af observationer

Svar

Freedman-Diaconis -reglen er meget robust og fungerer godt i praksis. Bin-bredden er indstillet til $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Så antallet af kasser er $ (\ max- \ min) / h $ , hvor $ n $ er antallet af observationer, max er den maksimale værdi og min er den mindste værdi.

I base R kan du bruge:

 hist(x, breaks="FD")  

For andre plottebiblioteker uden denne mulighed (f.eks. ggplot2) kan du beregne binbredde som:

 bw <- 2 * IQR(x) / length(x)^(1/3) ### for example ##### ggplot() + geom_histogram(aes(x), binwidth = bw)  

Kommentarer

  • @nico. Standard i R er pauser = ” Sturerer ” hvilket ikke altid giver gode resultater.
  • Hvordan får man beregne IQR?
  • @KurtMueller IQR betyder interkvartilområde. Kig efter 1. kvartil og 3. kvartil, og forskellen er IQR. IQR kommer allerede med R, så du kan bruge den.
  • Hvis jeg ikke tager fejl, skal svaret læse num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD eksisterede ikke for ni år siden.

Svar

Hvis du bruger for få skraldespande, viser histogrammet ikke rigtig dataene meget godt. Hvis du har for mange skraldespande, får du et brudt kamudseende, hvilket heller ikke giver en fornemmelse af fordelingen.

En løsningen er at oprette en graf, der viser hver værdi. Enten en prikplot eller en kumulativ frekvensfordeling, som ikke kræver nogen kasser.

Hvis du vil oprette en frekvensfordeling med kasser med lige store mellemrum, skal du beslutte, hvor mange kasser (eller bredden Afgørelsen afhænger helt klart af antallet af værdier. Hvis du har mange værdier, vil din graf se bedre ud og være mere informativ, hvis du har mange skraldespande. Dette wikipedia-side viser en række metoder til at bestemme bin-bredden ud fra antallet af observationer. Den enkleste metode er at indstille antallet af skraldespande svarende til kvadratroden af antallet af værdier, du binder.

Denne side fra Hideaki Shimazaki forklarer en alternativ metode. Det er lidt mere kompliceret at beregne, men ser ud til at gøre et godt stykke arbejde. Den øverste del af siden er en Java-app. Rul forbi den for at se teorien og forklaringen, og fortsæt derefter med at rulle for at finde links til papirerne, der forklarer metoden.

Kommentarer

Svar

Måske papiret “ Variationer på histogrammet “af Denby og Mallows vil være af interesse:

Denne nye skærm, som vi kalder” dhist “(til diagonalt -cut histogram) bevarer de ønskelige funktioner i både hist med samme bredde og hist med samme areal. Det viser høje smalle skraldespand som ea hist, når der er pigge i dataene, og viser isolerede afvigelser ligesom det sædvanlige histogram.

De nævner også den kode i R er tilgængelig på anmodning.

Svar

Så du Shimazaki-Shinomoto -metoden?

Selvom det ser ud til at være beregningsmæssigt dyrt, kan det give dig gode resultater. Det er værd at prøve, hvis beregningstid ikke er dit problem.Der er nogle implementeringer af denne metode i java, MATLAB osv. I følgende link, der kører hurtigt nok: web-interface

Kommentarer

Svar

Jeg er ikke sikker på, at dette tæller som strengt god praksis, men jeg har tendens til at producere mere end et histogram med forskellige bakkebredder og vælge det histogram, som histogrammet skal brug baseret på hvilket histogram, der passer til den fortolkning, jeg prøver at kommunikere bedst. Mens dette introducerer en vis subjektivitet i valget af histogram, retfærdiggør jeg det på baggrund af, at jeg har haft meget mere tid til at forstå dataene end den person, jeg giver histogrammet til, så jeg er nødt til at give dem en meget kortfattet besked.

Jeg er også en stor fan af at præsentere histogrammer med det samme antal punkter i hver bin i stedet for den samme bin-bredde. Jeg finder normalt, at disse repræsenterer dataene langt bedre end den konstante bin-bredde, selvom de er sværere at producere.

Kommentarer

  • undskyld, jeg skulle have nævnt, at jeg har brug for at gøre dette på en automatiseret måde. muligheden for at ” gør det flere gange, indtil jeg finder den der passer bedst til mit formål ” vandt ‘ arbejder ikke for mig. skal gøres beregningsmæssigt …
  • Jeg er enig – ideen om, at der er en ” optimal ” bredde er en enorm forenklet antagelse.

Svar

Hvis jeg har brug for at bestemme antallet af skraldespande programmatisk, plejer jeg normalt start med et histogram, der har langt flere kasser end nødvendigt. Når histogrammet er udfyldt, kombinerer jeg derefter kasser, indtil jeg har nok poster pr. Kasse til den metode, jeg bruger, f.eks. hvis jeg vil modellere Poisson-usikkerheder i et tælleeksperiment med usikkerhed fra en normalfordeling, indtil jeg har mere end noget som 10 poster.

Svar

Se dette svar som et supplement til Mr. Rob Hyndmans svar .

For at oprette histogramdiagrammer med nøjagtigt de samme intervaller eller “binwidths” ved hjælp af Freedman – Diaconis-reglen enten med grundlæggende R- eller ggplot2 -pakke, vi kan bruge en af værdierne for hist() funktion, nemlig breaks. Antag, at vi vil oprette et histogram af qsec fra mtcars data ved hjælp af Freedman – Diaconis-reglen. I grundlæggende R bruger vi

x <- mtcars$qsec hist(x, breaks = "FD") 

I mellemtiden i ggplot2 pakke, vi bruger

h <- hist(x, breaks = "FD", plot = FALSE) qplot(x, geom = "histogram", breaks = h$breaks, fill = I("red"), col = I("white")) 

Eller alternativt

ggplot(mtcars, aes(x)) + geom_histogram(breaks = h$breaks, col = "white") 

Alle genererer histogramdiagrammer med nøjagtig samme intervaller og antal skraldespande som beregnet.

Svar

I har 600 observationer for Au g / t. Bin størrelse 1 giver mig dette: indtast billedebeskrivelse her

Automatisk valg (udelad binområdet) giver dette: indtast billedbeskrivelse her

Dataene ser O “K ud på den første og anden graf, som om der er ikke noget problem med dataintegritet. Kun bin størrelse 0,1 (g / t) besvarer spørgsmålet: målingerne var både unøjagtige og upræcise indtast billedebeskrivelse her

Min vurdering: 1. Der er ingen målingsteknik på jorden for at vise den sande værdi af naturfænomenet. Alle målinger er omtrentlige, nogle er tæt på den sande værdi. Det afhænger af prøvetagningsdesignet, kalibreringen, menneskelige kvalifikationer osv. 2. Derfor er fordelingen skæv snarere end symmetrisk. 3. Ikke desto mindre skal fordelingsformen ligne et “klokkelignende” afsnit mindst i det mindste. En klokke ad gangen (medmindre der er flere geologiske miljøer). 4. Frekvensfordeling med beholderstørrelsesmanipulation kan hjælpe med at afsløre mønster på, hvor nøjagtige og præcise, hvis målingerne var udført. Så man har brug for en eksperimentel afhentning af skraldestørrelsen snarere end en regel, der er skåret på sten.

Kommentarer

  • Dette er mere en kommentar end en svar medmindre du stave moral. Jeg ‘ Jeg siger, at moral er dette: Alle regler er tommelfingerregler, nogle har mere statistisk grundlag end andre, men de fleste regler gør muligvis ikke, hvad du ønsker, hvis distributioner har meget høj skævhed eller kurtosis. Så brug også din dom.
  • Du har tilføjet kommentarer, men det er ikke klart, at nogen bidrager med nyttige nye detaljer til tråden. 1.er fint for mig, men ikke problemet her. 2. følger ikke ‘ fra 1. da nogle distributioner er næsten symmetriske. 3. er tvivlsom: der er mange situationer, hvor der forventes andre former end klokker. 4. er også tvivlsom, da kvaliteten af de originale målinger ofte ikke fremgår af noget histogram, men ofte bedst undersøges med opmærksomhed på den meget fine struktur i en distribution.
  • 2. Næsten symmetrisk er ikke symmetrisk. Du kan ikke være næsten gravid: enten gravid eller ej.
  • Sikker på, men nøjagtig symmetri i data er så meget sjælden, at hvis jeg havde sagt ” symmetrisk ” nogen kan med rimelighed også modsætte sig det. Det ‘ er meget let at være næsten symmetrisk; det er derfor og hvordan vi har målinger af skævhed.
  • Bemærk, men din kommentar var generel og manglede den kontekst, du nu giver. Til gengæld sagde jeg ” tvivlsomme ” ikke ” forkert “. Min største kommentar er fortsat, at dit svar ikke ‘ ikke virkelig tilføjer meget til tråden om, hvordan du vælger skraldestørrelse eller tilsvarende antal skraldespande. At have et andet eksempel, hvor det ‘ er vanskeligt, er et spin på spørgsmålet, ikke rigtig et svar.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *