У меня есть большой набор векторов признаков, которые я буду использовать для решения проблемы бинарной классификации (используя scikit learn в Python). Прежде чем я начну думать о вменении, мне интересно попытаться определить по оставшимся частям данных, пропущены ли данные «случайно» или «не случайно».
Какой разумный способ подойти к этому вопросу?
Оказывается, лучший вопрос - спросить, «отсутствуют ли данные совершенно случайно» или нет. Какой разумный способ сделать это?
missing-data
randomness
Lembik
источник
источник
Ответы:
Я нашел информацию, о которой говорил, в своем комментарии.
Из книги Ван Бюренса , стр. 31, он пишет
«Было предложено несколько тестов для тестирования MCAR по сравнению с MAR. Эти тесты широко не используются, и их практическая ценность неясна. См. Enders (2010, стр. 17–21) для оценки двух процедур. Невозможно проверить MAR против MNAR, поскольку информация, необходимая для такого теста, отсутствует ».
источник
Это невозможно, если вам не удалось восстановить отсутствующие данные. Вы не можете определить по наблюдаемым данным, отсутствуют ли пропущенные данные случайно (MAR) или нет случайно (MNAR). Вы можете только сказать, явно ли данные не пропущены полностью случайно (MCAR). Кроме того, апеллируйте только к правдоподобности MCAR или MAR, а не MNAR, основываясь на том, что вы знаете (например, сообщая причины отсутствия данных). В качестве альтернативы вы можете утверждать, что это не имеет большого значения, поскольку доля пропущенных данных невелика, и в соответствии с MNAR должны произойти очень экстремальные сценарии для опрокидывания ваших результатов (см. «Анализ переломных моментов»).
источник
Это звучит вполне выполнимо с точки зрения классификации.
Вы хотите классифицировать отсутствующие и отсутствующие данные, используя все остальные функции. Если вы получаете значительно лучше, чем случайные результаты, то ваши данные не пропадают случайно.
источник
Вы хотите знать, существует ли какая-либо корреляция между значением, пропущенным в функции, и значением любой другой функции.
Для каждой функции создайте новую функцию, указывающую, отсутствует значение или нет (давайте назовем их функцией is_missing). Вычислите ваш любимый показатель корреляции (я предлагаю использовать здесь взаимную информацию) для функций is_missing и остальных функций.
Обратите внимание на то, что если вы не обнаружите никакой корреляции между двумя функциями, все равно возможно иметь корреляцию из-за группы функций (значение отсутствует как функция XOR десяти других функций).
Если у вас большой набор функций и большое количество значений, вы получите ложные корреляции из-за случайности. Кроме обычных способов справиться с этим (набор проверки, достаточно высокий порог) Вы можете проверить, являются ли корреляции симметричными и транзитивными. Если это так, то, скорее всего, они правдивы, и вам следует дополнительно их проверить.
источник
Метод, который я использую, представляет собой теневую матрицу, в которой набор данных состоит из переменных индикатора, где 1 дается, если значение присутствует, и 0, если его нет. Сопоставляя их друг с другом и с исходными данными, можно определить, как правило, отсутствуют переменные (MAR) или нет (MCAR). Используя
R
для примера (заимствование из книги «R в действии» Роберта Kabacoff):источник