The lack of concrete numbers has been bugging me, so I decided to hunt down the variance differences and calculate the expected percentage of women in tech.
I found a paper (http://www.ams.org/notices/201201/rtx120100010p.pdf) that reports a variance ratio of 1.15 for the maths scores of boys vs girls. Interestingly, they showed a negative correlation between variance ratio and gender gap for students in different countries. (In countries where boys have higher variance of maths scores, they tend to do worse on average than girls.)
However, the hypothesis that gender ratios in CS are influenced by the higher variance additionally involves a highly selective environment. So I decided to compute how the ratio changes when a minimum score is imposed. Python code below.
gender_ratio_to_population_ratio = lambda gr: gr/(1+gr)
from numpy import sqrt
variance_ratio_to_standard_deviation = lambda vr: sqrt( 2*gender_ratio_to_population_ratio(vr) )
from scipy.stats import norm
ratio_above_threshold = lambda thresh, vr: norm.cdf(-thresh, scale=variance_ratio_to_standard_deviation(vr))
male_female_ratio_above_threshold = lambda thresh: ratio_above_threshold(thresh, 1.15) / ratio_above_threshold(thresh, 1/1.15)
male_percentage_above_threshold = lambda thresh: gender_ratio_to_population_ratio(male_female_ratio_above_threshold(thresh))
When the threshold is "at least average intelligence"
>>> male_percentage_above_threshold(0)
0.5
equal representation, as expected.
In steps of one standard deviation above the mean:
>>> male_percentage_above_threshold(1)
0.52668314725189336
>>> male_percentage_above_threshold(2)
0.58239639246408581
>>> male_percentage_above_threshold(3)
0.66604327143250408
>>> male_percentage_above_threshold(4)
0.76581194732953917
>>> male_percentage_above_threshold(5)
0.86031277779790205
To fully explain 80% men in a profession using
only higher variance as the criterion, you need a threshold of at least 4 standard deviations above the norm. In terms of IQ, that is at least 160. I don't think programmers have to be quite
that smart.