Вопрос или проблема
У меня есть данные о населении с Census.gov:
Общее население США по возрасту за год с 1940 по 2010
В зависимости от диапазона десятилетий, в данных отсутствуют дискретные значения населения для возрастов старше определенного возраста. Вместо этого предоставляется агрегированная сумма, представляющая все возраста старше установленного порога.
Конкретно это следует следующему шаблону:
- 1940 к 1979: дискретные данные с 0 до 84 и агрегированные данные для возрастов 85 и старше
- 1980 к 1999: дискретные данные с 0 до 99 и агрегированные данные для возрастов 100 и старше
- 2000 к 2010: дискретные данные с 0 до 84 и агрегированные данные для возрастов 85 и старше
Желаемый результат – получить дискретные данные для каждого возраста и года с 0-99, а затем агрегированный итоговый показатель для возрастов 100 и старше.
Поэтому я хочу внести отсутствующие дискретные значения населения для возрастов 85-100 за годы с 1940 по 1979 и с 2000 по 2010.
И я хочу использовать фактические дискретные значения населения для возрастов 85-100 за годы с 1980 по 1989, чтобы добиться этого результата.
Некоторые наблюдения:
- Шаблон отсутствующих значений является MNAR (Missing Not At Random) – эти значения были систематически опущены, но агрегированное значение, представляющее недостающие детали, предоставлено
- Данные о населении за этот временной промежуток являются детерминированными: уровни населения растут линейно каждый год; рабочий цикл человеческого организма конечен, и ограничения и пределы хорошо известны.
Смотря на данные, мы можем видеть, что каждое из трех подмножеств лет имеет очень похожие шаблоны. Больше изменений в более молодых возрастах, и вариация сглаживается для возрастов старше 60
Затем, если мы сосредоточимся на годах с 1980 по 1989, мы можем подогнать хорошую кривую для возрастов с 0 до 100 с множественной R-квадратом 0.979.
Затем, если мы сузим фокус до возрастов 60-100 и еще больше до возрастов 85-100, множественный R-квадрат увеличивается до 0.9996.
Теперь, если мы изменим фокус и посмотрим на растущие уровни населения, мы можем наблюдать, что эти отношения линейны. Население растет стабильными темпами из года в год.
Общее население с 1940 по 2010:
Возраст с 85 до 100 за годы с 1980 по 1999. Каждый возраст линейный. У каждого возраста немного более низкий темп роста (меньший наклон).
Мой вопрос
Когда я вношу дискретные отсутствующие значения населения по возрасту и году, как мне объединить подогнанную кривую, которая моделирует изменения в населении при увеличении возраста, с линейной регрессией, которая моделирует изменения в населении из года в год?
Применяется ли один или несколько задокументированных методов естественным образом к проблеме, как я ее описал?
Например: KNN, PCA, BPCA, Среднее, MICE, другое?
Если есть рекомендуемый метод, можете ли вы направить меня на доступные пакеты R или Python и документацию, которая описывает механику применения данного подхода?
Я думаю, вам следует остерегаться использования кривых для экстраполяции за пределы возрастных порогов – в частности, я думаю, вам следует рассмотреть:
- смертность увеличивается с возрастом; Я бы предположил, что она увеличивается с возраста с увеличенной скоростью (особенно в более старшем возрасте). Сможете ли вы эффективно это уловить?
- очевидно, что существует некоторый перекрытие между популяциями в последующих годах (например, кто-то, кто включен в данные 1985 года, может также быть в данных 1986 года). Какой эффект это окажет на иммутацию данных?
Я бы предложил другой подход. Актуарии традиционно создавали “таблицы жизни”, которые фиксируют смертность в когорт населения. Если вы сможете найти набор таблиц, который применим к рассматриваемому периоду, вы можете использовать их для расчета численности населения.
Ответ или решение
Вопрос отсутствующих значений населения в данных переписи является сложной задачей аналитики данных, особенно когда речь идет о долгосрочном наборе исторических данных, таких как данные переписи населения США с 1940 по 2010 год. Данные, которые вы представили, показывают определенную тенденцию к заранее установленным ошибкам, связанным с систематическим отсутствием значений на конечных возрастных мерах.
Проблема отсутствующих значений и предлагаемые решения
Сначала давайте подробнее изучим проблему отсутствующих значений. Как вы отметили, данные о населении представляют собой надежные значения по возрастам до определенного порога, за которым предоставляются только агрегированные данные. Это проблема MNAR (Missing Not At Random) требует комплексного подхода, включающего как метод статистического моделирования, так и теоретические знания о демографии.
Подход к имитации отсутствующих значений
-
Использование кривой: Как вы уже упомянули, подход, основанный на кривой, может быть полезен для интерполяции. Наилучшие результаты наблюдаются при использовании 4-го порядка регрессионной модели для связи возрастных факторов с данными по годам. Вы можете продолжить использовать эту модель для возрастов от 85 до 99 в периодах, где данные отсутствуют (1940-1979, 2000-2010).
-
Линейная регрессия: Для моделирования популяции в течение лет, вы можете использовать линейную регрессию для создания модели, которая будет подключать данные старших возрастов к данным по годам. Это позволит учесть как временной фактор, так и возрастные изменения населения.
-
Жизненные таблицы: Кроме того, как указали другие эксперты, подход с использованием "жизненных таблиц", основанных на статистических данных о смертности, может дать возможность более точно моделировать ожидаемую популяцию, особенно для более высоких возрастов, где уровень смертности значительно возрастает.
Методы и инструменты для имитации
Для выполнения анализа и моделирования данных можно использовать несколько пакетов в R и Python:
-
В R:
- mice: для множественного заполнения отсутствующих значений.
- lm: для выполнения линейной регрессии.
- splines: для интерполяции с использованием сглаженных сплайнов.
- survival: для построения жизненных таблиц и анализа выживаемости.
-
В Python:
- scikit-learn: для регрессии (линейной и других).
- statsmodels: для статистического моделирования и временных рядов.
- lifelines: для анализа выживаемости и построения жизненных таблиц.
- pandas: для обработки данных и заполнения пропусков с использованием методов, таких как KNN.
Предложения по выполнению работы
-
Недостающие значения: Начните с построения модели для возрастов 85-99, используя данные 1980-1989 и затем примените эту модель на данные для 1940-1979 и 2000-2010.
-
Анализ выживаемости: Если доступны данные, изучите возможности построения жизненных таблиц, чтобы учесть влияние уровня смертности на популяцию.
-
Моделирование и имитация: После создания моделей протестируйте их с разными подходами (жизненные таблицы, линейная регрессия и spa), и оцените их прогностическую мощность путем анализа R-квадратов и других метрик.
Заключение
Объединение кривых, линейной регрессии и демографического анализа с жизненными таблицами может привести к более полному и обоснованному заполнению пропусков в данных. Ключевым аспектом будет постоянное тестирование и валидация моделей, что позволит минимизировать ошибки и повысить надежность выводов. С данной стратегией вы сможете обеспечить более полное представление о населении по возрастам и годам, начиная с 1940 до 2010 года.