Как исправить левостороннюю и правостороннюю асимметрию.

Вопрос или проблема

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

Однако приведённый ниже пример является примером правой скошенности.

data = pd.DataFrame({
  "Доход": [15000, 22000, 30000, 35000, 42000, 50000, 65000, 78000, 120000, 250000]
})
sns.distplot( data['Доход'] , color="небесно-голубой", label="Длина чашечки")

введите описание изображения здесь

Теперь моё понимание правой скошенности заключается в том, что на возрастающем значении оси x меньше точек данных. Так правильно ли моё понимание? и как я могу исправить этот график, чтобы он представлял нормальное распределение?

На сколько мне известно, используя центральную предельную теорему, я должен иметь возможность преобразовать любую форму в стандартное нормальное распределение, но для этого требуется минимальный размер выборки в 30. Так, в моём случае есть ли другой способ, или добавление большего количества точек данных — единственный вариант?

Ответ или решение

Для решения проблемы смещения (скewness) данных, таких как ваше правостороннее смещение (right skewness) в наборе данных о доходах, необходимо учитывать несколько методов. Давайте рассмотрим вашу ситуацию более подробно и предложим способы исправления:

Понимание смещения в данных

Правостороннее смещение (right skewness) характеризуется тем, что в распределении данных имеется длинный хвост вправо, что указывает на наличие значительного числа высоких значений (в вашем случае, доходов). В вашем примере, доходы выше 100,000 имеют меньшую частоту, создавая тем самым правосторонний хвост в графике распределения.

Подходы к исправлению смещения

  1. Трансформация данных:

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

      import numpy as np
      data['Log_Income'] = np.log(data['Income'])
      sns.distplot(data['Log_Income'], color="skyblue", label="Log Income")
    • Квадратный корень: Если данные содержат много нулевых значений, вы можете использовать квадратный корень:

      data['Sqrt_Income'] = np.sqrt(data['Income'])
      sns.distplot(data['Sqrt_Income'], color="skyblue", label="Sqrt Income")
    • Бокс-Кокс трансформация: Более универсальный метод, который можно использовать для нормализации данных. Это требует наличия положительных значений:

      from scipy import stats
      data['BoxCox_Income'], _ = stats.boxcox(data['Income'])
      sns.distplot(data['BoxCox_Income'], color="skyblue", label="BoxCox Income")
  2. Увеличение объема выборки:

    • Если у вас есть возможность, сбор дополнительных данных — это хороший способ, который может помочь создать более сбалансированное распределение. Чем больше данных, тем более вероятно, что вы получите более полноценное представление о характеристиках, включая нормальность.
  3. Использование методов отбора данных:

    • Вы можете рассмотреть возможность исключения выбросов. Это может помочь улучшить нормальность распределения:
      data_filtered = data[data['Income'] < 100000]  # Пример фильтрации
      sns.distplot(data_filtered['Income'], color="skyblue", label="Filtered Income")
  4. Анализ с помощью центральной предельной теоремы (ЦПТ):

    • ЦПТ гласит, что при большом количестве наблюдений средние значения выборок будут стремиться к нормальному распределению, независимо от первоначального распределения. Однако это может быть неэффективным, если целевой анализ требует нормальности на уровне отдельных наблюдений.

Заключение

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

Если у вас есть дополнительные вопросы или вам нужна помощь с кодом, не стесняйтесь обращаться!

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

Капча загружается...