Контекст : иерархическая регрессия с некоторыми отсутствующими данными.
Вопрос : Как использовать оценку максимальной вероятности полной информации (FIML) для устранения пропущенных данных в R? Есть ли пакет, который вы бы порекомендовали, и каковы типичные шаги? Онлайн-ресурсы и примеры также будут очень полезны.
PS : я социолог, который недавно начал использовать R. Многократное вменение - вариант, но мне действительно нравится, как элегантно программы, такие как Mplus, обрабатывают недостающие данные, используя FIML. К сожалению, Mplus, похоже, не сравнивает модели в контексте иерархической регрессии в настоящее время (пожалуйста, дайте мне знать, если вы знаете способ сделать это!). Интересно, есть ли что-нибудь подобное в R? Большое спасибо!
источник
Ответы:
Кредит этого ответа принадлежит @Joshua, который дал потрясающий ответ, когда я разместил этот вопрос в сообществе R and Statistics в Google+. Я просто вставляю его ответ ниже.
Для проведения регрессии (без моделирования скрытых переменных), пожалуйста, прочитайте мои заметки, напечатанные после цитируемого текста.
Это означает, что если все переменные с отсутствием являются непрерывными, lavaan , пакет моделирования структурных уравнений (SEM) является хорошим вариантом для использования в FIML в R.
Теперь вернемся к моему первоначальному вопросу. Мое намерение состояло в том, чтобы иметь магическое исправление отсутствия при выполнении линейной регрессии. Все мои переменные с отсутствующими были хорошими и непрерывными. Итак, я приступил к анализу в двух стилях:
Я скучал по многим вещам, выполняя регрессию в стиле SEM. Оба стиля дали одинаковые коэффициенты и R квадратов, но в стиле SEM я не получил тестирование значимости регрессии (типичные значения F с df), вместо этого я получил подходящие индексы, которые не помогли, так как я использовал все свои степени свободы. Также, когда одна модель имела R2 больше, чем другая, я не мог найти способ сравнить, была ли разница значимой. Кроме того, выполнение регрессии обычным способом дает доступ к куче тестов для предположений о регрессии, которые неоценимы. Для более подробного ответа на этот вопрос см. Мой другой вопрос , на который @StasK приятно ответил .
Таким образом, кажется, что вывод заключается в том, что lavaan является достойным пакетом для FIML в R, но использование FIML зависит от статистических допущений и типа проводимого анализа. Что касается регрессии (без моделирования скрытых переменных), то, вероятно, разумным шагом будет исключение ее из программ SEM и использование множественного вменения.
источник
Что касается вашего вопроса FIML, я решил поделиться этой замечательной статьей SAS Пола Эллисона http://www.statisticalhorizons.com/wp-content/uploads/MissingDataByML.pdf
Учитывая комментарии, сделанные Полом Эллисоном, можно легко реализовать ту же процедуру в R, используя lme или nlmer.
источник
Есть 2 основных способа обработки отсутствующих данных / записей. Либо удалите всю строку наблюдения с отсутствующим значением, либо вы найдете способ создать это отсутствующее значение. Если вы выберете первый подход, вы можете потерять много данных. Во втором подходе вы должны найти «умный» способ генерирования этих пропущенных данных таким образом, чтобы оценки параметров нового набора данных не сильно отличались от оценок параметров наблюдаемого набора данных.
Этот второй подход называется вменением данных, и есть несколько пакетов R, которые делают это. Один из них называется mclust, а нужная вам функция называется imputeData. Эта функция использует алгоритм EM (максимизация ожидания) для оценки параметров ненаблюдаемой части набора данных, учитывая наблюдаемую часть. Как только параметры найдены, генерируется новая точка данных. Предположение о распределении отсутствующих данных, наблюдаемых данных и всего набора данных предполагается гауссовским.
Надеюсь, это объяснение поможет вам добиться того, что вы пытаетесь сделать
источник