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:

pachet de bază Box intrigă

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 partea graficului

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:

Schimbați culoarea Outlierului

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:

Adăugați o statistică rezumată

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:

Box Complot cu puncte

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:

Schimbați culoarea Box

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 mai multe grupuri

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:

Box Complot cu puncte agitate

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

Box Complot cu puncte agitate

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ă:

dințat Box intrigă

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:

dințat Box intrigă

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