boxplot() i R: How to Make BoxHandlingar i RStudio [Exempel]

boxplot() i R

boxplot() i R hjรคlper till att visualisera fรถrdelningen av data per kvartil och upptรคcka fรถrekomsten av extremvรคrden. Du kan anvรคnda det geometriska objektet geom_boxplot() frรฅn ggplot2-biblioteket fรถr att rita en boxplot() i R.

Vi kommer att anvรคnda luftkvalitetsdataset fรถr att introducera boxplot() i R med ggplot. Denna datauppsรคttning mรคter luftkvaliteten i New York frรฅn maj till september 1973. Datauppsรคttningen innehรฅller 154 observationer. Vi kommer att anvรคnda fรถljande variabler:

  • Ozon: Numerisk variabel
  • Vind: Numerisk variabel
  • Mรฅnad: maj till september. Numerisk variabel

Skapa Box Komplott

Innan du bรถrjar skapa din fรถrsta boxplot() i R mรฅste du manipulera data enligt fรถljande:

  • Steg 1: Importera data
  • Steg 2: Slรคpp onรถdiga variabler
  • Steg 3: Konvertera mรฅnad till faktornivรฅ
  • Steg 4: Skapa en ny kategorisk variabel som delar mรฅnaden med tre nivรฅer: bรถrjan, mitten och slutet.
  • Steg 5: Ta bort saknade observationer

Alla dessa steg gรถrs med dplyr och pipelineoperatรถ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 bra praxis รคr att kontrollera strukturen pรฅ datan med funktionen glimpse().

glimpse(data_air)

Produktion:

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

Det finns NA i datamรคngden. Att ta bort dem รคr klokt.

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

Grundlรคggande boxplot

Lรฅt oss plotta den grundlรคggande R-boxplotten() med fรถrdelningen av ozon per mรฅnad.

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

Kodfรถrklaring

  • Lagra grafen fรถr vidare anvรคndning
    • box_plot: Du lagrar grafen i variabeln box_plot. Det รคr anvรคndbart fรถr vidare anvรคndning eller fรถr att undvika alltfรถr komplicerade koder
  • Lรคgg till det geometriska objektet fรถr R boxplot()
    • Du skickar datauppsรคttningen data_air_nona till ggplot boxplot.
    • Inuti aes()-argumentet lรคgger du till x-axeln och y-axeln.
    • Tecknet + betyder att du vill att R ska fortsรคtta lรคsa koden. Det gรถr koden mer lรคsbar genom att bryta den.
    • Anvรคnd geom_boxplot() fรถr att skapa en boxplot

Produktion:

Grundlรคggande Box Komplott

Byt sida av grafen

Du kan vรคnda sidan av grafen.

box_plot +
  geom_boxplot()+
  coord_flip()

Kodfรถrklaring

  • box_plot: Du anvรคnder grafen du lagrade. Det undviker att skriva om alla koder varje gรฅng du lรคgger till ny information i grafen.
  • geom_boxplot(): Skapa boxplots() i R
  • coord_flip(): Vรคnd sidan av grafen

Produktion:

Byt sida av grafen

ร„ndra fรคrg pรฅ avvikelsen

Du kan รคndra fรคrg, form och storlek pรฅ utstickarna.

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

Kodfรถrklaring

  • outlier.colour=โ€rรถdโ€: Styr fรคrgen pรฅ extremvรคrdena
  • outlier.shape=2: ร„ndra formen pรฅ avvikelsen. 2 avser triangel
  • outlier.size=3: ร„ndra storleken pรฅ triangeln. Storleken รคr proportionell mot antalet.

Produktion:

ร„ndra fรคrg pรฅ Outlier

Lรคgg till en sammanfattande statistik

Du kan lรคgga till en sammanfattande statistik till R boxplot().

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

Kodfรถrklaring

  • stat_summary() tillรฅter att lรคgga till en sammanfattning till den horisontella boxplotten R
  • Argumentet fun.y styr statistiken som returneras. Du kommer att anvรคnda medelvรคrde
  • Obs: Annan statistik รคr tillgรคnglig som min och max. Mer รคn en statistik kan visas i samma graf
  • geom = "punkt": Rita medelvรคrdet med en punkt
  • storlek=3: Spetsens storlek
  • fรคrg =โ€stรฅlblรฅโ€: Fรคrg pรฅ punkterna

Produktion:

Lรคgg till en sammanfattningsstatistik

Box Rita med prickar

I nรคsta horisontella boxplot R lรคgger du till dot plot-lagren. Varje punkt representerar en observation.

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

Kodfรถrklaring

  • geom_dotplot() gรถr det mรถjligt att lรคgga till punkt till lรฅdans bredd
  • binaxis='y': ร„ndra positionen fรถr prickarna lรคngs y-axeln. Som standard, x-axel
  • dotsize=1: Storleken pรฅ prickarna
  • stackdir='center': Sรคtt att stapla prickarna: Fyra vรคrden:
    • "upp" (standard),
    • "ner"
    • "Centrum"
    • "hela mitten"

Produktion:

Box Rita med prickar

Kontroll Estetik av Box Komplott

ร„ndra fรคrgen pรฅ lรฅdan

Du kan รคndra fรคrgerna pรฅ gruppen.

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

Kodfรถrklaring

  • Fรคrgerna pรฅ grupperna styrs i aes()-mappningen. Du kan anvรคnda color= Month fรถr att รคndra fรคrgen pรฅ rutan och morrhรฅrsplott enligt mรฅnaderna

Produktion:

ร„ndra fรคrgen pรฅ Box

Box plot med flera grupper

Det รคr ocksรฅ mรถjligt att lรคgga till flera grupper. Du kan visualisera skillnaden i luftkvaliteten beroende pรฅ dagen fรถr รฅtgรคrden.

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

Kodfรถrklaring

  • Aes()-mappningen av det geometriska objektet styr grupperna som ska visas (denna variabel mรฅste vara en faktor)
  • aes(fill= day_cat) tillรฅter att skapa tre rutor fรถr varje mรฅnad i x-axeln

Produktion:

Box Rita med flera grupper

Box Intrig med skakiga prickar

Ett annat sรคtt att visa punkten รคr med skakiga punkter. Det รคr ett bekvรคmt sรคtt att visualisera punkter med boxplot fรถr kategoriska data i R-variabel.

Denna metod undviker รถverlappning av diskreta data.

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

Kodfรถrklaring

  • geom_jitter() lรคgger till lite fรถrfall till varje punkt.
  • shape=15 รคndrar formen pรฅ punkterna. 15 representerar rutorna
  • fรคrg = "stรฅlblรฅ": ร„ndra fรคrgen pรฅ punkten
  • position=position_jitter(width = 0.21): Sรคtt att placera de รถverlappande punkterna. position_jitter(width = 0.21) betyder att du flyttar punkterna med 20 procent frรฅn x-axeln. Som standard, 40 procent.

Produktion:

Box Intrig med skakiga prickar

Du kan se skillnaden mellan den fรถrsta grafen med jittermetoden och den andra med punktmetoden.

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

Box Intrig med skakiga prickar

hack Box Komplott

En intressant egenskap hos geom_boxplot(), รคr en skรฅrad boxplotfunktion i R. Notchplotten smalnar av rutan runt medianen. Huvudsyftet med en skรฅrad boxplot รคr att jรคmfรถra betydelsen av medianen mellan grupper. Det finns starka bevis fรถr att tvรฅ grupper har olika medianer nรคr skรฅrorna inte รถverlappar varandra. En notch berรคknas enligt fรถljande:

hack Box Komplott

med รคr interkvartilen och antalet observationer.

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

Kodfรถrklaring

  • geom_boxplot(notch=TRUE): Skapa en skรฅrad horisontell boxplot R

Produktion:

hack Box Komplott

Sammanfattning

Vi kan sammanfatta de olika typerna av horisontell boxplot R i tabellen nedan:

Mรฅl Koda
Grundlรคggande boxplot
ggplot(df, aes( x = x1, y =y)) + geom_boxplot()
vรคnd รฅt sidan
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip()
Naggad boxtomt
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE)
Box plot med skakiga prickar
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))

Kontrollera ocksรฅ: - R Handledning fรถr nybรถrjare: Lรคr dig R programmeringssprรฅk

Sammanfatta detta inlรคgg med: