boxplot() in R: How to Make BoxPiirrokset RStudiossa
⚡ Älykäs yhteenveto
BoxR-kielen plot tiivistää numeerisen jakauman mediaanin, kvartiilien, viiksien ja poikkeavien arvojen avulla käyttäen ggplot2:n geom_boxplot()-funktiota. Tämä ohje luo laatikkodiagrammin ilmanlaatuaineistosta ja lisää siihen kerrokset väreistä, pisteistä, värinästä, lovista ja ryhmävertailusta.
boxplot() kirjassa R
boxplot() kirjassa R auttaa visualisoimaan datan jakautumisen kvartiileittain ja havaitsemaan poikkeamien esiintymisen. Voit käyttää geometristä objektia geom_boxplot() ggplot2-kirjastosta boxplot():n piirtämiseen R:ssä.
Käytämme ilmanlaatudataa ottaaksemme käyttöön boxplot()-funktion R:ssä ggplot-funktion avulla. Data tallentaa päivittäisiä ilmanlaatumittauksia New Yorkissa toukokuusta syyskuuhun 1973 ja sisältää 153 havaintoa. Käytämme seuraavia muuttujia:
- Otsoni: Numeerinen muuttuja
- Tuuli: Numeerinen muuttuja
- Kuukausi: toukokuusta syyskuuhun. Numeerinen muuttuja
Ennen laatikon piirtämistä on hyvä tietää tarkalleen, mitä kukin osa siitä edustaa.
Kuinka lukea a Box Juoni: Kvartiilit, IQR ja poikkeamat
Jokainen laatikkodiagrammin elementti koodaa yhden numeron viisinumeroisesta yhteenvedosta. Kun tiedät, mikä on mikä, kaavio muuttuu koristelusta analyysiksi.
- Alempi sarana: ensimmäinen kvartiili, Q1. Kaksikymmentäviisi prosenttia havainnoista sijaitsee sen alapuolella.
- Keskilinja: toinen kvartiili. Sen sijainti laatikon sisällä paljastaa vinouman: alaspäin työntynyt viiva tarkoittaa, että tiedot ovat oikealle vinossa.
- Yläsarana: kolmas kvartiili, Q3. Seitsemänkymmentäviisi prosenttia havainnoista sijoittuu sen alapuolelle.
- Box korkeus: kvartiiliväli, IQR = Q3 – Q1, joka sisältää datan keskimmäisen puoliskon ja on hajonnan vakiomittaus.
- Viikset: Ne ulottuvat äärimmäiseen havaintoon, joka on edelleen 1.5-kertaisen IQR-arvon sisällä lähimmästä saranasta. Ne eivät ole minimi- ja maksimiarvoja.
- Pisteitä viiksien takana: havainnot, jotka on merkitty poikkeaviksi kyseisellä 1.5-kertaisella IQR-säännöllä.
Kaksi varoitusta. Ensinnäkin "poikkeava arvo" on tässä tilastollinen merkki, ei virhe: vinossa jakaumassa, kuten otsonipitoisuudessa, korkeita arvoja odotetaan, eikä niitä pitäisi poistaa. Toiseksi laatikkodiagrammi piilottaa jakauman muodon, joten kahdella identtisellä laatikolla varustetulla ryhmällä voi olla hyvin erilaiset pohjatiedot. Jitteroituneiden pisteiden lisääminen, kuten alla on esitetty, suojaa tältä.
Box Juoni vs. histogrammi vs. viulujuoni R:ssä
Kaikki kolme kaaviota kuvaavat numeerista jakaumaa, mutta jokainen niistä paljastaa jotain, mitä muut piilottavat.
| Kriteeri | Box juoni | histogrammi | Viulun juoni |
|---|---|---|---|
| Näytä | Mediaani, kvartiilit, poikkeamat | Tiheys kussakin lokerossa | Täysi tiheyskäyrä |
| Revuseita huippuja | Ei | Kyllä | Kyllä |
| Merkitsee poikkeavat arvot | Kyllä, nimenomaisesti | Vain visuaalisesti | Ei suoraan |
| Useiden ryhmien vertailu | Erinomainen | Kiusallinen | hyvä |
| Tarvitsee viritysvaihtoehdon | Ei | Kyllä, roskasäiliöiden määrä | Kyllä, kaistanleveys |
| ggplot2-objekti | geom_laatikkokuvaaja() | geom_histogrammi() | geom_violin() |
Yleinen kompromissi on piirtää viuludiagrammi, jonka sisällä on kapea laatikkodiagrammi, jolloin tiheyskuvio ja kvartiiliyhteenveto pysyvät yhdessä kaaviossa. Katso histogrammi-opetusohjelma vertailun binning-puolelle.
luoda Box juoni
Ennen kuin aloitat ensimmäisen boxplot():n luomisen R:ssä, sinun on käsiteltävä tietoja seuraavasti:
- Vaihe 1: Tuo tiedot
- Vaihe 2: Pudota tarpeettomat muuttujat
- Vaihe 3: Muunna kuukausi järjestetyksi tekijäksi
- Vaihe 4: Luo uusi kategorinen muuttuja, joka jakaa jokaisen kuukauden kolmeen osaan: alku, keskiosa ja loppu
- Vaihe 5: Poista puuttuvat havainnot
Kaikki nämä vaiheet tehdään dplyr:llä ja putkioperaattorilla %>%.
library(dplyr) library(ggplot2) # Step 1 data_air <- airquality %>% #Step 2 select(-c(Solar.R, Temp)) %>% #Step 3 mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), #Step 4 day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))
Hyvä käytäntö on tarkistaa datan rakenne funktiolla glimpse().
glimpse(data_air)
lähtö:
## Observations: 153 ## Variables: 5 ## $ Ozone <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month <ord> May, May, May, May, May, May, May, May, May, May, May,... ## $ Day <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...
Sekä Ozone että Solar.R sisältävät NA-arvoja. Koska geom_boxplot() poistaisi ne hiljaa ja tulostaisi varoituksen, on siistimpää poistaa ne erikseen.
# Step 5
data_air_nona <-data_air %>% na.omit()
Peruslaatikon juoni
Piirrä nyt otsonin jakautuminen kuukausittain.
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
Code Selitys
- Säilytä kaavio myöhempää käyttöä varten
- box_plot: peruskuvaaja tallennetaan box_plot-objektiin, jonka avulla voit lisätä tasoja myöhemmin toistamatta koko kutsua
- Lisää geometrinen objekti
- Välität datajoukon data_air_nona ggplot boxplotille.
- Aes()-argumentin sisään lisäät x-akselin ja y-akselin.
- +-merkki tarkoittaa, että haluat R:n jatkavan koodin lukemista. Se tekee koodista luettavamman rikkomalla sen.
- Käytä geom_boxplot() luodaksesi laatikkokaavion
lähtö:
Vaihda kaavion puolta
Voit kääntää kaavion sivun.
box_plot +
geom_boxplot()+
coord_flip()
Code Selitys
- box_plot: Käytät tallentamaasi kuvaajaa. Se välttää kaikkien koodien kirjoittamisen uudelleen joka kerta, kun lisäät kaavioon uutta tietoa.
- geom_boxplot(): piirtää laatikot ja viikset
- coord_flip(): Käännä kaavion sivu
lähtö:
Muuta poikkeavan värin väriä
Voit muuttaa poikkeamien väriä, muotoa ja kokoa.
box_plot +
geom_boxplot(outlier.colour = "red",
outlier.shape = 2,
outlier.size = 3) +
theme_classic()
Code Selitys
- outlier.colour=”punainen”: Hallitse poikkeavien arvojen väriä
- outlier.shape=2: Muuta poikkeaman muotoa. 2 viittaa kolmioon
- outlier.size=3: Muuta kolmion kokoa. Suuremmat luvut piirtävät suurempia merkkejä.
lähtö:
Lisää yhteenvetotilasto
Voit lisätä päällekkäin yhteenvetotilaston, kuten ryhmän keskiarvon, jota laatikkodiagrammi itsessään ei näytä.
box_plot +
geom_boxplot() +
stat_summary(fun.y = mean,
geom = "point",
size = 3,
color = "steelblue") +
theme_classic()
Code Selitys
- stat_summary() lisää lasketun tilaston laatikkodiagrammin päälle
- Argumentti fun määrää palautettavan tilastoarvon. Tässä se on keskiarvo. Huomaa, että vanhempi koodi käyttää fun.y-tiedostoa, joka ggplot2 vanhentui versiossa 3.3.0.
- Huomautus: Muita tilastoja on saatavilla, kuten min ja max. Useampi kuin yksi tilasto voidaan näyttää samassa kaaviossa
- geom = "piste": Piirrä keskiarvo pisteellä
- koko=3: Pisteen koko
- väri =”teräksensininen”: Pisteiden väri
lähtö:
Box Tontti pisteillä
Lisää seuraavaksi pistediagrammikerros laatikoiden päälle. Jokainen piste edustaa yhtä havaintoa, jolloin jokaisen laatikon takana oleva otoskoko näkyy.
box_plot +
geom_boxplot() +
geom_dotplot(binaxis = 'y',
dotsize = 1,
stackdir = 'center') +
theme_classic()
Code Selitys
- geom_dotplot() piirtää yhden pisteen havaintokohtaisesti, pinottuna kuhunkin lokeroon
- binaxis='y': Muuta pisteiden sijaintia y-akselilla. Oletuksena x-akseli
- dotsize=1: Pisteiden koko
- stackdir='center': Tapa pinota pisteet: Neljä arvoa:
- "ylös" (oletus),
- "alas"
- "keskusta"
- "keskikoko"
lähtö:
Ohjaus Esteettinen Box juoni
Vaihda laatikon väriä
Voit vaihtaa ryhmän värejä.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
Code Selitys
- Ryhmien värejä hallitaan aes()-kartallapingVoit käyttää color= Month muuttaaksesi laatikon ja viiksikuvion väriä kuukausien mukaan.
lähtö:
Box juoni useiden ryhmien kanssa
On myös mahdollista lisätä useita ryhmiä. Voit visualisoida ilmanlaadun eron mittauspäivän mukaan.
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
Code Selitys
- aes()-karttaping geometrisen objektin muuttuja ohjaa näytettäviä ryhmiä (tämän muuttujan on oltava tekijä)
- aes(fill= day_cat) mahdollistaa kolmen laatikon luomisen jokaiselle kuukaudelle x-akselille
lähtö:
Box Juoni tärisevine pisteineen
Toinen tapa esittää yksittäisiä havaintoja on jitteroitujen pisteiden avulla. Jitterointia käytetään yleensä silloin, kun kategorinen x-akseli aiheuttaa useiden pisteiden sijoittumisen samaan kohtaan.
Tämä menetelmä välttää päällekkäisyyksiäping diskreetistä datasta.
box_plot +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(width = 0.21)) +
theme_classic()
Code Selitys
- geom_jitter() lisää pienen satunnaisen siirtymän jokaiseen pisteeseen, jotta se on päällekkäinenping arvot tulevat näkyviin.
- shape=15 muuttaa pisteiden muotoa. 15 edustaa neliöitä
- väri = "teräksensininen": Muuta pisteen väriä
- position = position_jitter(width = 0.21): määrittää, kuinka paljon pisteitä siirretään sivusuunnassa x-akselin yksiköissä mitattuna. Oletusarvo on 40 prosenttia luokkien välisestä etäisyydestä.
lähtö:
Näet eron ensimmäisen kaavion välillä jitter-menetelmällä ja toisen pistemenetelmällä.
box_plot +
geom_boxplot() +
geom_point(shape = 5,
color = "steelblue") +
theme_classic()
lovinen Box juoni
Geom_boxplot():n mielenkiintoinen ominaisuus on lovettu boxplot-funktio R:ssä. Lovikaavio kaventaa ruutua mediaanin ympärillä. Lovilaatikkokaavion päätarkoituksena on verrata mediaanin merkitystä ryhmien välillä. On vahvaa näyttöä siitä, että kahdella ryhmällä on eri mediaanit, kun lovet eivät mene päällekkäin. Lovi lasketaan seuraavasti:
Tässä IQR on kvartiilien välinen alue ja n on ryhmän havaintojen lukumäärä. Lovi kattaa karkeasti mediaanin 95 prosentin luottamusvälin.
box_plot +
geom_boxplot(notch = TRUE) +
theme_classic()
Code Selitys
- geom_boxplot(notch = TRUE): piirrä laatikkodiagrammi, jossa on lovia mediaanin ympärillä
lähtö:
Otsikoiden, tunnisteiden ja mukautettujen värien lisääminen Box Juoni R:ssä
Yllä olevat kuvaajat käyttävät ggplot2-oletusarvoja, jotka ottavat muuttujien nimet suoraan datakehyksestä. Julkaistava kaavio tarvitsee luettavat otsikot ja tarkoituksellisen paletin.
Otsikot ja akselien nimikkeet. Yksi labs()-kutsu asettaa jokaisen tekstielementin:
box_plot +
geom_boxplot(fill = "coral", alpha = 0.7) +
labs(title = "Ozone concentration by month",
subtitle = "New York, May to September 1973",
x = "Month",
y = "Ozone (parts per billion)",
caption = "Source: airquality dataset") +
theme_classic()
Omien värien valitseminen. Käytä scale_fill_manual()-funktiota, kun täyttö on mapattu aes()-funktion sisällä, ja scale_colour_manual()-funktiota, kun väri on:
ggplot(data_air_nona, aes(x = Month, y = Ozone, fill = Month)) + geom_boxplot() + scale_fill_manual(values = c("#0e9cd1", "coral", "#7dc27d", "#c9a227", "grey60")) + theme_classic() + theme(legend.position = "none")
Selite on tässä pois päältä, koska x-akselilla on jo kuukausien nimet, joten sen toistaminen tuhlaisi tilaa.
Laatikoiden uudelleenjärjestely. Faktoritasot ohjaavat akselin järjestystä. Koska Month luotiin järjestettynä faktorina, se on jo valmiiksi kronologisesti järjestetty. Järjestämättömän faktorin tapauksessa lajittele mediaanin mukaan:
ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) + geom_boxplot() + theme_classic()
Kaavion tallentaminen. ggsave() kirjoittaa viimeisen kuvaajan levylle valitsemallasi resoluutiolla:
ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)
Box Juoni R:ssä: Code Viite
Alla olevassa taulukossa luetellaan ggplot2-kutsu jokaiselle yllä käsitellylle laatikkodiagrammimuunnokselle:
| Tavoite | Code |
|---|---|
| Peruslaatikon juoni |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() |
| Käännä suunta |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip() |
| Lovitettu laatikko juoni |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE) |
| Box juoni tärisevin pistein |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
| Väri ryhmittäin |
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot() |
| Useita ryhmiä kategoriaa kohden |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2)) |
| Lisää ryhmän keskiarvo |
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point") |
Tarkista myös: - R-opastus aloittelijoille: Opi R-ohjelmointikieli












