boxplot() în R: Cum se face BoxParcele în RStudio [Exemple]
boxplot() în R
boxplot() în R ajută la vizualizarea distribuției datelor pe cuartile și la detectarea prezenței valorilor aberante. Puteți folosi obiectul geometric geom_boxplot() din biblioteca ggplot2 pentru a desena un boxplot() în R.
Vom folosi setul de date privind calitatea aerului pentru a introduce boxplot() în R cu ggplot. Acest set de date măsoară calitatea aerului din New York din mai până în septembrie 1973. Setul de date conține 154 de observații. Vom folosi următoarele variabile:
- Ozon: variabilă numerică
- Vânt: variabilă numerică
- Luna: mai până în septembrie. Variabila numerica
Crea Box intrigă
Înainte de a începe să creați primul boxplot() în R, trebuie să manipulați datele după cum urmează:
- Pasul 1: importați datele
- Pasul 2: Eliminați variabilele inutile
- Pasul 3: Convertiți luna la nivel de factor
- Pasul 4: Creați o nouă variabilă categorială împărțind luna cu trei niveluri: început, mijloc și sfârșit.
- Pasul 5: Eliminați observațiile lipsă
Toți acești pași se fac cu dplyr și operatorul pipeline %>%.
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"))))
O bună practică este să verificați structura datelor cu funcția glimpse().
glimpse(data_air)
ieșire:
## 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...
Există NA în setul de date. Îndepărtarea lor este înțeleaptă.
# Step 5 data_air_nona <-data_air %>% na.omit()
Box plot de bază
Să diagramăm baza R boxplot() cu distribuția ozonului pe lună.
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
Explicarea codului
- Păstrați graficul pentru utilizare ulterioară
- box_plot: stocați graficul în variabila box_plot Este util pentru utilizare ulterioară sau evitați linia prea complexă de coduri
- Adăugați obiectul geometric al lui R boxplot()
- Transmiteți setul de date data_air_nona la ggplot boxplot.
- În argumentul aes(), adăugați axa x și axa y.
- Semnul + înseamnă că doriți ca R să citească în continuare codul. Face codul mai lizibil prin spargerea lui.
- Utilizați geom_boxplot() pentru a crea un diagramă cu casete
ieșire:
Schimbați partea graficului
Puteți întoarce partea laterală a graficului.
box_plot + geom_boxplot()+ coord_flip()
Explicarea codului
- box_plot: Folosiți graficul pe care l-ați stocat. Evită rescrierea tuturor codurilor de fiecare dată când adăugați informații noi în grafic.
- geom_boxplot(): Creați boxplots() în R
- coord_flip(): Întoarce partea graficului
ieșire:
Schimbați culoarea valorii aberante
Puteți schimba culoarea, forma și dimensiunea valorii aberante.
box_plot + geom_boxplot(outlier.colour = "red", outlier.shape = 2, outlier.size = 3) + theme_classic()
Explicarea codului
- outlier.colour=”red”: controlați culoarea valorii aberante
- outlier.shape=2: Schimbați forma valorii aberante. 2 se referă la triunghi
- outlier.size=3: Schimbați dimensiunea triunghiului. Mărimea este proporțională cu numărul.
ieșire:
Adăugați o statistică rezumată
Puteți adăuga o statistică rezumată la R boxplot().
box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = "point", size = 3, color = "steelblue") + theme_classic()
Explicarea codului
- stat_summary() permite adăugarea unui rezumat la boxplot orizontal R
- Argumentul fun.y controlează statisticile returnate. Veți folosi răutate
- Notă: Alte statistici sunt disponibile, cum ar fi min și max. În același grafic pot fi afișate mai multe statistici
- geom = „punct”: Trasează media cu un punct
- dimensiune=3: Dimensiunea punctului
- culoare =”steelblue”: Culoarea punctelor
ieșire:
Box Complot cu puncte
În următorul boxplot orizontal R, adăugați straturile de diagramă cu puncte. Fiecare punct reprezintă o observație.
box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic()
Explicarea codului
- geom_dotplot() permite adăugarea unui punct la lățimea coșului
- binaxis='y': Schimbați poziția punctelor de-a lungul axei y. Implicit, axa x
- dotsize=1: Dimensiunea punctelor
- stackdir='center': Mod de a stivui punctele: Patru valori:
- „sus” (implicit),
- "jos"
- "centru"
- „întregul centru”
ieșire:
Controlul estetic al Box intrigă
Schimbați culoarea cutiei
Puteți schimba culorile grupului.
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
Explicarea codului
- Culorile grupurilor sunt controlate în maparea aes(). Puteți folosi color= Month pentru a schimba culoarea casetei și a graficului mustaților în funcție de luni
ieșire:
Box complot cu mai multe grupuri
De asemenea, este posibil să adăugați mai multe grupuri. Puteți vizualiza diferența de calitate a aerului în funcție de ziua măsurii.
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
Explicarea codului
- Maparea aes() a obiectului geometric controlează grupurile de afișat (această variabilă trebuie să fie un factor)
- aes(fill= day_cat) permite crearea a trei casete pentru fiecare lună pe axa x
ieșire:
Box Complot cu puncte agitate
Un alt mod de a arăta punctul este cu puncte agitate. Este o modalitate convenabilă de a vizualiza puncte cu boxplot pentru date categorice în variabila R.
Această metodă evită suprapunerea datelor discrete.
box_plot + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(width = 0.21)) + theme_classic()
Explicarea codului
- geom_jitter() adaugă o mică degradare fiecărui punct.
- shape=15 modifică forma punctelor. 15 reprezintă pătratele
- culoare = „albastru de oțel”: Schimbați culoarea punctului
- position=position_jitter(width = 0.21): Mod de plasare a punctelor care se suprapun. position_jitter(width = 0.21) înseamnă că mutați punctele cu 20% față de axa x. Implicit, 40 la sută.
ieșire:
Puteți vedea diferența dintre primul grafic cu metoda jitter și al doilea cu metoda punctului.
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
dințat Box intrigă
O caracteristică interesantă a geom_boxplot(), este o funcție de tip boxplot cu crestături în R. Graficul cu crestături îngustează caseta în jurul mediei. Scopul principal al unui diagramă cu crestături este de a compara semnificația mediei între grupuri. Există dovezi puternice că două grupuri au mediane diferite atunci când crestăturile nu se suprapun. O crestătură se calculează după cum urmează:
cu este interquartilul și numărul de observații.
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
Explicarea codului
- geom_boxplot(notch=TRUE): Creați un boxplot orizontal crestat R
ieșire:
Rezumat
Putem rezuma diferitele tipuri de boxplot orizontal R în tabelul de mai jos:
Obiectiv | Cod |
---|---|
Box plot de bază |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
întoarce partea |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
Box plot crestat |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
Box complot cu puncte agitate |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
Verificați și: - Tutorial R pentru începători: Învață limbajul de programare R