Comment supprimer les valeurs aberrantes de plusieurs colonnes dans R



Souvent, vous souhaiterez peut-être supprimer les valeurs aberrantes de plusieurs colonnes à la fois dans R.

Une façon courante de définir une observation comme valeur aberrante est si elle est 1,5 fois l’intervalle interquartile supérieur au troisième quartile (Q3) ou 1,5 fois l’intervalle interquartile inférieur au premier quartile (Q1).

À l’aide de cette définition, nous pouvons utiliser les étapes suivantes pour créer une fonction simple permettant d’identifier les valeurs aberrantes, puis appliquer cette fonction sur plusieurs colonnes dans un bloc de données R.

Étape 1 : Créer un bloc de données.

Commençons par créer un bloc de données dans R :

df <- data.frame(index=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 var1=c(4, 4, 5, 4, 3, 2, 8, 9, 4, 5),
                 var2=c(1, 2, 4, 4, 6, 9, 7, 8, 5, 29),
                 var3=c(9, 9, 9, 5, 5, 3, 4, 5, 11, 34))

Étape 2 : Définir la fonction de valeur aberrante.

Définissons ensuite une fonction capable d’identifier les valeurs aberrantes et une fonction qui peut ensuite supprimer les valeurs aberrantes :

outliers <- function(x) {

  Q1 <- quantile(x, probs=.25)
  Q3 <- quantile(x, probs=.75)
  iqr = Q3-Q1

 upper_limit = Q3 + (iqr*1.5)
 lower_limit = Q1 - (iqr*1.5)

 x > upper_limit | x < lower_limit
}

remove_outliers <- function(df, cols = names(df)) {
  for (col in cols) {
    df <- df[!outliers(df[[col]]),]
  }
  df
}

Étape 3 : appliquez la fonction de valeur aberrante au bloc de données.

Enfin, appliquons cette fonction sur plusieurs colonnes du bloc de données pour supprimer les valeurs aberrantes :

remove_outliers(df, c('var1', 'var2', 'var3'))

  index var1 var2 var3
1     1    4    1    9
2     2    4    2    9
3     3    5    4    9
4     4    4    4    5
5     5    3    6    5
9     9    4    5   11

Vous pouvez trouver plus de didacticiels R ici .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *