Kontekst : regresja hierarchiczna z pewnymi brakującymi danymi.
Pytanie : Jak wykorzystać oszacowanie maksymalnego prawdopodobieństwa (FIML) pełnej informacji w celu usunięcia brakujących danych w R? Czy polecasz pakiet i jakie są typowe kroki? Bardzo pomocne byłyby również zasoby i przykłady online.
PS : Jestem socjologiem, który niedawno zaczął używać R. Wielokrotna imputacja jest opcją, ale naprawdę podoba mi się, jak elegancko programy takie jak Mplus radzą sobie z brakującymi danymi za pomocą FIML. Niestety Mplus nie wydaje się w tej chwili porównywać modeli w kontekście regresji hierarchicznej (proszę daj mi znać, jeśli znasz sposób, aby to zrobić!). Zastanawiałem się, czy w R jest coś podobnego? Wielkie dzięki!
r
maximum-likelihood
missing-data
Sootica
źródło
źródło
Odpowiedzi:
Podziękowania dla tej odpowiedzi należą do @Joshua, który udzielił niesamowitej odpowiedzi, gdy opublikowałem to pytanie w społeczności R i Statistics w Google+. Po prostu wklejam jego odpowiedź poniżej.
Aby uruchomić regresję (bez ukrytego modelowania zmiennych), przeczytaj moje notatki wpisane po cytowanym tekście.
Oznacza to, że jeśli wszystkie zmienne z brakami są ciągłe, lavaan pakiet do modelowania równań strukturalnych (SEM) jest przydatny dla FIML w R.
Wracając do mojego początkowego pytania. Moim zamiarem było magiczne naprawienie zaginięcia podczas regresji liniowej. Wszystkie moje zmienne, których brakowało, były ładne i ciągłe. Więc zacząłem przeprowadzać analizy w dwóch stylach:
Brakowało mi wielu rzeczy, wykonując regresję w stylu SEM. Oba style dały podobne współczynniki i kwadraty R, ale w stylu SEM nie dostałem testu istotności regresji (typowe wartości F z df), zamiast tego otrzymałem wskaźniki dopasowania, które nie były pomocne, ponieważ wykorzystałem wszystkie moje stopnie wolności. Również gdy jeden model miał większy R2 od drugiego, nie mogłem znaleźć sposobu na porównanie, czy różnica była znacząca. Ponadto wykonywanie regresji w zwykły sposób daje dostęp do szeregu testów dla nieocenionych założeń regresji. Aby uzyskać bardziej szczegółową odpowiedź na ten temat, zobacz moje inne pytanie, na które dobrze odpowiedziała @StasK .
Wniosek wydaje się zatem taki, że lavaan jest przyzwoitym pakietem dla FIML w R, jednak użycie FIML zależy od założeń statystycznych i rodzaju przeprowadzanej analizy. Jeśli chodzi o regresję (bez ukrytego modelowania zmiennych), trzymanie jej z dala od programów SEM i stosowanie wielokrotnej imputacji jest prawdopodobnie mądrym posunięciem.
źródło
Jeśli chodzi o twoje pytanie FIML, pomyślałem, że podzielę się tym wspaniałym artykułem SAS autorstwa Paula Allisona http://www.statistichorizons.com/wp-content/uploads/MissingDataByML.pdf
Biorąc pod uwagę komentarze Paula Allisona, można łatwo zaimplementować tę samą procedurę w R, używając lme lub nlmer.
źródło
istnieją 2 główne sposoby postępowania z brakującymi danymi / rekordami. U albo usuń cały wiersz obserwacji, który ma brakującą wartość, albo znajdziesz sposób na wygenerowanie tej brakującej wartości. Jeśli zastosujesz pierwsze podejście, możesz stracić dużo danych. W drugim podejściu musisz znaleźć „sprytny” sposób na wygenerowanie tych brakujących danych, w taki sposób, aby oszacowania parametrów nowego zestawu danych nie różniły się znacznie od oszacowań parametrów obserwowanego zestawu danych.
To drugie podejście nazywa się imputacją danych i robi to kilka pakietów R. Jedna z nich nazywa się mclust, a potrzebna funkcja nazywa się imputeData. Ta funkcja wykorzystuje algorytm EM (maksymalizacja oczekiwań) do oszacowania parametrów nieobserwowanej części zbioru danych, biorąc pod uwagę obserwowaną część. Po znalezieniu parametrów generowany jest nowy punkt danych. Zakłada się, że rozkład brakujących danych, obserwowane dane i cały zestaw danych są Gaussowskie.
Mam nadzieję, że to wyjaśnienie pomoże ci osiągnąć to, co próbujesz zrobić
źródło