- PVSM.RU - https://www.pvsm.ru -

Как учёные перемещаются по миру

Недавно в журнале Science была статья “Огромный архив резюме раскрыл самых путешествующих учёных” ( “Vast set of public CVs reveals the world’s most migratory scientists” [1] ) — где на основе публичных данных из системы orcid [2] была продемонстрирована статистика переезда учёных из страны в страну. Все данные использованные для статьи тоже были выложены в октрытый доступ, и я решил посмотреть куда-же разьезжаются учёные из России в общем, ну и из родного Физтеха в частности.

Введение

Система orcid ( Open Researcher and Contributor ID) это НКО отвечающая за добровольно-принудительная систему для помощи идентификации авторов научных публикаций, созданная в 2012 году. Идея состоит в том, что учёные участвующие в публикации научных статей могут самостоятельно создать учётную запись, которая будет их уникальным образом идентифицировать и позволит правильно идентифицировать людей при расчёте разных метрик (например индекс Хирша).

Что интересно, все исходные данные открыты, orcid выложил [3] в свободный доступ полных архив всех резюме доступных для публичного доступа в формате json. Причём со всей историей изменений. Т.е например условный Иван Иваныч Иванов указал в системе что окончил MIT в 2000г, потом был аспирантом в Стенфорде, а потом поставил место работы Московский Шинолитейный Университет, то система в принципе это всё скушает и запомнит. Т.е в принципе никто не мешает на данный момент создавать фейковые учётные записи, но многие научные журналы уже начали требовать ORCID для публикации статей, так что есть предположение что большинство учётных записей в системе создано с благими намерениями.

На момент публикации статьи в Science, в открытой базе orcid была информация о резюме примерно 3х миллионов учёных по всему миру. Авторы статьи в Science пишут что разные страны представлены более полно (если сравнивать со статистикой Unesco о количестве учёных) и есть заметный уклон в сторону учёных недавно окончивших аспирантуру.

Несмотря на всё вышеперечисленное, это самая полная публично-доступная база данных об учёных и их перемещения. В оригинальной статье авторы просто разбили весь мир на 8 областей ( ЕС за исключением Великобротании, Великобритания, Штаты, Азия, Америка за исключением США, Австралия и Океания, Европа за исключением ЕС и Африка) и подсчитали статистику о том, сколько учёных сменили место жительства после окончания аспирантуры и куда они потом направились.Можно посмотреть где теперь живут учёные окончившие российские вузы, в том числе. Но, поскольку все исходные данные есть в публичном доступе, желающие могут самостоятельно удовлетворить своё любопытство, что я и сделал.

Импортируем данные

Я решил импортировать базу данных после первичной обработки из json в .csv в SQLite для простоты написания запросов: загрузил файл ORCID_migrations_2016_12_16.csv [4] ( 1988114 записей, 224мб):

Код

CREATE 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

В этой таблице каждая строка соответствует одному месту работы или учёбы человека ешё я сделал отдельную таблицу всех индивидумов с информацией о том в какой стране и в каком году они учились последний раз, и ещё одну с информацией где они теперь находятся:

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);
# selecting orcid 
insert into person_last_location(orcid_id,country) 
 select p.orcid_id,
        (select m.country from migration as m where m.orcid_id=p.orcid_id order by end_year desc limit 1)
 from person as p;

Получилось, что в базе есть данные о 1096745 выпускниках по всему миру, из них 321083 получила PhD.

Обрабатываем данные

Считаем статистику по десяти самым представленным странам и рисуем диаграмму с помощь ggplot.

Код

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()

image

image

Сюрприз, Россия на 10м месте в мире по количеству зарегистрировавшихся выпускников, правда в 10ку выпускников с PhD не попала.

Теперь смотрим, где-же теперь обитают русские учёные, и для наглядности покажем их на карте мира, отнормировав на общее количество выпускников. Для более удобной демонстрации воспользуемся plotly [5], это пакет облегчающий создание интерактивных графиков, локально или со своим сервером его можно использовать бесплатно, но он так-же предоставляет службу для хостинга [6], небольшое количества графиков можно выложить бесплатно.
Как сделать

Код

create table person_last_location(orcid_id,country);
# selecting orcid 
insert into person_last_location(orcid_id,country) 
 select p.orcid_id,
        (select m.country from migration as m where m.orcid_id=p.orcid_id order by end_year desc limit 1)
 from person as p;

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")

imageИнтерактивный график на plotly [7]

Аналогично можно посмотреть откуда в Россию приезжают учёные.
imageИнтерактивный график на plotly [8]

Налицо некоторый дисбаланс, из получивших степень кандидата (PhD) в России осталось 83%, но из всех российских учёных — 95% получило степень в России. Т.е уехало больше чем приехало. Посмотрим, а как с этим балансом обстоят дела во всём мире?

код

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")

Я решил показывать только страны где суммарное количество людей с PhD больше 10, скорее всего там просто люди недостаточно активно пользуются системой ORCID.

imageИнтерактивный график на plotly [9]

Похоже что во многих развитых странах, особенно в Европейских народ оканчивает аспирантуру и уезжает работать куда-нибудь в неочень развитое мест, наверное там конкуренция с местными выпускниками не такая сильная и проще получить позицию в Университете.

Куда уехали физтехи?

С выпускниками физтеха пришлось немного повозится, потому что название родного вуза все указывают немного по-разному, пришлось в ручную поискать в базе всё что похоже на МФТИ и сделать табликчку соответвия. И вот что получилось:
imageИнтерактивный график на plotly [10]
Похоже, большинство физтехов шифруются (как и я) и не выкладывают в orcid своё резюме. Будем ждать...

Отмазка

Все статистика построена на основе данные которые люди внесли в базу данных ORCID и сделали доступной для публичного доступа. Поэтому бессмысленно говорить что-то типа "а, это всё фигня — я лично знаю физтеха живущего в Мексике или Бразилии", наверное он просто не сделал публичное резюме на orcid.
Все скрипты разещены на github [11] смотрите https://github.com/vfonov/sci_migration/blob/master/stats_db.R [12]

Автор: Владимир

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/267961

Ссылки в тексте:

[1] “Vast set of public CVs reveals the world’s most migratory scientists”: http://www.sciencemag.org/news/2017/05/vast-set-public-cvs-reveals-world-s-most-migratory-scientists

[2] orcid: https://orcid.org/

[3] orcid выложил: http://datadryad.org/resource/doi:10.5061/dryad.48s16

[4] ORCID_migrations_2016_12_16.csv: http://datadryad.org/bitstream/handle/10255/dryad.146272/ORCID_migrations_2016_12_16.csv?sequence=1

[5] plotly: https://plot.ly

[6] хостинга: https://www.reg.ru/?rlink=reflink-717

[7] Интерактивный график на plotly: https://plot.ly/~vfonov/7.embed

[8] Интерактивный график на plotly: https://plot.ly/~vfonov/9.embed

[9] Интерактивный график на plotly: https://plot.ly/~vfonov/11.embed

[10] Интерактивный график на plotly: https://plot.ly/~vfonov/13.embed

[11] разещены на github: https://github.com/vfonov/sci_migration

[12] https://github.com/vfonov/sci_migration/blob/master/stats_db.R: https://github.com/vfonov/sci_migration/blob/master/stats_db.R

[13] Источник: https://geektimes.ru/post/295253/