Как стандартизировать данные в R (с примерами)


Стандартизировать набор данных означает масштабировать все значения в наборе данных таким образом, чтобы среднее значение равнялось 0, а стандартное отклонение равнялось 1.

Наиболее распространенный способ сделать это — использовать стандартизацию z-оценки, которая масштабирует значения по следующей формуле:

(х я – х ) / с

куда:

  • x i : i -е значение в наборе данных
  • x : Среднее значение выборки
  • s : Стандартное отклонение выборки

В следующих примерах показано, как использовать функцию scale() в сочетании с пакетом dplyr в R для масштабирования одной или нескольких переменных во фрейме данных с использованием стандартизации z-score.

Стандартизируйте одну переменную

Следующий код показывает, как масштабировать только одну переменную во фрейме данных с тремя переменными:

library(dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
 var2= runif(10, 2, 23),
 var3= runif(10, 5, 38))

#view original data frame 
df

 var1 var2 var3
1 13.275433 6.325466 35.845273
2 18.606195 5.707692 12.000703
3 28.642668 16.427480 26.505234
4 45.410389 10.066178 9.143318
5 10.084097 18.166670 13.818282
6 44.919484 12.451684 17.741765
7 47.233763 17.069989 5.441881
8 33.039890 22.830028 17.618803
9 31.455702 9.980739 33.699798
10 3.089314 18.326350 16.231517

#scale *var1* to have mean = 0 and standard deviation = 1
df2 <- df %>% mutate_at (c('var1'), ~( scale (.) %>% as.vector ))
df2

 var1 var2 var3
1 -0.90606801 6.325466 35.845273
2 -0.56830963 5.707692 12.000703
3 0.06760377 16.427480 26.505234
4 1.13001072 10.066178 9.143318
5 -1.10827188 18.166670 13.818282
6 1.09890684 12.451684 17.741765
7 1.24554014 17.069989 5.441881
8 0.34621281 22.830028 17.618803
9 0.24583830 9.980739 33.699798
10 -1.55146305 18.326350 16.231517

Обратите внимание, что только первая переменная была масштабирована, а две другие переменные остались прежними. Мы можем быстро подтвердить, что новая масштабированная переменная имеет среднее значение 0 и стандартное отклонение 1:

#calculate mean of scaled variable
mean(df2$var1)

[1] -4.18502e-18 #basically zero

#calculate standard deviation of scaled variable 
sd(df2$var1)

[1] 1

Стандартизируйте несколько переменных

В следующем коде показано, как одновременно масштабировать несколько переменных во фрейме данных:

library(dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
 var2= runif(10, 2, 23),
 var3= runif(10, 5, 38))

#scale *var1* and *var2* to have mean = 0 and standard deviation = 1
df3 <- df %>% mutate_at (c('var1', 'var2'), ~( scale (.) %>% as.vector ))
df3

 var1 var2 var3
1 -0.90606801 -1.3045574 35.845273
2 -0.56830963 -1.4133223 12.000703
3 0.06760377 0.4739961 26.505234
4 1.13001072 -0.6459703 9.143318
5 -1.10827188 0.7801967 13.818282
6 1.09890684 -0.2259798 17.741765
7 1.24554014 0.5871157 5.441881
8 0.34621281 1.6012242 17.618803
9 0.24583830 -0.6610127 33.699798
10 -1.55146305 0.8083098 16.231517

Стандартизируйте все переменные

В следующем коде показано, как масштабировать все переменные во фрейме данных с помощью функции mutate_all :

library(dplyr)

#make this example reproducible 
set.seed(1)

#create original data frame
df <- data.frame(var1= runif(10, 0, 50), 
 var2= runif(10, 2, 23),
 var3= runif(10, 5, 38))

#scale all variables to have mean = 0 and standard deviation = 1
df4 <- df %>% mutate_all (~( scale (.) %>% as.vector ))
df4

 var1 var2 var3
1 -0.90606801 -1.3045574 1.6819976
2 -0.56830963 -1.4133223 -0.6715858
3 0.06760377 0.4739961 0.7600871
4 1.13001072 -0.6459703 -0.9536246
5 -1.10827188 0.7801967 -0.4921813
6 1.09890684 -0.2259798 -0.1049130
7 1.24554014 0.5871157 -1.3189757
8 0.34621281 1.6012242 -0.1170501
9 0.24583830 -0.6610127 1.4702281
10 -1.55146305 0.8083098 -0.2539824

Дополнительные ресурсы

Как нормализовать данные в R
Как рассчитать стандартное отклонение в R
Как заменить пропущенные значения в R
Как преобразовать данные в R (логарифм, квадратный корень, кубический корень)

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.