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


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

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

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

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

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

Выполняя эти преобразования, набор данных обычно становится более нормально распределенным.

Следующие примеры показывают, как выполнить эти преобразования в Python.

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

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

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 4 , b= 15 , size= 300 )

#create log-transformed data
data_log = np. log (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Log-Transformed Data ')

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

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

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

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

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 1 , b= 5 , size= 300 )

#create log-transformed data
data_log = np. sqrt (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Square Root Transformed Data ') 

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

Преобразование корня куба в Python

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

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 1 , b= 5 , size= 300 )

#create log-transformed data
data_log = np. cbrt (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Cube Root Transformed Data ') 

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

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

Как рассчитать Z-оценки в Python
Как нормализовать данные в Python
Что такое предположение нормальности в статистике?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *