
Возник тут у меня с коллегой философский спор на тему почему у нас в ИТ так мало девочек и скинул он мне такую картинку по значениям IQ (выше) которая, как я выяснил позже, сильно искажает реальность.
И сказал, вот у нас в айтишечке обычно работают умненькие с IQ выше 110, и посмотри насколько синенький график выше красненького в зоне дальше чем 110. А я что - меня задело, что этому всему надо верить на слово. И решил провести небольшое исследование.
Возник вопрос откуда взять реальные данные по IQ по большой выборке испытуемых, небольшим поиском накопал более или менее значимую разницу в стандартном отклонении по IQ (14.1 у девочек против 14.9 у мальчиков). Вот понравилось мне исследование по Шотландии девочек и мальчиков в возрасте 11 лет за 1932 год. Далее буду оперировать этой цифрой.
Да, исследованию почти 100 лет, но оно уникально своим масштабом (были протестированы почти все 11-летние дети целой нации), а его выводы о большей вариативности у мужчин были многократно подтверждены более современными мета-анализами.
Еще литература по анализу IQ
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.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 у мальчиков).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 на отрезке 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. Читая комментарии, пришел к мысли, что интересно было бы проанализировать гендерный состав по современным результатам ЕГЭ. Если кто встречал такие открытые исследования - прошу кинуть ссылочку.
