boxplot() i R: Sådan laver du BoxPlotter i RStudio [Eksempler]

boxplot() i R

boxplot() i R hjælper med at visualisere fordelingen af ​​data efter kvartil og detektere tilstedeværelsen af ​​outliers. Du kan bruge det geometriske objekt geom_boxplot() fra ggplot2-biblioteket til at tegne et boxplot() i R.

Vi vil bruge luftkvalitetsdatasættet til at introducere boxplot() i R med ggplot. Dette datasæt måler luftkvaliteten i New York fra maj til september 1973. Datasættet indeholder 154 observationer. Vi vil bruge følgende variable:

  • Ozon: Numerisk variabel
  • Vind: Numerisk variabel
  • Måned: maj til september. Numerisk variabel

Opret Box Grund

Før du begynder at oprette dit første boxplot() i R, skal du manipulere dataene som følger:

  • Trin 1: Importer dataene
  • Trin 2: Drop unødvendige variabler
  • Trin 3: Konverter måned i faktorniveau
  • Trin 4: Opret en ny kategorisk variabel, der deler måneden med tre niveauer: start, midt og slut.
  • Trin 5: Fjern manglende observationer

Alle disse trin udføres med dplyr og pipeline-operatøren %>%.

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

En god praksis er at tjekke strukturen af ​​dataene med funktionen glimpse().

glimpse(data_air)

Output:

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

Der er NA'er i datasættet. Det er klogt at fjerne dem.

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

Grundlæggende boksplot

Lad os plotte det grundlæggende R boxplot() med fordelingen af ​​ozon efter måned.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Kode Forklaring

  • Gem grafen til videre brug
    • box_plot: Du gemmer grafen i variablen box_plot. Det er nyttigt til videre brug eller undgå en for kompleks kodelinje
  • Tilføj det geometriske objekt af R boxplot()
    • Du videregiver datasættet data_air_nona til ggplot boxplot.
    • Inde i aes()-argumentet tilføjer du x-aksen og y-aksen.
    • + tegnet betyder, at du vil have R til at blive ved med at læse koden. Det gør koden mere læsbar ved at bryde den.
    • Brug geom_boxplot() til at oprette et boxplot

Output:

Grundlæggende Box Grund

Skift side af grafen

Du kan vende siden af ​​grafen.

box_plot +
  geom_boxplot()+
  coord_flip()

Kode Forklaring

  • box_plot: Du bruger den graf du har gemt. Det undgår at omskrive alle koderne, hver gang du tilføjer ny information til grafen.
  • geom_boxplot(): Opret boxplots() i R
  • coord_flip(): Vend siden af ​​grafen

Output:

Skift side af grafen

Skift farve på udliggeren

Du kan ændre farven, formen og størrelsen på udliggere.

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

Kode Forklaring

  • outlier.colour=”rød”: Styr farven på afvigerne
  • outlier.shape=2: Skift formen på outlieren. 2 henviser til trekant
  • outlier.size=3: Ændre størrelsen på trekanten. Størrelsen er proportional med antallet.

Output:

Skift farve på outlier

Tilføj en opsummerende statistik

Du kan tilføje en opsummerende statistik til R boxplot().

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

Kode Forklaring

  • stat_summary() gør det muligt at tilføje et resume til det horisontale boxplot R
  • Argumentet fun.y styrer de returnerede statistikker. Du vil bruge middelværdi
  • Bemærk: Andre statistikker er tilgængelige, såsom min og max. Mere end én statistik kan vises i samme graf
  • geom = "punkt": Plot gennemsnittet med et punkt
  • størrelse=3: Størrelse af spidsen
  • farve =”stålblå”: Farve på punkterne

Output:

Tilføj en oversigtsstatistik

Box Plot med prikker

I det næste vandrette boxplot R tilføjer du dot plot-lagene. Hver prik repræsenterer en observation.

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

Kode Forklaring

  • geom_dotplot() tillader tilføjelse af prik til bin-bredden
  • binaxis='y': Ændre placeringen af ​​prikkerne langs y-aksen. Som standard x-akse
  • dotsize=1: Størrelsen på prikkerne
  • stackdir='center': Måde at stable prikkerne på: Fire værdier:
    • "op" (standard),
    • "ned"
    • "centrum"
    • "hele midten"

Output:

Box Plot med prikker

Kontrol Æstetik af Box Grund

Skift farven på boksen

Du kan ændre gruppens farver.

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

Kode Forklaring

  • Farverne på grupperne styres i aes()-tilknytningen. Du kan bruge color= Month til at ændre farven på boksen og whisker plot i henhold til månederne

Output:

Skift farven på Box

Box plot med flere grupper

Det er også muligt at tilføje flere grupper. Du kan visualisere forskellen i luftkvaliteten alt efter måledagen.

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

Kode Forklaring

  • Aes()-tilknytningen af ​​det geometriske objekt styrer grupperne, der skal vises (denne variabel skal være en faktor)
  • aes(fill= day_cat) giver mulighed for at oprette tre kasser for hver måned i x-aksen

Output:

Box Plot med flere grupper

Box Plot med rystede prikker

En anden måde at vise prikken på er med rystede punkter. Det er en bekvem måde at visualisere punkter med boxplot for kategoriske data i R-variabel.

Denne metode undgår overlapning af de diskrete data.

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

Kode Forklaring

  • geom_jitter() tilføjer et lille henfald til hvert punkt.
  • form=15 ændrer punkternes form. 15 repræsenterer kvadraterne
  • farve = "stålblå": Skift farven på punktet
  • position=position_jitter(width = 0.21): Måde at placere de overlappende punkter. position_jitter(width = 0.21) betyder, at du flytter punkterne 20 procent fra x-aksen. Som standard er 40 pct.

Output:

Box Plot med rystede prikker

Du kan se forskellen mellem den første graf med jittermetoden og den anden med punktmetoden.

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

Box Plot med rystede prikker

Afskåret Box Grund

Et interessant træk ved geom_boxplot(), er en notched boxplot-funktion i R. Notch-plottet indsnævrer boksen omkring medianen. Hovedformålet med et notched box plot er at sammenligne betydningen af ​​medianen mellem grupper. Der er stærke beviser for, at to grupper har forskellige medianer, når hakkene ikke overlapper hinanden. Et hak beregnes som følger:

Afskåret Box Grund

med er interkvartilen og antallet af observationer.

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

Kode Forklaring

  • geom_boxplot(notch=TRUE): Opret et vandret boxplot R

Output:

Afskåret Box Grund

Resumé

Vi kan opsummere de forskellige typer af horisontalt boxplot R i tabellen nedenfor:

Objektiv Kode
Grundlæggende boksplot
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
vend siden
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Afhugget kasseplot
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box plot med rystede prikker
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Tjek også:- R Tutorial for begyndere: Lær R programmeringssprog