R Box Plot

In questo articolo, imparerete a creare whisker e box plot nella programmazione R. Imparerai anche a disegnare box plot multipli in un singolo plot.

In R, il boxplot (e il whisker plot) viene creato usando la funzione boxplot().

La funzione boxplot() accetta un qualsiasi numero di vettori numerici, disegnando un boxplot per ogni vettore.

Puoi anche passare una lista (o data frame) con vettori numerici come suoi componenti. Usiamo il dataset incorporato airquality che ha “Misurazioni giornaliere della qualità dell’aria a New York, da maggio a settembre 1973.”- Documentazione 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 ...

Facciamo un boxplot per le letture dell’ozono.

boxplot(airquality$Ozone)

Default box plot in R Programming

Si può vedere che i dati sopra la mediana sono più dispersi. Possiamo anche notare due outlier all’estremo superiore.

Possiamo passare parametri aggiuntivi per controllare l’aspetto del nostro grafico. Si può leggere nella sezione di aiuto ?boxplot.

Alcuni di quelli usati frequentemente sono, mainper dare il titolo, xlab e ylab per fornire etichette per gli assi, col per definire il colore ecc.

Inoltre, con l’argomento horizontal = TRUE possiamo tracciare orizzontalmente e con notch = TRUE possiamo aggiungere una tacca al box.

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 funzione boxplot() restituisce una lista con 6 componenti mostrata come segue.

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

Come possiamo vedere sopra, viene restituita una lista che ha stats– la posizione degli estremi superiori/inferiore dei baffi e del box insieme alla mediana,

  • n-il numero di osservazioni con cui viene disegnato il boxplot (notare che i NA non vengono presi in considerazione)
  • conf– estremi superiori/inferiore della tacca, out-valore degli outlier
  • group-un vettore della stessa lunghezza di out i cui elementi indicano a quale gruppo appartiene l’outlier e
  • names-un vettore di nomi per i gruppi.

Boxplot multipli

Possiamo disegnare boxplot multipli in un unico grafico, passando una lista, un data frame o vettori multipli.

Consideriamo il campo Ozone e Temp del dataset airquality. Generiamo anche una distribuzione normale con la stessa media e deviazione standard e li tracciamo fianco a fianco per un confronto.

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

Ora facciamo 4 boxplot con questi dati. Usiamo gli argomenti at e names per indicare il luogo e l’etichetta.

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

FormulaBoxplot

La funzione boxplot() può anche accettare formule della forma y~x dove, y è un vettore numerico che viene raggruppato secondo il valore di x.

Per esempio, nel nostro set di dati airquality, il Temp può essere il nostro vettore numerico. Il mese può essere la nostra variabile di raggruppamento, in modo da ottenere il boxplot per ogni mese separatamente. Nel nostro set di dati, il mese è sotto forma di numero (1=gennaio, 2-gennaio e così via).

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

Multipli boxplot in un unico grafico

Dalla figura sopra è chiaro che il mese numero 7 (luglio) è relativamente più caldo del resto.