Gender Quotas & Representation of Women

in Politics & Public Elections:

A look at the efficacy of gender quotas

Women have chronically been underrepresented in public & political life

When we talk about 'representation' in the literature, we refer to:

Descriptive Representation

Substantive Representation

women standing for women

representatives acting on behalf of women

Both are important but my dataset & analysis exclusively focuses on the former, which is measured by the number of women representatives in national legislatures

While the number of women in national parliaments have grown, its growth rate has been incredibly slow

All but a few countries have yet to reach a gender balance in political institutions. In terms of women representation, this means political institutions are a far cry from being descriptively representative of the populations they act for.

Quotas act as a mechanism that aims to 'fast-track' equal representation

but how effective are they at increasing women's representation in national parliaments?

About my datasets:

  • % of women in each country's national parliaments from 1997 from the World Bank, originally from the Inter-Parliamentary Union (ipu.org)
  • Gender quota database from the International Institute for Democracy and Electoral Assistance
I'm interactive. Hover over a bar to view my data.
I'm interactive. Click the colours in the legend to view/compare regions.
I'm interactive. Hover over a bar to view my data
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Hover over a bar to view my data
I'm interactive. Click the colours in the legend to view/compare categories

Findings 1:

  • Most countries' governments comprise of only one level of legislature (unicameral)
     
  • Legislated candidate quotas are more popular than reserved seats
     
  • Could bicameral parliaments have more % of women in their legislatures?
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories
I'm interactive. Click the colours in the legend to view/compare categories

Finding 2:

  • Quotas are better than no quotas at all
     
  • We see the same pattern for all the other plotted variables - that some form of quota is better on average than no quota at all
     
  • What this series doesn't tell us, however, is what kind of setup or even which quota system works best. To answer that question, we're going to have to create a different plot

* 'Unknown' are countries who did not appear in the gender quota dataset and are otherwise not known to have gender quota systems at all. These unknown countries elected less women over time compared to unicameral parliament types, who by virtue of the fact that they exist in the dataset means that they have some quota system in place, demonstrating that irrespective of parliament types, quotas do seem to work, at least on average over time.  

I'm interactive. Hover over a line to view my setup.

Finding 3:

  • From the aforementioned sections, I was expecting to find that the top-performing countries would have more quotas set up and that the bottom performing countries would not have any quotas set up at all.
  • This turned out to be half true
  • The top-performing countries were indeed mostly bicameral parliament types and did indeed have quotas in place. As expected, most of them did have quotas in place for more than one level of government.
  • But countries with the least average number of women in parliament over time ALSO had quotas in place in at least one level.
  • Means that while having quotas are better than non-quotas in general, this chart actually shows that quotas don’t necessarily guarantee the election of more women in parliaments
  • This finding is in line with the literature on the efficacy of quotas (Gwiazda, 2017; Schwidnt-Bayer, 2011)

Fortune Cookie Version of Findings:

Do gender quotas result in more women elected into legislatures?

Yes, but they're not a guarantee.

More detailed analysis needs to be done on under what circumstances are quotas effective/ineffecitve .

- END -

Thank you

Please see next slides for appendix detailing:

  • Definitions
  • Concepts
  • Top issues with dataset
  • Solutions to resolving issues
  • Additional findings

Appendix

Why is descriptive representation important?

 

  • Women represented by women are more likely to become interested & involved in politics than women who were represented by men (High-Peppert & Comer, 1998)
     
  • Enhanced connection between representatives & constituents, which lead to;
     
  • Consequent increase in trust in government & improved attitudes of voters towards their representatives, particularly among underrepresented populations (Mansbridge, 1999; Brunell et al, 2008)
     
  • Descriptive representation facilitates substantive representation (Garboni, 2015)

Types of Parliaments:

  • Unicameral : One level of legislature (E.g. Folketing of Denmark; National Assembly of Cuba)
  • Bicameral : Two chambers of legislation (E.g. House of Commons & House of Lords in the UK; Congree & Senate in the US)

Types of Quotas:

  • Voluntary Political Party Quotas: rules/targets set by political parties to include a certain % of women as candidates
  • Legislated Candidate Quotas: requires that a minimum number of candidates are women
  • Reserved Seats: requires that a minimum number of seats in the legislature are held by women

* other than the first, the last two are quota systems that can be written via legislation or constitution and can also be either enforced via penalities for non-compliance or not..

Appendix

Top Issues with Datasets 

  • Original women representation dataset had individual years in columns rather than 'year' as a column and each year as a value
     
  • No key to merge datasets
     
  • Regional grouping
     
  • Kmeans doesn't work on categorical variables and I couldn't figure out how to implement Kmodes

Appendix

Addressing Issue 1: 

  • Original women representation dataset had individual years in columns rather than 'year' as a column and each year as a value
  • Solution: Reshaping my dataframe:

 1. Extract country names from the countries_data dataset into a new list called country_names and repeat it for the number of times as there are years. In this case, there are 23 years between 1997 and 2020 so I will repeat it 24 times;  

2. Create a new dataframe and add my country_names list to it

3. Repeat the same steps for country code and year, calling the columns country_code and year respectively;

4. Flip the percent_of_women to complete my dataset.

 

#extract country names and create a new list, repeating country names 24 times
country_names = countries_data['country_name']
country_names = np.repeat(country_names, 24)

#create a new dataframe, inserting country_names list into the first column 
women_representation_df = pd.DataFrame(country_names).reset_index().drop(['index'], axis = 1)

#do the same for country codes
country_code = countries_data['country_code']
country_code = list(np.repeat(country_code,24))
women_representation_df['country_code'] = country_code

#repeat for year
years = list(range(1997,2021))
n = countries_data['country_name'].nunique()
years = years*n
women_representation_df['year'] = years

#Finally, flip the values that's meant to be percent_of_women so that the value corresponds with the correct country and year
#To do this, I know that I just have to create a list and stack all the float rows on top of each other 

#first, extract the relevant columns
stacked_data= pd.DataFrame(countries_data.iloc[:,2:])
#flip it and stack it but don't drop the na, otherwise it won't match the index
stacked_data = list(stacked_data.stack(dropna = False))
#place the newly stacked list into the dataframe
women_representation_df['percent_of_women'] = stacked_data
women_representation_df.head(10)

Appendix

Addressing Issue 2: 

  • No matching keys to merge datasets
  • Solution: Manipulating my datasets to convert country_codes to ISO2 codes

 1. Convert country_code/country_name in both datasets to ISO2 codes using pycountry library

2. Force the following 'unknown' fill if unable to identify country

3. Extract all 'unknowns'

4. Manually fill ISO2 codes using googlesearch

 

#first i want to import the library 
import pycountry

#Let's start with the women_representation_df
input_countries_wr = women_representation_df['country_name']

countries = {}
for country in pycountry.countries:
    countries[country.name] = country.alpha_2

#if the country cannot be identified, fill with 'Unknown code'
codes = [countries.get(country, 'Unknown code') for country in input_countries_wr]

women_representation_df['country_code'] = codes

#check for any 'unknown code'
print('THESE ARE THE COUNTRIES WITH UNKNOWN CODES:')
print(women_representation_df[women_representation_df['country_code'] == 'Unknown code']['country_name'].unique())

#create a list containing the iso2codes of the above countries and repeat them 24 times 
to_assign_iso2_wr = ['BS','BO','CI', 'CD', 'CG', 'CZ', 'EG', 'FM', 'GM', 'IR', 'KG', 'KN', 'KR', 'LA', 'LC', 'MD', 'KP', 'SK','TZ','VC', 'VE', 'VN','YE']
to_assign_iso2_wr = np.repeat(to_assign_iso2_wr, 24)

#assign the to_assign_iso2 codes to the unknowns in the dataset 
women_representation_df.loc[women_representation_df['country_code'] == 'Unknown code', 'country_code'] = to_assign_iso2_wr

#double check if they were removed: 
women_representation_df[women_representation_df['country_code'] == 'Unknown code']['country_name']

Appendix

Addressing Issue 3: 

  • Regional Grouping
  • Solution: Manually code new ISO2 codes into World Bank regional categories

1. Create 7 lists, with ISO2 codes, representing countries in each of the 7 world bank regional classifications, according to the following source: https://datahelpdesk.worldbank.org/knowledgebase/articles/906519-world-bank-country-and-lending-groups
2. Extract the country codes for each regional list

3. After doing this for all 7, concatenate them into the new dataframe

4. Add regional columns

5. Cross check new dataframe with old dataframe to identify ISO2 codes that were left out

6. Fill them in manually referencing google search
 

#INITIALISING MY LISTS
#EAST ASIA PACIFIC
eapac = ['AS','KR', 'PH', 
'AU', 'LA', 'BN', 
'MO', 'SG', 'KH', 
'MY', 'SB', 'CN', 
'MH', 'TW', 'FJ', 
'FM', 'TH', 'PF', 
'MN', 'TL', 'GU', 
'MM', 'HK', 'NR', 
'TO', 'ID', 'NC', 
'TV', 'JP', 'NZ', 
'VU', 'KI','MP', 
'VN', 'KP', 'PW']

#EUROPE AND CENTRAL ASIA 
euca = ['AL', 'GI', 'NO', 'AD',
'GR', 'PL', 'AM', 'GL', 'PT', 
'AT', 'HU', 'RO', 'AZ', 'IS', 
'RU', 'BY', 'IM', 'RS', 
'BA', 'IT', 'SK',
'BG', 'KZ', 'SI', 'XK', 
'ES', 'HR', 'KG', 'SE', 
'CY', 'LV', 'CH', 
'CZ', 'LI', 'TJ', 
'DK', 'LT', 'TR', 
'EE', 'LU', 'TM', 
'FO', 'MD', 'UA', 
'FI', 'MC', 'GB', 
'FR', 'ME', 'UZ', 
'GE', 'NL',
'DE', 'MK']

#LATIN AMERICA AND THE CARIBBEAN
latmc = ['AG', 'CW', 'PY', 
'AR', 'DM', 'PE', 
'AW', 'DO', 'PR', 
'BS', 'EC', 'SX',
'BB', 'SV', 'KN', 
'BZ', 'GD', 'LC', 
'BO', 'GT', 'MF', 
'BR', 'GY', 'VC', 
'VG', 'HT', 'SR', 
'KY', 'HN', 'TT', 
'CL', 'JM', 'TC', 
'CO', 'MX', 'UY', 
'CR', 'NI', 'VE', 
'CU', 'PA', 'VI']

#MIDDLE EAST AND NORTH AFRICA
mena = ['DZ', 'JO', 'QA',
'BH', 'KW', 'SA', 
'DJ', 'LB', 'SY', 
'EG', 'LY', 'TN',
'IR', 'MT', 'AE', 
'IQ', 'MA', 'PS', 
'IL', 'OM', 'YE']


#NORTH AMERICA
northam = ['BM', 'CA', 'US']

#SOUTH ASIA
sasia = ['AF', 'IN', 'PK', 
'BD', 'MV', 'LK', 
'BT', 'NP']

#SUBSAHARAN AFRICA
ssaf = ['AO', 'ET', 'NE', 
'BJ', 'GA', 'NG', 
'BW', 'GM', 'RW', 
'BF', 'GH', 'ST',
'BI', 'GN', 'SN', 
'CV', 'GW', 'SC',
'CM', 'KE', 'SL', 
'CF', 'LS', 'SO', 
'TD', 'LR', 'ZA', 
'KM', 'MG', 'SS', 
'CD', 'MW', 'SD', 
'CG', 'ML', 'TZ', 
'CI', 'MR', 'TG', 
'GQ', 'MU', 'UG', 
'ER', 'MZ', 'ZM', 
'SZ', 'NA', 'ZW']

#next, I will extract the countries from women_representation_df and gender_quota data into each 'region' 
#i will then add a column at the end of that new regional dataframe assigning the respective region. 
east_asia_pacific = gender_quota_data[gender_quota_data['country_code'].isin(eapac)]
east_asia_pacific['region'] = 'East Asia Pacific'
europe_central_asia = gender_quota_data[gender_quota_data['country_code'].isin(euca)]
europe_central_asia['region'] = 'Europe & Central Asia'
latam_caribbean = gender_quota_data[gender_quota_data['country_code'].isin(latmc)]
latam_caribbean['region'] = 'Latin America & the Caribbean' 
mideastnaf = gender_quota_data[gender_quota_data['country_code'].isin(mena)]
mideastnaf['region'] = 'Middle East & North Africa' 
north_america = gender_quota_data[gender_quota_data['country_code'].isin(northam)]
north_america['region'] = 'North America' 
south_asia = gender_quota_data[gender_quota_data['country_code'].isin(sasia)]
south_asia['region'] = 'South Asia' 
subsaaf = gender_quota_data[gender_quota_data['country_code'].isin(ssaf)]
subsaaf['region'] = 'Sub-Saharan Africa' 

gq_w_regions = [subsaaf, south_asia,north_america, mideastnaf,latam_caribbean,europe_central_asia,east_asia_pacific]
for df in gq_w_regions:
    df.columns = ['country_name', 'country_code', 'parliament_type',
       'voluntary_political_party_quotas', 'lower_house_quota_type',
       'upper_house_quota_type', 'sub_national_level_quota_type',
       'region']

gq_w_regions= pd.concat(gq_w_regions)
gq_w_regions = gq_w_regions.sort_values('country_name')
gq_w_regions.head()

#identifying the countries in the old df that are NOT in the new df
unlabelled = gender_quota_data[~gender_quota_data['country_name'].isin(gq_w_regions['country_name'])]
unlabelled

#using google search as a reference to manually assign region 
unlablled_region = ['Europe & Central Asia', 'Europe & Central Asia', 'East Asia Pacific','Europe & Central Asia']
unlabelled['region'] = unlablled_region
unlabelled

Appendix

Addressing Issue 4: 

  • Clustering without Kmeans & Kmodes
  • Solution: Identified 45 'clusters' by concatenating values & using them as 'clusters'

1. Create a column that concatenates the values of parliament type, party quotas, lower house quotas, upper house quotas and sub national level quotas

2. Grouped dataset by 'setup', with the 'percent of women' aggregated to its mean and sorted by 'percent of women'

3. Print the top and bottom by using head and tail

4. Plot in line graph.

** Note that while I use the term 'clusters' here, they are not, in fact clusters. Rather, they are the different unique setups in the dataset.

mergeddata['setup'] = mergeddata['parliament_type'] +','+ mergeddata['voluntary_political_party_quotas'] + ','+mergeddata['lower_house_quota_type'] + ','+mergeddata['upper_house_quota_type'] + ','+mergeddata['sub_national_level_quota_type']

setup_overtime = pd.DataFrame(mergeddata.groupby(['setup','year'])['percent_of_women'].mean()).reset_index()

setup_top = setup_overtime.head()
setup_bot = setup_overtime.tail()

setuptimetopnbot = px.line(top3bot3,x='year', y= 'percent_of_women', color = 'position', hover_name = 'setup')
setuptimetopnbot['layout'].update(title='Av. Proportion of Women Overtime, by Best Performing & Least Perfoming Setups')
setuptimetopnbot['layout']['yaxis1'].update(title='Percent of Women (%)')
setuptimetopnbot.update_traces(connectgaps=False)
setuptimetopnbot.update_layout(
                 paper_bgcolor='rgba(0,0,0,0)',
    plot_bgcolor='rgba(0,0,0,0)')
setuptimetopnbot.update_layout(showlegend=False,xaxis_showgrid=False, yaxis_showgrid=False)
setuptime.update_layout(showlegend=False, xaxis_showgrid=False, yaxis_showgrid=False)


setuptimetopnbot.show()

Relevant Sources:

Burrell et al. (2008). Social Desirability Effects and Support for a Female American President. Public Opinion Quarterly,72:1, Spring 2008, Pages 76–89, https://doi.org/10.1093/poq/nfm035

Garboni, E. (2015). The Impact of Descriptive Representation on Substantive Representation of Women at European and National Parliamentary Levels. Case Study: Romania. Procedia - Social and Behavioral Sciences: 183. 85 - 92.  https://doi.org/10.1016/j.sbspro.2015.04.849

Gwiazda. A. (2017). Women in parliament: assessing the effectiveness of gender quotas in Poland. Journal of Legislative Studies: 23:3, 326 - 347. https://doi.org/10.1080/13572334.2017.1358981

High-Pippert, A. & Comer, J. (1998). Female Empowerment: The Influence of Women Representing Women. Women & Politics: 19:4, 55-66. https://digitalcommons.unl.edu/poliscifacpub/2/

Mansbridge, J. (1999). Should Blacks represent Blacks and women represent women? A contingent “yes.” Journal of Politics, 61, 628-657.  https://doi.org/10.2307/2647821

Schwidnt-Bayer, L.(2011). Making Quotas Work: The Effect of Gender Quota Laws On the Election of Women. Legislative Studies Quarterly: 34:1, 5-28.

 https://doi.org/10.3162/036298009787500330