Il grafico boxplot è un grafico a forma di scatola con baffi molto usato in statistica descrittiva per condurre un'analisi esplorativa dei dati mediante il calcolo di 5 indici di sintesi. Come puoi vedere dall'immagine qui sotto, tale grafico prende il nome dalla sua forma, ("box" in inglese significa appunto "scatola"). Tuttavia, alcune volte è anche chiamato "whisker plot" (whisker infatti significa "baffo" in inglese) per la presenza dei due baffi che fuoriescono dalla scatola. Può essere graficato o verticalmente oppure orizzontalmente. Nel primo caso i valori della variabile crescono percorrendo il grafico dal basso verso l'alto, mentre invece nel secondo caso la scala dei valori si legge orizzontalmente da sinistra a destra.
Come detto, il boxplot serve a descrivere la distribuzione di una variabile quantitativa o numerica mediante la visualizzazione di 5 indici di posizione:
- LIMITE INFERIORE: fine del baffo inferiore che identifica il valore non anomalo più piccolo dei dati;
- PRIMO QUARTILE Q1: il valore sotto il quale risiede il 25% della distribuzione;
- SECONDO QUARTILE Q2 o MEDIANA: rappresenta il valore centrale della distribuzione ossia quello che la spezza in due parti uguali;
- TERZO QUARTILE Q3: ci dice dove cade il 75% dei dati;
- LIMITE SUPERIORE: fine del baffo superiore che indica il valore non anomalo massimo presente tra i dati.
I valori anomali chiamati anche OUTLIERS sono quei valori che si distaccano troppo dal resto dei dati. Se ce ne sono, questi compariranno sotto il limite inferiore o sopra il limite superiore. Se invece la variabile non ha valori estremanti, allora la fine dei baffi rappresenteranno rispettivamente valore MINIMO e MASSIMO.
Come calcolare limite inferiore e superiore del boxplot
Come già detto, i limiti inferiore e superiore (che indico con $L_i$ e $L_s$) rappresentano rispettivamente le soglie minima e massima entro cui cadono i valori NON anomali della variabile. In altre parole, valori più piccoli di $L_i$ e più grandi di $L_s$ si considerano outliers. Ma come calcolare mediante formule queste soglie che ci permettono di verificare se la variabile in esame presenta valori anomali o meno?
Prima di tutto è necessario calcolare il cosiddetto range interquartile (interquartile range in inglese), ossia la differenza tra terzo e primo quartile:
$$IQR=Q_3-Q_1$$
L'IQR, detto anche differenza interquartile, non è altro che l'altezza della scatola e contiene il 50% dei valori della variabile.
Fatto ciò, il troncamento inferiore e superiore si calcolano con le seguenti formule:
$$\begin{array}{l}
L_i=Q_1-1.5\cdot IQR\\
L_s=Q_3+1.5\cdot IQR\end{array}$$
Ribadisco che il limite inferiore e superiore non coincidono necessariamente con il minimo e il massimo valore della variabile misurata. Questo accade solo quando non vi sono valori anomali, ossia tutti i valori assunti dalla variabile ricadono nell'intervallo $(L_i, L_s)$
Come si interpreta un boxplot?
Di seguito gli aspetti da attenzionare:
- Guarda la scala di misura per capire quali sono i valori assunti dalla variabile in esame.
- Guarda la lunghezza della scatola e dei baffi: più lunghi sono più dispersa sarà la variabile.
- Verifica se sono presenti valori outliers sotto o sopra i baffi e considera se tenerli o eliminarli dalle tue analisi.
Come graficare un boxplot in R
La sintassi base del comando R è:
boxplot(nome_variabile_numerica)
ma tra parentesi puoi specificare altri parametri opzionali per personalizzare il grafico. Ad esempio:
- il parametro main indica il titolo del grafico;
- i parametri xlab e ylab servono a dare un’etichetta all’asse x e all’asse y rispettivamente
- il parametro col mediante il quale si assegna un colore alla scatola. Il colore può essere specificato usando i nomi dei colori in inglese come red, blue, yellow, ecc oppure inserendo il codice esadecimale che indica una particolare tonalità.
Un esempio potrebbe essere il seguente:
data("ChickWeight")
data <- ChickWeight
boxplot(data$weight,
main="Boxplot ChickWeight",
col = "#144471")
Nota che ho considerato il dataset "ChickWeight" presente già nell'ambiente di sviluppo di R. Richiama l'help tramite il comando ?ChickWeight per ulteriori dettagli.
Boxplot di gruppo in R
In R si può produrre anche un boxplot di gruppo per confrontare le distribuzioni di una variabile numerica spaccata per categoria o modalità. Questo è possibile solo quando hai una variabile numerica e una categoriale.
La sintassi base della funzione R è:
boxplot(var_numerica ~ var_categoriale)
dove il simbolo "~" si chiama tilde. Al solito è possibile aggiungere ulteriori parametri per personalizzare il plot secondo i propri gusti. Considerando il dataset precedente, possiamo confrontare le distribuzioni dei pesi dei pulcini a seconda della dieta somministrata:
boxplot(data\$weight ~ data\$Diet,
xlab = "Diet",
ylab = "Weight",
main="Boxplot ChickWeight by diet",
col = "#ff6600")
Guarda il video qui sotto per vedere i comandi R in azione!