Recientemente, en la revista Science, hubo un artículo llamado "Un vasto conjunto de CV públicos revela a los científicos más migratorios del mundo" , donde las estadísticas de los científicos que se mudan de un país a otro se muestran en base a datos públicos del sistema orcid . Todos los datos utilizados para el artículo también se pusieron a disposición del público, y decidí analizar dónde se estaban dispersando los científicos de Rusia en general, y de mi PhysTech nativo en particular.
Introduccion
El sistema orcid (Open Investigador y Colaborador ID) es una OSFL responsable del sistema voluntario obligatorio para ayudar a identificar a los autores de publicaciones científicas, creado en 2012. La idea es que los científicos que participan en la publicación de artículos científicos puedan crear independientemente una cuenta que los identifique de manera única y permita que las personas se identifiquen correctamente al calcular diferentes métricas (por ejemplo, el índice de Hirsch).
Curiosamente, todos los datos de origen están abiertos, publicados de forma gratuita para el acceso a un archivo completo de todos los currículums disponibles para el acceso público en formato json. Y con toda la historia de los cambios. Es decir, por ejemplo, Ivan Ivanovich Ivanov condicional indicó en el sistema que se graduó del MIT en 2000, luego fue un estudiante graduado en Stanford, y luego colocó su trabajo en la Universidad Shinoliteyny de Moscú, luego el sistema básicamente come y memoriza todo. Es decir, en principio, nadie se molesta en este momento en crear cuentas falsas, pero muchas revistas científicas ya han comenzado a requerir ORCID para publicar artículos, por lo que se supone que la mayoría de las cuentas en el sistema se crean con buenas intenciones.
En el momento de la publicación del artículo en Science, en la base de datos abierta de orcid había información sobre el resumen de aproximadamente 3 millones de científicos de todo el mundo. Los autores del artículo en Science escriben que los diferentes países están representados de manera más completa (en comparación con las estadísticas de la Unesco sobre el número de científicos) y que existe un sesgo notable hacia los científicos que han completado recientemente la escuela de posgrado.
A pesar de todo lo anterior, esta es la base de datos más completa de acceso público de científicos y sus movimientos. En el artículo original, los autores simplemente dividieron el mundo entero en 8 regiones (UE con la excepción de Gran Bretaña, Gran Bretaña, Estados Unidos, Asia, América con la excepción de Estados Unidos, Australia y Oceanía, Europa con la excepción de la UE y África) y calcularon estadísticas sobre cuántos científicos cambiaron su lugar de residencia después de la escuela de posgrado y adónde fueron más tarde. Puedes ver dónde viven ahora los científicos que se graduaron de universidades rusas, incluso. Pero, dado que todos los datos de origen están disponibles públicamente, aquellos que lo deseen pueden satisfacer de forma independiente su curiosidad, lo cual hice.
Importar datos
Decidí importar la base de datos después del procesamiento inicial de json a .csv en SQLite para facilitar la escritura de consultas: cargué el archivo ORCID_migrations_2016_12_16.csv (1988114 entradas, 224mb):
CódigoCREATE TABLE migration(dummy,orcid_id,country,organization_name,Ringgold_id,start_year,end_year,affiliation_type,affiliation_role,is_phd); .import ORCID_migrations_2016_12_16.csv migration
En esta tabla, cada línea corresponde a un lugar de trabajo o estudio de una persona. Hice una tabla separada de todas las personas con información sobre qué país y en qué año estudiaron la última vez, y otra con información sobre dónde están ahora:
create table person_last_education(orcid_id,country,graduated,is_phd); insert into person_last_education(orcid_id,country,graduated,is_phd) select p.orcid_id, m.country, m.end_year, m.is_phd from person as p, migration as m where m.orcid_id=p.orcid_id and m.affiliation_type='EDUCATION' ; create table person_last_location(orcid_id,country);
Resultó que la base de datos contiene datos sobre 1096745 graduados de todo el mundo, de los cuales 321083 recibió un doctorado.
Procesando datos
Contamos las estadísticas de los diez países más representados y dibujamos un gráfico usando ggplot.
Código library(DBI) migration <- dbConnect(RSQLite::SQLite(), "orcid_2016.sqlite3") by_country<-dbGetQuery(migration, 'select country,count(*) from person_last_education group by 1 order by 2 desc limit 10') ggplot(by_country,aes(x=country,y=`count(*)`))+geom_col() by_country_phd<-dbGetQuery(migration, 'select country,count(*) from person_last_education where is_phd=1 group by 1 order by 2 desc limit 10') ggplot(by_country_phd,aes(x=country,y=`count(*)`))+geom_col()


Sorpresa, Rusia ocupa el décimo lugar en el mundo en el número de graduados registrados, aunque no llegó a los 10 mejores graduados con doctorado.
Ahora miramos dónde viven los científicos rusos y, para mayor claridad, los mostraremos en el mapa mundial, normalizando el número total de graduados. Para una demostración más conveniente, utilizaremos plotly , este es un paquete que facilita la creación de gráficos interactivos, se puede usar localmente o con su servidor de forma gratuita, pero también proporciona un servicio de alojamiento, se puede publicar una pequeña cantidad de gráficos de forma gratuita.
Como hacer
Código create table person_last_location(orcid_id,country);
destination_by_country<-dbGetQuery(migration, "select l.country as destination, count(*) as count from person_last_education as o left join person_last_location as l on l.orcid_id=o.orcid_id where o.country='RU' and o.is_phd=1 group by 1") total_from_ru <- destination_by_country %>% summarize(n=sum(count)) fraction_remained <- destination_by_country %>% filter(destination=='RU') %>% mutate(frac=100*count/total_from_ru$n) destination_by_country_n <- destination_by_country %>% filter(destination!='RU') %>% mutate(frac=100*count/total_from_ru$n) p <- plot_geo(destination_by_country_n) %>% add_trace( z = ~frac, color = ~frac, colorscale = 'Bluered', text = ~COUNTRY, locations = ~destination3c, marker = list(line = list(color = toRGB("grey"), width = 0.5)) ) %>% colorbar(title = '', ticksuffix = '%') %>% layout( title = paste('PhD , ',fraction_remained$frac,'%'), geo = list( showframe = FALSE, showcoastlines = FALSE, projection = list(type = 'Mercator') ) ) api_create(p, filename = "phds_from_russia")
Gráfico interactivo en plotly
Del mismo modo, puedes ver de dónde vienen los científicos a Rusia.
Gráfico interactivo en plotly
Existe un cierto desequilibrio, de los cuales el 83% de los que recibieron un título de candidato (PhD) permanecieron en Rusia, pero de todos los científicos rusos, el 95% recibió un título en Rusia. Es decir, dejó más de lo que llegó. ¿Veamos cómo están las cosas con este equilibrio en todo el mundo?
codigo left_country<-dbGetQuery(migration, "select o.country as country,count(distinct o.orcid_id) as departed from person_last_education as o left join person_last_location as l on l.orcid_id=o.orcid_id where o.country!=l.country and o.is_phd=1 group by 1") arrived_to_country<-dbGetQuery(migration, "select l.country as country, count(distinct l.orcid_id) as arrived from person_last_education as o left join person_last_location as l on l.orcid_id=o.orcid_id where o.country!=l.country and o.is_phd=1 group by 1") by_country<-dbGetQuery(migration, 'select l.country as country, count(distinct l.orcid_id) as total from person_last_education as o left join person_last_location as l on l.orcid_id=o.orcid_id where o.is_phd=1 group by 1') balance_by_country <- by_country %>% left_join(left_country,by='country') %>% left_join(arrived_to_country,by='country') %>% mutate(arrived=ifelse(is.na(arrived),0,arrived),departed=ifelse(is.na(departed),0,departed)) %>% mutate(balance=round(100*(arrived-departed)/total,2)) %>% filter(total>10) %>% mutate(country3c=to_iso3c(country),country.ru=decode_ru(country)) p <- plot_geo(balance_by_country) %>% add_trace( z = ~balance, color = ~balance, colorscale = 'Bluered', text = ~country.ru, locations = ~country3c, marker = list(line = list(color = toRGB("grey"), width = 0.5)) ) %>% colorbar(title = '', ticksuffix = '%',limits=c(-100,100)) %>% layout( title = 'PhD (-)/', geo = list( showframe = FALSE, showcoastlines = TRUE, projection = list(type = 'Mercator') ) ) api_create(p, filename = "phds_balance")
Decidí mostrar solo los países donde el número total de personas con doctorado es más de 10, lo más probable es que solo haya personas que no estén utilizando activamente el sistema ORCID.
Gráfico interactivo en plotly
Parece que en muchos países desarrollados, especialmente en Europa, las personas se gradúan de la escuela de posgrado y se van a trabajar a un lugar subdesarrollado, probablemente haya competencia con los graduados locales que no es tan fuerte y es más fácil conseguir un puesto en la Universidad.
¿A dónde fueron las escuelas físicas?
Tuve que jugar un poco con los graduados de la Universidad de Física y Tecnología, porque todos indican el nombre de su universidad natal de manera un poco diferente, tuve que buscar manualmente en la base de datos todo lo que se parece a MIPT y hacer una placa de identificación para el cumplimiento. Y esto es lo que sucedió:
Gráfico interactivo en plotly
Parece que la mayoría de los técnicos físicos están encriptados (como yo) y no cargan su currículum en orcid. Esperaremos ...
Disculpa
Todas las estadísticas se basan en los datos que las personas ingresaron en la base de datos ORCID y se pusieron a disposición del público. Por lo tanto, no tiene sentido decir algo como "ah, todo es basura. Personalmente conozco el departamento de educación física que vive en México o Brasil", probablemente no hizo un currículum público en Orcid.
Todos los scripts están alojados en github, consulte https://github.com/vfonov/sci_migration/blob/master/stats_db.R