Какой метод вменения использовать для заполнения отсутствующих данных о населении на основе 3 категориальных столбцов?

Я новичок в науке о данных. Извините, если вопрос неясен.

**My Data is following format:** 
    *year   age_group       pop     Gender  Ethnicity
0   1957    0 - 4 Years     264727  Mixed   Mixed
1   1957    5 - 9 Years     218097  Male    Indian
2   1958    10 - 14 Years   136280  Female  Indian
3   1958    15 - 19 Years   135679  Female  Chinese
4   1959    20 - 24 Years   119266  Mixed   Mixed*
.
.

. .

Здесь «Смешанный» означает «мужской и женский» для пола, а также «индейцы, китайцы и другие» для этнической принадлежности, где поп-это население.

У меня есть несколько строк с отсутствующими значениями, например:

    year    age_group       pop   Gender    Ethnicity
344 1958    70 - 74 Years   NaN   Mixed     Mixed
345 1958    75 - 79 Years   NaN   Male      Indian
346 1958    80 - 84 Years   NaN   Mixed     Mixed
349 1958    75 Years & Over NaN   Mixed     Mixed
350 1958    80 Years & Over NaN   Female    Chinese
.
.
.

Их нельзя удалить или заполнить средними/медианными/предыдущими значениями.

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

Пожалуйста, предоставьте любой пример кода или документацию, которая поможет мне.


person Kowshik Bokka    schedule 15.07.2020    source источник
comment
Для чего вы используете данные?   -  person mackdelany    schedule 15.07.2020
comment
Добро пожаловать в СО! Возможно, вы захотите построить модель, которая поможет предсказать пропущенные значения. В частности, поскольку вы говорите, что хотите вменение на основе значений из других столбцов. Если вы знакомы с библиотекой обучения scikit scikit-learn.org/stable, вы можете поэкспериментировать с модели там. Лучший   -  person smile    schedule 15.07.2020
comment
Привет! В качестве общего руководства по технике вменения эта заметка может быть полезна stat. columbia.edu/~gelman/arm/missing.pdf. Лучший   -  person smile    schedule 15.07.2020
comment
Я не думаю, что понимаю. Как информация о годе, возрастной группе и т. д. дает мне какую-либо полезную информацию для угадывания численности населения? Почему это делает любое значение для населения более или менее вероятным?   -  person Karl Knechtel    schedule 15.07.2020
comment
Привет @KarlKnechtel, предположим, что в 1958 году нам не хватает всего населения Индии для возрастной группы 70-75 лет. Но у нас есть информация о других этнических группах и общей численности населения в том году. Что дало бы мне общее население Индии по арифметическим функциям. Мне интересно, есть ли какое-либо вменение, которое я могу использовать, которое может сделать то же самое.   -  person Kowshik Bokka    schedule 15.07.2020
comment
привет @mackdelany Я использую данные, чтобы рассчитать средний прирост населения для каждой возрастной группы и этнической принадлежности за эти годы.   -  person Kowshik Bokka    schedule 15.07.2020


Ответы (1)


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

Сколько нулевых значений?

Если их несколько, например. меньше 20, и у вас есть время, то вы можете посмотреть на каждый в отдельности. В этом случае вы можете найти данные переписи в Google и т. д. и сделать предположение для каждой ячейки.

Если их больше, чем можно оценить по отдельности, нам нужно будет прибегнуть к другой магии.

Знаете ли вы, как другие переменные должны относиться к численности населения?

Подумайте, как другие переменные должны относиться к населению. Например, если вы знаете, что в одной возрастной когорте определенной этнической группы есть 500 мужчин, но вы не знаете, сколько женщин... 500 женщин было бы справедливым предположением.

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

  1. Найдите все нулевые значения для одного пола, для которых известна соответствующая гендерная когорта, примите соотношение полов 50:50 для когорты.
  2. Найдите все нулевые значения, для которых известны старшая и младшая когорты, распределите между ними линейно популяцию этой когорты.
  3. Что-то другое...

Это большая работа, но опять же, для чего вам нужны данные? Если вы ищете график, это, вероятно, не стоит. Но если вы проводите более масштабное исследование/пытаетесь выиграть соревнование kaggle... тогда, может быть, так оно и есть?

Какой у вас реальный контекст?

Например, если это данные о населении определенной страны, то вы можете знать кривую распределения по возрасту в этой стране? Затем вы можете вычислить значения для этнических групп вдоль кривой возрастного распределения, учитывая, где находятся другие возрастные когорты той же этнической группы. Это жестоко упрощено, но может подойти для вашего случая использования.

Вам нужен этот столбец?

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

~~

Надеюсь, что это поможет - удачи!

person mackdelany    schedule 15.07.2020
comment
Спасибо за отзыв. Однако я не могу удалить эти строки, и они составляют почти 10% всего набора данных. Фрейм данных имеет около 20000 строк. Кроме того, я не могу продолжить с 50:50, так как большая часть недостающих данных относится к определенной возрастной группе и за тот же год (т.е. отсутствуют все данные возрастной группы 70-75 лет 1958 года для мужчин, женщин и комбинированные (смешанные) для индийцев. , Я использую набор данных, чтобы учиться, но я действительно хочу понять, как решить эту проблему.Кроме того, я ожидаю, что данные будут в таком смысле, что население индейцев 1958 года для мужчин и женщин должно быть равно смешанному населению индейцев в 70 - возрастная группа 75 лет. - person Kowshik Bokka; 15.07.2020