Необходимость нормального распределения

Одно из наиболее распространенных допущений в статистическом анализе - нормальность. Ты согласен?

Привет, мир, это мой первый блог сообщества Data Science. В этом блоге мы увидим различные типы преобразований данных для лучшего соответствия нормальному распределению (гауссовское распределение).

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

Большинство специалистов по данным утверждают, что они получают более точные результаты, если они также преобразуют независимые переменные. Это означает коррекцию перекоса для независимых переменных. Чем меньше перекос, тем лучше результат.

Преобразование - это не что иное, как применение математической функции к данным.

Приступим!

Обзор

  1. Преобразование журнала
  2. Преобразование квадратного корня
  3. Взаимное преобразование
  4. Преобразование Бокса-Кокса
  5. Преобразование Йео-Джонсона (бонус)

Для большей ясности посетите мой репозиторий на Github здесь.

1. Преобразование журнала:

Числовые переменные могут иметь сильно искаженное и ненормальное распределение (распределение Гаусса), вызванное выбросами, сильно экспоненциальным распределением и т. Д. Поэтому мы идем на преобразование данных.

При преобразовании журнала каждая переменная x будет заменена на log (x) с основанием 10, основанием 2 или натуральным логарифмом.

import numpy as np
log_target = np.log1p(df["Target"])

Приведенный выше график представляет собой сравнение исходных и преобразованных в журнал данных. Здесь мы видим, что асимметрия преобразованных данных уменьшилась. (лучшее значение перекоса должно быть почти нулевым)

2. Преобразование квадратного корня:

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

Здесь x заменяется квадратным корнем (x). Он слабее, чем преобразование журнала.

sqrt_target = df["Target"]**(1/2)

3. Взаимное преобразование:

В этом преобразовании x будет заменен обратным x (1 / x).

Обратное преобразование мало повлияет на форму распределения. Это преобразование можно использовать только для ненулевых значений.

reciprocal_target = 1/df["Target"]

Асимметрия преобразованных данных увеличивается.

4. Преобразование Бокса-Кокса:

Это одна из моих любимых техник трансформации.

Преобразование Бокса-Кокса очень хорошо работает для многих типов данных. На изображении ниже представлена ​​математическая формула преобразования Бокса-Кокса.

Учитываются все значения лямбда от -5 до 5 и выбирается лучшее значение для данных. «Лучшее» значение - это значение, которое приводит к максимальной асимметрии распределения. Преобразование журнала произойдет, когда лямбда будет равна нулю.

from scipy.stats import boxcox
bcx_target, lam = boxcox(df["Target"])
#lam is the best lambda for the distribution

Здесь мы заметили, что функция Бокса-Кокса уменьшила асимметрию, и она почти равна нулю. Сработало хорошо;)

Для этого преобразования значения должны быть строго положительными.

5. Преобразование Йео-Джонсона:

Это один из старых методов преобразования, который очень похож на преобразование Бокса-Кокса, но не требует, чтобы значения были строго положительными.

Это преобразование также позволяет сделать распределение более симметричным.

from scipy.stats import yeojohnson
yf_target, lam = yeojohnson(df["TARGET"])

Преобразование Йео-Джонсона сработало красиво и лучше, чем Бокс-Кокс.

Заключение :

В этом блоге мы увидели различные типы трансформаций (с одной бонусной самой старой техникой трансформации) для лучшего соответствия нормальности. Всегда Ё-Джонсон не будет правильным выбором. Для некоторых данных Box-cox будет работать лучше, поэтому мы должны использовать лучшую технику преобразования.

В следующем блоге мы поговорим о равномерном распределении. :)

Свяжитесь со мной в LinkedIn;)

Комментарии приветствуются :)