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)

Default box plot in R Programming

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, mainpour donner le titre, xlab et ylabpour 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)

Horizontal box plot in R

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 les NA 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)

r-multiple-boxplot

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")

Multiples boxplots dans un seul tracé

Il est clair dans la figure ci-dessus que le mois numéro 7 (juillet) est relativement plus chaud que le reste.