Какое распределение ожидаешь получить при сборе значений зарплаты по России?

Ответ

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

Характеристики распределения:

  1. Мода < Медиана < Среднее: Большинство наблюдений (мода) сосредоточено в левой, нижней части распределения. Среднее арифметическое сильно смещено вправо редкими, но экстремально высокими значениями.
  2. Длинный правый хвост: Образуется за счёт высоких зарплат топ-менеджеров, специалистов редких профессий, успешных предпринимателей и работников в высокомаржинальных отраслях (IT, финансы).
  3. Потенциальная полимодальность: Распределение может иметь несколько пиков из-за сильной региональной дифференциации (Москва/СПб vs регионы), различий между отраслями (нефтегаз vs образование) и типами занятости (наёмные работники vs самозанятые).

Практический пример анализа в Python:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Генерация синтетических данных, имитирующих лог-нормальное распределение зарплат
np.random.seed(42)
# Параметры для логнормального распределения: mu и sigma - параметры нормального распр. логарифма зарплат
mu, sigma = 11.2, 0.65  # Подобраны для реалистичного диапазона
log_salaries = np.random.normal(mu, sigma, 5000)
salaries = np.exp(log_salaries)  # Преобразуем обратно в рубли

# Визуализация
fig, axes = plt.subplots(1, 2, figsize=(12, 4))

# 1. Гистограмма на обычной шкале
axes[0].hist(salaries, bins=50, edgecolor='black', alpha=0.7)
axes[0].axvline(np.median(salaries), color='red', linestyle='--', label=f'Медиана: {np.median(salaries):.0f} руб')
axes[0].axvline(np.mean(salaries), color='green', linestyle='--', label=f'Среднее: {np.mean(salaries):.0f} руб')
axes[0].set_title('Распределение зарплат (линейная шкала)')
axes[0].set_xlabel('Зарплата, руб')
axes[0].set_ylabel('Частота')
axes[0].legend()
axes[0].grid(True, alpha=0.3)

# 2. Гистограмма на логарифмической шкале по оси X (должна выглядеть как нормальное распределение)
axes[1].hist(salaries, bins=50, edgecolor='black', alpha=0.7)
axes[1].set_xscale('log')
axes[1].set_title('Распределение зарплат (логарифмическая шкала X)')
axes[1].set_xlabel('Зарплата, руб (log scale)')
axes[1].set_ylabel('Частота')
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

Ответ 18+ 🔞

Ну ты представляешь, какую хуйню можно нарисовать, если взять все зарплаты по стране? Это же ёперный театр получается! Ожидается, что график будет кривой, как рога барана — с одной стороны всё скучено, а с другой тянется хвост до самого горизонта. Это называется правостороннее асимметричное распределение, а по-простому — у большинства людей денег как с гуся вода, а у некоторых овердохуища.

Что там по цифрам творится:

  1. Мода < Медиана < Среднее: То есть самая частая зарплата (мода) — это вообще копейки, медиана — уже чуть лучше, но всё равно нихуя, а среднее арифметическое взлетает до небес, потому что его раздувают эти усатые пидарасы в дорогих костюмах.
  2. Длинный правый хвост: Этот хвост — он от тех, кто в IT сидит, в банках вертится или нефтью торгует. Нормальные люди в левой части графика кучкуются, а эти — где-то на Марсе.
  3. Может быть несколько горбов: Потому что в Москве одно, в деревне — другое, а у того, кто на заводе стоит, и у того, кто в конторе сидит, — третье. В общем, пиздец, а не картинка.

Смотри, как это в Питоне посмотреть, если не веришь:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Нагенерим данных, как будто это реальные зарплаты. Будет похоже на правду.
np.random.seed(42)
# Параметры подобраны так, чтобы было похоже на жизнь: mu и sigma для логарифма зарплат
mu, sigma = 11.2, 0.65
log_salaries = np.random.normal(mu, sigma, 5000)
salaries = np.exp(log_salaries)  # Возвращаем из логарифмов обратно в рубли

# А теперь картинки нарисуем, чтоб глазам больно было
fig, axes = plt.subplots(1, 2, figsize=(12, 4))

# 1. Картинка как есть, на обычных осях
axes[0].hist(salaries, bins=50, edgecolor='black', alpha=0.7)
axes[0].axvline(np.median(salaries), color='red', linestyle='--', label=f'Медиана: {np.median(salaries):.0f} руб')
axes[0].axvline(np.mean(salaries), color='green', linestyle='--', label=f'Среднее: {np.mean(salaries):.0f} руб')
axes[0].set_title('Распределение зарплат (линейная шкала)')
axes[0].set_xlabel('Зарплата, руб')
axes[0].set_ylabel('Частота')
axes[0].legend()
axes[0].grid(True, alpha=0.3)

# 2. А вот тут хитрая жопа: ось X сделаем логарифмической. Если распределение лог-нормальное, то тут всё станет ровненьким и симметричным.
axes[1].hist(salaries, bins=50, edgecolor='black', alpha=0.7)
axes[1].set_xscale('log')
axes[1].set_title('Распределение зарплат (логарифмическая шкала X)')
axes[1].set_xlabel('Зарплата, руб (log scale)')
axes[1].set_ylabel('Частота')
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

Вот смотришь на первую картинку — и волнение ебать, как же несправедливо всё. А на вторую — и вроде бы симпатичная колоколообразная кривая, всё по науке. Но суть-то не меняется: большинство — слева, у подножия, а эти, блядь, хуи с горы, — они там, на правом хвосте, сидят и довольные такие.