Статистический подход для определения случайного отсутствия данных

21

У меня есть большой набор векторов признаков, которые я буду использовать для решения проблемы бинарной классификации (используя scikit learn в Python). Прежде чем я начну думать о вменении, мне интересно попытаться определить по оставшимся частям данных, пропущены ли данные «случайно» или «не случайно».

Какой разумный способ подойти к этому вопросу?


Оказывается, лучший вопрос - спросить, «отсутствуют ли данные совершенно случайно» или нет. Какой разумный способ сделать это?

Lembik
источник
Если отсутствует связь между отсутствующим индикатором и какой-либо наблюдаемой переменной, то механизмом отсутствующих данных является MCAR.
Рандел
@Randel Что такое хороший тест для применения на практике, чтобы проверить это?
Лембик
Ничего особенного, кроме корреляционного теста или регрессии.
Рандел
3
Это не то, что вы тестируете, это то, что вы предполагаете .
Тим
3
Просто чтобы быть ясно: случайное отсутствие полностью означает, что вероятность пропуска является постоянной величиной, она ни от чего не зависит. Отсутствует на случайных означает , что missingness зависит от некоторых измеряемых факторов, как возраст или пол, так что вы можете использовать некоторые модели для заполнения недостающих моделей. Отсутствие не случайно означает, что отсутствие зависит от того, что вы не измеряли. В вопросе OP говорится, что NMAR против MAR, но OP означает MAR против MCAR.
AdamO

Ответы:

8

Я нашел информацию, о которой говорил, в своем комментарии.

Из книги Ван Бюренса , стр. 31, он пишет

«Было предложено несколько тестов для тестирования MCAR по сравнению с MAR. Эти тесты широко не используются, и их практическая ценность неясна. См. Enders (2010, стр. 17–21) для оценки двух процедур. Невозможно проверить MAR против MNAR, поскольку информация, необходимая для такого теста, отсутствует ».

RayVelcoro
источник
Вопрос спрашивает о MAR против MNAR, но ваш ответ о MCAR против MAR. MCAR полностью отличается от MNAR.
Тим
Если вы можете определить, что данные MAR, то этого должно быть достаточно. Как говорит Бьорн, невозможно определить, является ли это MAR / MNAR, но этот ответ является хорошим ответом на его вопрос, которому я верю. Если вы проведете тест Эндерса и обнаружите, что это MCAR, вам не понадобится вменение. Если вы обнаружите, что это MAR, то вы можете вменять или внимательно посмотреть на свои данные, чтобы понять, есть ли основания полагать, что это может быть MNAR.
RayVelcoro
@RayVelcoro Это проблема идентификации: данные NMAR могут появиться в MCAR. Тим прав, что NMAR (или наоборот) - это не то, что мы проверяем, это то, что мы предполагаем. На ваш взгляд, MCAR против MAR, более (наиболее?) Важная вещь: если данные MCAR, и вы используете методы MAR, действительно ли какой-либо чистый эффект на данные? Я так не думаю. Учитывая проникновение, доступность и простоту использования для методов MAR, возможно, лучше просто использовать непараметрическую процедуру взвешивания или вменения, чем участвовать в риторической погоне за тестами и тестами.
AdamO
17

Это невозможно, если вам не удалось восстановить отсутствующие данные. Вы не можете определить по наблюдаемым данным, отсутствуют ли пропущенные данные случайно (MAR) или нет случайно (MNAR). Вы можете только сказать, явно ли данные не пропущены полностью случайно (MCAR). Кроме того, апеллируйте только к правдоподобности MCAR или MAR, а не MNAR, основываясь на том, что вы знаете (например, сообщая причины отсутствия данных). В качестве альтернативы вы можете утверждать, что это не имеет большого значения, поскольку доля пропущенных данных невелика, и в соответствии с MNAR должны произойти очень экстремальные сценарии для опрокидывания ваших результатов (см. «Анализ переломных моментов»).

Бьерн
источник
1
Большое спасибо. Какой хороший способ определить, являются ли данные MCAR?
Лембик
@ Björn, выше, возможно, потребуется изменить формулировку, чтобы отразить существенные асимметрии в том, что мы можем извлечь из данных. Несмотря на то, что можно фальсифицировать гипотезу , что данные являются McAr ( а именно, путь создания модели , которая эксплуатирует наблюдаемый ковариат для учета некоторой части missingness), это не представляется возможное подтверждающие McAr или любой другой подобной гипотезе.
Дэвид С. Норрис,
Хорошая точка зрения. Я сделал это более понятным.
Бьорн,
4

Это звучит вполне выполнимо с точки зрения классификации.

Вы хотите классифицировать отсутствующие и отсутствующие данные, используя все остальные функции. Если вы получаете значительно лучше, чем случайные результаты, то ваши данные не пропадают случайно.

поджигатель
источник
2

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

Для каждой функции создайте новую функцию, указывающую, отсутствует значение или нет (давайте назовем их функцией is_missing). Вычислите ваш любимый показатель корреляции (я предлагаю использовать здесь взаимную информацию) для функций is_missing и остальных функций.

Обратите внимание на то, что если вы не обнаружите никакой корреляции между двумя функциями, все равно возможно иметь корреляцию из-за группы функций (значение отсутствует как функция XOR десяти других функций).

Если у вас большой набор функций и большое количество значений, вы получите ложные корреляции из-за случайности. Кроме обычных способов справиться с этим (набор проверки, достаточно высокий порог) Вы можете проверить, являются ли корреляции симметричными и транзитивными. Если это так, то, скорее всего, они правдивы, и вам следует дополнительно их проверить.

Dal
источник
1

Метод, который я использую, представляет собой теневую матрицу, в которой набор данных состоит из переменных индикатора, где 1 дается, если значение присутствует, и 0, если его нет. Сопоставляя их друг с другом и с исходными данными, можно определить, как правило, отсутствуют переменные (MAR) или нет (MCAR). Используя Rдля примера (заимствование из книги «R в действии» Роберта Kabacoff):

#Load dataset
data(sleep, package = "VIM")

x <- as.data.frame(abs(is.na(sleep)))

#Elements of x are 1 if a value in the sleep data is missing and 0 if non-missing.
head(sleep)
head(x)

#Extracting variables that have some missing values.
y <- x[which(sapply(x, sd) > 0)]
cor(y)

#We see that variables Dream and NonD tend to be missing together. To a lesser extent, this is also true with Sleep and NonD, as well as Sleep and Dream.

#Now, looking at the relationship between the presence of missing values in each variable and the observed values in other variables:
cor(sleep, y, use="pairwise.complete.obs")

#NonD is more likely to be missing as Exp, BodyWgt, and Gest increases, suggesting that the missingness for NonD is likely MAR rather than MCAR.
Фил
источник
1
В VIM вы также можете проверить спиноплоты. Они дают гистограмму двух переменных с отсутствием в каждой. Мы можем построить две переменные и посмотреть, как отсутствие в одной меняется в зависимости от другой. Например, если мы построим график времени выживания и назначения лечения, если мы увидим правильное искаженное распределение пропусков, мы можем утверждать, что более низкие времена выживания связаны с большим отсутствием ... то есть, что пропадание в лечении - это MAR, поскольку оно зависит от наблюдаемое переменное время выживания.
RayVelcoro
1
Вопрос спрашивает о MAR против MNAR, но ваш ответ о MCAR против MAR. MCAR полностью отличается от MNAR.
Тим
@Tim Как AdamO заявил в комментарии под вопросом, OP означало MAR против MCAR.
Фил