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

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

Многие статистические тесты предполагают, что остатки переменной отклика имеют нормальное распределение.

Однако часто остатки не имеют нормального распределения. Одним из способов решения этой проблемы является преобразование переменной ответа с помощью одного из трех преобразований:

1. Преобразование журнала: преобразование переменной ответа из y в log(y) .

2. Преобразование квадратного корня: преобразовать переменную отклика из y в √ y .

3. Преобразование кубического корня: преобразовать переменную ответа из y в y 1/3 .

Выполняя эти преобразования, переменная отклика обычно становится ближе к нормально распределенной. В следующих примерах показано, как выполнять эти преобразования в R.

Преобразование журнала в R

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

#create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform log transformation
log_y <- log10(df$y)

В следующем коде показано, как создать гистограммы для просмотра распределения y до и после преобразования журнала:

#create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for log-transformed distribution 
hist(log_y, col='coral2', main='Log Transformed')
Лог преобразования данных в R

Обратите внимание, что распределение с логарифмическим преобразованием гораздо более нормальное по сравнению с исходным распределением. Это все еще не идеальная «форма колокола», но оно ближе к нормальному распределению, чем исходное распределение.

На самом деле, если мы проведем тест Шапиро-Уилка для каждого распределения, мы обнаружим, что исходное распределение не соответствует предположению о нормальности, а логарифмически преобразованное распределение — нет (при α = 0,05):

#perform Shapiro-Wilk Test on original data
shapiro.test(df$y)

 Shapiro-Wilk normality test

data: df$y
W = 0.77225, p-value = 0.001655

#perform Shapiro-Wilk Test on log-transformed data 
shapiro.test(log_y)

 Shapiro-Wilk normality test

data: log_y
W = 0.89089, p-value = 0.06917

Преобразование квадратного корня в R

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

#create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
sqrt_y <- sqrt(df$y)

В следующем коде показано, как создать гистограммы для просмотра распределения y до и после преобразования квадратного корня:

#create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(sqrt_y, col='coral2', main='Square Root Transformed') 
Преобразование квадратного корня в R

Обратите внимание, что преобразованное квадратным корнем распределение гораздо более нормально распределено по сравнению с исходным распределением.

Преобразование кубического корня в R

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

#create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
cube_y <- df$y^(1/3)

В следующем коде показано, как создать гистограммы для просмотра распределения y до и после преобразования квадратного корня:

#create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(cube_y, col='coral2', main='Cube Root Transformed') 
Преобразование кубического корня в R

В зависимости от вашего набора данных одно из этих преобразований может привести к созданию нового набора данных с более нормальным распределением, чем другие.

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