Как использовать функцию scale() в R (с примерами)


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

Эта функция использует следующий базовый синтаксис:

scale(x, center = TRUE , scale = TRUE )

куда:

  • x : Имя масштабируемого объекта.
  • center : вычитать ли среднее значение при масштабировании. Значение по умолчанию — ИСТИНА.
  • scale : Делить ли на стандартное отклонение при масштабировании. Значение по умолчанию — ИСТИНА.

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

x в масштабе = (x исходный - x̄ ) / с

куда:

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

Это также известно как стандартизация данных, при которой каждое исходное значение просто преобразуется в z-оценку .

В следующих примерах показано, как использовать эту функцию на практике.

Пример 1: Масштабирование значений в векторе

Предположим, у нас есть следующий вектор значений в 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

В следующем коде показано, как масштабировать значения в векторе с помощью функции 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

Вот как было рассчитано каждое масштабированное значение:

  • Значение 1: (1 – 5) / 2,738613 = -1,46
  • Значение 2: (2 – 5) / 2,738613 = -1,09
  • Значение 3: (3 – 5) / 2,738613 = -0,73

И так далее.

Обратите внимание, что если бы мы указали scale=FALSE , то функция не делилась бы на стандартное отклонение при выполнении масштабирования:

#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

Вот как было рассчитано каждое масштабированное значение:

  • Значение 1: 1 – 5 = -4
  • Значение 2: 2 – 5 = -3
  • Значение 3: 3 – 5 = -2

И так далее.

Пример 2. Масштабирование значений столбцов во фрейме данных

Чаще всего мы используем функцию scale(), когда хотим масштабировать значения в нескольких столбцах фрейма данных так, чтобы каждый столбец имел среднее значение 0 и стандартное отклонение 1.

Например, предположим, что у нас есть следующий фрейм данных в 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

Обратите внимание, что диапазон значений переменной y намного больше, чем диапазон значений переменной x.

Мы можем использовать функцию scale() для масштабирования значений в обоих столбцах таким образом, чтобы масштабированные значения x и y имели среднее значение 0 и стандартное отклонение 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

И столбец x, и столбец y теперь имеют среднее значение 0 и стандартное отклонение 1.

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

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как нормализовать данные в R
Как стандартизировать данные в R
Как усреднить по столбцам в R

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