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
  • : 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

Ajouter un commentaire

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