R Box Plot

I denne artikel lærer du at oprette whisker- og boksplot i R-programmering. Du lærer også at tegne flere boksplot i et enkelt plot.

I R oprettes boksplot (og whiskerplot) ved hjælp af funktionen boxplot().

Funktionen boxplot() modtager et vilkårligt antal numeriske vektorer og tegner et boksplot for hver vektor.

Du kan også indgive en liste (eller dataramme) med numeriske vektorer som komponenter. Lad os bruge det indbyggede datasæt airquality, som har “Daglige luftkvalitetsmålinger i New York, maj til september 1973.” – R-dokumentation.

> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...

Lad os lave et boxplot for ozonmålingerne.

boxplot(airquality$Ozone)

Default boxplot i R Programmering

Vi kan se, at data over medianen er mere spredt. Vi kan også bemærke to outliers ved den øverste ekstremitet.

Vi kan indsætte yderligere parametre for at styre, hvordan vores plot ser ud. Du kan læse om dem i hjælpeafsnittet ?boxplot.

Nogle af de hyppigt anvendte er: main-til at angive titlen, xlab og ylab-til at angive etiketter for akserne, col-til at definere farve osv.

Dertil kommer, at vi med argumentet horizontal = TRUE kan plotte det horisontalt, og med notch = TRUE kan vi tilføje et hak til boksen.

boxplot(airquality$Ozone,main = "Mean ozone in parts per billion at Roosevelt Island",xlab = "Parts Per Billion",ylab = "Ozone",col = "orange",border = "brown",horizontal = TRUE,notch = TRUE)

Horisontalt boksplot i R

Returneringsværdi af boxplot()

Funktionen boxplot() returnerer en liste med 6 komponenter, der vises som følger.

> b <- boxplot(airquality$Ozone)> b$stats 1.0 18.0 31.5 63.5 122.0attr(,"class")1 "integer" $n 116$conf 24.82518 38.17482$out 135 168$group 1 1$names "1"

Som vi kan se ovenfor, returneres der en liste, som har stats-positionen af de øvre/nedre ekstremer af whiskers og boksen sammen med medianen,

  • n-antal observationer, som boxplotet er tegnet med (bemærk, at NA‘erne ikke tages i betragtning)
  • conf-øvre/nedre ekstremer af indskæring, out-værdi af outliers
  • group-en vektor af samme længde som out, hvis elementer angiver, hvilken gruppe outlieren hører til, og
  • names-en vektor med navne på grupperne.

Multiple Boxplots

Vi kan tegne flere boxplots i et enkelt plot ved at indlevere en liste, en dataramme eller flere vektorer.

Lad os betragte Ozone– og Temp-feltet i airquality-datasættet. Lad os også generere normalfordeling med samme middelværdi og standardafvigelse og plotte dem side om side til sammenligning.

# prepare the dataozone <- airquality$Ozonetemp <- airquality$Temp# gererate normal distribution with same mean and sdozone_norm <- rnorm(200,mean=mean(ozone, na.rm=TRUE), sd=sd(ozone, na.rm=TRUE))temp_norm <- rnorm(200,mean=mean(temp, na.rm=TRUE), sd=sd(temp, na.rm=TRUE))

Nu skal vi lave 4 boxplots med disse data. Vi bruger argumenterne at og names til at angive sted og label.

boxplot(ozone, ozone_norm, temp, temp_norm,main = "Multiple boxplots for comparision",at = c(1,2,4,5),names = c("ozone", "normal", "temp", "normal"),las = 2,col = c("orange","red"),border = "brown",horizontal = TRUE,notch = TRUE)

r-multiple-boxplot

Boxplot formular Formel

Funktionen boxplot() kan også tage imod formler af formen y~x hvor, y er en numerisk vektor, som grupperes i henhold til værdien af x.

I vores datasæt airquality kan Temp f.eks. være vores numeriske vektor. Måned kan være vores grupperingsvariabel, således at vi får boksplot for hver måned separat. I vores datasæt er måned i form af et tal (1=januar, 2-febuar osv.).

boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")

Flere boxplots i et enkelt plot

Det fremgår tydeligt af ovenstående figur, at måned nummer 7 (juli) er relativt varmere end resten.