Récemment, dans le magazine Science, il y avait un article intitulé «Un vaste ensemble de CV publics révèle les scientifiques les plus migrateurs du monde» - où les statistiques des scientifiques se déplaçant d'un pays à l'autre étaient montrées sur la base de données publiques du système orcid . Toutes les données utilisées pour l'article ont également été rendues publiques, et j'ai décidé de regarder où les scientifiques de Russie en général, et de ma PhysTech natale en particulier, se dispersaient.
Présentation
Le système orcid (Open Researcher and Contributor ID) est un OSBL responsable du système volontaire et obligatoire pour aider à identifier les auteurs de publications scientifiques, créé en 2012. L'idée est que les scientifiques participant à la publication d'articles scientifiques peuvent créer indépendamment un compte qui les identifiera de manière unique et permettra aux personnes d'être correctement identifiées lors du calcul de différentes métriques (par exemple, l'indice Hirsch).
Fait intéressant, toutes les données source sont ouvertes, orcid a publié en accès libre une archive complète de tous les CV disponibles pour accès public au format json. Et avec toute l'histoire des changements. C'est, par exemple, le conditionnel Ivan Ivanovitch Ivanov a indiqué dans le système qu'il était diplômé du MIT en 2000, puis il était étudiant diplômé à Stanford, puis il a placé son emploi à l'Université Shinoliteyny de Moscou, puis le système mange et se souvient de tout. En principe, personne ne se soucie pour le moment de créer de faux comptes, mais de nombreuses revues scientifiques ont déjà commencé à exiger ORCID pour publier des articles, de sorte que l'on suppose que la plupart des comptes du système sont créés avec de bonnes intentions.
Au moment de la publication de l'article dans Science, la base de données ouverte sur les orcides contenait des informations sur le résumé d'environ 3 millions de scientifiques dans le monde. Les auteurs de l'article de Science écrivent que les différents pays sont représentés de manière plus complète (par rapport aux statistiques de l'Unesco sur le nombre de scientifiques) et qu'il existe un biais notable en faveur des scientifiques récemment diplômés de l'enseignement supérieur.
Malgré tout ce qui précède, il s'agit de la base de données la plus complète accessible au public des scientifiques et de leurs mouvements. Dans l'article d'origine, les auteurs ont simplement divisé le monde entier en 8 régions (UE à l'exception de la Grande-Bretagne, la Grande-Bretagne, les États-Unis, l'Asie, l'Amérique à l'exception des États-Unis, l'Australie et l'Océanie, l'Europe à l'exception de l'UE et de l'Afrique) et ont calculé des statistiques sur le nombre de scientifiques qui ont changé de lieu de résidence après les études supérieures et où ils sont allés plus tard. Vous pouvez voir où vivent maintenant les scientifiques diplômés des universités russes, y compris. Mais, puisque toutes les données source sont accessibles au public, ceux qui le souhaitent peuvent satisfaire indépendamment leur curiosité, ce que j'ai fait.
Importer des données
J'ai décidé d'importer la base de données après le traitement initial de json vers .csv dans SQLite pour faciliter l'écriture des requêtes: j'ai téléchargé le fichier ORCID_migrations_2016_12_16.csv (1988114 entrées, 224 Mo):
CodeCREATE 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
Dans ce tableau, chaque ligne correspond à un lieu de travail ou d'étude d'une personne. J'ai fait un tableau séparé de toutes les personnes avec des informations sur quel pays et dans quelle année elles ont étudié la dernière fois, et une autre avec des informations sur leur situation actuelle:
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);
Il s'est avéré que la base de données contient des données sur 1096745 diplômés dans le monde, dont 321083 ont obtenu un doctorat.
Traitement des données
Nous comptons les statistiques pour les dix pays les plus représentés et dessinons un graphique en utilisant ggplot.
Code 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()


Surprise, la Russie se classe au 10e rang mondial pour le nombre de diplômés inscrits, bien qu'elle ne soit pas arrivée dans le top 10 des diplômés titulaires d'un doctorat.
Maintenant, nous regardons, où les scientifiques russes vivent maintenant, et pour plus de clarté, nous allons les montrer sur la carte du monde, normalisant le nombre total de diplômés. Pour une démonstration plus pratique, nous utiliserons complotement , c'est un package qui facilite la création de graphiques interactifs, il peut être utilisé localement ou avec votre serveur gratuitement, mais il fournit également un service d'hébergement, un petit nombre de graphiques peuvent être publiés gratuitement.
Comment faire
Code 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")
Graphique interactif sur complot
De même, vous pouvez voir où les scientifiques viennent en Russie.
Graphique interactif sur complot
Il existe un certain déséquilibre, dont 83% des diplômés d’un doctorat sont restés en Russie, mais parmi tous les scientifiques russes, 95% ont obtenu un diplôme en Russie. C'est à dire plus que arrivé. Voyons comment les choses se passent avec cet équilibre dans le monde?
code 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")
J'ai décidé de ne montrer que les pays où le nombre total de personnes atteintes d'un doctorat est supérieur à 10, très probablement il n'y a que des personnes qui n'utilisent pas activement le système ORCID.
Graphique interactif sur complot
Il semble que dans de nombreux pays développés, en particulier en Europe, les personnes diplômées de l'enseignement supérieur et partent travailler quelque part dans un endroit sous-développé, il y a probablement une concurrence avec les diplômés locaux n'est pas si forte et il est plus facile d'obtenir un poste à l'Université.
Où sont passées les écoles de physique?
J'ai dû bricoler un peu avec les diplômés de l'Université de physique et de technologie, car tout le monde indique le nom de leur université d'origine un peu différemment, j'ai dû rechercher manuellement dans la base de données tout ce qui ressemble au MIPT et faire une plaque signalétique pour la correspondance. Et voici ce qui s'est passé:
Graphique interactif sur complot
Il semble que la plupart des techniciens physiques sont cryptés (comme moi) et ne téléchargent pas leur CV sur orcid. Nous attendrons ...
Excuse
Toutes les statistiques sont basées sur les données que les gens ont entrées dans la base de données ORCID et mises à la disposition du public. Par conséquent, cela n'a aucun sens de dire quelque chose comme "ah, ce sont toutes des ordures - je connais personnellement le département d'éducation physique vivant au Mexique ou au Brésil", il n'a probablement pas fait de résumé public sur l'orcid.
Tous les scripts sont hébergés sur github voir https://github.com/vfonov/sci_migration/blob/master/stats_db.R