Calculul numărului optim de pubele dintr-o histogramă

Sunt interesat să găsesc o metodă cât mai optimă posibil pentru a determina câte pubere ar trebui să folosesc într-o histograma. Datele mele ar trebui să varieze de la 30 la 350 de obiecte cel mult și, în special, încerc să aplic praguri (cum ar fi metoda lui Otsu) unde obiectele „bune”, pe care ar trebui să le am mai puține și ar trebui să fie mai răspândite, sunt separate de obiecte „rele”, care ar trebui să fie mai dense ca valoare. O valoare concretă ar avea un scor de 1-10 pentru fiecare obiect. Aș avea 5-10 obiecte cu scoruri 6-10 și 20-25 de obiecte cu scorurile 1-4. Aș dori să găsesc un model de combinare a histogramei care permite, în general, ceva de genul metodei lui Otsu să pragă obiectele cu punctaj scăzut. Cu toate acestea, în implementarea lui Otsu, am văzut, dimensiunea coșului a fost de 256 și de multe ori am mult mai puține puncte de date decât 256, ceea ce pentru mine sugerează că 256 nu este un număr bun de coș. Cu atât de puține date, ce abordări ar trebui să iau pentru a calcula numărul de pubele de utilizat?

Comentarii

  • Cred că Sturges ‘ regula poate fi utilizată pentru n < 200; unde n este numărul de observații

Răspuns

Regula Freedman-Diaconis este foarte robustă și funcționează bine în practică. Lățimea coșului este setată la $ h = 2 \ times \ text {IQR} \ times n ^ {- 1/3} $ . Deci numărul de pubele este $ (\ max- \ min) / h $ , unde $ n $ este numărul de observații, max este valoarea maximă și min este valoarea minimă.

În baza R, puteți utiliza:

 hist(x, breaks="FD")  

Pentru alte biblioteci de graficare fără această opțiune (de exemplu, ggplot2), puteți calcula lățimea binară ca:

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

Comentarii

  • @nico. Valoarea implicită în R este break = ” Sturges ” care nu dă întotdeauna rezultate bune.
  • Cum se face unul calculați IQR?
  • @KurtMueller IQR înseamnă interval intercuartil. Căutați prima quartilă și a treia quartilă, iar diferența este IQR. IQR vine deja cu R, astfel încât să îl puteți folosi.
  • Dacă nu mă înșel, răspunsul ar trebui să citească num_bins <- diff(range(x)) / (2 * IQR(x) / length(x)^(1/3))
  • nclass.FD nu exista acum nouă ani.

Răspuns

Dacă utilizați prea puține coșuri, histograma nu descrie foarte bine datele. Dacă aveți prea multe coșuri, veți avea un aspect de pieptene rupt, care, de asemenea, nu oferă un sens al distribuției.

Unul soluția este de a crea un grafic care arată fiecare valoare. Fie un grafic de puncte, fie o distribuție cumulativă a frecvenței, care nu necesită niciun coș.

Dacă doriți să creați o distribuție de frecvență cu coșuri la distanțe egale, trebuie să decideți câte coșuri (sau lățimea din fiecare). Decizia depinde în mod clar de numărul de valori. Dacă aveți o mulțime de valori, graficul dvs. va arăta mai bine și va fi mai informativ dacă aveți o mulțime de pubele. pagina wikipedia enumeră mai multe metode pentru a decide lățimea coșului de la numărul de observații. Cea mai simplă metodă este să setați numărul de coșuri egal cu rădăcina pătrată a numărului de valori pe care le colecționați.

Această pagină de la Hideaki Shimazaki explică o metodă alternativă. Este puțin mai complicată de calculat, dar pare să facă o treabă excelentă. Partea de sus a paginii este o aplicație Java. Derulați pe lângă aceasta pentru a vedea teoria și explicația, apoi continuați să derulați pentru a găsi linkuri către lucrările care explică metoda.

Comentarii

Răspuns

Poate ziarul „ Variațiile histogramei „de Denby și Mallows vor fi de interes:

Acest nou afișaj pe care îl numim” dhist „(pentru diagonală -cut histogramă) păstrează caracteristicile dorite atât ale hist-ului cu lățime egală, cât și ale hist-ului cu zonă egală. Va afișa pubele înguste înalte, cum ar fi hist, atunci când există vârfuri în date și va afișa valori izolate la fel ca histograma obișnuită.

De asemenea, menționează codul respectiv din R este disponibil la cerere.

Răspuns

Ați văzut Metoda Shimazaki-Shinomoto ?

Deși pare a fi costisitoare din punct de vedere al calculului, vă poate oferi rezultate bune. Merită să încerci dacă timpul de calcul nu este problema ta.Există câteva implementări ale acestei metode în java, MATLAB etc. în următorul link, care rulează suficient de rapid: web-interface

Comentarii

Răspuns

Nu sunt sigur că acest lucru este considerat ca fiind o practică strict bună, dar tind să produc mai multe histograme cu lățimi diferite ale coșului și să aleg histograma la care histogramă utilizare pe baza căreia histograma se potrivește interpretării pe care încerc să comunic cel mai bine. Deși acest lucru introduce o oarecare subiectivitate în alegerea histogramei, o justific pe baza că am avut mult mai mult timp să înțeleg datele decât persoana căreia îi dau histograma, așa că trebuie să le transmit un mesaj foarte concis.

Sunt, de asemenea, un mare fan al prezentării histogramelor cu același număr de puncte în fiecare coș, mai degrabă decât cu aceeași lățime a coșului. De obicei, acestea reprezintă datele mult mai bune decât lățimea constantă a coșului, deși sunt mai greu de produs.

Comentarii

  • îmi pare rău, ar fi trebuit să menționez că trebuie să fac acest lucru într-un mod automat. opțiunea ” de a o face de mai multe ori până când o găsesc pe cea care se potrivește cel mai bine scopului meu ” a câștigat ‘ nu funcționează pentru mine. trebuie făcut calculatic …
  • Sunt de acord – ideea că există un ” optim ” lățimea este o presupunere simplificatoare imensă.

Răspuns

Dacă trebuie să stabilesc numărul de coșuri programat, de obicei începeți cu o histogramă care are mult mai multe coșuri decât este necesar. Odată ce histograma este umplută, atunci combinez coșurile până când am suficiente intrări pe coș pentru metoda pe care o folosesc, de ex. dacă vreau să modelez incertitudinile Poisson într-un experiment de numărare cu incertitudini dintr-o distribuție normală până când am mai mult de ceva de genul 10 intrări.

Răspuns

Vă rugăm să vedeți acest răspuns ca un complement al Răspunsul lui Rob Hyndman .

Pentru a crea graficele histogramei cu exact aceleași intervale sau „lățimi binare” utilizând regula Freedman – Diaconis fie cu pachetul R de bază, fie cu ggplot2, putem folosi unul a valorilor funcției hist() și anume breaks. Să presupunem că dorim să creăm o histogramă qsec din mtcars date folosind regula Freedman – Diaconis. În R de bază folosim

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

Între timp, în ggplot2 pachet pe care îl folosim

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

Sau, alternativ

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

Toate acestea generează graficele histogramei cu exact aceleași intervale și numărul de pubele așa cum se intenționează.

Răspuns

I au 600 de observații pentru Au g / t. Dimensiunea coșului 1 îmi oferă acest lucru: introduceți descrierea imaginii aici

Selecția automată (omiteți gama bin) oferă acest lucru: introduceți descrierea imaginii aici

Datele arată O „K în primul și al doilea grafic, ca și cum nu există nicio problemă cu integritatea datelor. Doar dimensiunea coșului 0,1 (g / t) răspunde la întrebare: măsurătorile au fost atât inexacte, cât și imprecise introduceți descrierea imaginii aici

Judecata mea: 1. Există nicio tehnică de măsurare pe Pământ care să arate adevărata valoare a fenomenului natural. Toate măsurătorile sunt aproximative, unele fiind apropiate de valoarea reală. Depinde de proiectarea eșantionării, calibrare, calificări umane etc. 2. De aceea distribuția este mai degrabă înclinată decât simetrică. 3. Cu toate acestea, forma distribuției ar trebui să semene cu o secțiune „clopotniță”, cel puțin aproximativ. Un clopot pe rând (cu excepția cazului în care există mai multe medii geologice). 4. Distribuția frecvenței cu manipularea dimensiunii coșului poate ajuta la dezvăluirea modelului cât de exacte și precise au fost efectuate măsurătorile. Astfel, este nevoie de o preluare experimentală a dimensiunii coșului, mai degrabă decât de o regulă tăiată pe piatră.

Comentarii

  • Acesta este mai mult un comentariu decât răspunde dacă nu explici moralul. Eu ‘ spun că morala este următoarea: Toate regulile sunt reguli generale, unele au mai multe baze statistice decât altele, dar cele mai multe reguli pot să nu facă ceea ce doriți dacă distribuțiile au o asimetrie foarte mare sau curtoză. Așadar, folosiți-vă și judecata.
  • Ați adăugat comentarii, dar nu știu clar dacă vreunul dintre noi va contribui la detalii utile. 1.este bine pentru mine, dar nu problema aici. 2. nu urmează ‘ t de la 1. deoarece unele distribuții sunt aproape simetrice. 3. este dubios: există multe situații în care se așteaptă alte forme decât clopotele. 4. este, de asemenea, dubioasă, deoarece calitatea măsurătorilor originale nu este adesea evidentă din vreo histogramă, dar deseori este cel mai bine examinată cu atenție asupra structurii foarte fine a unei distribuții.
  • 2. Aproape simetric nu este simetric. Nu puteți fi aproape însărcinată: fie însărcinată, fie nu.
  • Sigur, dar simetria exactă în date este atât de rară încât, dacă aș fi spus ” simetric ” cineva ar putea obiecta în mod rezonabil și la asta. ‘ este foarte ușor să fie aproape simetric; de aceea și cum avem măsuri de asimetrie.
  • Notat, dar comentariul dvs. a fost general și nu a avut contextul pe care îl dați acum. La rândul meu am spus ” dubios ” nu ” greșit „. Comentariul meu principal rămâne că răspunsul dvs. nu ‘ chiar adaugă mult la firul despre cum să alegeți dimensiunea coșului sau numărul echivalent de coșuri. A avea un alt exemplu în care este ‘ dificil este o răsucire a întrebării, nu chiar un răspuns.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *