Optimaalisen roskasäiliöiden määrän laskeminen histogrammissa

Olen kiinnostunut löytämään mahdollisimman optimaalisen menetelmän määritellessäni kuinka monta lokeroa minun pitäisi käyttää Tietojeni tulisi olla enintään 30-350 objektia, ja etenkin yritän soveltaa kynnystä (kuten Otsu-menetelmä) ”hyviin” kohteisiin, joita minulla pitäisi olla vähemmän ja jotka tulisi levittää enemmän, erotetaan ”huonoista” esineistä, joiden arvon tulisi olla tiheämpi. Konkreettisella arvolla olisi pisteet 1-10 jokaiselle objektille. Minulla oli 5-10 kohdetta pisteillä 6-10 ja 20-25 esineitä pisteillä 1-4. Haluaisin löytää histogrammin yhdistävän mallin, joka yleensä sallii Otsun menetelmän kaltaisen kynnyksen matalien pisteiden kohteille. Olen kuitenkin nähnyt Otsun toteuttaman roskakorin koon 256, ja usein minulla on paljon vähemmän datapisteitä kuin 256, mikä mielestäni viittaa siihen, että 256 ei ole hyvä roskakorin numero. Millä tavoin minun on käytettävä niin vähän tietoja, että lasken käytettävien lokeroiden määrän?

Kommentit

  • Luulen, että Sturges ’ -sääntöä voidaan käyttää n < 200; missä n on havaintojen lukumäärä

vastaus

Freedman-Diaconis -sääntö on erittäin vankka ja toimii hyvin käytännössä. Lokeron leveys on $ h = 2 \ kertaa \ text {IQR} \ kertaa n ^ {- 1/3} $ . Joten roskakorien lukumäärä on $ (\ max- \ min) / h $ , missä $ n $ on havaintojen lukumäärä, max on suurin arvo ja min on vähimmäisarvo.

Pohjassa R voit käyttää:

 hist(x, breaks="FD")  

Muille kirjastojen kirjastoille, joissa ei ole tätä vaihtoehtoa (esim. ggplot2), voit laskea kaistanleveyden seuraavasti:

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

Kommentit

  • @nico. R: n oletusarvo on break = ” Sturges ”, joka ei aina anna hyviä tuloksia.
  • Kuinka jokin Laske IQR?
  • @KurtMueller IQR tarkoittaa kvartiilien välistä aluetta. Etsi 1. kvartiili ja 3. kvartiili, ja ero on IQR. IQR: ssä on jo R, joten voit käyttää sitä.
  • Jos en erehdy, vastauksen tulisi olla num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD ei ollut olemassa yhdeksän vuotta sitten.

Vastaa

Jos käytät liian vähän roskakoria, histogrammi ei oikeastaan kuvaa tietoja hyvin. Jos sinulla on liikaa roskakoria, saat rikki kampa-ilmeen, mikä ei myöskään anna tunnetta jakelusta.

Yksi ratkaisu on luoda kaavio, joka näyttää kaikki arvot. Joko pistekäyrä tai kumulatiivinen taajuusjakauma, joka ei vaadi roskakoria.

Jos haluat luoda taajuusjakauman tasaisin välein olevilla roskilla, sinun on päätettävä, kuinka monta alusta (tai leveys Päätös riippuu selvästi arvojen lukumäärästä. Jos sinulla on paljon arvoja, kaavio näyttää paremmalta ja informatiivisemmalta, jos sinulla on paljon lokeroita. Tämä wikipedia-sivulla luetellaan useita menetelmiä, joilla päätetään roskakorin leveys havaintojen lukumäärän perusteella. Yksinkertaisin tapa on asettaa roskakorien lukumäärä yhtä suuri kuin yhdistettävien arvojen neliöjuuri.

Tämä Hideaki Shimazakin sivu selittää vaihtoehtoisen menetelmän. Laskeminen on hieman monimutkaisempi, mutta näyttää tekevän hyvää työtä. Sivun yläosa on Java-sovellus. Vieritä sen ohi nähdäksesi teoria ja selitykset, jatka sitten vierittämistä löytääksesi linkit menetelmää selittäviin artikkeleihin.

Kommentit

vastaus

Ehkä paperi ” Denbyn ja Mallowsin histogrammin muunnelmat ”ovat kiinnostavia:

Tämä uusi näyttö, jota kutsumme” dhistiksi ”(diagonaalisesti) – leikattu histogrammi) säilyttää sekä yhtä leveän historin että saman pinta-alan hist: n toivotut piirteet. Se näyttää korkeat kapeat roskakorit, kuten ea hist, kun tiedoissa on piikkejä, ja näyttää eristetyt poikkeamat aivan kuten tavallisessa histogrammissa.

He mainitsevat myös kyseinen koodi R: ssä on saatavilla pyynnöstä.

Vastaa

Näitkö Shimazaki-Shinomoto -menetelmä?

Vaikka se näyttää olevan laskennallisesti kallista, se voi antaa sinulle hyviä tuloksia. Kannattaa kokeilla, jos laskennallinen aika ei ole ongelma.Javan, MATLABin jne. Alla on joitain tämän menetelmän toteutuksia seuraavassa linkissä, joka toimii riittävän nopeasti: web-käyttöliittymä

Kommentit

  • Tässä on toteutus: gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . Ja kyllä, se on kalliimpaa, koska valitset alueen roskakorien lukumäärälle ja sinun on tehtävä histogrammi kullekin ja laskettava sitten kustannukset, sitten valittava vähiten kustannuksia vastaava. h2> Vastaa

    En ole varma, että tämä lasketaan ehdottomasti hyväksi käytännöksi, mutta pyrin tuottamaan useampaa kuin yhtä histogrammia eri lokeroleveydellä ja valitsen histogrammin käyttö, jonka perusteella histogrammi sopii tulkintaan, yritän kommunikoida parhaiten. Vaikka tämä tuo jonkin verran subjektiivisuutta histogrammin valintaan, perustelen sen sillä perusteella, että minulla on ollut paljon enemmän aikaa ymmärtää tietoja kuin henkilöllä, jolle annan histogrammin, joten minun on annettava heille erittäin tiivis viesti.

    Olen myös suuri fani esittää histogrammeja, joissa on sama määrä pisteitä kussakin lokerossa kuin sama lokeron leveys. Yleensä nämä edustavat tietoja paljon paremmin kuin vakiolokeron leveys, vaikka niitä onkin vaikeampaa tuottaa.

    Kommentit

    • anteeksi, minun olisi pitänyt mainita, että minun on tehtävä tämä automaattisesti. vaihtoehto ” tehdä se useita kertoja, kunnes löydän tarkoitukselleni parhaiten sopivan vaihtoehdon ” voitti ’ ei toimi minulle. on tehtävä laskennallisesti …
    • Olen samaa mieltä – ajatus siitä, että on olemassa yksi ” optimaalinen ” bin leveys on valtava yksinkertaistava oletus.

    Vastaa

    Jos minun on määritettävä ohjelmallisten lokeroiden määrä, yleensä aloita histogrammilla, jossa on paljon enemmän roskia kuin tarvitaan. Kun histogrammi on täytetty, yhdistän roskakorit, kunnes minulla on tarpeeksi merkintöjä lokeroa kohti käyttämääni menetelmää varten, esim. jos haluan mallintaa Poissonin epävarmuustekijät laskentakokeessa epävarmuustekijöillä normaalijakaumasta, kunnes minulla on enemmän kuin jotain 10 merkintää.

    Vastaa

    Katso tämä vastaus Mr. Rob Hyndmanin vastaus .

    Luodaksemme histogrammikaaviot täsmälleen samoilla aikaväleillä tai ”binwidths” Freedman – Diaconis-säännön avulla joko R- tai ggplot2 -paketilla, voimme käyttää yhtä hist() -funktion arvoista, nimittäin breaks. Oletetaan, että haluamme luoda histogrammin qsec mtcars -tietojen avulla Freedman – Diaconis-säännön avulla. Perusasetuksessa R käytämme

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

    Samaan aikaan div id = ”931be0c390”>

    paketti, jota käytämme

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

    Tai vaihtoehtoisesti

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

    Ne kaikki tuottavat histogrammikaavioita täsmälleen samoilla aikaväleillä ja lokeroiden määrällä kuin on tarkoitettu.

Vastaa

I on 600 havaintoa Au g / t: lle. Säiliön koko 1 antaa minulle tämän: kirjoita kuvan kuvaus tähän

Automaattinen valinta (jätä roskialue pois) antaa tämän: kirjoita kuvan kuvaus tähän

Tiedot näyttävät O ”K ensimmäiseltä ja toiselta kaaviosta, ikään kuin tietojen eheydessä ei ole ongelmaa. Vain lokeron koko 0,1 (g / t) vastaa kysymykseen: mittaukset olivat sekä epätarkkoja että epätarkkoja. kirjoita kuvan kuvaus tähän

Tuomioni: 1. On maapallolla ei ole mittaustekniikkaa, joka osoittaisi luonnonilmiön todellisen arvon. Kaikki mittaukset ovat likimääräisiä, jotkut ovat lähellä todellista arvoa. Se riippuu näytteenotosta, kalibroinnista, ihmisen pätevyydestä jne. 2.Siksi jakelu on vinossa eikä symmetrisessä. 3.Jakauman muodon tulisi kuitenkin muistuttaa ainakin kellon muotoista osaa. Yksi kello kerrallaan (ellei geologisia ympäristöjä ole useita). 4.Taajuuden jakautuminen roskakoon manipulaation avulla voi paljastaa mallin siitä, kuinka tarkkoja ja tarkkoja mittaukset oli tehty. Joten tarvitset kokeellisen poiminnan roskakorista kivestä leikatun säännön sijasta.

Kommentit

  • Tämä on enemmän kommentti kuin Vastaa, ellet sano moraalia. Sanon ’ d, että moraali on seuraava: Kaikki säännöt ovat nyrkkisääntöjä, joillakin on enemmän tilastollisia perusteita kuin toisilla, mutta useimmat säännöt eivät välttämättä tee mitä haluat, jos jakaumilla on erittäin suuri vinous tai kurtosis. Joten, käytä myös arvioitasi.
  • Olet lisännyt kommentteja, mutta en ole selvää, että mikään antaa hyödyllisiä uusia yksityiskohtia säikeelle. 1.Minulla on hieno asia, mutta ei asia tässä. 2. ei seuraa ’ t kohdasta 1. koska jotkut jakaumat ovat lähes symmetrisiä. 3. on epäilyttävä: on monia tilanteita, joissa odotetaan muita muotoja kuin kelloja. 4. on myös epäilyttävä, koska alkuperäisten mittausten laatu ei useinkaan käy ilmi mistään histogrammista, mutta usein se on parasta tutkia huomioiden jakauman erittäin hieno rakenne.
  • 2. Lähes symmetrinen ei ole symmetrinen. Et voi olla melkein raskaana: joko raskaana vai ei.
  • Toki, mutta tarkka symmetria tiedoissa on niin hyvin harvinaista, että jos olisin sanonut ” symmetrinen ” joku saattaa kohtuudella vastustaa myös sitä. ’ on hyvin helppo olla lähes symmetrinen; siksi ja miten meillä on mittasuhteita.
  • Huomasi, mutta kommenttisi oli yleinen ja puuttui nyt antamasi asiayhteys. Toisaalta sanoin ” epäilyttävä ” ei ” väärä ”. Tärkein kommenttini on edelleen, että vastauksesi ei ’ t todellakaan tuota paljon säiettä siitä, kuinka valitaan roskakorin koko tai vastaava määrä roskakoria. Jos sinulla on toinen esimerkki, josta se on ’ vaikeaa, on kysymyksen pyörre, ei oikeastaan vastaus.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *