Comment utiliser la fonction scale() dans R (avec exemples)
La fonction scale() dans R peut être utilisée pour mettre à l’échelle les valeurs dans un vecteur, une matrice ou un bloc de données.
Cette fonction utilise la syntaxe de base suivante :
scale(x, center = TRUE, scale = TRUE)
où:
- x : Nom de l’objet à mettre à l’échelle
- center : s’il faut soustraire la moyenne lors de la mise à l’échelle. La valeur par défaut est VRAI.
- scale : s’il faut diviser par l’écart type lors de la mise à l’échelle. La valeur par défaut est VRAI.
Cette fonction utilise la formule suivante pour calculer les valeurs mises à l’échelle :
x mis à l’échelle = (x original – x̄) / s
où:
- x original : La valeur x originale
- x̄ : La moyenne de l’échantillon
- s : l’écart type de l’échantillon
Ceci est également connu sous le nom de normalisation des données, qui convertit simplement chaque valeur originale en un score z .
Les exemples suivants montrent comment utiliser cette fonction dans la pratique.
Exemple 1 : mettre à l’échelle les valeurs dans un vecteur
Supposons que nous ayons le vecteur de valeurs suivant dans R :
#define vector of values x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9) #view mean and standard deviation of values mean(x) [1] 5 sd(x) [1] 2.738613
Le code suivant montre comment mettre à l’échelle les valeurs du vecteur à l’aide de la fonction scale() :
#scale the values of x x_scaled <- scale(x) #view scaled values x_scaled [,1] [1,] -1.4605935 [2,] -1.0954451 [3,] -0.7302967 [4,] -0.3651484 [5,] 0.0000000 [6,] 0.3651484 [7,] 0.7302967 [8,] 1.0954451 [9,] 1.4605935
Voici comment chaque valeur mise à l’échelle a été calculée :
- Valeur 1 : (1 – 5) / 2,738613 = -1,46
- Valeur 2 : (2 – 5) / 2,738613 = -1,09
- Valeur 3 : (3 – 5) / 2,738613 = -0,73
Et ainsi de suite.
Notez que si nous spécifions scale=FALSE alors la fonction n’aurait pas divisé par l’écart type lors de la mise à l’échelle :
#scale the values of x but don't divide by standard deviation x_scaled <- scale(x, scale = FALSE) #view scaled values x_scaled [,1] [1,] -4 [2,] -3 [3,] -2 [4,] -1 [5,] 0 [6,] 1 [7,] 2 [8,] 3 [9,] 4
Voici comment chaque valeur mise à l’échelle a été calculée :
- Valeur 1 : 1 – 5 = -4
- Valeur 2 : 2 – 5 = -3
- Valeur 3 : 3 – 5 = -2
Et ainsi de suite.
Exemple 2 : mettre à l’échelle les valeurs de colonne dans un bloc de données
Le plus souvent, nous utilisons la fonction scale() lorsque nous souhaitons mettre à l’échelle les valeurs de plusieurs colonnes d’un bloc de données de telle sorte que chaque colonne ait une moyenne de 0 et un écart type de 1.
Par exemple, supposons que nous ayons le bloc de données suivant dans R :
#create data frame df <- data.frame(x=c(1, 2, 3, 4, 5, 6, 7, 8, 9), y=c(10, 20, 30, 40, 50, 60, 70, 80, 90)) #view data frame df x y 1 1 10 2 2 20 3 3 30 4 4 40 5 5 50 6 6 60 7 7 70 8 8 80 9 9 90
Notez que la plage de valeurs de la variable y est beaucoup plus grande que la plage de valeurs de la variable x.
Nous pouvons utiliser la fonction scale() pour mettre à l’échelle les valeurs dans les deux colonnes de telle sorte que les valeurs mises à l’échelle de x et y aient toutes deux une moyenne de 0 et un écart type de 1 :
#scale values in each column of data frame df_scaled <- scale(df) #view scaled data frame df_scaled x y [1,] -1.4605935 -1.4605935 [2,] -1.0954451 -1.0954451 [3,] -0.7302967 -0.7302967 [4,] -0.3651484 -0.3651484 [5,] 0.0000000 0.0000000 [6,] 0.3651484 0.3651484 [7,] 0.7302967 0.7302967 [8,] 1.0954451 1.0954451 [9,] 1.4605935 1.4605935
Les colonnes x et y ont désormais une moyenne de 0 et un écart type de 1.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :
Comment normaliser les données dans R
Comment standardiser les données dans R
Comment faire la moyenne sur les colonnes dans R