Gender equality statistics

Introduction

This report analyses the Gender Development Index and Gender Inequality Index for India, Israel, Italy, Maldives and the United Kingdom. The dataset was downloaded from the World Bank Data360 platform. The analysis examines changes over time and compares the values recorded for the five selected countries.

Load packages

The tidyverse package is loaded to support data import, cleaning, summary statistics and visualisation.

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Import the dataset

The World Bank gender equality dataset is imported into R. The dataset contains country-level observations for the Gender Development Index and Gender Inequality Index across multiple years.

gender <- readr::read_csv(
  "../data/IMF_GENDER_EQUALITY.csv",
  show_col_types = FALSE
)

dim(gender)
[1] 5981   38
head(gender)
# A tibble: 6 × 38
  STRUCTURE     STRUCTURE_ID     ACTION FREQ  FREQ_LABEL REF_AREA REF_AREA_LABEL
  <chr>         <chr>            <chr>  <chr> <chr>      <chr>    <chr>         
1 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
2 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
3 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
4 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
5 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
6 datastructure WB.DATA360:DS_D… I      A     Annual     BDI      Burundi       
# ℹ 31 more variables: INDICATOR <chr>, INDICATOR_LABEL <chr>, SEX <chr>,
#   SEX_LABEL <chr>, AGE <chr>, AGE_LABEL <chr>, URBANISATION <chr>,
#   URBANISATION_LABEL <chr>, UNIT_MEASURE <chr>, UNIT_MEASURE_LABEL <chr>,
#   COMP_BREAKDOWN_1 <chr>, COMP_BREAKDOWN_1_LABEL <chr>,
#   COMP_BREAKDOWN_2 <chr>, COMP_BREAKDOWN_2_LABEL <chr>,
#   COMP_BREAKDOWN_3 <chr>, COMP_BREAKDOWN_3_LABEL <chr>, TIME_PERIOD <dbl>,
#   OBS_VALUE <dbl>, DATABASE_ID <chr>, DATABASE_ID_LABEL <chr>, …

Check the dataset

This step checks the number of rows and columns and displays the main variables available in the dataset.

dim(gender)
[1] 5981   38
names(gender)
 [1] "STRUCTURE"              "STRUCTURE_ID"           "ACTION"                
 [4] "FREQ"                   "FREQ_LABEL"             "REF_AREA"              
 [7] "REF_AREA_LABEL"         "INDICATOR"              "INDICATOR_LABEL"       
[10] "SEX"                    "SEX_LABEL"              "AGE"                   
[13] "AGE_LABEL"              "URBANISATION"           "URBANISATION_LABEL"    
[16] "UNIT_MEASURE"           "UNIT_MEASURE_LABEL"     "COMP_BREAKDOWN_1"      
[19] "COMP_BREAKDOWN_1_LABEL" "COMP_BREAKDOWN_2"       "COMP_BREAKDOWN_2_LABEL"
[22] "COMP_BREAKDOWN_3"       "COMP_BREAKDOWN_3_LABEL" "TIME_PERIOD"           
[25] "OBS_VALUE"              "DATABASE_ID"            "DATABASE_ID_LABEL"     
[28] "UNIT_MULT"              "UNIT_MULT_LABEL"        "UNIT_TYPE"             
[31] "UNIT_TYPE_LABEL"        "TIME_FORMAT"            "TIME_FORMAT_LABEL"     
[34] "COMMENT_OBS"            "OBS_STATUS"             "OBS_STATUS_LABEL"      
[37] "OBS_CONF"               "OBS_CONF_LABEL"        
glimpse(gender)
Rows: 5,981
Columns: 38
$ STRUCTURE              <chr> "datastructure", "datastructure", "datastructur…
$ STRUCTURE_ID           <chr> "WB.DATA360:DS_DATA360(1.2)", "WB.DATA360:DS_DA…
$ ACTION                 <chr> "I", "I", "I", "I", "I", "I", "I", "I", "I", "I…
$ FREQ                   <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A…
$ FREQ_LABEL             <chr> "Annual", "Annual", "Annual", "Annual", "Annual…
$ REF_AREA               <chr> "BDI", "BDI", "BDI", "BDI", "BDI", "BDI", "BDI"…
$ REF_AREA_LABEL         <chr> "Burundi", "Burundi", "Burundi", "Burundi", "Bu…
$ INDICATOR              <chr> "IMF_GENDER_EQUALITY_GE_GDI", "IMF_GENDER_EQUAL…
$ INDICATOR_LABEL        <chr> "Gender Development Index", "Gender Development…
$ SEX                    <chr> "_T", "_T", "_T", "_T", "_T", "_T", "_T", "_T",…
$ SEX_LABEL              <chr> "Total", "Total", "Total", "Total", "Total", "T…
$ AGE                    <chr> "_T", "_T", "_T", "_T", "_T", "_T", "_T", "_T",…
$ AGE_LABEL              <chr> "All age ranges or no breakdown by age", "All a…
$ URBANISATION           <chr> "_T", "_T", "_T", "_T", "_T", "_T", "_T", "_T",…
$ URBANISATION_LABEL     <chr> "Total", "Total", "Total", "Total", "Total", "T…
$ UNIT_MEASURE           <chr> "SCORE", "SCORE", "SCORE", "SCORE", "SCORE", "S…
$ UNIT_MEASURE_LABEL     <chr> "Score", "Score", "Score", "Score", "Score", "S…
$ COMP_BREAKDOWN_1       <chr> "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z",…
$ COMP_BREAKDOWN_1_LABEL <chr> "Not Applicable", "Not Applicable", "Not Applic…
$ COMP_BREAKDOWN_2       <chr> "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z",…
$ COMP_BREAKDOWN_2_LABEL <chr> "Not Applicable", "Not Applicable", "Not Applic…
$ COMP_BREAKDOWN_3       <chr> "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z", "_Z",…
$ COMP_BREAKDOWN_3_LABEL <chr> "Not Applicable", "Not Applicable", "Not Applic…
$ TIME_PERIOD            <dbl> 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,…
$ OBS_VALUE              <dbl> 0.8265137, 0.8267226, 0.8276207, 0.8294857, 0.8…
$ DATABASE_ID            <chr> "IMF_GENDER_EQUALITY", "IMF_GENDER_EQUALITY", "…
$ DATABASE_ID_LABEL      <chr> "Gender Equality", "Gender Equality", "Gender E…
$ UNIT_MULT              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ UNIT_MULT_LABEL        <chr> "Units", "Units", "Units", "Units", "Units", "U…
$ UNIT_TYPE              <chr> "IX", "IX", "IX", "IX", "IX", "IX", "IX", "IX",…
$ UNIT_TYPE_LABEL        <chr> "Index", "Index", "Index", "Index", "Index", "I…
$ TIME_FORMAT            <dbl> 602, 602, 602, 602, 602, 602, 602, 602, 602, 60…
$ TIME_FORMAT_LABEL      <chr> "CCYY", "CCYY", "CCYY", "CCYY", "CCYY", "CCYY",…
$ COMMENT_OBS            <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
$ OBS_STATUS             <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A…
$ OBS_STATUS_LABEL       <chr> "Normal value", "Normal value", "Normal value",…
$ OBS_CONF               <chr> "PU", "PU", "PU", "PU", "PU", "PU", "PU", "PU",…
$ OBS_CONF_LABEL         <chr> "Public", "Public", "Public", "Public", "Public…

Identify the indicators

The dataset contains two gender-related indicators used in this report.

gender |>
  dplyr::distinct(INDICATOR_LABEL)
# A tibble: 2 × 1
  INDICATOR_LABEL         
  <chr>                   
1 Gender Development Index
2 Gender Inequality Index 

Select the five countries

The analysis focuses on India, Israel, Italy, Maldives and the United Kingdom.

selected_countries <- c(
  "India",
  "Israel",
  "Italy",
  "Maldives",
  "United Kingdom"
)

selected_countries
[1] "India"          "Israel"         "Italy"          "Maldives"      
[5] "United Kingdom"

Clean and filter the data

Only the five selected countries and the two relevant indicators are retained. The analysis uses the country, indicator, year and observation value variables. Rows containing missing values are removed rather than imputed.

country_data <- gender |>
  dplyr::filter(
    REF_AREA_LABEL %in% selected_countries,
    INDICATOR_LABEL %in% c(
      "Gender Development Index",
      "Gender Inequality Index"
    )
  ) |>
  dplyr::select(
    REF_AREA_LABEL,
    INDICATOR_LABEL,
    TIME_PERIOD,
    OBS_VALUE
  ) |>
  tidyr::drop_na()

dim(country_data)
[1] 232   4
head(country_data)
# A tibble: 6 × 4
  REF_AREA_LABEL INDICATOR_LABEL          TIME_PERIOD OBS_VALUE
  <chr>          <chr>                          <dbl>     <dbl>
1 India          Gender Development Index        1990     0.713
2 India          Gender Development Index        1991     0.711
3 India          Gender Development Index        1992     0.712
4 India          Gender Development Index        1993     0.712
5 India          Gender Development Index        1994     0.713
6 India          Gender Development Index        1995     0.733

Confirm the selected countries

This check confirms that the cleaned dataset contains all five countries discussed in the written report.

country_data |>
  dplyr::distinct(REF_AREA_LABEL) |>
  dplyr::arrange(REF_AREA_LABEL)
# A tibble: 5 × 1
  REF_AREA_LABEL
  <chr>         
1 India         
2 Israel        
3 Italy         
4 Maldives      
5 United Kingdom

Preview the cleaned data

The first ten rows are displayed to check that the filtering process worked correctly.

country_data |>
  dplyr::arrange(
    REF_AREA_LABEL,
    INDICATOR_LABEL,
    TIME_PERIOD
  ) |>
  head(10)
# A tibble: 10 × 4
   REF_AREA_LABEL INDICATOR_LABEL          TIME_PERIOD OBS_VALUE
   <chr>          <chr>                          <dbl>     <dbl>
 1 India          Gender Development Index        1990     0.713
 2 India          Gender Development Index        1991     0.711
 3 India          Gender Development Index        1992     0.712
 4 India          Gender Development Index        1993     0.712
 5 India          Gender Development Index        1994     0.713
 6 India          Gender Development Index        1995     0.733
 7 India          Gender Development Index        1996     0.740
 8 India          Gender Development Index        1997     0.746
 9 India          Gender Development Index        1998     0.749
10 India          Gender Development Index        1999     0.751

Key variables

REF_AREA_LABEL identifies the country, INDICATOR_LABEL identifies the gender index, TIME_PERIOD records the year and OBS_VALUE records the numerical value of the selected index for that country and year.

country_data |>
  dplyr::select(
    REF_AREA_LABEL,
    INDICATOR_LABEL,
    TIME_PERIOD,
    OBS_VALUE
  ) |>
  head(10)
# A tibble: 10 × 4
   REF_AREA_LABEL INDICATOR_LABEL          TIME_PERIOD OBS_VALUE
   <chr>          <chr>                          <dbl>     <dbl>
 1 India          Gender Development Index        1990     0.713
 2 India          Gender Development Index        1991     0.711
 3 India          Gender Development Index        1992     0.712
 4 India          Gender Development Index        1993     0.712
 5 India          Gender Development Index        1994     0.713
 6 India          Gender Development Index        1995     0.733
 7 India          Gender Development Index        1996     0.740
 8 India          Gender Development Index        1997     0.746
 9 India          Gender Development Index        1998     0.749
10 India          Gender Development Index        1999     0.751

Number of observations by country and indicator

This table shows how many observations are available for each country and indicator.

country_data |>
  dplyr::count(
    REF_AREA_LABEL,
    INDICATOR_LABEL,
    name = "number_of_observations"
  ) |>
  dplyr::arrange(
    REF_AREA_LABEL,
    INDICATOR_LABEL
  )
# A tibble: 10 × 3
   REF_AREA_LABEL INDICATOR_LABEL          number_of_observations
   <chr>          <chr>                                     <int>
 1 India          Gender Development Index                     24
 2 India          Gender Inequality Index                      24
 3 Israel         Gender Development Index                     24
 4 Israel         Gender Inequality Index                      24
 5 Italy          Gender Development Index                     24
 6 Italy          Gender Inequality Index                      24
 7 Maldives       Gender Development Index                     16
 8 Maldives       Gender Inequality Index                      24
 9 United Kingdom Gender Development Index                     24
10 United Kingdom Gender Inequality Index                      24

Summary statistics

The following table provides the minimum, maximum, mean and median values for each indicator within the five-country dataset.

country_data |>
  dplyr::group_by(INDICATOR_LABEL) |>
  dplyr::summarise(
    minimum = min(OBS_VALUE),
    maximum = max(OBS_VALUE),
    mean = mean(OBS_VALUE),
    median = median(OBS_VALUE),
    number_of_observations = dplyr::n(),
    .groups = "drop"
  )
# A tibble: 2 × 6
  INDICATOR_LABEL          minimum maximum  mean median number_of_observations
  <chr>                      <dbl>   <dbl> <dbl>  <dbl>                  <int>
1 Gender Development Index  0.711    0.970 0.908  0.948                    112
2 Gender Inequality Index   0.0639   0.715 0.335  0.234                    120

Years covered by the dataset

This section identifies the earliest and latest years available for each country and indicator.

country_data |>
  dplyr::group_by(
    REF_AREA_LABEL,
    INDICATOR_LABEL
  ) |>
  dplyr::summarise(
    first_year = min(TIME_PERIOD),
    last_year = max(TIME_PERIOD),
    number_of_years = dplyr::n_distinct(TIME_PERIOD),
    .groups = "drop"
  )
# A tibble: 10 × 5
   REF_AREA_LABEL INDICATOR_LABEL          first_year last_year number_of_years
   <chr>          <chr>                         <dbl>     <dbl>           <int>
 1 India          Gender Development Index       1990      2013              24
 2 India          Gender Inequality Index        1990      2013              24
 3 Israel         Gender Development Index       1990      2013              24
 4 Israel         Gender Inequality Index        1990      2013              24
 5 Italy          Gender Development Index       1990      2013              24
 6 Italy          Gender Inequality Index        1990      2013              24
 7 Maldives       Gender Development Index       1998      2013              16
 8 Maldives       Gender Inequality Index        1990      2013              24
 9 United Kingdom Gender Development Index       1990      2013              24
10 United Kingdom Gender Inequality Index        1990      2013              24

Data visualisation

Figure 1: Trend of Gender Development Index

This figure shows how the Gender Development Index changed over time in the five selected countries. Higher values indicate smaller gender gaps in human development.

gdi_data <- country_data |>
  dplyr::filter(
    INDICATOR_LABEL == "Gender Development Index"
  )

ggplot(
  gdi_data,
  aes(
    x = TIME_PERIOD,
    y = OBS_VALUE,
    colour = REF_AREA_LABEL,
    group = REF_AREA_LABEL
  )
) +
  geom_line(linewidth = 1) +
  labs(
    title = "Trend of Gender Development Index in Selected Countries",
    x = "Year",
    y = "Gender Development Index",
    colour = "Country"
  ) +
  theme_minimal()

Figure 2: Trend of Gender Inequality Index

This figure shows changes in the Gender Inequality Index for the five selected countries. Lower values indicate lower levels of gender inequality.

gii_data <- country_data |>
  dplyr::filter(
    INDICATOR_LABEL == "Gender Inequality Index"
  )

ggplot(
  gii_data,
  aes(
    x = TIME_PERIOD,
    y = OBS_VALUE,
    colour = REF_AREA_LABEL,
    group = REF_AREA_LABEL
  )
) +
  geom_line(linewidth = 1) +
  labs(
    title = "Trend of Gender Inequality Index in Selected Countries",
    x = "Year",
    y = "Gender Inequality Index",
    colour = "Country"
  ) +
  theme_minimal()

Figure 3: Latest indicator values across selected countries

This chart compares the most recent available GDI and GII observations for each country. The latest year is identified separately for every country and indicator because the available years may differ.

latest_country_data <- country_data |>
  dplyr::group_by(
    REF_AREA_LABEL,
    INDICATOR_LABEL
  ) |>
  dplyr::slice_max(
    order_by = TIME_PERIOD,
    n = 1,
    with_ties = FALSE
  ) |>
  dplyr::ungroup()

latest_country_data |>
  dplyr::select(
    REF_AREA_LABEL,
    INDICATOR_LABEL,
    TIME_PERIOD,
    OBS_VALUE
  ) |>
  dplyr::arrange(
    REF_AREA_LABEL,
    INDICATOR_LABEL
  )
# A tibble: 10 × 4
   REF_AREA_LABEL INDICATOR_LABEL          TIME_PERIOD OBS_VALUE
   <chr>          <chr>                          <dbl>     <dbl>
 1 India          Gender Development Index        2013    0.807 
 2 India          Gender Inequality Index         2013    0.568 
 3 Israel         Gender Development Index        2013    0.969 
 4 Israel         Gender Inequality Index         2013    0.0914
 5 Italy          Gender Development Index        2013    0.966 
 6 Italy          Gender Inequality Index         2013    0.0639
 7 Maldives       Gender Development Index        2013    0.933 
 8 Maldives       Gender Inequality Index         2013    0.234 
 9 United Kingdom Gender Development Index        2013    0.965 
10 United Kingdom Gender Inequality Index         2013    0.180 
ggplot(
  latest_country_data,
  aes(
    x = REF_AREA_LABEL,
    y = OBS_VALUE,
    fill = INDICATOR_LABEL
  )
) +
  geom_col(position = "dodge") +
  labs(
    title = "Latest Gender Indicator Values Across Selected Countries",
    x = "Country",
    y = "Latest Indicator Value",
    fill = "Indicator"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(
      angle = 35,
      hjust = 1
    )
  )

Figure 4: Average indicator values across the full period

This figure compares the average GDI and GII values for each country across all available years. These averages summarise the general pattern but may hide changes within individual years.

average_country_data <- country_data |>
  dplyr::group_by(
    REF_AREA_LABEL,
    INDICATOR_LABEL
  ) |>
  dplyr::summarise(
    average_value = mean(OBS_VALUE, na.rm = TRUE),
    .groups = "drop"
  )

average_country_data
# A tibble: 10 × 3
   REF_AREA_LABEL INDICATOR_LABEL          average_value
   <chr>          <chr>                            <dbl>
 1 India          Gender Development Index         0.762
 2 India          Gender Inequality Index          0.644
 3 Israel         Gender Development Index         0.955
 4 Israel         Gender Inequality Index          0.190
 5 Italy          Gender Development Index         0.953
 6 Italy          Gender Inequality Index          0.157
 7 Maldives       Gender Development Index         0.917
 8 Maldives       Gender Inequality Index          0.469
 9 United Kingdom Gender Development Index         0.958
10 United Kingdom Gender Inequality Index          0.217
ggplot(
  average_country_data,
  aes(
    x = REF_AREA_LABEL,
    y = average_value,
    fill = INDICATOR_LABEL
  )
) +
   geom_col(position = "dodge") +
  labs(
    title = "Average Gender Indicator Values Across Selected Countries",
    x = "Country",
    y = "Average Indicator Value",
    fill = "Indicator"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(
      angle = 35,
      hjust = 1
    )
  )

Interpretation

The visualisations show differences in the Gender Development Index and Gender Inequality Index across the five selected countries. The analysis describes the patterns present in the indices but does not test the social, political or economic causes of the differences.

The line charts allow changes over time to be examined separately for each country. The comparison charts show differences in the latest available values and the averages across the full period. Because GDI and GII measure different concepts and use different interpretations, their numerical values should not be treated as directly equivalent.

Limitations

The analysis focuses only on the Gender Development Index and Gender Inequality Index. It does not include variables measuring education policy, healthcare access, employment conditions, income, culture or government intervention. It therefore cannot establish why the countries differ.

Rows containing missing observations were removed, which reduced the available data. The countries also do not necessarily have identical year coverage. The analysis is descriptive and does not establish cause-and-effect relationships.

Summary

The analysis used World Bank gender equality data to examine the Gender Development Index and Gender Inequality Index for India, Israel, Italy, Maldives and the United Kingdom. R was used to clean the dataset, remove missing observations, calculate summary statistics and produce four visualisations. The results show differences between countries and changes over time, while the limitations prevent causal conclusions from being made.