Синие мальчики, красные девочки
Синие мальчики, красные девочки

Возник тут у меня с коллегой философский спор на тему почему у нас в ИТ так мало девочек и скинул он мне такую картинку по значениям IQ (выше) которая, как я выяснил позже, сильно искажает реальность.

И сказал, вот у нас в айтишечке обычно работают умненькие с IQ выше 110, и посмотри насколько синенький график выше красненького в зоне дальше чем 110. А я что - меня задело, что этому всему надо верить на слово. И решил провести небольшое исследование.

Возник вопрос откуда взять реальные данные по IQ по большой выборке испытуемых, небольшим поиском накопал более или менее значимую разницу в стандартном отклонении по IQ (14.1 у девочек против 14.9 у мальчиков). Вот понравилось мне исследование по Шотландии девочек и мальчиков в возрасте 11 лет за 1932 год. Далее буду оперировать этой цифрой.

Да, исследованию почти 100 лет, но оно уникально своим масштабом (были протестированы почти все 11-летние дети целой нации), а его выводы о большей вариативности у мужчин были многократно подтверждены более современными мета-анализами.

Еще литература по анализу IQ
  1. Johnson, Carothers & Deary (2008)
    Это ключевое исследование, подтверждающее гипотезу о роли X-хромосомы в вариативности.
    Название: A Role for the X Chromosome in Sex Differences in Variability in General Intelligence?
    Журнал: Perspectives on Psychological Science.
    Ссылка: Johnson, W., Carothers, A. D., & Deary, I. J. (2008). Vol. 3, Issue 6, pp. 511–520.
    Суть: Мета-анализ 15 выборок (всего 202 468 человек), установивший отношение дисперсий 1.13.

  2. Deary et al. (2003)
    Классическое исследование на основе полных данных целой нации (Шотландия).
    Название: Population sex differences in IQ at age 11: the Scottish Mental Survey 1932.
    Журнал: Intelligence.
    Ссылка: Deary, I. J., Thorpe, G., Wilson, V., Starr, J. M., & Whalley, L. J. (2003). Vol. 31, Issue 5, pp. 485–504.
    Суть: Исследование почти всех детей Шотландии, родившихся в 1921 году (~80 000 человек). Показало идентичное среднее значение (100.6 для девоч��к и 100.5 для мальчиков), но значимую разницу в стандартном отклонении (14.1 у девочек против 14.9 у мальчиков).

  3. Strand, Deary & Smith (2006)
    Масштабное исследование на британской выборке школьников.
    Название: Sex differences in cognitive abilities test scores: A UK national picture.
    Журнал: British Journal of Educational Psychology.
    Ссылка: Strand, S., Deary, I. J., & Smith, P. (2006). Vol. 76, Issue 3, pp. 463–480.
    Суть: Анализ данных 320 000 школьников Великобритании. Подтвердил большую вариативность у мальчиков в количественных и невербальных тестах.

А теперь имея такие данные напишем код для рисования графика на Python:

Код для рисования графиков
import numpy as np
import matplotlib.pyplot as plt

# --- 1. Параметры ---
mu = 100            # Средний IQ
sigma_girls = 14.1  # Девочки
sigma_boys = 14.9   # Мальчики

# --- 2. Функция Гаусса ---
def gaussian(x, mu, sigma):
    return (1 / (sigma * np.sqrt(2 * np.pi))) * np.exp(-0.5 * ((x - mu) / sigma)**2)

# --- 3. Данные для линий (гладкие) ---
x_smooth = np.linspace(0, 200, 1000)
y_girls_smooth = gaussian(x_smooth, mu, sigma_girls)
y_boys_smooth = gaussian(x_smooth, mu, sigma_boys)

# --- 4. Настройка графика ---
plt.figure(figsize=(20, 12)) # Еще больше размер

# Рисуем кривые
plt.plot(x_smooth, y_girls_smooth, color='red', alpha=0.2, linewidth=3, label='Девочки (Red)')
plt.plot(x_smooth, y_boys_smooth, color='blue', alpha=0.2, linewidth=3, linestyle='--', label='Мальчики (Blue)')

# --- 5. Расстановка цифр (от 10 до 200, шаг 10) ---
check_points = np.arange(10, 201, 10)

for x_val in check_points:
    # Считаем точные значения
    val_g = gaussian(x_val, mu, sigma_girls)
    val_b = gaussian(x_val, mu, sigma_boys)
    
    # Считаем отношение (Ratio) = Мальчики / Девочки
    # Добавляем защиту от деления на 0 (хотя в IQ 10-200 это маловероятно)
    if val_g > 0:
        ratio = val_b / val_g
    else:
        ratio = 0
    
    # Рисуем вертикальную линию-гид
    plt.axvline(x_val, color='gray', linestyle=':', alpha=0.1)
    
    # --- 1. ЗЕЛЕНАЯ ЦИФРА (Отношение: Boys / Girls) ---
    # Самая верхняя в столбике.
    # Мы ставим ее на фиксированном расстоянии от красной цифры или высоко над графиком.
    # Для наглядности ставим ее НАД красной цифрой.
    plt.text(x_val, val_g + 0.012, f"x{ratio:.4f}", 
             color='green', fontsize=9, rotation=90, 
             ha='center', va='bottom', fontweight='bold')

    # --- 2. КРАСНАЯ ЦИФРА (Девочки) ---
    # Посередине (над линией графика)
    plt.text(x_val, val_g + 0.001, f"{val_g:.8f}", 
             color='#c0392b', fontsize=8, rotation=90, 
             ha='center', va='bottom', fontweight='bold')
    
    # --- 3. СИНЯЯ ЦИФРА (Мальчики) ---
    # Снизу (под линией графика)
    plt.text(x_val, val_b - 0.001, f"{val_b:.8f}", 
             color='#2980b9', fontsize=8, rotation=90, 
             ha='center', va='top', fontweight='bold')

# --- 6. Оформление ---
plt.title('IQ Распределение: Красный=Девочки, Синий=Мальчики, Зеленый=Коэффициент (Синий/Красный)', fontsize=16)
plt.xlabel('IQ', fontsize=14)
plt.ylabel('Плотность вероятности', fontsize=14)

# Настраиваем ось X (шаг 10)
plt.xticks(np.arange(0, 201, 10))

# Расширяем Y, чтобы влез "этаж" с зелеными цифрами
plt.ylim(-0.02, 0.06) 

plt.legend(loc='upper right')
plt.grid(True, axis='y', alpha=0.2) 

plt.tight_layout()
plt.savefig('iq_ratio_analysis.png', dpi=200)
plt.show()

И посмотрим на эту красоту:

Вероятность обнаружить нужный IQ у случайного человека
Вероятность обнаружить нужный IQ у случайного человека

А какие будут выводы: как мы видим, разница в распределении IQ на отрезке 110-140 баллов минимальна и не может служить объяснением того, почему в индустрии мужчин в 3-5 раз больше, чем женщин. Это означает, что корень проблемы лежит не в биологии, а, скорее всего, в области социальных стереотипов, воспитания, образования и корпоративной культуры.

Да, данные показывают, что среди людей с IQ >140 мужчин статистически больше. НО! Большинство задач в индустрии (Backend, Frontend, QA, Management) требуют IQ в диапазоне 110–125, где распределения практически идентичны. Следовательно, дефицит женщин в мидл-сегменте нельзя объяснить биологией.

Так что в следующий раз, когда кто-то покажет вам график о 'природной' предрасположенности к IT, можете смело доставать Python и показывать, как обстоят дела на самом деле.

Любые модификации кода в сторону улучшения графика приветствую. Кому интересно промптик для нейросети под катом (для сезона ии):

Промпт для рисования графика

Выведи Python-код с matplotlib, который строит два гауссовых распределения IQ (среднее 100, сигма 14.1 для девочек и 14.9 для мальчиков) на одном графике. Красная линия — девочки, синяя пунктирная — мальчики. Каждые 10 единиц IQ выводи вертикально точные значения плотности обоих распределений и их отношение (зелёным).

P.S. Читая комментарии, пришел к мысли, что интересно было бы проанализировать гендерный состав по современным результатам ЕГЭ. Если кто встречал такие открытые исследования - прошу кинуть ссылочку.