A hisztogram optimális tárolók számának kiszámítása

Érdekelne a lehető legoptimálisabb módszert megtalálni annak meghatározásához, hogy hány rekeszt használjak egy hisztogram. Adataimnak legfeljebb 30-350 objektumnak kell lennie, és különösen megpróbálok küszöbértéket alkalmazni (például Otsu módszeréhez), ahol a “jó” objektumokat, amelyeknek nekem kevesebbnek kellene lenniük, és jobban el kellene terjeszteniük, el vannak választva a “rossz” objektumoktól, amelyeknek sűrűbbnek kell lenniük. Egy konkrét értéknek minden objektumra 1-10 pontszáma lenne. 5-10 objektummal rendelkezem 6-10, és 20-25 objektummal 1-4 pontszámmal. Szeretnék találni egy hisztogram-binning mintát, amely általában lehetővé teszi Otsu módszeréhez hasonlóan az alacsony pontszámú objektumok küszöbét. Azonban az Otsu “láttam” megvalósításakor a tároló mérete 256 volt, és gyakran sokkal kevesebb adatpontom van, mint a 256-nak, ami számomra azt sugallja, hogy a 256 nem jó bin szám. Ilyen kevés adat esetén milyen megközelítéseket kell alkalmaznom a használandó kukák számának kiszámításához?

Megjegyzések

  • Szerintem Sturges ‘ szabály használható n < 200 esetén; ahol n a megfigyelések száma

Válasz

A A Freedman-Diaconis szabály nagyon robusztus és jól működik a gyakorlatban. A tároló szélessége $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Tehát a szemétkosarak száma $ (\ max- \ min) / h $ , ahol $ n $ a megfigyelések száma, a max a maximális érték, a min pedig a minimális érték.

Az R bázisban használhatja:

 hist(x, breaks="FD")  

Az ilyen opció nélküli más nyomtatási könyvtárak esetében (pl. ggplot2) a binwidth-et a következőképpen számíthatja ki:

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

Megjegyzések

  • @nico. Az R alapértelmezett értéke break = ” Sturges “, amely nem mindig ad jó eredményeket.
  • Hogyan történik számítsd ki IQR?
  • @KurtMueller Az IQR interkvartilis tartományt jelent. Keresse meg az 1. kvartilit és a 3. kvartilit, és a különbség IQR. Az IQR már R-vel van ellátva, így használhatja.
  • Ha nem tévedek, a válasznak num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD kilenc évvel ezelőtt nem létezett.

Válasz

Ha használja túl kevés tároló, a hisztogram nem igazán ábrázolja az adatokat nagyon jól. Ha túl sok tároló van, akkor egy törött fésűs megjelenést kap, ami szintén nem érzékelteti az eloszlást.

Egy megoldás egy olyan grafikon létrehozása, amely minden értéket megmutat. Vagy pontdiagram, vagy kumulatív frekvenciaeloszlás, amelyhez nincs szükség binre.

Ha frekvenciaelosztást szeretne létrehozni egyforma távolságú tárolókkal, akkor el kell döntenie, hogy hány tároló (vagy a szélesség) A döntés egyértelműen az értékek számától függ. Ha sok értéke van, a grafikonja jobban fog kinézni és informatívabb lesz, ha sok tárolója van. A wikipedia oldal számos módszert sorol fel a szemetesgyűjtemény kiszámításához a megfigyelések számából. A legegyszerűbb módszer az, ha a tárolók számát megegyezik az összevont értékek négyzetgyökével.

Ez a Hideaki Shimazaki oldala alternatív módszert ismertet. Kicsit bonyolultabb kiszámítani, de úgy tűnik, hogy nagyszerű munkát végez. Az oldal felső része Java alkalmazás. Görgessen azon túl, hogy lássa az elméletet és a magyarázatot, majd görgessen tovább, hogy megtalálja a módszert magyarázó cikkekre mutató hivatkozásokat.

Megjegyzések

  • A Hideaki ‘ oldalra mutató link megszakadt.

nem vagyok biztos benne, hogy ez ugyanaz: toyoizumilab.brain.riken.jp/hideaki/res/histogram.html

Válasz

Talán a “ A hisztogram variációi “, amelyeket Denby és Mallows érdekelnek:

Ez az új kijelző, amelyet” dhist “-nek nevezünk (átlósan – vágott hisztogram) megőrzi az egyenlő szélességű és az azonos területű hiszt kívánatos jellemzőit. Magas, keskeny kukákat fog mutatni, mint az ea hiszt, ha az adatok csúcsok vannak, és izolált szélső értékeket mutat, csakúgy, mint a szokásos hisztogram.

Említik is ez a kód R-ben kérésre rendelkezésre áll.

Válasz

Látta a Shimazaki-Shinomoto módszer?

Bár úgy tűnik, hogy számítási szempontból drága, jó eredményeket hozhat. Érdemes kipróbálni, ha a számítási idő nem a te problémád.Van néhány megvalósítási módja a java, a MATLAB stb., A következő linkben, amely elég gyorsan fut: webes felület

Megjegyzések

  • Itt van egy megvalósítás: gist.github.com/salotz/0158a99a75078b47538452111ec0faa2 . És igen, ez drágább, mivel kiválaszt egy tartományt a kukák számához, és mindegyikhez elkészít egy hisztogramot, majd kiszámítja a költségeket, majd kiválasztja a legkisebb költséget.

Válasz

Nem vagyok biztos benne, hogy ez szigorúan jó gyakorlatnak számít-e, de hajlamos vagyok egynél több hisztogramot készíteni, különböző tálcaszélességgel, és kiválasztani azt a hisztogramot, amelyet felhasználás, amely alapján a hisztogram megfelel az értelmezésnek, megpróbálok a legjobban kommunikálni. Míg ez bizonyos szubjektivitást vezet be a hisztogram kiválasztásában, azt az alapján igazolom, hogy sokkal több időm volt az adatok megértésére, mint annak, akinek a hisztogramot adom, ezért nagyon tömör üzenetet kell adnom nekik.

Én is nagy rajongója vagyok annak, hogy hisztogramokat mutatok be ugyanabban a pontban az egyes tárolókban, ahelyett, hogy ugyanaz a tálca szélessége legyen. Általában úgy találom, hogy ezek sokkal jobban reprezentálják az adatokat, mint az állandó szemétszélesség, bár nehezebb előállítani őket.

Megjegyzések

  • sajnálom, meg kellett volna említenem, hogy ezt automatizált módon kell megtenni. az a lehetőség, hogy ” többször is megcsinálja, amíg meg nem találom a célomnak leginkább megfelelőt ” nyert ‘ nem dolgozik nekem. számítási szempontból kell elvégezni …
  • Egyetértek – az az elképzelés, hogy van egy ” optimális ” bin A szélesség hatalmas egyszerűsítő feltételezés.

Válasz

Ha programszerűen kell meghatároznom a tárolók számát, általában kezdje el egy hisztogrammal, amely sokkal több kukát tartalmaz a szükségesnél. A hisztogram kitöltése után a kukákat addig kombinálom, amíg elég sok bejegyzésem van a kukába az általam használt módszerhez, pl. ha egy számlálási kísérletben a Poisson-bizonytalanságokat szeretném modellezni normál eloszlású bizonytalanságokkal, amíg több mint 10 bejegyzésem nem lesz.

Válasz

Kérjük, olvassa el ezt a választ a Mr. kiegészítéseként. Rob Hyndman válasza .

A hisztogram diagramok létrehozásához pontosan ugyanazokkal az intervallumokkal vagy “binwidths” a Freedman – Diaconis szabály használatával, akár alap R, akár ggplot2 csomaggal, használhatunk egyet hist() függvény értékeinek, nevezetesen breaks. Tegyük fel, hogy a qsec a mtcars adatokból a Freedman – Diaconis szabály használatával. Az alap R-ben a következőt használjuk:

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

Időközben div id = “931be0c390”>

csomag, amelyet használunk

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

Vagy alternatívaként

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

Mindegyik hisztogram diagramot generál pontosan ugyanazzal az intervallummal és a tárolók számával, mint rendelték.

Válasz

I 600 megfigyelésed van Au g / t-re. Az 1. tároló mérete ezt adja: ide írja a kép leírását

Az automatikus kiválasztás (hagyja ki a tartálytartományt) ezt adja: írja ide a kép leírását

Az adatok O “K-nak tűnnek az első és a második grafikonon, mintha nincs probléma az adatok integritásával. Csak a 0,1 (g / t) méretű edény válaszol a kérdésre: a mérések pontatlanok és pontatlanok voltak írja ide a kép leírását

Az én megítélésem: 1. Van nincs mérési technika a Földön, amely megmutatja a természeti jelenség valódi értékét. Minden mérés hozzávetőleges, némelyik közel áll a valós értékhez. Ez a mintavételi tervtől, a kalibrálástól, az emberi képesítéstől stb. Függ. 2. Ezért az eloszlás ferde, és nem szimmetrikus. 3. Mindazonáltal az eloszlás alakjának legalább hozzávetőlegesen “harangszerű” szakaszra kell hasonlítania. Egyszerre egy harang (hacsak nincs több geológiai környezet). 4. A frekvenciaelosztás a kuka méretének manipulálásával segíthet feltárni a mérések pontosságának és pontosságának mintáját. Annak érdekében, hogy egy kőre vágott szabály helyett kísérleti jelleggel vegye fel a kuka méretét.

Megjegyzések

  • Ez inkább megjegyzés, mintsem válaszoljon, hacsak nem mondja ki az erkölcsöt. Azt mondom ‘, hogy az erkölcs a következő: Minden szabály ökölszabály, némelyiknek több statisztikai alapja van, mint másnak, de a szabályok többsége nem biztos, hogy azt akarja, ha az eloszlások nagyon torzak. vagy kurtosis. Tehát használja az ön megítélését is.
  • Hozzászólásokat fűzött hozzá, de nem világos, hogy bármelyik hasznos új részletet tartalmazna a szálban. 1.általam rendben van, de itt nem ez a kérdés. 2. nem ‘ t következik az 1.-ből, mivel egyes eloszlások közel szimmetrikusak. 3. kétes: sok olyan helyzet van, ahol a harangokon kívül más alakzatok várhatók. 4. szintén kétséges, mivel az eredeti mérések minősége gyakran nem látszik egyetlen hisztogramon sem, de gyakran az eloszlás nagyon finom szerkezetére figyelemmel vizsgálható a legjobban.
  • 2.A majdnem szimmetrikus nem szimmetrikus. Nem lehet majdnem terhes: akár terhes, akár nem.
  • Persze, de a pontos szimmetria olyan ritka, hogy ha azt mondtam, hogy ” szimmetrikus ” valaki ezt ésszerűen kifogásolhatja. ‘ nagyon könnyen szimmetrikus; ezért és miként vannak a torzulás mércéi.
  • Megjegyzendő, de észrevétele általános volt, és hiányzott a most megadott összefüggés. Viszont azt mondtam, hogy ” kétes ” nem ” rossz “. A legfontosabb megjegyzésem továbbra is az, hogy a válaszod nem ‘ nem igazán ad hozzá a szálhoz arról, hogyan válasszuk ki a kuka méretét vagy azzal egyenértékűen a kukák számát. Ha van egy másik példa, amelyben ‘ nehéz, az a kérdés megpörgetése, valójában nem válasz.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük