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)
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)
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, atNA
‘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)
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")
Det fremgår tydeligt af ovenstående figur, at måned nummer 7 (juli) er relativt varmere end resten.