Mujeres En La Convocatoria Sni 2020

5 minute read

Published:

Brecha de género en investigación reflejada en los resultados de la convocatoria SNI 2020

Los resultados de la convocatoria del Sistema Nacional de Investigadores del año 2020 se acaban de publicar. ¿Cómo se refleja la brecha de género en investigación en los resultados de la convocatoria?

Hace algunos meses, hice un blogpost en el que analicé cómo la brecha de género en ingestigación se refleja en el Sistema Nacional de Investigadores (SNI) del Consejo Nacional de Ciencia y Tecnología (CONACYT). Entre otras cosas, noté que el sesgo es evidente en todas las areas de investigación del SNI y el sesgo es mayor conforme aumenta el rango del SNI. En algunas ramas de investigación, el porcentaje de mujeres en los rangos mayores es menor al 10%. ¡Terrible!

La Dra. Álvarez-Buylla, directora de CONACYT, ha expresado su preocupación por la brecha de género que existe en el SNI y su compromiso a mejorar la situación actual. Dado que los resultados de la convocatoria del SNI del 2020 fueron publicadas hace algunos días, me dio curiosidad ¿Qué tanto se ve reflejado la brecha de género en investigación en los resultados de la convocatoria del SNI 2020? A continuación presento un análisis “dominguero”. El código está disponible en este repositorio de GitHub.

Aclaración Nov 2, 2020: El análisis está enfocado en ver como se refleja en los resultados de la convocatoria un problema de desigualdad de oportunidades de muchos años. Este análisis no analiza sesgos de los evaluadores o de las decisiones de la convocatoria SNI 2020.

Procesamiento de datos

El código a continuación, baja el pdf con los resultados de la convocatoria del SNI del año 2020, captura los datos del documento y formatea los datos para poder analizarlos.

library(tabulizer)
library(gender)
library(magrittr)
library(ggplot2)
library(cowplot)
theme_set(theme_cowplot())
location <- "https://www.conacyt.gob.mx/images/SNI/2020/RESULTADOS_SNI_CONVOCATORIA_2020_INGRESO_O_PERMANENCIA.pdf"

# Extract the table
sniResFile <- "sni_results.rds"
if( !file.exists(sniResFile) ){
  out <- extract_tables(location)
  saveRDS( out, file=sniResFile )
}

sni2020 <- readRDS( sniResFile )
sni2020 <- lapply( sni2020, function(x){
  x[,!colSums(x == "") == nrow(x)]
} )
stopifnot(all(sapply(sni2020, ncol) == 5) )
sni2020 <- Reduce( rbind, sni2020 )
sni2020 <- sni2020[sni2020[,5] != "Nacional",]
sni2020 <- sni2020[sni2020[,5] != "",]

sni2020 <- sni2020 %>%
  janitor::row_to_names(1) %>%
  as.data.frame() %>%
  dplyr::rename(lvl=`Nivel  otorgado`) %>%
  dplyr::mutate( 
    firstFirstName=gsub("(\\S+)\\s.*", "\\1", Nombre), 
    lvl=factor( dplyr::case_when( 
      lvl == "Investigador Nacional Nivel I" ~ "SNI I",
      lvl == "Investigador Nacional Nivel II" ~ "SNI II",
      lvl == "Investigador Nacional Nivel III" ~ "SNI III",
      grepl("Prórroga", lvl) ~ "Prórroga",
      grepl("Candidato", lvl) ~ "Candidato",
      TRUE ~ lvl
    ), levels=c("Prórroga", "Candidato", "SNI I", 
                "SNI II", "SNI III") ) )

Usando el paquete gender, podemos predecir el género de cada investigador con base en sus nombres de pila.

gender_df <- gender(unique(sni2020$firstFirstName)) %>%
  dplyr::select( name, gender ) %>%
  dplyr::rename( firstFirstName=name )

sni2020 <- sni2020 %>%
  dplyr::select( CVU, firstFirstName, lvl ) %>%
  dplyr::left_join( gender_df ) %>%
  dplyr::group_by( lvl, gender ) %>%
  dplyr::summarise(number=dplyr::n())

percAssigned <-
  round(100*(1-sum(sni2020$number[is.na(sni2020$gender)])/sum(sni2020$number)))

Este paquete puede predecir el género de 96% de los investigadores, es decir, 9145 de un total de 9478 investigadores.

Resultado

El gráfico a continuación, muestra el porcentage de mujeres (eje de las \(y\)) en cada categoría del SNI (eje de las \(x\)), ordenado con respecto al rango de la categoría. Los rangos más altos están hacia la derecha del gráfico.

sni2020 %>%
  dplyr::filter( !is.na(gender) ) %>%
  tidyr::pivot_wider( names_from="gender", values_from="number" ) %>%
  dplyr::mutate( 
    tot=sum(female+male), 
    fracFemales=100*female/tot, 
    lab=sprintf("%d%%", round(fracFemales))) %>%
  as.data.frame() %>%
  ggplot( aes( lvl, fracFemales, group = 1, label=lab) ) +
  geom_point() +
  geom_line() +
  geom_text(nudge_x = -0.2, nudge_y = -2) +
  ylim(25, 75) +
  geom_hline(yintercept=51, col="red", alpha=0.8, linetype="dashed") +
  labs(x="Nivel SNI", y="% de mujeres", title="Resultados SNI 2020") +
  panel_border(colour="black") +
  theme( axis.line=element_blank(), axis.text.x=element_text(angle=25, hjust=1) )

El gráfico muestra el sesgo de género en investigación reflejado en la convocatoria del SNI 2020. La población de mujeres en el mundo es del 51% (la línea roja en el gráfico), y es evidente que el porcentaje de mujeres está muy por debajo del 51% en todos los rangos y el porcentaje decrece conforme el rango del SNI aumenta. Sólo un tercio de los investigadores del máximo nivel son mujeres.

Este análisis no demuestra que el sesgo observado proviene de las evaluaciones del SNI, lo observado es probablemente un reflejo del sesgo que existe en la población de investigadores. De cualquier forma, ¡Mucho trabajo es necesario para mejorar esta situación!

Reproducibilidad

sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Catalina 10.15.4
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] cowplot_1.1.0   ggplot2_3.3.2   magrittr_1.5    gender_0.5.4   
## [5] tabulizer_0.2.2
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.5          pillar_1.4.6        compiler_4.0.3     
##  [4] tools_4.0.3         digest_0.6.27       lubridate_1.7.9    
##  [7] evaluate_0.14       lifecycle_0.2.0     tibble_3.0.4       
## [10] gtable_0.3.0        pkgconfig_2.0.3     png_0.1-7          
## [13] rlang_0.4.8         yaml_2.2.1          xfun_0.19          
## [16] rJava_0.9-13        genderdata_0.5.0    withr_2.1.2        
## [19] dplyr_1.0.2         stringr_1.4.0       knitr_1.30         
## [22] janitor_2.0.1       generics_0.1.0      vctrs_0.3.4        
## [25] grid_4.0.3          tidyselect_1.1.0    glue_1.4.2         
## [28] snakecase_0.11.0    R6_2.4.1            rmarkdown_2.5      
## [31] farver_2.0.3        tidyr_1.1.2         purrr_0.3.4        
## [34] tabulizerjars_1.0.1 scales_1.1.1        ellipsis_0.3.1     
## [37] htmltools_0.5.0     colorspace_1.4-1    labeling_0.3       
## [40] stringi_1.5.3       munsell_0.5.0       crayon_1.3.4