Методология

Эта страница — обзор всей методологии проекта, написанный для читателя без специальной подготовки. Технические детали — в «Методике обработки» и «Источниках» (существующие подразделы), в методблоках каждого исследования и в файлах LIMITATIONS.md внутри каждого скачиваемого пакета.

Четыре типа утверждений

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

Данные— наблюдаемые значения из первоисточников: итоги переписей, официальные оценки Белстата, статистика Eurostat. Пример: перепись 2019 года — 9 413 446 человек.
Расчёт— показатели, вычисленные из данных по открытым формулам: плотность, доли, индексы, суммы городского населения. Пример: доля Минска в населении страны — 21,9% на 2025 год.
Модель— результаты модельных построений с явными предпосылками: прогнозные сценарии, контрфакт «нулевой миграции», скорректированный ряд населения. Модель верна ровно настолько, насколько верны её предпосылки.
Интерпретация— авторские объяснения и гипотезы о причинах наблюдаемого. Они аргументированы, но не доказаны данными.

В интерфейсе карты каждая точка данных несёт пометку достоверности: перепись (самое надёжное), официальная оценка на 1 января, ретроспективная оценка (пересчёт в современных границах), вычислено (например, городское население суммой по городам), интерполяция (значения между опорными годами; они помечаются в тултипах и никогда не выдаются за измеренные).

Источники

Основные ряды населения: итоги одиннадцати переписей (1897, 1923, 1926, 1939, 1959, 1970, 1979, 1989, 1999, 2009, 2019) и официальные оценки Белстата до 2026 года — через компиляцию pop-stat.mashke.org, Демоскоп Weekly и «Демографический ежегодник Республики Беларусь». Возрастно-половые структуры: OLAP-кубы Белстата (переписи 2009/2019 «до человека») и API Белстата. Рождаемость и смертность: Human Fertility Database / Human Mortality Database. Международные сравнения: UN World Population Prospects 2024, Wittgenstein Centre. Границы: geoBoundaries, OpenStreetMap, Wikidata. Зеркальная статистика эмиграции: Eurostat (действующие ВНЖ), национальные ведомства Польши и Литвы. Чернобыльские перечни: официальные постановления pravo.by. Зарплаты: API Белстата по 118 районам. Ночная светимость: спутниковые композиты VIIRS.

Полный список с URL, лицензиями и датами обращения — в SOURCES.md и в sources/registry.csv каждого пакета.

Сбор и нормализация

Все сырые данные скачиваются скриптами и завендорены в репозиторий (HTML, JSON, GeoJSON, CSV) — исследование не зависит от доступности внешних сайтов и воспроизводится из архива. Из сырых файлов ETL-конвейер (Python) извлекает ряды, приводит названия и коды территорий к единому реестру и собирает итоговые наборы для сайта. Каждый шаг — детерминированный код; повторный запуск даёт байт-в-байт те же файлы.

Административно-территориальные изменения

Каноническая сетка — современное деление: 6 областей + Минск, 118 районов. Исторические значения приводятся к современным границам: страновые итоги 1897–1950 — ретроспективные пересчёты статведомства; областные итоги 1959 года приведены к современному составу областей (сумма областей обязана сходиться с итогом республики — это проверяет тест); районные ряды доступны с 1970 года, когда сетка районов стабилизировалась. Отдельно обработаны известные сложности: Дрибинский район (создан в 1989-м, отсутствует в базах границ — полигон вырезан из соседних районов по OSM), Орша и Полоцк (до 2013-го — города областного подчинения). Правило отображения: «весь район» всегда включает города, административно ему не подчинённые, но географически находящиеся внутри.

Плотность и динамика

РасчётПлотность = население / площадь полигона территории. Площади вычислены по генерализованным полигонам, поэтому у отдельных территорий отличаются от справочных на доли процента (сумма по стране: 206,9 тыс. км² при справочных 207,6). Динамика к базовому году = P(год)/P(база) − 1; базовый год выбирает пользователь. Режим «район без центра» вычитает из района его райцентр и города областного подчинения — так видно собственно сельскую и малогородскую динамику. Показатели концентрации: доля Минска, доля «Минск + 5 областных центров», доля семи крупнейших городов.

Прогноз 2026–2075

МодельДля страны, областей и Минска используется классический когортно-компонентный метод (CCMPP): население разбивается на 5-летние возрастно-половые группы, каждая пятилетка «стареет» с коэффициентами дожития, добавляются рождения (по возрастным коэффициентам рождаемости) и миграция. Для 118 районов — метод Гамильтона–Перри: когортные коэффициенты изменения, оценённые по переписям 2009→2019, с сглаживанием малых когорт и согласованием районных сумм с областными итогами (IPF). Для ~200 городов — логистический тренд доли города в населении своего района; областные центры считаются собственными когортными моделями.

Три сценария различаются предпосылками, а не методом:

  • Базовый — рождаемость и смертность движутся по медианной траектории UN WPP 2024 (суммарный коэффициент рождаемости 1,23 → 1,45 к 2075-му), миграционный отток затухает до −1,7 тыс. в год. Итог: 9,06 млн (2026) → 7,53 млн (2050) → 5,97 млн (2075).
  • Оптимистический — рождаемость растёт до 1,85, продолжительность жизни быстро догоняет соседей, миграционное сальдо становится положительным (+8 тыс. в год). Итог: 7,95 млн (2050) → 7,11 млн (2075).
  • Негативный — рождаемость падает к 1,0–1,15, прогресс смертности почти останавливается, отток сохраняется десятилетиями (от −35 до −10 тыс. в год), концентрация в столице усиливается. Итог: 6,48 млн (2050) → 4,33 млн (2075).

Вокруг базового сценария построен вероятностный веер (Монте-Карло, 600 реализаций): 80-процентный интервал для 2050 года — от 7,04 до 8,05 млн. Кроме официального стартового ряда публикуется скорректированный («adjusted»): официальная статистика не видит большую часть эмиграции 2020–2026 годов, поэтому по зеркальной статистике стран приёма построен интервал неучтённого оттока 178–416 тыс. (центральная оценка 270 тыс.) и от уменьшенного старта прогнан тот же прогноз.

Горизонт до 2075 года — предел осмысленности: после 2050-го будут рожать люди, которые ещё не родились, и неопределённость нарастает лавинообразно (что и показывает расширяющийся веер).

Роль языковых моделей и агентных систем

LLM и агентные системы использовались как инструменты на всех этапах: поиск и систематизация источников, извлечение и нормализация данных, написание и ревью кода, поиск противоречий в данных и текстах, альтернативные расчёты, критика методологии, подготовка визуализаций и документирование. Ни один факт или вывод не взят «из головы» модели: всё, что утверждает проект, опирается на скачанный первоисточник или на вычисление открытым кодом. Обратная сторона того же принципа: каждый пакет артефактов содержит AGENT.md — инструкции для чужой LLM-системы, как проверить наши источники, воспроизвести расчёт и атаковать допущения.

Процедуры проверки

  • Тесты-инварианты данных (155 автоматических тестов): суммы областей сходятся с итогом страны, реестр территорий взаимно однозначен, доли городского населения в переписные годы отличаются от официальных не более чем на 1,5 п.п., и т.д.
  • Байт-воспроизводимость: перед публикацией каждый пакет пересобирается в чистом окружении и обязан совпасть с опубликованным байт-в-байт (гейт CI).
  • Бэктесты прогноза: модель обучается на данных до 2009 года и «предсказывает» перепись-2019; ошибка национального итога — −0,4%, средняя ошибка по областям — 2,4% (наивная модель — 4,1%); для районов на окне 2019→2026 — 2,1% против 2,8% наивной, для городов — 6,7% против 10,9%.
  • Внешняя калибровка: базовый сценарий на 2050 год отличается от медианы UN WPP 2024 на +1,0% (гейт ±3%); интервал оттока сверен с независимыми оценками (BEROC, МВД).
  • Кросс-проверка независимым методом: исследование «Ночные огни» сверяет официальную динамику населения со спутниковой светимостью; «ML-челленджер» ищет систематические ошибки структурной модели районов машинным обучением.

Ограничения

Главные задекларированные ограничения (полные списки — в методблоках и LIMITATIONS.md):

  • районного уровня до 1970 года нет (сетка районов многократно менялась);
  • ретроспективные оценки 1897–1950 надёжнее для страны в целом, чем для отдельных территорий; городское население до 1959-го занижено на малые местечки;
  • оценки 2021–2026 — официальные; они не видят неучтённую эмиграцию (для этого и построен adjusted-ряд, но он — модель, а не измерение);
  • площади и плотности зависят от генерализации полигонов;
  • корреляционные результаты (зарплаты, доступность, моногорода) — ассоциации, не доказательства причинности;
  • прогноз наследует все ограничения стартовых данных, а его базовая рождаемость (1,23 по WPP) выше некоторых независимых оценок текущего уровня (~1,0–1,1) — базовый сценарий может быть смещён в оптимизм.

Потенциальные ошибки и неопределённости

Мы считаем наиболее вероятными источниками ошибок: неучтённую эмиграцию 2020–2026 (интервал широк, 178–416 тыс., и опирается на зеркальную статистику с её собственными искажениями); качество ретроспективных пересчётов первой половины XX века; несопоставимость определений («городское население», «уехавший») между эпохами и ведомствами; и человеческий фактор при ручной курации реестров (моногорода, чернобыльские перечни). Следующая перепись (~2030) позволит проверить и пересчитать ключевые оценки — проект спланирован так, чтобы это было легко сделать.

Методика обработки данных

Уровни достоверности

Каждая точка данных несёт тип (поле в data.json, подписи в интерфейсе):

КодТипОписание
cпереписьзначение переписи населения (1897, 1923, 1926, 1939, 1959, 1970, 1979, 1989, 1999, 2009, 2019) на дату переписи
eоценкаофициальная текущая оценка Белстата на 1 января
rретроспективная оценкаофициальный пересчёт в современных границах (страна: 1897, 1913, 1940, 1950)
mвычисленосумма по городским НП из таблицы переписей (городское население там, где официального разреза город/село нет)

Значения между известными точками интерполируются линейно на клиенте и явно помечаются в тултипах («интерполяция; ближайшая точка: год, тип»). Экстраполяции за пределы серии нет: до первой точки данных территория отображается как «нет данных».

Гармонизация границ и названий

  • Каноническая сетка — современное АТД (6 областей + Минск, 118 районов). Ряды 1970–2026 по районам взяты из компиляции pop-stat в современной сетке.
  • Реестр территорий (etl/registry.py) выверен вручную: латинка pop-stat ↔ shapeName geoBoundaries ↔ русское название ↔ районный центр. Полнота соответствий (118/118, взаимная однозначность) проверяется тестами.
  • Дрибинский район отсутствует в geoBoundaries (создан в 1989 г.); его полигон взят из OSM и вырезан из полигонов Горецкого и Мстиславского районов. Площадь по полигону — 764,5 км² (справочно 766 км²).
  • Орша и Полоцк до 2013 г. — города областного подчинения (отдельные строки), с 2014 г. включены в районы. Для непрерывности ряда «весь район» всегда включает города областного подчинения на его территории.
  • Минск: единица уровня области (и полигон в сетке районов). Пригородные посёлки, включённые в Минск в 1997–2000 гг. (Сокол, Сосны, Восточный), учтены в рядах города с даты включения.
  • 1959 год по областям — таблицы Демоскопа уже приведены к современному составу областей; сумма областей и Минска в точности равна итогу республики (проверяется тестом).

Расчётные показатели

  • Плотность = население / площадь полигона (сферическая формула по геометрии; страна 206,9 тыс. км² при справочных 207,6 тыс. км² — расхождение из-за генерализации границ ~0,4%).
  • Изменение = (значение в году слайдера / значение в базовом году) − 1; базовый год выбирается пользователем.
  • «Район без городского центра» = полигонный итог минус районный центр и города областного подчинения на территории района. Прочие городские НП района (вторые города, гп) не вычитаются; для Минского района центр (Минск) административно вне района, поэтому «без центра» = «весь район».
  • Декомпозиция плотности района (карточка района): средняя плотность района маскирует рост центра при пустеющей периферии (пример: Гродненский район 2019 — в среднем 147 чел./км², из них Гродно ~2500, сельская часть ~19). Считаются три показателя: весь район (население/площадь полигона), городские центры (население центров / их площадь по Wikidata P2046, нормализованные значения; есть у 74 городов, значения >500 км² отброшены как ошибочные), без центров (население без центров / (площадь полигона − известные площади центров); где площадь центра неизвестна, вычет не делается — погрешность ~1–3%). Карта в режиме «без центра» + «плотность» использует ту же поправку площади.
  • Городское население до 1959 г. — сумма городских НП (тип m); с 1959 г. — официальные итоги переписей (город/село) по Демоскопу. Проверка: вычисленная доля городского на 1999/2009/2019 отличается от официальной не более чем на 1,5 п.п.
  • Концентрация: доля Минска, доля «Минск + 5 областных центров», доля семи крупнейших городов (Минск, Гомель, Могилёв, Витебск, Гродно, Брест, Бобруйск — современный состав, фиксированный во времени) в населении страны в современных границах. Для 1923–1939 гг. знаменатель интерполирован между ретроспективными оценками 1913 и 1940 гг.

Стартовый вид карты: село ↔ города

Вид по умолчанию совмещает два слоя, чтобы показать разнонаправленную динамику: цвет района — плотность населения без городских центров (отдельная шкала 5–60 чел./км², лучшее разрешение в сельском диапазоне), поверх — круги городов. Средняя плотность района этот контраст маскирует: район с растущим центром выглядит «растущим», хотя его сельская часть пустеет. Слой городов отключается флажком «города точками».

Маркеры городов кодируют численность населения двумя избыточными каналами, чтобы динамика была видна при движении слайдера:

  • размер: r ∝ население^0.4. Сжатая степенная шкала вместо √: населения городов различаются в сотни раз, и при r ∝ √pop малые города упираются в минимальный радиус и выглядят статичными; показатель 0.4 укладывает диапазон 5 тыс. – 2 млн в 2–17 px, так что рост райцентра с 10 до 20 тыс. визуально сопоставим с ростом Минска;
  • интенсивность цвета: относительная красная шкала, нормированная на исторический максимум населения города за весь период по всем городам (пик Минска, ~2,02 млн, 2020 г.): город на пике максимума — ярко-красный, остальные — пропорционально бледнее. Пропорция сжимается степенью 0,35 (населения городов различаются в сотни раз; при линейной шкале все города, кроме Минска, оставались бы белыми), монотонность сохраняется: больше населения — всегда краснее, при убыли маркер бледнеет и уменьшается. Цвет вычисляется непрерывной интерполяцией, поэтому изменения видны на каждом шаге слайдера.

До 1970 года районный разрез недоступен (сетка районов нестабильна) — на карте районов показывается поясняющая плашка, динамика читается по городам (с 1897) и областям (с 1959).

Историческая граница 1921–1939

Линия польско-советской границы (Рижский договор) агрегирована по современным районам: 46 районов, полностью или преимущественно входивших в состав Польши, растворены в один полигон; показано общее ребро с «восточной» частью. Фактическая граница в ряде мест пересекала территории современных районов — слой носит ориентировочный характер.

Известные ограничения

  1. Районный уровень до 1970 г. — данных нет (сетка районов многократно менялась в 1920–1960-е); ряды районов начинаются с переписи 1970 г.
  2. 1923/1926/1939 по городам Западной Беларуси — значения из польских переписей и оценок, как они приведены в источнике-компиляции.
  3. Площади вычислены по генерализованным полигонам; для Минска площадь полигона (216 км²) меньше современной официальной (349 км²) — граница города в источнике примерно на 2005 год.
  4. Городское население, тип m — до 1959 г. занижено на величину малых местечек, не вошедших в таблицу городов.
  5. Оценки 2021–2026 гг. — официальные данные Белстата; независимые демографические оценки после 2020 г. могут отличаться.