Histogrami s frekvencijom Apache Commons

1. Pregled

U ovom uputstvu ćemo pogledati kako možemo prikazati podatke na histogramu uz pomoć klase Apache Commons Frequency.

The Frekvencija Predavanje je dio dijela biblioteke Apache Commons Math istražene u ovom članku.

Histogram je dijagram povezanih traka koji prikazuje pojavu niza podataka u skupu podataka. Razlikuje se od trakasti grafikona po tome što se koristi za prikaz raspodjele kontinuiranih kvantitativnih varijabli, dok se trakasti grafikon koristi za prikaz kategorijskih podataka.

2. Ovisnosti o projektu

U ovom ćemo članku koristiti projekt Maven sa sljedećim ovisnostima:

 org.apache.commons commons-math3 3.6.1 org.knowm.xchart xchart 3.5.2 

The commons-math3 knjižnica sadrži Frekvencija klase koju ćemo koristiti za utvrđivanje pojave varijabli u našem skupu podataka. The dijagram x knjižnica je ono što ćemo koristiti za prikaz histograma u GUI-u.

Najnovija verzija commons-math3 i xchart može se naći na Maven Central.

3. Izračunavanje učestalosti varijabli

Za ovaj ćemo vodič upotrijebiti skup podataka koji se sastoji od dobi učenika u određenoj školi. Voljeli bismo vidjeti učestalost različitih dobnih skupina i promatrati njihovu raspodjelu na histogramskoj karti.

Predstavimo skup podataka s Popis i koristiti ga za popunjavanje instance datoteke Frekvencija razred:

Popis podatakaList = Arrays.asList (36, 25, 38, 46, 55, 68, 72, 55, 36, 38, 67, 45, 22, 48, 91, 46, 52, 61, 58, 55); Frekvencija frekvencije = nova Frekvencija (); set podatakaList.forEach (d -> frequency.addValue (Double.parseDouble (d.toString ())));

Sad kad smo naselili našu instancu Frekvencija razreda, dobit ćemo broj svake dobi u kantu i sažeti je tako da možemo dobiti ukupnu učestalost dobi u određenoj dobnoj skupini:

dataList.stream () .map (d -> Double.parseDouble (d.toString ())) .distinct () .forEach (promatranje -> {dugo opažanjeFrekvencija = frekvencija.getCount (promatranje); int gornja granica = (promatranje> classWidth )? Math.multiplyExact ((int) Math.ceil (promatranje / classWidth), classWidth): classWidth; int lowerBoundary = (upperBoundary> classWidth)? Math.subtractExact (upperBoundary, classWidth): 0; String bin = lowerBoundary + "- "+ gornja granica; updateDistributionMap (donja granica, spremnik, frekvencija promatranja);});

Iz gornjeg isječka prvo utvrđujemo učestalost promatranje koristiti getCount () od Frekvencija razred. Metoda vraća ukupan broj pojavljivanja promatranje.

Koristeći struju promatranje, dinamički određujemo grupu kojoj pripada utvrđivanjem njezinih gornjih i donjih granica u odnosu na širinu razreda - koja je 10.

Gornja i donja granica spojene su tako da tvore kantu koja se sprema uz promatranjeFrekvencija u karta distribucije koristiti updateDistributionMap ().

Ako je kanta za smeće postoji već ažuriramo frekvenciju, inače je dodajemo kao ključ i postavljamo frekvenciju struje promatranje kao njegova vrijednost. Imajte na umu da smo pratili obrađena zapažanja kako bismo izbjegli duplikate.

The Frekvencija razreda također imaju metode za određivanje postotka i kumulativnog postotka varijable u skupu podataka.

4. Ucrtavanje histogramske karte

Sada kada smo naš sirovi skup podataka obradili u mapu dobnih skupina i njihovih frekvencija, možemo ih koristiti dijagram x knjižnica za prikaz podataka u histogramskom grafikonu:

Grafikon KategorijaChart = novi CategoryChartBuilder (). Širina (800) .visina (600) .title ("Raspodjela dobi") .xAxisTitle ("Dobna skupina") .yAxisTitle ("Učestalost") .build (); chart.getStyler (). setLegendPosition (Styler.LegendPosition.InsideNW); chart.getStyler (). setAvailableSpaceFill (0,99); chart.getStyler (). setOverlapped (true); Popis yData = novi ArrayList (); yData.addAll (distributionMap.values ​​()); Popis xData = Arrays.asList (distributionMap.keySet (). ToArray ()); chart.addSeries ("dobna skupina", xData, yData); novi SwingWrapper (grafikon) .displayChart ();

Stvorili smo instancu a Grafikon kategorije pomoću alata za izradu grafikona konfigurirali smo ga i napunili podacima za x i y-os.

Napokon prikazujemo grafikon u GUI-ju pomoću SwingWrapper:

Iz gornjeg histograma možemo vidjeti da nema učenika u dobi od 80 do 90 godina, dok prevladavaju studenti u dobi od 50 do 60 godina. To će najvjerojatnije biti doktorski ili postdoktorski studenti.

Također možemo reći da histogram ima normalnu raspodjelu.

5. Zaključak

U ovom smo članku pogledali kako iskoristiti snagu Frekvencija razred Apača commons-math3 knjižnica.

U knjižnici postoje i drugi zanimljivi satovi za statistiku, geometriju, genetske algoritme i druge. Njegova dokumentacija može se naći ovdje.

Kompletni izvorni kod dostupan je na Githubu.