Максимальна вірогідність повної інформації щодо відсутніх даних у R


19

Контекст : Ієрархічна регресія з деякими відсутніми даними.

Питання : Як я можу використовувати оцінку максимальної ймовірності повної інформації (FIML) для адреси відсутніх даних у R? Чи є пакет, який ви б рекомендували, і які типові кроки? Інтернет-ресурси та приклади також були б дуже корисними.

PS : Я соціальний вчений, який нещодавно почав використовувати Р. Багаторазова імпутація - це варіант, але мені дуже подобається, як елегантно такі програми, як Mplus, обробляють відсутні дані за допомогою FIML. На жаль, Mplus, схоже, не порівнює моделі в контексті ієрархічної регресії на даний момент (будь ласка, повідомте мене, якщо ви знаєте спосіб зробити це!). Мені було цікаво, чи є щось подібне в R? Велике дякую!


1
Ви розглядали WinBugs ? Він обробляє відсутні дані бездоганно природним чином.
Майк Данлаве

Альтернативою WinBUGS є OpenBUGS або STAN. Вони повинні бути більш дружніми для Mac.
Максим.К

Відповіді:


16

Подяки цій відповіді належить Подяка @Joshua, який дав приголомшливу відповідь, коли я опублікував це питання на адресу спільноті R та Statistics у Google+. Я просто вставляю його відповідь нижче.

Для запуску регресії (без прихованого змінного моделювання), будь ласка, прочитайте мої нотатки, введені після тексту цитованих.

Поводження з відсутніми даними з максимальною ймовірністю за всіма доступними даними (так званий FIML) - дуже корисна методика. Однак існує низка ускладнень, які ускладнюють їх здійснення загальним чином. Розглянемо просту лінійну регресійну модель, передбачивши деякий постійний результат від скажімо віку, статі та типу занять. В OLS ви не турбуєтесь про розподіл віку, статі та професії, лише результат. Зазвичай для категоричних прогнозів вони кодуються фіктивним кодом (0/1). Для використання ML потрібні припущення щодо розподілу для всіх змінних з відсутністю. На сьогодні найпростіший підхід - багатоваріантний нормальний (MVN). Це те, що, наприклад, зробить Mplus за замовчуванням, якщо ви не виходите для того, щоб оголосити тип змінної (наприклад, категоричну). У простому прикладі, який я наводив, ви, напевно, хочете припустити, що це нормально для віку, Бернуллі для сексу та багаточлен для типу роботи. Останнє є складним, оскільки у вас є декілька бінарних змінних, але ви не хочете трактувати їх як Бернуллі. Це означає, що ви не хочете працювати з макетними кодованими змінними, вам потрібно працювати з фактичною категоріальною змінною, щоб оцінювачі ML могли правильно використовувати багаточлен, але це, в свою чергу, означає, що процес кодування манекена потрібно вбудовувати в модель , а не дані. Знову ускладнює життя. Крім того, спільний розподіл безперервних і категоричних змінних є нетривіальним для обчислення (коли я стикаюся з такими проблемами в Mplus, він досить швидко починає руйнуватися і боротися). Нарешті, ви дійсно ідеально вказуєте механізм відсутності даних. У стилі SEM, FIML, всі змінні по суті обумовлені усіма іншими, але це не обов'язково правильно. Наприклад, можливо, вік відсутній як функція не за статтю та типом занять, а від їх взаємодії. Взаємодія може бути не важливою для головного результату, але якщо вона важлива для відсутності віку, то вона також повинна бути в моделі, не обов'язково по суті, яка представляє інтерес, але відсутня модель даних.

lavaan використовуватиме ML для MVN, але в даний час я вважаю, що параметри категоричних даних обмежені (знову ж таки надходить із поля SEM, це стандарт). Множинна імпутація спочатку здається менш елегантною, оскільки вона робить явні безліч прихованих припущень, що стоять за FIML (наприклад, припущення щодо розподілу для кожної змінної та прогнозована модель, яка передбачається відсутністю кожної змінної). Однак це дає багато контролю та чітко замислюється над розподілом кожної змінної, і оптимальний механізм відсутніх даних для кожної є цінним.

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

Таким чином, це насправді не відповідає вашому запитанню, але трохи пояснює, чому повністю загальні рамки боротьби з відсутністю є складними. У своєму пакеті semutils для коваріаційних матриць я використовую лаваан під ним, щоб використовувати ML. Я роблю це, тому що я вважаю, що для матриці коваріації дисперсії ви все одно використовуєте безперервні змінні, так що я вважаю, що мої користувачі вже приймають MVN для своїх даних.

Це означає, що якщо всі змінні з відсутністю є безперервними, лаванськими , пакет для моделювання структурних рівнянь (SEM) є приємним для використання для FIML в R.

Тепер повернусь до мого початкового питання. Мій намір полягав у тому, щоб мати магічне виправлення відсутності під час лінійної регресії. Всі мої змінні з відсутніми були приємними та безперервними. Тож я продовжував виконувати свої аналізи у двох стилях:

  • Звичайний спосіб з багаторазовою імпутацією
  • У стилі SEM з лаваном за допомогою FIML.

Мені не вистачало багато речей, роблячи регресію в стилі SEM. Обидва стилі давали подібні коефіцієнти та R квадрати, але в стилі SEM я не отримав тестування на регресію (типові значення F з df), замість цього я отримав відповідні показники, які не були корисними, оскільки я використовував усі мої ступені свободи. Також, коли одна модель мала більший R2, ніж інша, я не міг знайти спосіб порівняти, чи була різниця суттєвою. Крім того, звичайний спосіб регресії дає доступ до ряду тестувань на припущення про регресію, які є неоціненними. Для більш детальної відповіді на це питання дивіться моє інше питання, на яке добре відповів @StasK .

Тому висновок здається, що lavaan є гідним пакетом для FIML в R, але використання FIML залежить від статистичних припущень та типу аналізу, який проводиться. Що стосується регресії (без латентного змінного моделювання), то, мабуть, розумним кроком є ​​утримання від програм SEM та використання багаторазової імпутації.



-3

Є 2 основні способи обробки відсутніх даних / записів. Ви або видаліть весь рядок спостереження, у якого відсутнє значення, або ви знайдете спосіб генерувати це відсутнє значення. Якщо ви скористаєтесь першим підходом, то, можливо, ви втратите багато даних. У другому підході ви повинні знайти "розумний" спосіб генерування цих відсутніх даних таким чином, що оцінки параметрів нового набору даних не сильно відрізняються від оцінок параметрів спостережуваного набору даних.

Цей другий підхід називається Імпутація даних, і для цього є кілька пакетів R. Один з них називається mclust, а потрібна вам функція називається imputeData. Ця функція використовує алгоритм ЕМ (максимізація очікування) для оцінки параметрів незабезпеченої частини набору даних з урахуванням спостережуваної частини. Після виявлення параметрів створюється нова точка даних. Припущення про розподіл відсутніх даних, спостережуваних даних та всього набору даних вважається гауссовим.

Сподіваюся, що це пояснення допоможе вам досягти того, що ви намагаєтеся зробити


Спасибі. Я знаю про пакети для багаторазової імпутації, але хотів би дізнатися, чи існує порівняно простий спосіб зробити максимальну оцінку ймовірності.
Sootica

Функція ймовірності не визначається, коли зразок, x, відсутній. Так що я думаю, ви можете шукати те, чого не існує.
Лалас

2
Дивіться цей документ для пояснення використання максимально ймовірних підходів до відсутніх даних ( Allison, 2012 ). Те, що описує ОП, існує.
Andy W

2
І ось щось із SAS про це. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/… Я ніколи нічого не бачив у Р.
Джеремі Майлз

Дякую @JeremyMiles, я щойно опублікував те, що допомогло мені у відповіді на це питання, подумав, що й інші можуть вважати це корисним. PS. Книга R, яку ви написали з Енді Філдом, є приголомшливою !! : D
Sootica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.