R Box Plot
Dans cet article, vous apprendrez à créer un whisker et un box plot en programmation R. Vous apprendrez également à dessiner plusieurs box plots dans un seul tracé.
En R, le boxplot (et le tracé à moustaches) est créé à l’aide de la fonction boxplot()
.
La fonction boxplot()
prend un nombre quelconque de vecteurs numériques, dessinant un boxplot pour chaque vecteur.
Vous pouvez également passer dans une liste (ou un cadre de données) avec des vecteurs numériques comme composants. Utilisons le jeu de données intégré airquality
qui a « Mesures quotidiennes de la qualité de l’air à New York, de mai à septembre 1973. »-Documentation R.
> 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 ...
Faisons un boxplot pour les lectures d’ozone.
boxplot(airquality$Ozone)
Nous pouvons voir que les données au-dessus de la médiane sont plus dispersées. Nous pouvons également remarquer deux valeurs aberrantes à l’extrême supérieur.
Nous pouvons passer des paramètres supplémentaires pour contrôler l’aspect de notre tracé. Vous pouvez les lire dans la section d’aide ?boxplot
.
Certains de ceux qui sont fréquemment utilisés sont, main
pour donner le titre, xlab
et ylab
pour fournir des étiquettes pour les axes, col
pour définir la couleur, etc.
En outre, avec l’argument horizontal = TRUE
on peut le tracer horizontalement et avec notch = TRUE
on peut ajouter une encoche à la boîte.
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)
Return Value of boxplot()
La fonction boxplot()
renvoie une liste avec 6 composants représentés comme suit .
> 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"
Comme on peut le voir ci-dessus, une liste est retournée qui a stats
– la position des extrêmes supérieurs/inférieurs des moustaches et de la boîte ainsi que la médiane,
-
n
-le nombre d’observation avec lequel le boxplot est dessiné (remarquez que lesNA
ne sont pas pris en compte) -
conf
-extrémités supérieures/inférieures de l’encoche,out
-valeur des outliers -
group
-un vecteur de même longueur que out dont les éléments indiquent à quel groupe appartient l’outlier et -
names
-un vecteur de noms pour les groupes.
Multiples boxplots
Nous pouvons dessiner plusieurs boxplots dans un seul graphique, en passant dans une liste, un cadre de données ou plusieurs vecteurs.
Considérons le champ Ozone
et Temp
de l’ensemble de données airquality
. Générons également une distribution normale avec la même moyenne et le même écart-type et traçons-les côte à côte pour comparaison.
# 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))
Maintenant, nous faisons 4 boxplots avec ces données. Nous utilisons les arguments at
et names
pour désigner le lieu et l’étiquette.
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)
Forme de boxplot Formule
La fonction boxplot()
peut également prendre en charge des formules de la forme y~x
où, y
est un vecteur numérique qui est regroupé selon la valeur de x
.
Par exemple, dans notre ensemble de données airquality
, le Temp
peut être notre vecteur numérique. Le mois peut être notre variable de regroupement, de sorte que nous obtenons le boxplot pour chaque mois séparément. Dans notre ensemble de données, le mois est sous forme de numéro (1=janvier, 2-février et ainsi de suite).
boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")
Il est clair dans la figure ci-dessus que le mois numéro 7 (juillet) est relativement plus chaud que le reste.