Come utilizzare la funzione scale() in r (con esempi)
La funzione scale() in R può essere utilizzata per ridimensionare i valori in un vettore, matrice o frame di dati.
Questa funzione utilizza la seguente sintassi di base:
scale(x, center = TRUE , scale = TRUE )
Oro:
- x : Nome dell’oggetto da ridimensionare
- center : se sottrarre la media durante il ridimensionamento. Il valore predefinito è VERO.
- scala : se dividere per la deviazione standard durante il ridimensionamento. Il valore predefinito è VERO.
Questa funzione utilizza la seguente formula per calcolare i valori scalati:
x scalato = (x originale – x̄) / s
Oro:
- x originale : il valore x originale
- x̄ : Il campione significa
- s : la deviazione standard del campione
Questa operazione è nota anche come normalizzazione dei dati e converte semplicemente ciascun valore originale in un punteggio z .
I seguenti esempi mostrano come utilizzare questa funzione nella pratica.
Esempio 1: scala dei valori in un vettore
Supponiamo di avere il seguente vettore di valori in 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
Il codice seguente mostra come ridimensionare i valori vettoriali utilizzando la funzione 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
Ecco come è stato calcolato ciascun valore scalato:
- Valore 1: (1 – 5) / 2,738613 = -1,46
- Valore 2: (2 – 5) / 2,738613 = -1,09
- Valore 3: (3 – 5) / 2,738613 = -0,73
E così via.
Tieni presente che se specifichiamo scale=FALSE la funzione non verrà divisa per la deviazione standard durante il ridimensionamento:
#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
Ecco come è stato calcolato ciascun valore scalato:
- Valore 1: 1 – 5 = -4
- Valore 2: 2 – 5 = -3
- Valore 3: 3 – 5 = -2
E così via.
Esempio 2: scala i valori delle colonne in un frame di dati
Molto spesso utilizziamo la funzione scale() quando vogliamo ridimensionare i valori di più colonne in un frame di dati in modo tale che ciascuna colonna abbia una media pari a 0 e una deviazione standard pari a 1.
Ad esempio, supponiamo di avere il seguente frame di dati in 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 xy 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
Si noti che l’intervallo di valori della variabile y è molto più ampio dell’intervallo di valori della variabile x.
Possiamo utilizzare la funzione scale() per scalare i valori nelle due colonne in modo tale che i valori scalati di xey abbiano entrambi una media pari a 0 e una deviazione standard pari a 1:
#scale values in each column of data frame df_scaled <- scale(df) #view scaled data frame df_scaled xy [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
Le colonne xey ora hanno una media pari a 0 e una deviazione standard pari a 1.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:
Come normalizzare i dati in R
Come standardizzare i dati in R
Come calcolare la media sulle colonne in R