Хотите знать, как религия влияет на рабочий день, у кого самый длинный обеденный перерыв, и правда ли, что Москва никогда не спит? Но это же Хабр, а не жёлтая газета, так что историю вам поведает самый объективный рассказчик из всех — данные пользовательской активности.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/e40/f9d/fe9/e40f9dfe9e5a0b28d31c1b345a949c5a.jpg)
Вам когда-нибудь доводилось найтипиратский настоящий клад? Такой что с первого взгляда становится понятно, что вы теперь богач. Если находили, то наверняка первый месяц провели, обложившись книжками, увеличительными стеклами и всем, что может помочь вам узнать про находку всё. А следующие несколько месяцев вы хвастались находкой всем друзьям.
Что-то в этом роде произошло со мной, когда я наткнулся на логи sci-hub. Вроде в интернете полно открытых данных, но чтобы заполучить журнал учёта на 195 миллионов записей — это не каждый день так везёт. Несколько недель я изучал доставшееся мне богатство, а теперь пришёл на хабр, чтобы рассказать вам, что я нарыл.
Sci-hub — крупнейший пиратский сайт для учёных. С его помощью исследователи всего мира скачивают научные статьи в обход дорогущих paywall-ов. В день через sci-hub скачивается около полумиллиона статей. Недавно Александра Элбакян — автор сайхаба — выложила логи скачиваний статей за 2017-й год. Изучая эти записи можно многое узнать о том, как работает наука, но я решил подойти с немного другой стороны и узнать, как работают учёные.
Особенность этих данных в том, что они показывают трек не просто сетевой активности, а активности рабочей. Читать научные статьи — это вам не котиков лайкать. Для нас статистика скачиваний — это возможность более-менее объективно посмотреть на то, как устроен рабочий год учёного или инженера, не полагаясь на стереотипы. Вы ведь не меньше моего хотите знать, как будет устроена ваша жизнь, когда вы эмигрируете в Китай или, скажем, Колумбию.
Сразу оговорюсь, что мой анализ не претендует ни на полноту, ни на глубину охвата. Чем больше я вертел данные, тем больше чувствовал себя в роли зоолога, который изучает не столько общие признаки разных зверюшек, сколько их отличия. Там, где я не могу уверенно объяснить результаты, я буду отчаянно спекулировать. К статье следует относиться как к рассказу про интересные находки, и про то, как я к ним пришёл. И не следует относиться как к работе исчерпывающе описывающей, как устроен мир.
Все картинки в статье спрятаны в спойлерах — это поможет статье поместиться в ваш браузер. Чтобы читать статью было интереснее, вы можете пытаться спрогнозировать результат, прежде чем открывать картинку.
Для начала небольшой экскурс в то, что успели сделать до меня. Началось всё со статьи журналиста Джона Боханнона в Science, который попросил Александру Элбакян выдать ему логи сайхаба. Шёл 2016-й год и общественность не понимала, кто пользуется пиратским ресурсом. Вывод Боханнона для многих был неожиданным: сайхабом пользуются и в богатых, и в бедных странах. В качестве побочного эффекта статьи был опубликован датасет с полугодовыми логами скачиваний. Попутно автор сайхаба отладила движок для геопривязки скачиваний — и в начале 2018-го года Александра опубликовала аналогичный лог, но уже за весь 2017-й год (основная часть, потерянная добавка от Эльзивера). За это время аудитория сайта стала только активнее, и вместо 200 тысяч скачиваний в день сайхаб обслуживает уже более 500 тысяч скачиваний.
После выхода статьи Боханнона появилось ещё несколько публикаций. Вот, например, он же дал комментарий, сопроводив его картой, иллюстрирующей работу сайхаба за двое суток.
Бианка Крамер заметила, что многие используют sci-hub даже при наличии легального доступа к публикации, т.к. он даёт единообразный интерфейс, работающий в один клик. Она изучила географию скачиваний в Нидерландах, в попытках разобраться, почему пользуются сайхабом: оттого что у исследователей нет доступа к публикациям или потому что это удобнее. Но однозначного ответа на этот вопрос получить не удалось.
Бастиан Цоварас также пытался оценить долю пользователей в университетах. У обоих исследователей вышло, что с университетских адресов приходит порядка 9% загрузок. Помимо этого Цоварас построил корреляции числа скачиваний по странам с различными экономическими показателями этих стран. Это показало, что в богатых странах качают даже больше. Также он сделал некоторые замечания про сезонность скачиваний (но эти заметки как раз довольно сомнительного качества).
Исследование географии пользователей по IP адресам было подвергнуто критике. Авторы заметки утверждают, что города, где много качают хорошо коррелируют с местами расположения крупных провайдеров, так как IP может разрешаться не в координаты пользователя, а в координаты провайдера. При интерпретации результатов стоит учитывать, что геокодирование IP адресов неточно. У нас будет возможность ярко пронаблюдать этот эффект на паре кейсов, но в целом геопривязка кажется сделанной прилично.
Вернёмся к нашимбандерлогам и разберемся, какая информация у нас в распоряжении. Нам доступен doi-идентификатор скачиваемой статьи (это такая специальная перманентная ссылка), серверное время, географические координаты, страна и город. IP-адрес и идентификатор пользователя в целях анонимизации пользователей переведены в ничего не значащие номера. Identity пользователя, вероятно, определяется по cookies, ведь логиниться на сайте нельзя. Это ведёт к некоторым очевидным ограничениям: сессия время от времени может сбрасываться, а пользователь на домашнем и рабочем компьютерах будут распознаваться как два разных пользователя.
Время в логах указано серверное; по косвенным признакам можно сказать, что сервер живёт в московской временной зоне (UTC+3, без перевода часов на летнее время). Нам это не подходит, мы ведь хотим узнать рабочий график людей, а не сервера. Даже статистика по дням недели будет некорректна без такого преобразования, ведь пока у сервера суббота, у пользователей в других странах может быть ещё пятница или уже воскресенье.
Первое, что мы сделаем — это переведём часы. Большинство стран очень удачно решили, что им хватит одной временной зоны — с ними всё легко. Для большой части оставшихся загрузок мы знаем либо название города (город всё-таки живёт в одной конкретной временной зоне), либо координаты — их тоже легко соотнести с временной зоной. Приблизительно для 2% записей точно выявить временную зону не удалось — их мы отбросим. Нам хватит и оставшихся 190 миллионов записей.
Интересно, что такие неопознанные записи очень неравномерно распределены по году. Например, в середине года было очень много записей из неизвестного места в США, в начале и в конце года — в десятки раз меньше. Ошибка ли это геокодера или особенности работы какого-то бота/провайдера — неясно.
В процессе конвертации времени выяснилась пара неочевидных моментов. В нескольких странах (например, в Германии) формально есть две временные зоны, но на 2017-й год они совпадают. Ещё интересный факт: два года назад география сайхаба охватывала все континенты, кроме Антарктики, но за последний год это упущение было исправлено, что выразилось в появлении загадочной временной зоны None. Сайхабят оттуда в основном довольно печальные вещи, но бывают у тамошних обитателей и довольно неожиданные интересы, как вот эта статья про развитие винного туризма в Испании. Позднее этот пользователь ничего не искал, но надеюсь, у него всё хорошо.
Главное правило дата-журналистики, как я его понимаю: «Видишь координаты — делай карту». Увы, как я писал, карту скачиваний уже сделали до меня. Но это было давно, так что, как говорится, можем повторить. К сожалению, нам потребуется сразу две карты-хороплета:
и
Иначе мы не увидим разницу либо в области малых значений (ЮАР с его 400 тысячами скачиваний будет неотличим от Намибии с 6 тысячами), либо в области высоких значений (не сможем отличить Китай от России).
Дополнительно приведу здесь карту
Здесь мне пришлось выкинуть страны, с очень маленьким населением и очень низким числом скачиваний — чтобы они не перекашивали цветовую шкалу. В лидеры ожидаемо выбиваются Сингапур, Гонконг и довольно неожиданно Португалия, Тунис и Нидерланды.
Теперь изучим научную активность чуть более детально — по областям знаний. Префикс doi-идентификатора кодирует издателя, однако большая часть мировой научной периодики контролируется всего несколькими очень многопрофильными издателями: Elseiver, Springer-Nature, Wiley. Однако есть пара очень крупных издателей «узко специализированной» тематики: IEEE для инженеров-электронщиков и American Chemical Society плюс The Royal Society of Chemistry — для химиков. С химиками всё получается не очень интересно, а инженеры-электронщики распределены сильно неравномерно.
Откровенно говоря, исходно я рассчитывал проверить не IEEE, а Elsevier, в надежде на то, что увижу всплеск скачиваний в Германии, где 60 университетов отказались от подписки на журналы гиганта издательского бизнеса. Но карты демонстрируют совершенно иную картину: доля Эльзивера в среднем 30%, в Германии на пару процентов меньше. А лидеры — Марокко, Алжир, Боливия, Тунис и Перу — аж 50% статей
Позднее я прочитал, что Elsevier восстановил университетам доступ, несмотря на отсутствие соглашения. Чтобы проанализировать эффект, я посмотрел, на первые 40 дней года, когда длился бан, но картина практически не изменилась.
Ещё одним интересным открытием для меня была серьезная популярность (несколько процентов всех скачиваний) статей с префиксом
Как я упоминал, попытка изучить временной профиль использования сайхаба уже предпринималась, но… сделано это было для галочки: рассматривались только две страны, с низким разрешением и некорректной аттрибуцией дня недели. А главное и наиболее возмутительное — это интерпретация в духе «видите, рабочие часы совпадают — значит графики похожи». Хотя графики Германии и Гонконга действительно похожи, у них есть и довольно серьезное отличие. А профили использования сайхаба на протяжении дня во многих других странах отличаются разительно!
Мы скоро будем строить свои, правильные графики, но прежде я расскажу вам, как они устроены и почему именно так. Если вы хотите побыстрее перейти к картиночкам, можете пропустить следующие два раздела.
Чтобы изучить, как работают пользователи в разных странах, мы будем строить графики числа скачиваний за определенный временной промежуток. Данных достаточно много, но нам всё же придётся балансировать между детализацией и чёткостью картины — ведь для того чтобы что-то увидеть, статистика должна стабилизироваться. Изначально я строил график числа скачиваний в каждый час дня, просуммированный по всем дням года. Уже из таких графиков стало понятно, что история вырисовывается крайне интересная. Если увеличить разрешение до 10 минут становится видно больше деталей, а шум всё ещё на приемлемом уровне. Оставляем!
Параллельно я построил графики числа скачиваний по дням недели, но они получались не слишком внятные (и некрасивые: всего семь точек). Однако если скрестить эти графики и считать скачивания в полдень понедельника и в полдень воскресенья по отдельности, картина выглядит более чем занятно. Становится видно, как будни плавно перетекают в выходные, а выходные — в будни. Таким образом мы представляем как выглядит усредненный день года и усредненная неделя года.
Чтобы графики были сравнимы между разными городами и странами, они отнормированы на максимум.
Параллельно я пытался изучить, как устроен не день, а год. Например, строил график числа скачиваний в каждый из 365 дней года. Он получался уж совсем никакой. Во-первых, шумный, но это можно решить медианным сглаживанием с окном в неделю. А во-вторых, его было очень тяжело интерпретировать, и это исправить уже сложнее.
Ещё я ввёл такую характеристику как «центр масс дня» — это усреднение времени, когда произошло скачивание (альтернативный подход — медианный момент скачивания). Идея была в том, чтобы вычислить одну характеристику, по которой можно было бы узнать, насколько рано начинается и заканчивается рабочий день в разные времена года. Однако оказалось, что я не умею описать этот график в одно предложение — верный признак того, что его никто не поймёт. Сложность описания и интерпретации побудила меня искать другие способы визуализации.
Оказалось, что достаточно снова скрестить графики и построить тепловую карту. По одной оси будут сменяться недели года, а по другой отложено время относительно начала. Например, мы можем откладывать каждый час года как одну точку. Чтобы сделать картинку более чёткой можно ещё просуммировать все дни в пределах одной недели.
На такой карте тоже видны закономерности недельного графика, хотя читать их всё-таки проще по «одномерному» графику средней недели (а сравнивать — и подавно). Гораздо важнее, что на тепловой карте становятся видны артефакты — получается взглянуть на различия между днями и неделями года.
Нам придётся время от времени делать zoom in/zoom out, чтобы разглядывать общую картину издалека и проводить сравнение между странами, а частности объяснять, спустившись к максимально возможному уровню детализации.
Мы можем смотреть на тепловые карты с разными целями: когда мы смотрим на активность работы в различные периоды года, нам логичнее изучать абсолютные значения скачивания. А если мы смотрим на то, как с течением года меняется расписание дня, удобнее смотреть на значения нормированные. В частности, отлично работает нормирование числа скачиваний в клеточке тепловой карты на суммарное число скачиваний за неделю.
В то же время терять информацию об абсолютном числе скачиваний за неделю не хочется. Без этого мы, например, можем не понять, в какие недели были серьезные перебои в работе сервера. Кроме того, хотелось бы понимать, когда учёные напряженно работают, а когда массово уходят на каникулы.
Чтобы взять лучшее из двух подходов, я рисовал в основном нормированные тепловые карты, а по краям — гистограммы, агрегированные по времени суток (или времени недели) и по неделям.
С тепловыми картами меня ждала ещё одна сложность: детали не были видны либо в зоне слабой интенсивности, либо в зоне активной работы. Когда мы строили карты-хороплеты, пришлось строить сразу две карты: в обычной и логарифмической шкалах. Но тепловых карт и так будет много, удваивать их число показалось мне плохой идеей. К счастью, оказалось, что при помощи однородно-воспринимаемой цветовой палитры можно решить проблему. С географическими картами, впрочем, этот фокус не прокатил.
При перенормировании тепловой карты на недельное число скачиваний очень ярко проявляется проблема выбросов. Когда за неделю (как правило, из-за сбоя) было скачано очень мало статей, то доля, приходящаяся на конкретный интервал становится очень велика. Я отсекаю такие выбросы (только выбросы вверх) по учетверенной медиане — получается хорошо.
Наконец, последняя пара замечаний, прежде чем перейти к картинкам — про то, насколько этим картинкам стоит верить. Когда мы суммируем события в совпадающих временных интервалах, нам требуется брать множество интервалов на протяжении года. Но число интервалов, относящихся к разным дням недели и даже разным временам суток будет не вполне сбалансированным.
Непостоянную доступность игнорировать можно, с этим разобрались. А вот ботов игнорировать не получится. Я не взялся честно очистить данные от ботов, эта задача ещё ждёт своего исследователя. Просто учитывайте, что где-то в фоновом режиме они работают. Когда боты приходят, не заметить их невозможно.
Можно предположить, что самые активные боты никогда не спят и работают с более-менее постоянной интенсивностью, а реальные люди по ночам всё-таки нуждаются в отдыхе. Тогда мы можем просто вычесть фоновый уровень активности. Как вы увидите, это позволяет получить более-менее правдоподобные оценки активности.
Что в анализе не учтено? Во-первых, есть города, которые геокодер преобразует в разные названия.
Во-вторых, и это важно, мы не можем отделить сезонность работы от эффектов роста аудитории сервиса. В частности, было бы наивно предполагать, что рост аудитории происходит с постоянной скоростью. Или что он одинаков в разных странах. Буду рад, если кто-нибудь в комментариях опишет, как эти эффекты лучше разделить, или даже возьмётся это посчитать.
Ок, давайте наконец посмотрим, как же распределены рабочие часы в разных странах. Для начала мы, конечно, посмотрим на дефолт-сити, город-герой Москву с её 2.4 миллионами скачиваний. Мы будем смотреть рабочий график сразу на всю неделю.
Стоит отметить, что вся Россия живёт примерно так же. Разве что в Новосибирске и Казани (в отличие от Москвы и Питера) исследователи стараются по ночам спать, и большую часть рабочей активности концентрируют днём.
Вы должны были заметить, что Москва никогда не спит — и активность даже в субботнюю ночь всего лишь в 10 раз отличается от активности в самое загруженное время — около 14-15 часов вторника. Боты в Москве явно более активны, чем в Новосибирске. Давайте вычтем из обоих графиков фоновый уровень.
Что мы видим? Во-первых, в Москве учёные, действительно, чаще предпочитают отложить работу на более позднее время и намного больше работают по выходным. Во-вторых, складывается впечатление, что в Москве есть не только круглосуточные боты, но и те, которые отдыхают по выходным (хоть и работают ночами). Впрочем, это могут быть и реальные люди.
Во многих странах ещё можно видеть небольшой горбик в вечернее время — около 21-22 часов. Это родители открывают сайхаб, чтобы почитать детям на ночь научно-фантастические сказки. Возможно и другое альтернативное объяснение: учёный приходит домой, открывает браузер, и у него по-новой загружаются закрытые ранее статьи.
Это я, кстати, почти серьезно говорю. В логах видно, как некоторые пользователи одновременно открывают пару статей, которые уже читали раньше. Это явно артефакт от перезагрузки браузера. Не факт, что исследователь решил прямо сейчас поработать (прочесть статью), но загрузка произошла.
Ещё одна гипотеза — что этот горбик появляется из-за дедлайнов. Ведь к полуночи (иногда — к полуночи по Гринвичу или Нью-Йорку) вам непременно надо завершить работу над списком литературы в ваших конференционных тезисах. Эту гипотезу, кстати, можно проверить, сравнивая время этого холмика в разных временных зонах.
Мы выяснили, что вся Россия живёт примерно одинаково, а кто живёт не так? Это удивительно, но… все.
Давайте сравним Россию, например, с Францией. Видите, что поменялось?
Спать в Европе ложатся раньше, но и на работу выходят более организованно. Но самое интересное, что появился глубокий провал в середине дня. Можно предполжить, что французы более-менее синхронно ходят на обеденный перерыв в промежутке с 12 до 14 (на выходных эффект чуть слабее, но тоже заметен).
Если посмотреть на Париж, то там провал заметно менее выражен, чем по всей Франции в целом. Германия занимает промежуточное положение между Россией и Францией, «обеденный» провал там есть, но сильно менее глубокий, чем во Франции.
Наверное самый любимый для меня пример — это Китай. Во-первых, там очень много пользователей, поэтому статистика получается очень гладкой. Во-вторых, разные города почти совсем не отличаются, удивительная согласованность для довольно большой страны. Ну и, конечно, Китай совсем не похож на Россию. Я буду рисовать сразу много городов на одном графике, так что нам больше подойдёт масштаб одного дня, тем более что выходные отличаются от будних дней в Китае лишь количественно.
В Китае перерывов два. В районе половины первого и половины седьмого. А рабочие пики в 11, 16 и 22. Перерывы очень широкие. Это можно было бы объяснить тем, что все идут обедать в разное время, но! Можно заметить, что начинается перерыв довольно резко — сравните, например со Францией. То есть начинается обед почти одновременно, а вот заканчивается он у всех за разное время.
Если почитать про распорядок дня в Китае, можно узнать про традицию послеобеденного сна; похоже, что это не байка. Откуда берётся вечерний пик (которого, кстати, нет в Гонконге) наверняка кто-нибудь расскажет в комментариях.
upd: По словам lockywolf во многих китайских компаниях полагается ужин, поэтому люди работают до 20. И перерывов в итоге два: обеденный и ужинный.
По дням недели большинство городов Китая тоже очень похожи, но есть загадочный город Динси, в котором картина существенно отличается. Работа там смещена на вечер, а выходные не так заметны. Тот факт, что относительно небольшой и ничем не примечательный городок Динси попал на третье место в список самых активных городов Китая, скорее всего свидетельствует о том, что геокодер ошибается. Возможно, там располагается одна из точек фильтрации трафика. Или просто координаты определились некорректно.
upd: Как подсказывает lockywolf, в Динси находится географический центр Китая. И возможно, что Китай — не единственная страна, которая скидывает в центр неопознанные IP.
Думаю, вы неплохо справлялись с угадыванием того, как выглядят графики в Европе. А теперь… попробуйте угадать, как выглядит график скачиваний в Колумбии (или в Бразилии с Мексикой — там довольно похожая ситуация).
Чтобы был сильнее виден контраст, я нарисовал рядом Колумбию и Россию. Ночь и начало рабочего дня выглядит «как положено», а к вечеру происходит что-то необычное.
То ли учёные предпочитают работать, когда станет прохладней. То ли на работе сайхаб у многих заблокирован/не требуется, и приходится обращаться к нему из дома. А может быть у них просто принято днём работать руками, а читать по вечерам. Но факт остаётся фактом, пик скачиваний приходится вовсе не на рабочие часы, а на поздний вечер.
Заметьте ещё, что так происходит не всегда, а только с понедельника по четверг. Вечер пятницы научные сотрудники, вероятно, предпочитают проводить не перед монитором, а в каком-нибудь баре.
При взгляде на Колумбию складывается впечатление, что основные выходные там в пятницу и субботу, а воскресенье — нормальный рабочий день. В этот момент самое время сообразить, что в некоторых странах неделя начинается не с понедельника, и пойти читать википедию про устройство рабочей недели в разных странах. Про Колумбию википедия говорит, что рабочая неделя там такая же как у нас, т.е. продолжается с понедельника по пятницу или субботу… Но жизнь, видимо, устроена не совсем так, как принято официально. Предваряя вопросы хочу вас заверить, что, это не ошибка определения дня недели в западном полушарии: в близлежащих США и Кубе рабочая неделя определяется, как и должна, с понедельника по пятницу.
Давайте посмотрим на ещё один график со сдвинутой неделей — Израиль. Как известно, рабочая неделя у них с воскресенья по четверг, а вечером пятницы начинается шаббат. И тут никаких сюрпризов, всё так и происходит.
Какими ещё бывают выходные? Заметно отличаются от других стран Индия и, особенно, Куба. В большинстве стран в воскресенье учёные начинают возвращаться к работе. В Индии и на Кубе наоборот: воскресенье — полноценный выходной с очень сильным провалом даже относительно субботы.
Судя по тому, как резко кончается рабочий день на Кубе, дело не столько в лени или в национальных традициях, а в том, что на Кубе просто нет возможностей работать из дома. В Индии картина выглядит иначе — смотрите сами. Я построил два графика отдельно:
В стране обычно есть общие тренды, которые распространяются на все города. Но бывает и так, что город имеют свою специфику. Калькутте, например, несвойственна присущая Индии воскресная расслабленность.
Что удивительно, во многих странах Африки и Ближнего Востока (Иран, Ирак, Алжир, Египет) нет существенной разницы между днями недели. В Иране понедельник таки начинается в субботу. В выходные для них четверг-пятницу работают, действительно, чуть меньше, но разница между самым загруженным и самым расслабленным днями недели составляет всего 10-20%.
Впрочем, отсюда не следует, что эти страны похожи между собой. Казалось бы, Иран и Ирак должны быть похожи: две рядом расположенные мусульманские страны, и даже названия похожи, но — нет. У одних пик работы утром, у других — вечером.
Мы ещё вернёмся к этой загадке, вооружившись тепловыми картами, но сейчас поговорим о другом.
Вы, должно быть заметили, что я обошёл стороной США, хотя они — один из крупнейших пользователей сайхаба. Так вот, у этого есть веские причины. Дело в том, что большую часть трафика в США создают боты. Как я говорил, это невозможно перепутать.
Трафик ночью отличается от трафика в самое нагруженное время лишь в два раза. Если мы предположим, что боты добывают статьи с постоянной скоростью, а ночью уровень скачиваний от реальных людей пренебрежимо мал, то мы можем грубо оценить, что чуть больше 70% трафика создаётся ботами. Для сравнения, в России этот показатель около 15% (для Москвы — 20%). На этом месте можно злорадно заметить, что после вычитания 70% скачиваний США со свистом вылетает из тройки лидеров пиратства (сразу на 10-е место), уступая своё место Ирану с Бразилией.
Построим недельный график без этого фонового уровня. На нём видно, что общие закономерности просматриваются. Ночью затишье. Резкий рост активности наблюдается с началом рабочего дня и вечером в районе 22 часов. В субботу работа затихает. Всё как положено.
Говорят, что в мегаполисах люди никогда не спят, но посмотрите на разницу между
В Лос-Анджелесе ситуация даже хуже, чем в Чикаго. В Нью-Йорке чуть-чуть получше, зато ночные провалы приходятся не на 4 утра, а на 19 часов вечера — так, словно эти скачивания пришли из другой временной зоны.
Аналогичную ситуацию с ботами мы видим в Лондоне и в канадском Торонто. Можно предположить, что в US и UK кто-то задался целью сохранить весь сайхаб, но не совладал с торрентами на либгене.
Но есть среди американских городов и совершенно «приличные». Вот, например,
Где ещё боты ведут себя так нагло? В центральном районе Токио, Chiyoda-ku, бот запускается каждые полчаса и с нескольких IP скачивает пачку статей. На графике вы можете видеть идеальную пилу.
Какие ещё бывают аномалии? Я уже упоминал ошибки геокодирования. С одной мы, вероятно, имеем дело в Китайском Динси, но тут сложно быть абсолютно уверенным. Зато в Канаде обнаружилось два крупных города с названиями Montreal и Montréal, имеющие фактически одинаковые координаты. У обоих довольно чёткие графики скачиваний… Пик скачиваний, правда, у них сдвинут часов на 9-10 друг относительно друга.
Это выглядит так, будто все пользователи какого-то далёкого города с другого континента массово ходят в сайхаб через общий VPN. Или, что более вероятно, их IP были неправильно распознаны.
Мы рассмотрели как устроен средний день года. Но неужели летом работа идёт так же как зимой? Близко, но не идентично. К сожалению для анализа самых интересных мест — за полярным кругом — недостаточно статистики. Но есть немало других интересных мест.
Для начала мы посмотрим на Россию. На тепловой карте можно заметить, что рабочий день летом начинается раньше — в утренние часы видна дуга, хотя и несильная.
Если посмотреть на этот график в недельном разрезе, эффект будет виден слабее. Зато становится понятно, что этот эффект проявляется только по выходным. В будние дни научные сотрудники расписание соблюдают, а по выходным как проснутся, так и работают.
Режим работы практически непрерывен на протяжении года, без неожиданных всплесков. Интенсивность на протяжении года меняется. Близость Нового Года в России (и многих других странах) начинает чувствоваться с начала декабря — число закачек падает раза в полтора.
Меня очень мучала загадка: почему Иран и Ирак так сильно различаются (у первого пик активности утром, у второго — вечером). Ответа на этот вопрос я так и не нашёл, но сравнить карты их активности на протяжении года оказывается довольно полезным. Оказывается, что в Ираке чёткого времени работы с сайхабом нет и мы видим вечером довольно широкое пятно. Это работает в пользу гипотезы о том, что у многих иракцев sci-hub на рабочем месте забанен, и работать с ним приходится из дома.
Ещё поучительно может быть взглянуть на ненормированный график. На нём особенно ярко видно, как качают в первые недели ноября. Руководствуясь своим невеликим опытом, я бы снова предположил, что в это время в Ираке наступает пора дедлайнов по заявкам на гранты и каждая ночь для какой-то лаборатории — «последняя».Я предупреждал, что буду отчаянно спекулировать без серьезных на то оснований. В Иране, кстати, эти же дни активны.
upd: domage объясняет, почему жизнь в Иране и Ираке устроена именно так. Я оказался очень далёк от истины.
Везде ли вечерний «пик» так безобразно размазан, как в Ираке? Совсем нет. В Китае или в Колумбии, например, видно чёткий пик, который проявляется на протяжении всего года:
Хотя Иран сильно отличается от Ирака по распорядку дня, год у них устроен похоже. Но из Ирана скачиваний намного больше, так что статистика намного чётче показывает закономерности. Третья похожая на них страна — Марокко. Смотрите!
Совершенно невозможно игнорировать июньскую аномалию. В июне в целом уменьшается интенсивность работы, но в районе восьми часов вечера (в Иране — на час позднее) активность сходит на нет — почти совсем до нуля. Зато ночью работа продолжается едва ли не до шести утра! И неудивительно, что утро после таких ночей тоже сдвигается на более позднее время.
Перевод часов, кстати, на картинке Ирана тоже виден (я переводил часовые пояса, разумеется, с учётом переводов стрелок). В Ираке время не переводится — там искать перевод времени бесполезно. В Иране часы переводятся на час вперёд с 22 марта по 21 сентября. Как можно видеть, ещё фактически две недели люди начинают работать так, будто часы не переводили, потом рабочий график подстраивается под новое расписание. Сентябрьский перевод стрелок в обратную сторону протекает гораздо более плавно: некоторые люди продолжают по приходить по биологическим часам — из-за этого оказываются на работе чуть раньше «положенного», но довольно быстро понимают, что спать можно дольше и возвращаются к типичному графику.
Внимательный читатель может обратить внимание, что при переводе часов мы должны сначала видеть скачок, затем плавное затухание. А в сентябре мы видим плавную картину не только затухания, но и самого перевода. Я предполагаю, что здесь вносит вклад агрегирование неделями: перевод часов пришёлся на середину недели, и мы видим смесь из работы по старому и новому расписаниям.
На карте Марокко, к сожалению, переводы времени не разглядеть. Да и Рамадан менее ярко выражен (работа кончается не к 6, а скорее к 4). Но возможно, что эти факты даже связаны: в Марокко часы переводятся довольно экзотическим способом — 4 раза за год. Основной часовой пояс у них — UTC. С последнего воскресенья марта до последнего воскресенья октября время переводится на час вперёд. Но на время Рамадана (вернее с 21 мая по 1 июля) часы возвращаются в UTC, что слегка компенсирует сдвиг начала работы на более позднее время.
Что удивительно, в других странах я не нашёл совсем никаких свидетельств перевода часов. Надо перестроиться на новое расписание — все тут же перестраиваются.
Если вы вернётесь к тепловой карте России, вы увидите, неслабую активность летними ночами, на некоторых неделях — равномерную активность. Сложно точно сказать, кто здесь постарался: люди или роботы. Но нередко тепловые карты (в этом разделе нам будет удобнее пользоваться ненормированными графиками) помогают очень чётко локализовать нападения ботов. Вероятно, во многих случаях наиболее безопасный и простой путь для чистового анализа — просто вырезать периоды аномальной активности целиком.
Давайте взглянем на Германию с Францией.
Во-первых, у вас есть возможность убедиться, что Рождество и там, и там отмечают. Франция работает почти весь год, но где-то за неделю до Рождества работа стихает и возобновляется лишь где-то к февралю. Во-вторых, в Германии активно пользоваться сайхабом начали с июня. Сложно уверенно сказать, проявление ли это сезонности, роста аудитории или политики немецких университетов в отношении подписки на журналы. И в-третьих, первая неделя августа говорит сама за себя.
Пик активности бездушных железяк во многих странах пришёлся на летние месяцы. Причём, некоторые боты явно работали одновременно с адресов в нескольких странах.
Но эти эпизодические нашествия гуннов на земли Германии и Франции совершенно меркнут на фоне Южной Кореи.
Что-то мне подсказывает, что как раз в эти недели Южная Корея пыталась выкачать целиком весь IEEE (если помните, она была одним из лидеров по скачиваниям инженерных статей наряду с Индией).
На Сейшельских островах ситуация ещё страньше. Как будто группа учёных приехала туда на полгода, а потом дружно уехала. Или будто бот выключался на ночь вместе с лэптопом его автора.
Напоследок приведу совсем альтернативную характеристику для временной локализации ботов. Многие боты не стремятся сохранять куки, а значит будут получать всё новые и новые user id. И летом, когда в России оживились боты, можно заметить занятную картину: среднее число уникальных пользователей растет, а число уникальных ip — падает.
Я надеюсь, что мне удалось передать хотя бы небольшую часть того удивления и восхищения многообразием мира, которую я испытал, проверяя страну за страной и придумывая всё новые способы смотреть на данные. Удивительно, сколько всего можно узнать из простого лога популярного сайта.
В заключение хочется напомнить, что опасно делать скоропалительные выводы. Когда я ещё не смотрел на тепловые карты, а лишь считал «центр масс» дня и смотрел на провал в июне, я был уверен, что в Иране работа в июне начинается пораньше, потому что погода располагает. Потом понял, что резкий провал — это не погода и сообразил про Рамадан. Но всё ещё считал, что народ просто встаёт пораньше из-за какой-нибудь утренней молитвы. О том, что смещение центра дня происходит не из-за работы рано утром, а очень поздней ночью — после нуля — я догадался сильно не сразу. И кто знает сколько ещё деталей я выпустил из виду…
Две очевидные проблемы, которые ещё только предстоит решить — фильтрация трафика от ботов и отделение эффектов сезонности от эффектов роста пользовательской базы. Возможно, что данные за 2018-й год помогут с этой задачей справиться.
Кажется, мне удалось снять сливки с этих данных, но не забывайте, что под сливками обычно остаётся не менее ценная субстанция, и в куда больших объёмах. Ведь мы даже не пытались смотреть на то, какие статьи пользователи читают. А это богатейшее поле для исследований, ведь каждый пользователь (если он человек) читает статьи в довольно узком диапазоне тем — а значит это готовый датасет для тренировки машинки, определяющей семантическую похожесть статей. Если совсем фантазировать, то это ещё и инструмент промышленного шпионажа: вы можете посмотреть, что читали ваши конкуренты… в прошлом году.
Можно смотреть, в каких областях исследователи читают классику, а где только статьи последнего года. Как соотносятся скачивания открытых и закрытых статей в журналах гибридного доступа. Как влияет наличие препринта на вероятность того, что статью пойдут скачивать на сайхаб. А в каких странах читают статьи на немецком?
Впрочем, и без анализа статей есть прорва неисследованных вопросов. Например, можно расклассифицировать IP на «дневные», «ночные» и «круглосуточные». А также на регулярно и нерегулярно используемые (в НИИ ip-адреса многих лабораторий общие, а значит каждый рабочий день кто-нибудь да использует сайхаб). После этого мы сможем изучать отдельные компоненты рабочего графика, а не смесь целиком.
Мы можем изучать, работают ли пользователи с одного ноутбука дома и на работе или у них принято использовать рабочие компьютеры. А может быть вы хотите проверить, видны ли на графиках дедлайны грантовых заявок? Или может быть вам удастся обнаружить корреляцию пика рабочего дня с географической широтой или, может, с погодой в день скачивания?
Любопытно было бы понять, что из себя представляют боты: качают они случайные статьи или целые журналы? А может некоторые пользователи с аномальной активностью — это и вовсе «телеграм-боты», которые являются шлюзом для множества реальных пользователей. Да хотя бы посмотреть на карту активности живых пользователей, очищенную от посторонней активности — уже было бы здорово.
Все данные открыты — дерзайте! Чтобы вам было проще подступиться, я прикладываю на гитхабе подготовительные скрипты, jupyter-блокнот с картинками и небольшой набор обработанных данных, достаточный для построения аналогичных графиков по всем странам (а для одномерных графиков — даже по всем городам).
Если вам хочется посмотреть, как устроена работа в вашей любимой стране, вы можете самостоятельно построить графики в plotly, в блокноте вам достаточно будет написать ровно одну строчку.
Спасибо sci-hub за возможность совершить увлекательное путешествие, и хвала открытым данным!
upd: Александра Элбакян считает оценку числа ботов в США некорректной и приводит в качестве аргумента статистику Яндекс.метрики (которую боты, предположительно, не используют). По показателям яндекс-метрики США снова возвращается с десятого места на четвёртое. Впрочем, я не вижу как это может объяснить временное распределение, которое навело меня на мысли о ботах. Вопрос трафика из США явно требует отдельного детального анализа.
Кстати, Александра несколько раз упомянула, что если ваша задача требует массированного выкачивания статей, вы можете написать ей — и вам больше не придется ломать капчи. Пользуйтесь этой опцией и не искажайте статистику. :)
![](https://habrastorage.org/getpro/habr/post_images/e40/f9d/fe9/e40f9dfe9e5a0b28d31c1b345a949c5a.jpg)
Вам когда-нибудь доводилось найти
Что-то в этом роде произошло со мной, когда я наткнулся на логи sci-hub. Вроде в интернете полно открытых данных, но чтобы заполучить журнал учёта на 195 миллионов записей — это не каждый день так везёт. Несколько недель я изучал доставшееся мне богатство, а теперь пришёл на хабр, чтобы рассказать вам, что я нарыл.
Sci-hub — крупнейший пиратский сайт для учёных. С его помощью исследователи всего мира скачивают научные статьи в обход дорогущих paywall-ов. В день через sci-hub скачивается около полумиллиона статей. Недавно Александра Элбакян — автор сайхаба — выложила логи скачиваний статей за 2017-й год. Изучая эти записи можно многое узнать о том, как работает наука, но я решил подойти с немного другой стороны и узнать, как работают учёные.
Особенность этих данных в том, что они показывают трек не просто сетевой активности, а активности рабочей. Читать научные статьи — это вам не котиков лайкать. Для нас статистика скачиваний — это возможность более-менее объективно посмотреть на то, как устроен рабочий год учёного или инженера, не полагаясь на стереотипы. Вы ведь не меньше моего хотите знать, как будет устроена ваша жизнь, когда вы эмигрируете в Китай или, скажем, Колумбию.
Сразу оговорюсь, что мой анализ не претендует ни на полноту, ни на глубину охвата. Чем больше я вертел данные, тем больше чувствовал себя в роли зоолога, который изучает не столько общие признаки разных зверюшек, сколько их отличия. Там, где я не могу уверенно объяснить результаты, я буду отчаянно спекулировать. К статье следует относиться как к рассказу про интересные находки, и про то, как я к ним пришёл. И не следует относиться как к работе исчерпывающе описывающей, как устроен мир.
Все картинки в статье спрятаны в спойлерах — это поможет статье поместиться в ваш браузер. Чтобы читать статью было интереснее, вы можете пытаться спрогнозировать результат, прежде чем открывать картинку.
Что мы знаем о мировой науке
Для начала небольшой экскурс в то, что успели сделать до меня. Началось всё со статьи журналиста Джона Боханнона в Science, который попросил Александру Элбакян выдать ему логи сайхаба. Шёл 2016-й год и общественность не понимала, кто пользуется пиратским ресурсом. Вывод Боханнона для многих был неожиданным: сайхабом пользуются и в богатых, и в бедных странах. В качестве побочного эффекта статьи был опубликован датасет с полугодовыми логами скачиваний. Попутно автор сайхаба отладила движок для геопривязки скачиваний — и в начале 2018-го года Александра опубликовала аналогичный лог, но уже за весь 2017-й год (основная часть, потерянная добавка от Эльзивера). За это время аудитория сайта стала только активнее, и вместо 200 тысяч скачиваний в день сайхаб обслуживает уже более 500 тысяч скачиваний.
После выхода статьи Боханнона появилось ещё несколько публикаций. Вот, например, он же дал комментарий, сопроводив его картой, иллюстрирующей работу сайхаба за двое суток.
Бианка Крамер заметила, что многие используют sci-hub даже при наличии легального доступа к публикации, т.к. он даёт единообразный интерфейс, работающий в один клик. Она изучила географию скачиваний в Нидерландах, в попытках разобраться, почему пользуются сайхабом: оттого что у исследователей нет доступа к публикациям или потому что это удобнее. Но однозначного ответа на этот вопрос получить не удалось.
Бастиан Цоварас также пытался оценить долю пользователей в университетах. У обоих исследователей вышло, что с университетских адресов приходит порядка 9% загрузок. Помимо этого Цоварас построил корреляции числа скачиваний по странам с различными экономическими показателями этих стран. Это показало, что в богатых странах качают даже больше. Также он сделал некоторые замечания про сезонность скачиваний (но эти заметки как раз довольно сомнительного качества).
Исследование географии пользователей по IP адресам было подвергнуто критике. Авторы заметки утверждают, что города, где много качают хорошо коррелируют с местами расположения крупных провайдеров, так как IP может разрешаться не в координаты пользователя, а в координаты провайдера. При интерпретации результатов стоит учитывать, что геокодирование IP адресов неточно. У нас будет возможность ярко пронаблюдать этот эффект на паре кейсов, но в целом геопривязка кажется сделанной прилично.
Чего мы не знаем о мировой науке
И откуда мы не знаем то, чего не знаем
Вернёмся к нашим
timestamp | doi | ip | user | country | city | lat | lng |
---|---|---|---|---|---|---|---|
2017-01-01 00:00:28 | 10.1016/j.ajodo.2004.08.024 | 46 | 48 | Egypt | N/A | 30.0527614 | 31.3641695 |
2017-02-02 21:13:37 | 10.1109/4.818917 | 1855983 | 2715037 | Singapore | Singapore | N/A | N/A |
2017-04-16 20:25:05 | 10.1016/j.jsg.2005.01.014 | 1752366 | 105597 | Poland | Warszawa | 52.2296756 | 21.0122287 |
Время в логах указано серверное; по косвенным признакам можно сказать, что сервер живёт в московской временной зоне (UTC+3, без перевода часов на летнее время). Нам это не подходит, мы ведь хотим узнать рабочий график людей, а не сервера. Даже статистика по дням недели будет некорректна без такого преобразования, ведь пока у сервера суббота, у пользователей в других странах может быть ещё пятница или уже воскресенье.
Первое, что мы сделаем — это переведём часы. Большинство стран очень удачно решили, что им хватит одной временной зоны — с ними всё легко. Для большой части оставшихся загрузок мы знаем либо название города (город всё-таки живёт в одной конкретной временной зоне), либо координаты — их тоже легко соотнести с временной зоной. Приблизительно для 2% записей точно выявить временную зону не удалось — их мы отбросим. Нам хватит и оставшихся 190 миллионов записей.
Интересно, что такие неопознанные записи очень неравномерно распределены по году. Например, в середине года было очень много записей из неизвестного места в США, в начале и в конце года — в десятки раз меньше. Ошибка ли это геокодера или особенности работы какого-то бота/провайдера — неясно.
В процессе конвертации времени выяснилась пара неочевидных моментов. В нескольких странах (например, в Германии) формально есть две временные зоны, но на 2017-й год они совпадают. Ещё интересный факт: два года назад география сайхаба охватывала все континенты, кроме Антарктики, но за последний год это упущение было исправлено, что выразилось в появлении загадочной временной зоны None. Сайхабят оттуда в основном довольно печальные вещи, но бывают у тамошних обитателей и довольно неожиданные интересы, как вот эта статья про развитие винного туризма в Испании. Позднее этот пользователь ничего не искал, но надеюсь, у него всё хорошо.
Где живут инженеры
Главное правило дата-журналистики, как я его понимаю: «Видишь координаты — делай карту». Увы, как я писал, карту скачиваний уже сделали до меня. Но это было давно, так что, как говорится, можем повторить. К сожалению, нам потребуется сразу две карты-хороплета:
число скачиваний по странам![](https://habrastorage.org/r/w1560/getpro/habr/post_images/aaa/d95/5c5/aaad955c5d7d800cd5d9c20ce87acb9f.png)
![](https://habrastorage.org/getpro/habr/post_images/aaa/d95/5c5/aaad955c5d7d800cd5d9c20ce87acb9f.png)
и
десятичный логарифм числа скачиваний.![](https://habrastorage.org/r/w1560/getpro/habr/post_images/4cc/2de/3d5/4cc2de3d579c06f99872757194d7939f.png)
![](https://habrastorage.org/getpro/habr/post_images/4cc/2de/3d5/4cc2de3d579c06f99872757194d7939f.png)
Иначе мы не увидим разницу либо в области малых значений (ЮАР с его 400 тысячами скачиваний будет неотличим от Намибии с 6 тысячами), либо в области высоких значений (не сможем отличить Китай от России).
Дополнительно приведу здесь карту
числа скачиваний на душу населения (в логарифмической шкале)![](https://habrastorage.org/r/w1560/getpro/habr/post_images/228/ac9/a97/228ac9a97953e1c44aa35c6be684c3a3.png)
![](https://habrastorage.org/getpro/habr/post_images/228/ac9/a97/228ac9a97953e1c44aa35c6be684c3a3.png)
Здесь мне пришлось выкинуть страны, с очень маленьким населением и очень низким числом скачиваний — чтобы они не перекашивали цветовую шкалу. В лидеры ожидаемо выбиваются Сингапур, Гонконг и довольно неожиданно Португалия, Тунис и Нидерланды.
Теперь изучим научную активность чуть более детально — по областям знаний. Префикс doi-идентификатора кодирует издателя, однако большая часть мировой научной периодики контролируется всего несколькими очень многопрофильными издателями: Elseiver, Springer-Nature, Wiley. Однако есть пара очень крупных издателей «узко специализированной» тематики: IEEE для инженеров-электронщиков и American Chemical Society плюс The Royal Society of Chemistry — для химиков. С химиками всё получается не очень интересно, а инженеры-электронщики распределены сильно неравномерно.
Угадаете, где они живут?
Абсолютным лидером по скачиваниям статей IEEE будет Индия. Хотя в целом у неё в два раза меньше закачек, чем в Китае, конкретно статей IEEE они выкачивают аж в три раза больше в абсолютном выражении, чем Китай! В среднем на журналы IEEE приходится 6.5% скачиваний от общего числа, но в Индии, Южной Корее, Бангладеше и Сингапуре эта доля достигает аж 15-20%. Больше только на Сейшеллах (но где те Сейшеллы) и странах, где сайхабом почти не пользуются (там пяток активных пользователей способны сместить статистику).
Может, китайцы уже выкачали всю IEEE, а индусы только в процессе? Или Индия запустила свою «лунную программу»? Надеюсь, что в комментарии придёт кто-нибудь и расскажет, чего мы не знаем об Индии и Китае, что могло бы объяснить такой странный перекос.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e94/416/c93/e94416c93eef8a4095f3bbc00dd02741.png)
Может, китайцы уже выкачали всю IEEE, а индусы только в процессе? Или Индия запустила свою «лунную программу»? Надеюсь, что в комментарии придёт кто-нибудь и расскажет, чего мы не знаем об Индии и Китае, что могло бы объяснить такой странный перекос.
![](https://habrastorage.org/getpro/habr/post_images/e94/416/c93/e94416c93eef8a4095f3bbc00dd02741.png)
Откровенно говоря, исходно я рассчитывал проверить не IEEE, а Elsevier, в надежде на то, что увижу всплеск скачиваний в Германии, где 60 университетов отказались от подписки на журналы гиганта издательского бизнеса. Но карты демонстрируют совершенно иную картину: доля Эльзивера в среднем 30%, в Германии на пару процентов меньше. А лидеры — Марокко, Алжир, Боливия, Тунис и Перу — аж 50% статей
качают с Эльзивера.![](https://habrastorage.org/r/w1560/getpro/habr/post_images/73a/4df/7f4/73a4df7f409bcf48190691903869dc86.png)
![](https://habrastorage.org/getpro/habr/post_images/73a/4df/7f4/73a4df7f409bcf48190691903869dc86.png)
Позднее я прочитал, что Elsevier восстановил университетам доступ, несмотря на отсутствие соглашения. Чтобы проанализировать эффект, я посмотрел, на первые 40 дней года, когда длился бан, но картина практически не изменилась.
Ещё одним интересным открытием для меня была серьезная популярность (несколько процентов всех скачиваний) статей с префиксом
10.1111/
, принадлежащим довольно экзотическому издателю: The Korean Society of Plant Taxonomists. Как думаете, почему? Разгадка
Оказалось, что doi-префикс не совсем однозначно кодирует издателя. Хотя зона
10.1111/
раньше и принадлежала корейским ботаникам, сейчас она перешла под контроль Wiley.«Восемьдесят три процента всех дней в году начинаются одинаково: звенит будильник».
Как я упоминал, попытка изучить временной профиль использования сайхаба уже предпринималась, но… сделано это было для галочки: рассматривались только две страны, с низким разрешением и некорректной аттрибуцией дня недели. А главное и наиболее возмутительное — это интерпретация в духе «видите, рабочие часы совпадают — значит графики похожи». Хотя графики Германии и Гонконга действительно похожи, у них есть и довольно серьезное отличие. А профили использования сайхаба на протяжении дня во многих других странах отличаются разительно!
Мы скоро будем строить свои, правильные графики, но прежде я расскажу вам, как они устроены и почему именно так. Если вы хотите побыстрее перейти к картиночкам, можете пропустить следующие два раздела.
Тактика наезда-отката
Чтобы изучить, как работают пользователи в разных странах, мы будем строить графики числа скачиваний за определенный временной промежуток. Данных достаточно много, но нам всё же придётся балансировать между детализацией и чёткостью картины — ведь для того чтобы что-то увидеть, статистика должна стабилизироваться. Изначально я строил график числа скачиваний в каждый час дня, просуммированный по всем дням года. Уже из таких графиков стало понятно, что история вырисовывается крайне интересная. Если увеличить разрешение до 10 минут становится видно больше деталей, а шум всё ещё на приемлемом уровне. Оставляем!
Параллельно я построил графики числа скачиваний по дням недели, но они получались не слишком внятные (и некрасивые: всего семь точек). Однако если скрестить эти графики и считать скачивания в полдень понедельника и в полдень воскресенья по отдельности, картина выглядит более чем занятно. Становится видно, как будни плавно перетекают в выходные, а выходные — в будни. Таким образом мы представляем как выглядит усредненный день года и усредненная неделя года.
Чтобы графики были сравнимы между разными городами и странами, они отнормированы на максимум.
Почему именно так
Нормировать на суммарное число скачиваний не очень удобно: тогда понижение доли скачиваний в одном месте приведёт к росту доли в другом. При такой нормировке в стране с ярко выраженным выходным будет возникать иллюзия, что в будни там работают гораздо более напряженно, чем в других странах.
Надо понимать, что мы не можем корректно сравнить абсолютный уровень работы двух стран между собой, и сравниваем лишь относительный уровень работы внутри одной страны в разное время суток. Нормировка на максимум отлично решает эту задачу.
Надо понимать, что мы не можем корректно сравнить абсолютный уровень работы двух стран между собой, и сравниваем лишь относительный уровень работы внутри одной страны в разное время суток. Нормировка на максимум отлично решает эту задачу.
Параллельно я пытался изучить, как устроен не день, а год. Например, строил график числа скачиваний в каждый из 365 дней года. Он получался уж совсем никакой. Во-первых, шумный, но это можно решить медианным сглаживанием с окном в неделю. А во-вторых, его было очень тяжело интерпретировать, и это исправить уже сложнее.
Ещё я ввёл такую характеристику как «центр масс дня» — это усреднение времени, когда произошло скачивание (альтернативный подход — медианный момент скачивания). Идея была в том, чтобы вычислить одну характеристику, по которой можно было бы узнать, насколько рано начинается и заканчивается рабочий день в разные времена года. Однако оказалось, что я не умею описать этот график в одно предложение — верный признак того, что его никто не поймёт. Сложность описания и интерпретации побудила меня искать другие способы визуализации.
Оказалось, что достаточно снова скрестить графики и построить тепловую карту. По одной оси будут сменяться недели года, а по другой отложено время относительно начала. Например, мы можем откладывать каждый час года как одну точку. Чтобы сделать картинку более чёткой можно ещё просуммировать все дни в пределах одной недели.
На такой карте тоже видны закономерности недельного графика, хотя читать их всё-таки проще по «одномерному» графику средней недели (а сравнивать — и подавно). Гораздо важнее, что на тепловой карте становятся видны артефакты — получается взглянуть на различия между днями и неделями года.
Нам придётся время от времени делать zoom in/zoom out, чтобы разглядывать общую картину издалека и проводить сравнение между странами, а частности объяснять, спустившись к максимально возможному уровню детализации.
Мы можем смотреть на тепловые карты с разными целями: когда мы смотрим на активность работы в различные периоды года, нам логичнее изучать абсолютные значения скачивания. А если мы смотрим на то, как с течением года меняется расписание дня, удобнее смотреть на значения нормированные. В частности, отлично работает нормирование числа скачиваний в клеточке тепловой карты на суммарное число скачиваний за неделю.
В то же время терять информацию об абсолютном числе скачиваний за неделю не хочется. Без этого мы, например, можем не понять, в какие недели были серьезные перебои в работе сервера. Кроме того, хотелось бы понимать, когда учёные напряженно работают, а когда массово уходят на каникулы.
Чтобы взять лучшее из двух подходов, я рисовал в основном нормированные тепловые карты, а по краям — гистограммы, агрегированные по времени суток (или времени недели) и по неделям.
С тепловыми картами меня ждала ещё одна сложность: детали не были видны либо в зоне слабой интенсивности, либо в зоне активной работы. Когда мы строили карты-хороплеты, пришлось строить сразу две карты: в обычной и логарифмической шкалах. Но тепловых карт и так будет много, удваивать их число показалось мне плохой идеей. К счастью, оказалось, что при помощи однородно-воспринимаемой цветовой палитры можно решить проблему. С географическими картами, впрочем, этот фокус не прокатил.
При перенормировании тепловой карты на недельное число скачиваний очень ярко проявляется проблема выбросов. Когда за неделю (как правило, из-за сбоя) было скачано очень мало статей, то доля, приходящаяся на конкретный интервал становится очень велика. Я отсекаю такие выбросы (только выбросы вверх) по учетверенной медиане — получается хорошо.
Верить нельзя никому. Мне — можно
Наконец, последняя пара замечаний, прежде чем перейти к картинкам — про то, насколько этим картинкам стоит верить. Когда мы суммируем события в совпадающих временных интервалах, нам требуется брать множество интервалов на протяжении года. Но число интервалов, относящихся к разным дням недели и даже разным временам суток будет не вполне сбалансированным.
Почему? И почему это можно игнорировать?
Дело в том, что в логах отсутствует приблизительно месяц наблюдений (хотя работа сервиса в это время продолжалась), разбитый на два-три крупных интервала: 21-29 апреля, 7-29 октября, плюс одиночные сбои и блокировки сайхаба в отдельных странах. На тепловых картах в такие дни вы увидите полосы с нулевым либо пониженным (если мы агрегируем скачивания по неделе, из которой выпало лишь несколько дней) уровнем скачиваний.
Давайте оценим периоды «доступности» сервера (имеется ввиду исключительно представленность периода в логах), чтобы оценить масштаб ошибки. Разобьем каждую неделю на 10-минутные интервалы вида «пятница, 13:40-13:50» и оценим на каждом таком интервале доступность сервера так: число таких интервалов в году, для которых в логах есть записи, деленное на общее число таких интервалов. Получается, что доступность сервера колеблется от 86% до 92%, т.е. разница около 6.5%. На конец пятницы-субботу (в UTC) выпало немного больше сбоев, чем на другие дни. Можете в уме на 5-10% процентов увеличивать число скачиваний в субботу и её окрестности, но общую картину это практически не изменит.
В этой цифре не учтены локальные блокировки. Я отдельно посчитал, что выходит в России (где sci-hub был заблокирован с 6 по 9 сентября) — ошибка увеличивается до 9.5%. Что ещё мы не учли? Вероятно, что праздничные дни неравномерно распределены по неделе и часто переносятся поближе к выходным. Теоретически это могло немного исказить картину средней пятницы.
Кроме того, стоит помнить, что сервер живёт по серверному времени, а по местному времени его сбои приходятся на разные интервалы недели. Из-за этого, например, пока в одном городе идёт первая неделя года, в другом городе продолжается последняя. Статистике первой и последней недель года я бы особо не доверял (тем более, что первая неделя года была неполной).
Давайте оценим периоды «доступности» сервера (имеется ввиду исключительно представленность периода в логах), чтобы оценить масштаб ошибки. Разобьем каждую неделю на 10-минутные интервалы вида «пятница, 13:40-13:50» и оценим на каждом таком интервале доступность сервера так: число таких интервалов в году, для которых в логах есть записи, деленное на общее число таких интервалов. Получается, что доступность сервера колеблется от 86% до 92%, т.е. разница около 6.5%. На конец пятницы-субботу (в UTC) выпало немного больше сбоев, чем на другие дни. Можете в уме на 5-10% процентов увеличивать число скачиваний в субботу и её окрестности, но общую картину это практически не изменит.
В этой цифре не учтены локальные блокировки. Я отдельно посчитал, что выходит в России (где sci-hub был заблокирован с 6 по 9 сентября) — ошибка увеличивается до 9.5%. Что ещё мы не учли? Вероятно, что праздничные дни неравномерно распределены по неделе и часто переносятся поближе к выходным. Теоретически это могло немного исказить картину средней пятницы.
Кроме того, стоит помнить, что сервер живёт по серверному времени, а по местному времени его сбои приходятся на разные интервалы недели. Из-за этого, например, пока в одном городе идёт первая неделя года, в другом городе продолжается последняя. Статистике первой и последней недель года я бы особо не доверял (тем более, что первая неделя года была неполной).
Непостоянную доступность игнорировать можно, с этим разобрались. А вот ботов игнорировать не получится. Я не взялся честно очистить данные от ботов, эта задача ещё ждёт своего исследователя. Просто учитывайте, что где-то в фоновом режиме они работают. Когда боты приходят, не заметить их невозможно.
Можно предположить, что самые активные боты никогда не спят и работают с более-менее постоянной интенсивностью, а реальные люди по ночам всё-таки нуждаются в отдыхе. Тогда мы можем просто вычесть фоновый уровень активности. Как вы увидите, это позволяет получить более-менее правдоподобные оценки активности.
Что в анализе не учтено? Во-первых, есть города, которые геокодер преобразует в разные названия.
Не очень существенно
Например, Saint Petersburg и Sankt-Peterburg. Или Токио (и частично Париж), которые распались на множество муниципалитетов. Со странами такое тоже бывает, но редко. Я нашёл лишь пару случаев, из которых важен один — Czechia и Czech Republic. Одно название преобладает, но разница не на порядки. Это, безусловно, несколько искажает картину (и могло вызвать проблему при построении хороплетов, которым приходится решать, какую из цифр визуализировать). Ошибку с названиями странами, конечно, легко было бы исправить, но я заметил её только после работы вычислительно-ёмких шагов, которые переделывать ради не очень существенных поправок не хотелось.
Во-вторых, и это важно, мы не можем отделить сезонность работы от эффектов роста аудитории сервиса. В частности, было бы наивно предполагать, что рост аудитории происходит с постоянной скоростью. Или что он одинаков в разных странах. Буду рад, если кто-нибудь в комментариях опишет, как эти эффекты лучше разделить, или даже возьмётся это посчитать.
«Трудовое законодательство нарушалось злостно и повсеместно»
Наше мудрое расписание
Ок, давайте наконец посмотрим, как же распределены рабочие часы в разных странах. Для начала мы, конечно, посмотрим на дефолт-сити, город-герой Москву с её 2.4 миллионами скачиваний. Мы будем смотреть рабочий график сразу на всю неделю.
Угадали, как он выглядит?![](https://habrastorage.org/r/w1560/getpro/habr/post_images/52a/9ac/601/52a9ac601e3fe4052e7ec9278566cbb0.png)
На графике видно, что учёные стараются жить по обычному расписанию: часов в 8-9 приходят на работу, часов в 17-18 уходят. Правда, многие продолжают работать до глубокой ночи. Часа в 2-3 ночи город засыпаети просыпается мафия. Если посмотреть на активность по дням недели, становится видно, что в субботу читатели научных журналов скорее отдыхают, а в воскресенье уже потихоньку возвращаются к работе.
![](https://habrastorage.org/getpro/habr/post_images/52a/9ac/601/52a9ac601e3fe4052e7ec9278566cbb0.png)
На графике видно, что учёные стараются жить по обычному расписанию: часов в 8-9 приходят на работу, часов в 17-18 уходят. Правда, многие продолжают работать до глубокой ночи. Часа в 2-3 ночи город засыпает
Стоит отметить, что вся Россия живёт примерно так же. Разве что в Новосибирске и Казани (в отличие от Москвы и Питера) исследователи стараются по ночам спать, и большую часть рабочей активности концентрируют днём.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/09c/368/a80/09c368a807971786b0068dd8a1b097a6.png)
![](https://habrastorage.org/getpro/habr/post_images/09c/368/a80/09c368a807971786b0068dd8a1b097a6.png)
Вы должны были заметить, что Москва никогда не спит — и активность даже в субботнюю ночь всего лишь в 10 раз отличается от активности в самое загруженное время — около 14-15 часов вторника. Боты в Москве явно более активны, чем в Новосибирске. Давайте вычтем из обоих графиков фоновый уровень.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/c2d/7a1/a09/c2d7a1a09f8da1add7fe469ce4487cc1.png)
![](https://habrastorage.org/getpro/habr/post_images/c2d/7a1/a09/c2d7a1a09f8da1add7fe469ce4487cc1.png)
Что мы видим? Во-первых, в Москве учёные, действительно, чаще предпочитают отложить работу на более позднее время и намного больше работают по выходным. Во-вторых, складывается впечатление, что в Москве есть не только круглосуточные боты, но и те, которые отдыхают по выходным (хоть и работают ночами). Впрочем, это могут быть и реальные люди.
Во многих странах ещё можно видеть небольшой горбик в вечернее время — около 21-22 часов. Это родители открывают сайхаб, чтобы почитать детям на ночь научно-фантастические сказки. Возможно и другое альтернативное объяснение: учёный приходит домой, открывает браузер, и у него по-новой загружаются закрытые ранее статьи.
Это я, кстати, почти серьезно говорю. В логах видно, как некоторые пользователи одновременно открывают пару статей, которые уже читали раньше. Это явно артефакт от перезагрузки браузера. Не факт, что исследователь решил прямо сейчас поработать (прочесть статью), но загрузка произошла.
Ещё одна гипотеза — что этот горбик появляется из-за дедлайнов. Ведь к полуночи (иногда — к полуночи по Гринвичу или Нью-Йорку) вам непременно надо завершить работу над списком литературы в ваших конференционных тезисах. Эту гипотезу, кстати, можно проверить, сравнивая время этого холмика в разных временных зонах.
Их безумное расписание
Мы выяснили, что вся Россия живёт примерно одинаково, а кто живёт не так? Это удивительно, но… все.
Давайте сравним Россию, например, с Францией. Видите, что поменялось?
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/a3a/0f5/159/a3a0f5159f3d9a055f3003ad60703370.png)
![](https://habrastorage.org/getpro/habr/post_images/a3a/0f5/159/a3a0f5159f3d9a055f3003ad60703370.png)
Спать в Европе ложатся раньше, но и на работу выходят более организованно. Но самое интересное, что появился глубокий провал в середине дня. Можно предполжить, что французы более-менее синхронно ходят на обеденный перерыв в промежутке с 12 до 14 (на выходных эффект чуть слабее, но тоже заметен).
Если посмотреть на Париж, то там провал заметно менее выражен, чем по всей Франции в целом. Германия занимает промежуточное положение между Россией и Францией, «обеденный» провал там есть, но сильно менее глубокий, чем во Франции.
Наверное самый любимый для меня пример — это Китай. Во-первых, там очень много пользователей, поэтому статистика получается очень гладкой. Во-вторых, разные города почти совсем не отличаются, удивительная согласованность для довольно большой страны. Ну и, конечно, Китай совсем не похож на Россию. Я буду рисовать сразу много городов на одном графике, так что нам больше подойдёт масштаб одного дня, тем более что выходные отличаются от будних дней в Китае лишь количественно.
День жизни китайского города![](https://habrastorage.org/r/w1560/getpro/habr/post_images/239/786/57c/23978657c5c84e10310af3628a15e860.png)
![](https://habrastorage.org/getpro/habr/post_images/239/786/57c/23978657c5c84e10310af3628a15e860.png)
В Китае перерывов два. В районе половины первого и половины седьмого. А рабочие пики в 11, 16 и 22. Перерывы очень широкие. Это можно было бы объяснить тем, что все идут обедать в разное время, но! Можно заметить, что начинается перерыв довольно резко — сравните, например со Францией. То есть начинается обед почти одновременно, а вот заканчивается он у всех за разное время.
Китай, Гонконг, Франция и Германия (с поправкой на фоновый уровень)![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e94/c49/5fb/e94c495fb9b8bcbb713ca8bb2a5bc247.png)
![](https://habrastorage.org/getpro/habr/post_images/e94/c49/5fb/e94c495fb9b8bcbb713ca8bb2a5bc247.png)
Если почитать про распорядок дня в Китае, можно узнать про традицию послеобеденного сна; похоже, что это не байка. Откуда берётся вечерний пик (которого, кстати, нет в Гонконге) наверняка кто-нибудь расскажет в комментариях.
upd: По словам lockywolf во многих китайских компаниях полагается ужин, поэтому люди работают до 20. И перерывов в итоге два: обеденный и ужинный.
По дням недели большинство городов Китая тоже очень похожи, но есть загадочный город Динси, в котором картина существенно отличается. Работа там смещена на вечер, а выходные не так заметны. Тот факт, что относительно небольшой и ничем не примечательный городок Динси попал на третье место в список самых активных городов Китая, скорее всего свидетельствует о том, что геокодер ошибается. Возможно, там располагается одна из точек фильтрации трафика. Или просто координаты определились некорректно.
Китай и Динси![](https://habrastorage.org/r/w1560/getpro/habr/post_images/325/e79/ac7/325e79ac714b8f9984d6d480968a08f8.png)
![](https://habrastorage.org/getpro/habr/post_images/325/e79/ac7/325e79ac714b8f9984d6d480968a08f8.png)
upd: Как подсказывает lockywolf, в Динси находится географический центр Китая. И возможно, что Китай — не единственная страна, которая скидывает в центр неопознанные IP.
Думаю, вы неплохо справлялись с угадыванием того, как выглядят графики в Европе. А теперь… попробуйте угадать, как выглядит график скачиваний в Колумбии (или в Бразилии с Мексикой — там довольно похожая ситуация).
Я сам не справился![](https://habrastorage.org/r/w1560/getpro/habr/post_images/b3c/30d/c31/b3c30dc31feab27a7b85d6f7ab1420fe.png)
![](https://habrastorage.org/getpro/habr/post_images/b3c/30d/c31/b3c30dc31feab27a7b85d6f7ab1420fe.png)
Чтобы был сильнее виден контраст, я нарисовал рядом Колумбию и Россию. Ночь и начало рабочего дня выглядит «как положено», а к вечеру происходит что-то необычное.
То ли учёные предпочитают работать, когда станет прохладней. То ли на работе сайхаб у многих заблокирован/не требуется, и приходится обращаться к нему из дома. А может быть у них просто принято днём работать руками, а читать по вечерам. Но факт остаётся фактом, пик скачиваний приходится вовсе не на рабочие часы, а на поздний вечер.
Заметьте ещё, что так происходит не всегда, а только с понедельника по четверг. Вечер пятницы научные сотрудники, вероятно, предпочитают проводить не перед монитором, а в каком-нибудь баре.
Понедельник начинается в субботу
При взгляде на Колумбию складывается впечатление, что основные выходные там в пятницу и субботу, а воскресенье — нормальный рабочий день. В этот момент самое время сообразить, что в некоторых странах неделя начинается не с понедельника, и пойти читать википедию про устройство рабочей недели в разных странах. Про Колумбию википедия говорит, что рабочая неделя там такая же как у нас, т.е. продолжается с понедельника по пятницу или субботу… Но жизнь, видимо, устроена не совсем так, как принято официально. Предваряя вопросы хочу вас заверить, что, это не ошибка определения дня недели в западном полушарии: в близлежащих США и Кубе рабочая неделя определяется, как и должна, с понедельника по пятницу.
Давайте посмотрим на ещё один график со сдвинутой неделей — Израиль. Как известно, рабочая неделя у них с воскресенья по четверг, а вечером пятницы начинается шаббат. И тут никаких сюрпризов, всё так и происходит.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/d7d/4e6/9b3/d7d4e69b3622e17c44a6f29221d47c16.png)
![](https://habrastorage.org/getpro/habr/post_images/d7d/4e6/9b3/d7d4e69b3622e17c44a6f29221d47c16.png)
Какими ещё бывают выходные? Заметно отличаются от других стран Индия и, особенно, Куба. В большинстве стран в воскресенье учёные начинают возвращаться к работе. В Индии и на Кубе наоборот: воскресенье — полноценный выходной с очень сильным провалом даже относительно субботы.
Судя по тому, как резко кончается рабочий день на Кубе, дело не столько в лени или в национальных традициях, а в том, что на Кубе просто нет возможностей работать из дома. В Индии картина выглядит иначе — смотрите сами. Я построил два графика отдельно:
Куба с Россией![](https://habrastorage.org/r/w1560/getpro/habr/post_images/18c/4d7/d36/18c4d7d3694d74836d1e0d6a95dabe43.png)
![](https://habrastorage.org/getpro/habr/post_images/18c/4d7/d36/18c4d7d3694d74836d1e0d6a95dabe43.png)
Индия с Россией![](https://habrastorage.org/r/w1560/getpro/habr/post_images/995/e60/b06/995e60b0627c91f49fab6177e6dffd26.png)
![](https://habrastorage.org/getpro/habr/post_images/995/e60/b06/995e60b0627c91f49fab6177e6dffd26.png)
В стране обычно есть общие тренды, которые распространяются на все города. Но бывает и так, что город имеют свою специфику. Калькутте, например, несвойственна присущая Индии воскресная расслабленность.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/500/5fb/6c8/5005fb6c8184a363a8cfbc67208b03c1.png)
![](https://habrastorage.org/getpro/habr/post_images/500/5fb/6c8/5005fb6c8184a363a8cfbc67208b03c1.png)
Что удивительно, во многих странах Африки и Ближнего Востока (Иран, Ирак, Алжир, Египет) нет существенной разницы между днями недели. В Иране понедельник таки начинается в субботу. В выходные для них четверг-пятницу работают, действительно, чуть меньше, но разница между самым загруженным и самым расслабленным днями недели составляет всего 10-20%.
Впрочем, отсюда не следует, что эти страны похожи между собой. Казалось бы, Иран и Ирак должны быть похожи: две рядом расположенные мусульманские страны, и даже названия похожи, но — нет. У одних пик работы утром, у других — вечером.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/99f/255/157/99f25515780c59f72fcae761ad915051.png)
![](https://habrastorage.org/getpro/habr/post_images/99f/255/157/99f25515780c59f72fcae761ad915051.png)
Мы ещё вернёмся к этой загадке, вооружившись тепловыми картами, но сейчас поговорим о другом.
Мор, глад, нашествие ботов и другие напасти
Вы, должно быть заметили, что я обошёл стороной США, хотя они — один из крупнейших пользователей сайхаба. Так вот, у этого есть веские причины. Дело в том, что большую часть трафика в США создают боты. Как я говорил, это невозможно перепутать.
США-Россия![](https://habrastorage.org/r/w1560/getpro/habr/post_images/c00/b84/64e/c00b8464e20919860da0fa20dc3eb4d6.png)
![](https://habrastorage.org/getpro/habr/post_images/c00/b84/64e/c00b8464e20919860da0fa20dc3eb4d6.png)
Трафик ночью отличается от трафика в самое нагруженное время лишь в два раза. Если мы предположим, что боты добывают статьи с постоянной скоростью, а ночью уровень скачиваний от реальных людей пренебрежимо мал, то мы можем грубо оценить, что чуть больше 70% трафика создаётся ботами. Для сравнения, в России этот показатель около 15% (для Москвы — 20%). На этом месте можно злорадно заметить, что после вычитания 70% скачиваний США со свистом вылетает из тройки лидеров пиратства (сразу на 10-е место), уступая своё место Ирану с Бразилией.
Построим недельный график без этого фонового уровня. На нём видно, что общие закономерности просматриваются. Ночью затишье. Резкий рост активности наблюдается с началом рабочего дня и вечером в районе 22 часов. В субботу работа затихает. Всё как положено.
Россия и США, поправленные на фон![](https://habrastorage.org/r/w1560/getpro/habr/post_images/d98/7d7/8b2/d987d78b25ccabadedcad29b67965350.png)
![](https://habrastorage.org/getpro/habr/post_images/d98/7d7/8b2/d987d78b25ccabadedcad29b67965350.png)
Говорят, что в мегаполисах люди никогда не спят, но посмотрите на разницу между
Москвой и Чикаго!![](https://habrastorage.org/r/w1560/getpro/habr/post_images/f65/4c6/adf/f654c6adfa555747e50eb493c6d61b22.png)
![](https://habrastorage.org/getpro/habr/post_images/f65/4c6/adf/f654c6adfa555747e50eb493c6d61b22.png)
В Лос-Анджелесе ситуация даже хуже, чем в Чикаго. В Нью-Йорке чуть-чуть получше, зато ночные провалы приходятся не на 4 утра, а на 19 часов вечера — так, словно эти скачивания пришли из другой временной зоны.
Аналогичную ситуацию с ботами мы видим в Лондоне и в канадском Торонто. Можно предположить, что в US и UK кто-то задался целью сохранить весь сайхаб, но не совладал с торрентами на либгене.
Но есть среди американских городов и совершенно «приличные». Вот, например,
Бостон против Москвы.![](https://habrastorage.org/r/w1560/getpro/habr/post_images/bd7/22b/da5/bd722bda5fcbc16aa3b795bf6c1adb44.png)
![](https://habrastorage.org/getpro/habr/post_images/bd7/22b/da5/bd722bda5fcbc16aa3b795bf6c1adb44.png)
Где ещё боты ведут себя так нагло? В центральном районе Токио, Chiyoda-ku, бот запускается каждые полчаса и с нескольких IP скачивает пачку статей. На графике вы можете видеть идеальную пилу.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/b29/3ea/346/b293ea346f7866852a707f7bd416d203.png)
![](https://habrastorage.org/getpro/habr/post_images/b29/3ea/346/b293ea346f7866852a707f7bd416d203.png)
Какие ещё бывают аномалии? Я уже упоминал ошибки геокодирования. С одной мы, вероятно, имеем дело в Китайском Динси, но тут сложно быть абсолютно уверенным. Зато в Канаде обнаружилось два крупных города с названиями Montreal и Montréal, имеющие фактически одинаковые координаты. У обоих довольно чёткие графики скачиваний… Пик скачиваний, правда, у них сдвинут часов на 9-10 друг относительно друга.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/08e/b65/7d7/08eb657d72376474f502e82a8a91aa43.png)
![](https://habrastorage.org/getpro/habr/post_images/08e/b65/7d7/08eb657d72376474f502e82a8a91aa43.png)
Это выглядит так, будто все пользователи какого-то далёкого города с другого континента массово ходят в сайхаб через общий VPN. Или, что более вероятно, их IP были неправильно распознаны.
Zoom in: изучаем сезонность
Мы рассмотрели как устроен средний день года. Но неужели летом работа идёт так же как зимой? Близко, но не идентично. К сожалению для анализа самых интересных мест — за полярным кругом — недостаточно статистики. Но есть немало других интересных мест.
Для начала мы посмотрим на Россию. На тепловой карте можно заметить, что рабочий день летом начинается раньше — в утренние часы видна дуга, хотя и несильная.
Россия![](https://habrastorage.org/r/w1560/getpro/habr/post_images/614/a22/dc6/614a22dc6da66e2708108e2329dafb1b.png)
![](https://habrastorage.org/getpro/habr/post_images/614/a22/dc6/614a22dc6da66e2708108e2329dafb1b.png)
Если посмотреть на этот график в недельном разрезе, эффект будет виден слабее. Зато становится понятно, что этот эффект проявляется только по выходным. В будние дни научные сотрудники расписание соблюдают, а по выходным как проснутся, так и работают.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/15b/2b6/165/15b2b61650d010eef5d07aa6a68e0101.png)
![](https://habrastorage.org/getpro/habr/post_images/15b/2b6/165/15b2b61650d010eef5d07aa6a68e0101.png)
Режим работы практически непрерывен на протяжении года, без неожиданных всплесков. Интенсивность на протяжении года меняется. Близость Нового Года в России (и многих других странах) начинает чувствоваться с начала декабря — число закачек падает раза в полтора.
Меня очень мучала загадка: почему Иран и Ирак так сильно различаются (у первого пик активности утром, у второго — вечером). Ответа на этот вопрос я так и не нашёл, но сравнить карты их активности на протяжении года оказывается довольно полезным. Оказывается, что в Ираке чёткого времени работы с сайхабом нет и мы видим вечером довольно широкое пятно. Это работает в пользу гипотезы о том, что у многих иракцев sci-hub на рабочем месте забанен, и работать с ним приходится из дома.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/07c/53f/6fc/07c53f6fcea7d0c040b49a31f266a88a.png)
![](https://habrastorage.org/getpro/habr/post_images/07c/53f/6fc/07c53f6fcea7d0c040b49a31f266a88a.png)
Ещё поучительно может быть взглянуть на ненормированный график. На нём особенно ярко видно, как качают в первые недели ноября. Руководствуясь своим невеликим опытом, я бы снова предположил, что в это время в Ираке наступает пора дедлайнов по заявкам на гранты и каждая ночь для какой-то лаборатории — «последняя».
Ненормированный Ирак.![](https://habrastorage.org/r/w1560/getpro/habr/post_images/299/6c5/eef/2996c5eef1c579c7f8deefba81309617.png)
![](https://habrastorage.org/getpro/habr/post_images/299/6c5/eef/2996c5eef1c579c7f8deefba81309617.png)
upd: domage объясняет, почему жизнь в Иране и Ираке устроена именно так. Я оказался очень далёк от истины.
Объяснение
По поводу Ирака и Ирана. Показал статью своему аспиранту из Ирака. Он объяснил специфику в паттернах поведения следующим:
1) В Ираке у ученых практически нет интернета на работе, они все ищут статьи из дома. В Иране — наоборот — интернет у многих только на работе.
2) «Ночная жизнь» в Рамадан: действительно, у них два приема пищи. Один — сразу после захода солнца около 8 часов вечера, и второй — в 3-4 часа ночи. Мы можем видеть эту картинку по перераспределению рабочего времени в июне. Между приемами пищи многие садятся за работу.
3) Пик в ноябре в Ираке — это не дедлайны по грантам (там вообще нет никаких грантов). Это время, когда дома можно наконец-то нормально поработать + конец года играет свою роль. Температура за окном нормальная (не требуется включать обогреватель или кондиционер), это означает что не будет перебоев с электричеством. Поэтому все пытаются в это время сделать как можно больше. Можно заметить пик-антагонист в марте, когда устанавливается похожая погода.
1) В Ираке у ученых практически нет интернета на работе, они все ищут статьи из дома. В Иране — наоборот — интернет у многих только на работе.
2) «Ночная жизнь» в Рамадан: действительно, у них два приема пищи. Один — сразу после захода солнца около 8 часов вечера, и второй — в 3-4 часа ночи. Мы можем видеть эту картинку по перераспределению рабочего времени в июне. Между приемами пищи многие садятся за работу.
3) Пик в ноябре в Ираке — это не дедлайны по грантам (там вообще нет никаких грантов). Это время, когда дома можно наконец-то нормально поработать + конец года играет свою роль. Температура за окном нормальная (не требуется включать обогреватель или кондиционер), это означает что не будет перебоев с электричеством. Поэтому все пытаются в это время сделать как можно больше. Можно заметить пик-антагонист в марте, когда устанавливается похожая погода.
Везде ли вечерний «пик» так безобразно размазан, как в Ираке? Совсем нет. В Китае или в Колумбии, например, видно чёткий пик, который проявляется на протяжении всего года:
Колумбия![](https://habrastorage.org/r/w1560/getpro/habr/post_images/7b8/2df/6ab/7b82df6abfbd542f67fafca196124910.png)
![](https://habrastorage.org/getpro/habr/post_images/7b8/2df/6ab/7b82df6abfbd542f67fafca196124910.png)
Китай![](https://habrastorage.org/r/w1560/getpro/habr/post_images/16b/114/93c/16b11493cf80642da76b39dc9cfd14ac.png)
![](https://habrastorage.org/getpro/habr/post_images/16b/114/93c/16b11493cf80642da76b39dc9cfd14ac.png)
Хотя Иран сильно отличается от Ирака по распорядку дня, год у них устроен похоже. Но из Ирана скачиваний намного больше, так что статистика намного чётче показывает закономерности. Третья похожая на них страна — Марокко. Смотрите!
Иран![](https://habrastorage.org/r/w1560/getpro/habr/post_images/eb2/8d5/cef/eb28d5cef1200669064f74b1010f5149.png)
![](https://habrastorage.org/getpro/habr/post_images/eb2/8d5/cef/eb28d5cef1200669064f74b1010f5149.png)
Марокко![](https://habrastorage.org/r/w1560/getpro/habr/post_images/523/064/14d/52306414d3e5afb3d298b47ddb906c6e.png)
![](https://habrastorage.org/getpro/habr/post_images/523/064/14d/52306414d3e5afb3d298b47ddb906c6e.png)
Совершенно невозможно игнорировать июньскую аномалию. В июне в целом уменьшается интенсивность работы, но в районе восьми часов вечера (в Иране — на час позднее) активность сходит на нет — почти совсем до нуля. Зато ночью работа продолжается едва ли не до шести утра! И неудивительно, что утро после таких ночей тоже сдвигается на более позднее время.
Угадали, почему так?
Нет, это не перевод часов. Этот необычный месяц ночной работы как раз совпадает с Рамаданом. Во время Рамадана днём есть нельзя, а на голодный желудок работается плохо. Приходится навёрстывать упущенное в тёмное время суток. В районе восьми вечера явно либо происходит какой-то религиозный ритуал, либо первая за день возможность поесть.
Перевод часов, кстати, на картинке Ирана тоже виден (я переводил часовые пояса, разумеется, с учётом переводов стрелок). В Ираке время не переводится — там искать перевод времени бесполезно. В Иране часы переводятся на час вперёд с 22 марта по 21 сентября. Как можно видеть, ещё фактически две недели люди начинают работать так, будто часы не переводили, потом рабочий график подстраивается под новое расписание. Сентябрьский перевод стрелок в обратную сторону протекает гораздо более плавно: некоторые люди продолжают по приходить по биологическим часам — из-за этого оказываются на работе чуть раньше «положенного», но довольно быстро понимают, что спать можно дольше и возвращаются к типичному графику.
Внимательный читатель может обратить внимание, что при переводе часов мы должны сначала видеть скачок, затем плавное затухание. А в сентябре мы видим плавную картину не только затухания, но и самого перевода. Я предполагаю, что здесь вносит вклад агрегирование неделями: перевод часов пришёлся на середину недели, и мы видим смесь из работы по старому и новому расписаниям.
На карте Марокко, к сожалению, переводы времени не разглядеть. Да и Рамадан менее ярко выражен (работа кончается не к 6, а скорее к 4). Но возможно, что эти факты даже связаны: в Марокко часы переводятся довольно экзотическим способом — 4 раза за год. Основной часовой пояс у них — UTC. С последнего воскресенья марта до последнего воскресенья октября время переводится на час вперёд. Но на время Рамадана (вернее с 21 мая по 1 июля) часы возвращаются в UTC, что слегка компенсирует сдвиг начала работы на более позднее время.
Что удивительно, в других странах я не нашёл совсем никаких свидетельств перевода часов. Надо перестроиться на новое расписание — все тут же перестраиваются.
Хронология боевых действий
Если вы вернётесь к тепловой карте России, вы увидите, неслабую активность летними ночами, на некоторых неделях — равномерную активность. Сложно точно сказать, кто здесь постарался: люди или роботы. Но нередко тепловые карты (в этом разделе нам будет удобнее пользоваться ненормированными графиками) помогают очень чётко локализовать нападения ботов. Вероятно, во многих случаях наиболее безопасный и простой путь для чистового анализа — просто вырезать периоды аномальной активности целиком.
Россия![](https://habrastorage.org/r/w1560/getpro/habr/post_images/614/a22/dc6/614a22dc6da66e2708108e2329dafb1b.png)
![](https://habrastorage.org/getpro/habr/post_images/614/a22/dc6/614a22dc6da66e2708108e2329dafb1b.png)
Давайте взглянем на Германию с Францией.
Франция![](https://habrastorage.org/r/w1560/getpro/habr/post_images/0cd/6f5/ed6/0cd6f5ed645249858a1adc5ef22f25ef.png)
![](https://habrastorage.org/getpro/habr/post_images/0cd/6f5/ed6/0cd6f5ed645249858a1adc5ef22f25ef.png)
Германия![](https://habrastorage.org/r/w1560/getpro/habr/post_images/6e2/17c/51f/6e217c51f1ae9252a530368725b2758e.png)
![](https://habrastorage.org/getpro/habr/post_images/6e2/17c/51f/6e217c51f1ae9252a530368725b2758e.png)
Во-первых, у вас есть возможность убедиться, что Рождество и там, и там отмечают. Франция работает почти весь год, но где-то за неделю до Рождества работа стихает и возобновляется лишь где-то к февралю. Во-вторых, в Германии активно пользоваться сайхабом начали с июня. Сложно уверенно сказать, проявление ли это сезонности, роста аудитории или политики немецких университетов в отношении подписки на журналы. И в-третьих, первая неделя августа говорит сама за себя.
Пик активности бездушных железяк во многих странах пришёлся на летние месяцы. Причём, некоторые боты явно работали одновременно с адресов в нескольких странах.
Но эти эпизодические нашествия гуннов на земли Германии и Франции совершенно меркнут на фоне Южной Кореи.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/8e8/c15/6bf/8e8c156bf5171eb76a83aa0d52fa15f5.png)
![](https://habrastorage.org/getpro/habr/post_images/8e8/c15/6bf/8e8c156bf5171eb76a83aa0d52fa15f5.png)
Что-то мне подсказывает, что как раз в эти недели Южная Корея пыталась выкачать целиком весь IEEE (если помните, она была одним из лидеров по скачиваниям инженерных статей наряду с Индией).
На Сейшельских островах ситуация ещё страньше. Как будто группа учёных приехала туда на полгода, а потом дружно уехала. Или будто бот выключался на ночь вместе с лэптопом его автора.
Скрытый текст![](https://habrastorage.org/r/w1560/getpro/habr/post_images/840/c2a/4f9/840c2a4f9f460a86955a8fa858f65105.png)
![](https://habrastorage.org/getpro/habr/post_images/840/c2a/4f9/840c2a4f9f460a86955a8fa858f65105.png)
Напоследок приведу совсем альтернативную характеристику для временной локализации ботов. Многие боты не стремятся сохранять куки, а значит будут получать всё новые и новые user id. И летом, когда в России оживились боты, можно заметить занятную картину: среднее число уникальных пользователей растет, а число уникальных ip — падает.
Уцелевшим посвящается
Я надеюсь, что мне удалось передать хотя бы небольшую часть того удивления и восхищения многообразием мира, которую я испытал, проверяя страну за страной и придумывая всё новые способы смотреть на данные. Удивительно, сколько всего можно узнать из простого лога популярного сайта.
В заключение хочется напомнить, что опасно делать скоропалительные выводы. Когда я ещё не смотрел на тепловые карты, а лишь считал «центр масс» дня и смотрел на провал в июне, я был уверен, что в Иране работа в июне начинается пораньше, потому что погода располагает. Потом понял, что резкий провал — это не погода и сообразил про Рамадан. Но всё ещё считал, что народ просто встаёт пораньше из-за какой-нибудь утренней молитвы. О том, что смещение центра дня происходит не из-за работы рано утром, а очень поздней ночью — после нуля — я догадался сильно не сразу. И кто знает сколько ещё деталей я выпустил из виду…
Две очевидные проблемы, которые ещё только предстоит решить — фильтрация трафика от ботов и отделение эффектов сезонности от эффектов роста пользовательской базы. Возможно, что данные за 2018-й год помогут с этой задачей справиться.
Кажется, мне удалось снять сливки с этих данных, но не забывайте, что под сливками обычно остаётся не менее ценная субстанция, и в куда больших объёмах. Ведь мы даже не пытались смотреть на то, какие статьи пользователи читают. А это богатейшее поле для исследований, ведь каждый пользователь (если он человек) читает статьи в довольно узком диапазоне тем — а значит это готовый датасет для тренировки машинки, определяющей семантическую похожесть статей. Если совсем фантазировать, то это ещё и инструмент промышленного шпионажа: вы можете посмотреть, что читали ваши конкуренты… в прошлом году.
Можно смотреть, в каких областях исследователи читают классику, а где только статьи последнего года. Как соотносятся скачивания открытых и закрытых статей в журналах гибридного доступа. Как влияет наличие препринта на вероятность того, что статью пойдут скачивать на сайхаб. А в каких странах читают статьи на немецком?
Впрочем, и без анализа статей есть прорва неисследованных вопросов. Например, можно расклассифицировать IP на «дневные», «ночные» и «круглосуточные». А также на регулярно и нерегулярно используемые (в НИИ ip-адреса многих лабораторий общие, а значит каждый рабочий день кто-нибудь да использует сайхаб). После этого мы сможем изучать отдельные компоненты рабочего графика, а не смесь целиком.
Мы можем изучать, работают ли пользователи с одного ноутбука дома и на работе или у них принято использовать рабочие компьютеры. А может быть вы хотите проверить, видны ли на графиках дедлайны грантовых заявок? Или может быть вам удастся обнаружить корреляцию пика рабочего дня с географической широтой или, может, с погодой в день скачивания?
Любопытно было бы понять, что из себя представляют боты: качают они случайные статьи или целые журналы? А может некоторые пользователи с аномальной активностью — это и вовсе «телеграм-боты», которые являются шлюзом для множества реальных пользователей. Да хотя бы посмотреть на карту активности живых пользователей, очищенную от посторонней активности — уже было бы здорово.
Все данные открыты — дерзайте! Чтобы вам было проще подступиться, я прикладываю на гитхабе подготовительные скрипты, jupyter-блокнот с картинками и небольшой набор обработанных данных, достаточный для построения аналогичных графиков по всем странам (а для одномерных графиков — даже по всем городам).
Если вам хочется посмотреть, как устроена работа в вашей любимой стране, вы можете самостоятельно построить графики в plotly, в блокноте вам достаточно будет написать ровно одну строчку.
Спасибо sci-hub за возможность совершить увлекательное путешествие, и хвала открытым данным!
upd: Александра Элбакян считает оценку числа ботов в США некорректной и приводит в качестве аргумента статистику Яндекс.метрики (которую боты, предположительно, не используют). По показателям яндекс-метрики США снова возвращается с десятого места на четвёртое. Впрочем, я не вижу как это может объяснить временное распределение, которое навело меня на мысли о ботах. Вопрос трафика из США явно требует отдельного детального анализа.
Кстати, Александра несколько раз упомянула, что если ваша задача требует массированного выкачивания статей, вы можете написать ей — и вам больше не придется ломать капчи. Пользуйтесь этой опцией и не искажайте статистику. :)