Статистичний підхід для визначення, якщо дані відсутні випадково


21

У мене є великий набір функціональних векторів, які я буду використовувати для атаки на проблему бінарної класифікації (використовуючи scikit learn in Python). Перш ніж почати замислюватися над імпутацією, мені цікаво спробувати визначити з решти частин даних, чи відсутні дані "випадково відсутні" або відсутні як випадково.

Який розумний спосіб підійти до цього питання?


Очевидно, краще запитати, чи є дані "повністю відсутні випадковим чином" чи ні. Який розумний спосіб це зробити?


Якщо між відсутнім індикатором та будь-якою спостережуваною змінною немає асоціації, механізмом даних про відсутність є MCAR.
Рендел

@Randel Який тест можна застосувати на практиці для перевірки цього?
Лембік

Нічого особливого, ніж кореляційний тест чи регресія.
Рендел

3
Це не те, що ви тестуєте, це те, що ви припускаєте .
Тім

3
Щоб було зрозуміло: відсутність повністю випадково означає, що ймовірність відсутності є постійною, це нічого не залежить. Відсутність навмання означає, що відсутність залежить від деяких вимірюваних факторів, таких як вік чи стать, так що ви можете використовувати деякі моделі для заповнення відсутніх моделей. Відсутність не випадково означає відсутність залежить від речей, які ви не вимірювали. У запитанні OP йдеться про NMAR проти MAR, але OP означає MAR проти MCAR.
АдамО

Відповіді:


8

Інформацію, про яку я говорив, я знайшов у своєму коментарі.

З книги Van Buurens , стор. 31, пише він

"Для тестування MCAR проти MAR було запропоновано кілька тестів. Ці випробування широко не використовуються, і їх практичне значення є незрозумілим. Див. Enders (2010, с. 17–21) для оцінки двох процедур. Тестувати це неможливо. MAR проти MNAR, оскільки інформація, необхідна для такого тесту, відсутня. "


Питання задається щодо MAR проти MNAR, але ваша відповідь - про MCAR проти MAR. MCAR зовсім інший від MNAR.
Тім

Якщо ви можете визначити дані MAR, то цього повинно вистачити. Як каже Бьорн, не можна сказати, чи це MAR / MNAR, але я вважаю, що ця відповідь є хорошим проксі. Якби ви робили тест Ендерса і виявили, що це MCAR, вам не знадобиться імпутація. Якщо ви виявите, що це MAR, тоді ви можете ввести чи чітко подивитись на свої дані, щоб побачити, чи є підстави вважати, що це може бути MNAR.
RayVelcoro

@RayVelcoro Це проблема з ідентифікацією: можливо, для даних NMAR з'явиться MCAR. Тім прав, що NMAR (або навпаки) - це не те, на що ми тестуємось, це те, що ми припускаємо. На ваш погляд про MCAR проти MAR, важливішим є те, що: якщо дані є MCAR, а ви використовуєте методи MAR, чи справді є чистий вплив на дані? Я не думаю, що так. Зважаючи на проникнення, доступність та простоту використання методів MAR, можливо, краще просто скористатися непараметричною процедурою зважування чи імпутації, ніж брати участь у риторичному погоні гусей тестів та тестів.
АдамО

17

Це неможливо, якщо вам не вдалося отримати відсутні дані. Зі спостережуваних даних ви не можете визначити, відсутні дані випадково відсутні (MAR) чи випадково (MNAR). Ви можете лише сказати, чи дані явно не відсутні повністю навмання (MCAR). Крім цього, лише заклик до правдоподібності MCAR або MAR на відміну від MNAR на основі того, що ви знаєте (наприклад, повідомлені причини, чому дані відсутні). Крім того, ви можете стверджувати, що це не має великого значення, оскільки частка відсутніх даних невелика, і за MNAR дуже екстремальні сценарії повинні відбутися, щоб ваші результати були перевернуті (див. "Аналіз переломних точок").


1
Велике спасибі. Який хороший спосіб визначити, чи дані MCAR?
Лембік

@ Björn, вище, можливо, потрібно буде переробити, щоб відобразити істотні асиметрії у тому, що ми можемо дізнатися з даних. Хоча можна підробити гіпотезу про те, що дані є MCAR (а саме, побудувавши модель, яка використовує спостережувані коваріати для врахування деякої частини відсутності), неможливо підтвердити MCAR або будь-яку іншу подібну гіпотезу.
Девід К. Норріс

Гарна думка. Я зробив це зрозуміліше.
Björn

4

Це звучить цілком можливо з точки зору класифікації.

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


2

Ви хочете знати, чи існує якась кореляція значення, пропущеного в функції, та значення будь-яких інших функцій.

Для кожної з функцій створіть нову функцію із зазначенням відсутності значення чи ні (назвемо їх функцією "is_missing"). Обчисліть улюблену міру кореляції (я пропоную використовувати тут взаємну інформацію) особливостей is_missing та інших функцій.

Зауважте, якщо ви не знайдете жодної кореляції між двома ознаками, все одно можлива кореляція через групу функцій (значення відсутнє як функція XOR з десяти інших ознак).

Якщо у вас великий набір функцій і велика кількість значень, ви отримаєте помилкові кореляції через випадковість. Окрім звичайних способів впоратися з цим (набір валідації, достатньо високий поріг) Ви можете перевірити, чи є кореляції симетричними та перехідними. Якщо вони є, цілком імовірно, що вони правдиві, і вам слід їх додатково перевірити.


1

Я використовую метод - тіньова матриця, в якій набір даних складається з змінних індикаторів, де дається 1, якщо значення присутнє, і 0, якщо його немає. Співвіднесення цих даних між собою та вихідними даними може допомогти визначити, чи змінні, як правило, відсутні, разом (MAR) чи ні (MCAR). Використовуючи Rдля прикладу (запозичення з книги "R в дії" Роберта Кабакоффа):

#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 ви також можете перевірити спіноплоти. Вони дають гістограму з двох змінних із відсутністю в кожній. Ми можемо побудувати дві змінні та побачити, як відсутність в одній змінюється в іншій. Наприклад, якщо ми побудуємо час виживання та призначення лікування, якщо ми побачимо правильний перекошений розподіл відсутності, ми можемо стверджувати, що менші терміни виживання пов'язані з більшою відсутністю ... тобто, що відсутність у лікуванні є МАР, оскільки це залежить від спостерігали змінний час виживання.
RayVelcoro

1
Питання задається щодо MAR проти MNAR, але ваша відповідь - про MCAR проти MAR. MCAR зовсім інший від MNAR.
Тім

@Tim Як сказав AdamO в коментарі під запитанням, ОП означав MAR проти MCAR.
Філ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.