Come etichettare i valori anomali nei boxplot in ggplot2


Questo tutorial fornisce un esempio passo passo di come etichettare i valori anomali nei boxplot in ggplot2.

Passaggio 1: creare il frame di dati

Innanzitutto, creiamo il seguente frame di dati che contiene informazioni sui punti segnati da 60 diversi giocatori di basket in tre diverse squadre:

 #make this example reproducible
set. seeds (1)

#create data frame
df <- data. frame (team=rep(c('A', 'B', 'C'), each= 20 ),
                 player=rep(LETTERS[1:20], times= 3 ),
                 points=round(rnorm(n=60, mean=30, sd=10), 2))

#view head of data frame
head(df)

  team player points
1 AA 23.74
2AB 31.84
3 AC 21.64
4AD 45.95
5 AE 33.30
6 FY 21.80

Nota : abbiamo utilizzato la funzione set.seed() per garantire che questo esempio sia riproducibile.

Passaggio 2: definire una funzione per identificare i valori anomali

In ggplot2, un’osservazione è definita come un valore anomalo se soddisfa uno dei due requisiti seguenti:

  • L’osservazione è 1,5 volte l’intervallo interquartile inferiore al primo quartile (Q1)
  • L’osservazione è 1,5 volte l’intervallo interquartile sopra il terzo quartile (Q3).

Possiamo creare la seguente funzione in R per etichettare le osservazioni come valori anomali se soddisfano uno di questi due requisiti:

 find_outlier <- function (x) {
  return (x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}

Correlato: Come interpretare l’intervallo interquartile

Passaggio 3: etichettare i valori anomali nei boxplot in ggplot2

Quindi possiamo utilizzare il seguente codice per etichettare i valori anomali nei boxplot in ggplot2:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), points, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

etichettare i valori anomali nei boxplot in ggplot2

Si noti che nel grafico sono etichettati due valori anomali.

Il primo valore anomalo è un giocatore della squadra A che ha segnato 7,85 punti e l’altro valore anomalo è un giocatore della squadra B che ha segnato 10,11 punti.

Tieni presente che potremmo anche utilizzare una variabile diversa per etichettare questi valori anomali.

Ad esempio, potremmo scambiare i punti del giocatore nella funzione mutate() per etichettare i valori anomali in base al nome del giocatore:

 library (ggplot2)
library (dplyr)

#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
        group_by(team) %>%
        mutate(outlier = ifelse(find_outlier(points), player, NA))

#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
  geom_boxplot() +
  geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 ) 

Il valore anomalo della squadra A ora ha un’etichetta N e il valore anomalo della squadra B ora ha un’etichetta D , poiché questi rappresentano i nomi dei giocatori che hanno valori anomali per i punti.

Nota : l’argomento hjust in geom_text() viene utilizzato per spostare l’etichetta orizzontalmente verso destra in modo che non si sovrapponga al punto del tracciato.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in ggplot2:

Come cambiare la dimensione del carattere in ggplot2
Come rimuovere una legenda in ggplot2
Come ruotare le etichette degli assi in ggplot2

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *