R laatikkokuvio
Tässä artikkelissa opit luomaan whisker- ja laatikkokuvion R-ohjelmoinnissa. Opit myös piirtämään useita boxplotteja yhteen plottiin.
R:ssä boxplot (ja whisker plot) luodaan boxplot()
-funktiolla.
Funktio boxplot()
ottaa sisäänsä minkä tahansa määrän numeerisia vektoreita, ja piirtää boxplotin kullekin vektorille.
Voit myös syöttää sisäänsä listan (tai tietokehyksen), jossa on komponentteina numeerisia vektoreita. Käytetään sisäänrakennettua tietokokonaisuutta airquality
, jossa on ”Daily air quality measurements in New York, May to September 1973.” (R-dokumentaatio)
> 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 ...
Tehdään boxplot otsonilukemille.
boxplot(airquality$Ozone)
Havainnoista nähdään, että mediaanin yläpuolella oleva aineisto on hajanaisempaa. Voimme myös huomata kaksi outlieriä ylemmässä ääripäässä.
Voimmekin syöttää lisäparametreja säätääksemme, miltä kuvaajamme näyttää. Voit lukea niistä ohjeesta ?boxplot
.
Joitakin usein käytettyjä parametreja ovat: main
-otsikon antamiseen, xlab
ja ylab
– akseleiden merkintöjen antamiseen, col
värin määrittämiseen jne.
Lisäksi argumentilla horizontal = TRUE
voimme piirtää sen vaakasuoraan ja argumentilla notch = TRUE
voimme lisätä laatikkoon loven.
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)
Boxplot()
Funktio boxplot()
palauttaa listan, jossa on 6 komponenttia, jotka näkyvät seuraavasti.
> 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"
Kuten yllä näemme, palautetaan lista, jossa on stats
-viiksien ja laatikon ylä-/alareunojen sijainti sekä mediaani,
-
n
-havaintojen lukumäärä, jolla boxplot on piirretty (huomaa, ettäNA
:iä ei oteta huomioon) -
conf
-viiksien ylä-/alareunat,out
-poikkeamien arvo -
group
-vektori, jonka pituus on sama kuin out ja jonka alkioilla ilmoitetaan, mihin ryhmään poikkeama kuuluu ja -
names
-vektori ryhmien nimistä.
Moninkertaiset boxplotit
Voidaan piirtää useita boxplotteja yhteen kuvaajaan välittämällä lista, datakehys tai useita vektoreita.
Katsotaanpa Ozone
– ja Temp
-kenttää airquality
-tietokannassa. Luodaan myös normaalijakauma, jolla on sama keskiarvo ja keskihajonta, ja piirretään ne vierekkäin vertailun vuoksi.
# 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))
Tehdään nyt näistä tiedoista 4 boxplottia. Käytämme argumentteja at
ja names
merkitsemään paikkaa ja merkintää.
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-muoto Kaava
Funktio boxplot()
voi ottaa sisäänsä myös y~x
-muotoisia kaavoja, joissa, y
on numeerinen vektori, joka ryhmitellään x
:n arvon mukaan.
Tietoaineistossamme airquality
esimerkiksi Temp
voi olla numeerinen vektorimme. Kuukausi voi olla ryhmittelymuuttujamme, jolloin saamme boxplotin jokaiselle kuukaudelle erikseen. Tietoaineistossamme kuukausi on numeron muodossa (1=tammikuu, 2-helmikuu ja niin edelleen).
boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")
Yllä olevasta kuviosta käy selvästi ilmi, että kuukausi numero 7 (heinäkuu) on suhteellisesti kuumempi kuin muut.