boxplot() u R: Kako napraviti BoxCrteĹži u RStudio-u

⚡ Pametni sažetak

BoxGrafikon u R-u sažima numeričku distribuciju kroz medijan, kvartile, viske i outliere koristeći geom_boxplot() iz ggplot2. Ovaj vodič gradi dijagram kutije na skupu podataka o kvaliteti zraka i slojeve na bojama, točkama, podrhtavanju, zarezima i grupnim usporedbama.

  • 📐 SaĹžetak od pet brojeva: Kutija se proteĹže od prvog do trećeg kvartila, linija označava medijan, a brkovi doseĹžu 1.5 puta veći interkvartilni raspon.
  • 🧱 Osnovna sintaksa: ggplot(df, aes(x = grupa, y = vrijednost)) + geom_boxplot() stvara jedan okvir po razini grupeping faktor.
  • ???? Stiliziranje izvanrednih elemenata: Parametri outlier.colour, outlier.shape i outlier.size kontroliraju kako se crtaju točke iza brkova.
  • ???? Prikazuju se zapaĹžanja: geom_jitter() pomiče preklapanjeping pokazuje u stranu, otkrivajući veličinu uzorka iza svake kutije.
  • 📉 Reckast BoxTo je: notch = TRUE crta interval pouzdanosti medijana i ne preklapa seping zarezi ukazuju na stvarnu razliku.
  • 🎨 Grouping: Kartaping Funkcija fill inside geom_boxplot() dijeli svaku kategoriju u nekoliko okvira postavljenih jedan pored drugog.

Boxgrafikon u R-u

boxplot() u R

boxplot() u R pomaĹže vizualizirati distribuciju podataka po kvartilu i otkriti prisutnost outliera. MoĹžete koristiti geometrijski objekt geom_boxplot() iz biblioteke ggplot2 za crtanje boxplot() u R.

Koristit ćemo skup podataka o kvaliteti zraka za uvođenje boxplot() u R s ggplot. Skup podataka bilježi dnevna mjerenja kvalitete zraka u New Yorku od svibnja do rujna 1973. i sadrži 153 opažanja. Koristit ćemo sljedeće varijable:

  • Ozon: Numerička varijabla
  • Vjetar: Numerička varijabla
  • Mjesec: od svibnja do rujna. Numerička varijabla

Prije crtanja, vrijedi znati točno što svaki dio kutije predstavlja.

Kako čitati a Box Grafikon: Kvartili, IQR i outlieri

Svaki element kutijastog dijagrama kodira jedan broj iz saĹžetka od pet brojeva. Poznavanje koji je koji pretvara grafikon iz dekoracije u analizu.

  • Donja ĹĄarka: prvi kvartil, Q1. Dvadeset pet posto opaĹžanja nalazi se ispod njega.
  • SrediĹĄnja linija: drugi kvartil. Njegov poloĹžaj unutar okvira otkriva asimetriju: linija pomaknuta prema dnu znači da su podaci asimetrični udesno.
  • Gornja ĹĄarka: treći kvartil, Q3. Sedamdeset pet posto opaĹžanja nalazi se ispod njega.
  • Box visina: interkvartilni raspon, IQR = Q3 – Q1, koji sadrĹži srednju polovicu podataka i standardna je robusna mjera rasprĹĄenosti.
  • Brkovi: proteĹžu se do najekstremnijeg opaĹžanja koje je joĹĄ uvijek unutar 1.5 puta IQR najbliĹžeg ĹĄarnira. Oni nisu minimum i maksimum.
  • Točke iza brkova: opaĹžanja označena kao outlieri prema tom 1.5 IQR pravilu.

Dva upozorenja. Prvo, "autlier" ovdje je statistička zastavica, a ne pogreška: u asimetričnoj distribuciji poput koncentracije ozona očekuju se visoke vrijednosti i ne bi se trebale brisati. Drugo, dijagram kutije skriva oblik distribucije, pa dvije skupine s identičnim kutijama mogu imati vrlo različite temeljne podatke. Dodavanje točaka podrhtavanja, kao što je prikazano dolje, štiti od toga.

Box Grafikon vs. histogram vs. graf violine u R-u

Sva tri grafikona opisuju numeričku distribuciju, ali svaki otkriva nešto što ostali skrivaju.

Kriteriji Box ZemljiĹĄte Histogram Zaplet violine
Predstave Medijan, kvartili, outlieri Frekvencija u svakom spremniku Krivulja pune gustoće
RevdostiĹže viĹĄe vrhova Ne Da Da
Označava outliere Da, eksplicitno Samo vizualno Ne izravno
Uspoređivanje mnogih grupa Izvrstan nespretan dobro
Potreban je izbor tuninga Ne Da, broj spremnika Da, propusnost
objekt ggplot2 geom_boxplot() geom_histogram() geom_violina()

Uobičajeni kompromis je crtanje dijagrama violine s uskim dijagramom kutije unutar njega, koji zadržava oblik gustoće i sažetak kvartila u jednom grafikonu. Vidi vodič za histogram za binning stranu usporedbe.

stvoriti Box ZemljiĹĄte

Prije nego počnete stvarati svoj prvi boxplot() u R-u, morate manipulirati podacima na sljedeći način:

  • Korak 1: Uvezite podatke
  • Korak 2: Izbacite nepotrebne varijable
  • Korak 3: Pretvorite Mjesec u uređeni faktor
  • Korak 4: Izradite novu kategoričku varijablu koja svaki mjesec dijeli na tri dijela: Početak, Sredina i Kraj
  • Korak 5: Uklonite zapaĹžanja koja nedostaju

Svi ovi koraci izvode se s dplyr i operatorom cjevovoda %>%.

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"))))

Dobra praksa je provjeriti strukturu podataka pomoću funkcije glimpse().

glimpse(data_air)

Izlaz:

## 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...

I Ozone i Solar.R sadrže NA vrijednosti. Budući da bi ih geom_boxplot() tiho odbacio i ispisao upozorenje, čišće ih je eksplicitno ukloniti.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Osnovna kutijasta parcela

Sada prikaĹžite raspodjelu ozona po mjesecima.

# 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 ObjaĹĄnjenje

  • Pohranite grafikon za daljnju upotrebu
    • box_plot: osnovni grafikon pohranjen je u objektu box_plot, ĹĄto vam omogućuje kasnije dodavanje slojeva bez ponavljanja cijelog poziva
  • Dodajte geometrijski objekt
    • Proslijedite skup podataka data_air_nona u ggplot boxplot.
    • Unutar aes() argumenta dodajete x-os i y-os.
    • Znak + znači da Ĺželite da R nastavi čitati kod. Čini kĂ´d čitljivijim razbijanjem.
    • Upotrijebite geom_boxplot() za izradu okvirnog dijagrama

Izlaz:

osnovni Box ZemljiĹĄte

Promijenite stranu grafikona

MoĹžete okrenuti stranu grafikona.

box_plot +
  geom_boxplot()+
  coord_flip()

Code ObjaĹĄnjenje

  • box_plot: Koristite graf koji ste pohranili. Izbjegava ponovno pisanje svih kodova svaki put kada dodate nove informacije na grafikon.
  • geom_boxplot(): crtanje kutija i brkova
  • coord_flip(): Okrenite stranu grafa

Izlaz:

Promjena strane grafikona

Promjena boje outliera

Možete promijeniti boju, oblik i veličinu outliera.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Code ObjaĹĄnjenje

  • outlier.colour=”red”: Kontrolirajte boju outliera
  • outlier.shape=2: Promjena oblika outliera. 2 se odnosi na trokut
  • outlier.size=3: Promijeni veličinu trokuta. Veći brojevi crtaju veće markere.

Izlaz:

Promjena boje outliera

Dodajte sumarnu statistiku

MoĹžete prekriti saĹžetnu statistiku kao ĹĄto je grupna srednja vrijednost, koju sam kutijasti dijagram ne prikazuje.

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Code ObjaĹĄnjenje

  • stat_summary() dodaje izračunatu statistiku na vrh kutijastog dijagrama
  • Argument fun kontrolira koja se statistika vraća. Ovdje je to srednja vrijednost. Imajte na umu da stariji kod koristi fun.y, koji je ggplot2 ukinut u verziji 3.3.0.
  • Napomena: Dostupne su i druge statistike kao ĹĄto su min. i maks. U istom grafikonu moĹže se prikazati viĹĄe od jedne statistike
  • geom = “točka”: iscrtajte prosjek s točkom
  • veličina=3: Veličina točke
  • boja =”steelblue”: Boja bodova

Izlaz:

Dodajte saĹžetak statistike

Box Iscrtaj s točkama

Zatim dodajte sloj točkastog dijagrama na vrh okvira. Svaka točka predstavlja jedno opažanje, što čini vidljivom veličinu uzorka iza svakog okvira.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Code ObjaĹĄnjenje

  • geom_dotplot() crta jednu točku po promatranju, sloĹženu unutar svakog spremnika
  • binaxis='y': Promjena poloĹžaja točaka duĹž y-osi. Prema zadanim postavkama, x-os
  • dotsize=1: Veličina točaka
  • stackdir='center': Način slaganja točaka: Četiri vrijednosti:
    • “gore” (zadano),
    • “dolje”
    • "centar"
    • “centralna cjelina”

Izlaz:

Box Iscrtaj s točkama

Kontrolna estetika Box ZemljiĹĄte

Promijenite boju kutije

MoĹžete promijeniti boje grupe.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Code ObjaĹĄnjenje

  • Boje grupa se kontroliraju u aes() mapi.pingMoĹžete koristiti color=Mjesec za promjenu boje okvira i dijagrama brkova prema mjesecima.

Izlaz:

Promijenite boju Box

Box parcela s viĹĄe grupa

Također je moguće dodati više grupa. Možete vizualizirati razliku u kvaliteti zraka prema danu mjerenja.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Code ObjaĹĄnjenje

  • Mapa aes()ping geometrijskog objekta kontrolira grupe za prikaz (ova varijabla mora biti faktor)
  • aes(fill= day_cat) omogućuje stvaranje tri okvira za svaki mjesec na x-osi

Izlaz:

Box ZemljiĹĄte s viĹĄe grupa

Box Crtanje s isprekidanim točkama

Drugi način prikaza pojedinačnih opažanja je pomoću podrhtavajućih točaka. Podrhtavanje je uobičajeni izbor kada kategorička x-os uzrokuje da se mnoge točke nađu na istoj poziciji.

Ovom metodom se izbjegava preklapanjeping diskretnih podataka.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Code ObjaĹĄnjenje

  • geom_jitter() dodaje mali slučajni pomak svakoj točki kako bi se preklapanjeping vrijednosti postaju vidljive.
  • shape=15 mijenja oblik točaka. 15 predstavlja kvadrate
  • color = “steelblue”: Promjena boje točke
  • position = position_jitter(width = 0.21): kontrolira koliko su točke pomaknute bočno, mjereno u jedinicama x-osi. Zadana vrijednost je 40 posto razmaka između kategorija.

Izlaz:

Box Crtanje s isprekidanim točkama

Možete vidjeti razliku između prvog grafikona s jitter metodom i drugog s point metodom.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Crtanje s isprekidanim točkama

Reckast Box ZemljiĹĄte

Zanimljiva značajka geom_boxplot() je funkcija boxplot s usjecima u R. Grafički prikaz s usjecima sužava okvir oko medijana. Glavna svrha dijagrama s urezima je usporedba značajnosti medijana između skupina. Postoje jaki dokazi da dvije skupine imaju različite medijane kada se zarezi ne preklapaju. Zarez se izračunava na sljedeći način:

Reckast Box ZemljiĹĄte

Ovdje je IQR interkvartilni raspon, a n je broj opažanja u skupini. Razina obuhvaća otprilike 95-postotni interval pouzdanosti medijana.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Code ObjaĹĄnjenje

  • geom_boxplot(notch = TRUE): nacrtaj kutijasti dijagram sa zarezima oko medijane

Izlaz:

Reckast Box ZemljiĹĄte

Kako dodati naslove, oznake i prilagođene boje Box Grafikon u R-u

Gornji grafikoni koriste zadane vrijednosti ggplot2, koje uzimaju nazive varijabli izravno iz okvira podataka. Grafikon koji se može objaviti treba čitljive oznake i namjernu paletu.

Naslovi i oznake osi. Jedan poziv funkcije labs() postavlja svaki tekstualni element:

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()

Odabir vlastitih boja. Koristite scale_fill_manual() kada je ispuna mapirana unutar aes(), a scale_colour_manual() kada je boja:

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")

Legenda je ovdje isključena jer x-osa već imenuje svaki mjesec, pa bi njezino ponavljanje gubilo prostor.

Preuređivanje kutija. Razine faktora određuju redoslijed na osi. Budući da je Mjesec kreiran kao uređeni faktor, već se čita kronološki. Za neuređeni faktor, umjesto toga sortirajte prema medijanu:

ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) +
    geom_boxplot() +
    theme_classic()

Spremanje grafikona. ggsave() zapisuje posljednji grafikon na disk u rezoluciji koju kontrolirate:

ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)

Box Grafikon u R-u: Code Upućivanje

Donja tablica navodi poziv ggplot2 za svaku varijantu kutijastog dijagrama opisanu gore:

Cilj Code
Osnovna kutijasta parcela
ggplot(df, aes(x = x1, y = y)) + geom_boxplot()
Okreni orijentaciju
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip()
Urezana okvirna parcela
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE)
Box plot s isprekidanim točkama
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))
Bojanje po grupi
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot()
ViĹĄe grupa po kategoriji
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2))
Dodajte srednju vrijednost grupe
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point")

Također provjerite: - R Vodič za početnike: Naučite R programski jezik

Pitanja i odgovori

Brkovi dosežu najekstremnije opažanje unutar 1.5 puta interkvartilnog raspona najbližeg kvartila. Oni nisu minimum i maksimum, a sve izvan njih se crta kao outlier točka.

Ne automatski. Pravilo 1.5 IQR je konvencija, a ne dokaz pogreške. Prvo istražite svaku točku: iskrivljeni podaci poput očitanja ozona prirodno daju visoke vrijednosti koje su stvarna mjerenja.

Preklapanjeping zarezi sugeriraju da nema jakih dokaza da se dva medijana razlikuju. Nepreklapanjeping Zarezi ukazuju na vjerojatnu stvarnu razliku, otprilike ekvivalentnu 95-postotnoj usporedbi pouzdanosti.

Box Grafikoni su standardni istraživački korak prije treninga: oni otkrivaju asimetriju, outliere i različite skale značajki među klasama. Timovi ih također koriste za usporedbu točnosti modela u različitim unakrsnim validacijskim naborima.

Da. AI asistenti mogu objasniti pogreške poput kontinuirane x-osi koja stvara jedan okvir, predložiti pravu aes() mapupingi označite zastarjele argumente poput fun.y. Uvijek ponovno pokrenite ispravljeni kod na vlastitim podacima.

SaĹžmite ovu objavu uz: