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.
Obsługa brakujących danych z maksymalnym prawdopodobieństwem dla wszystkich dostępnych danych (tzw. FIML) jest bardzo przydatną techniką. Istnieje jednak wiele komplikacji, które sprawiają, że wdrożenie go w ogólny sposób jest trudne. Rozważ prosty model regresji liniowej, przewidujący pewne ciągłe wyniki na podstawie wieku, płci i rodzaju zawodu. W OLS nie martwisz się rozkładem wieku, płci i zawodu, tylko wynik. Zazwyczaj dla predyktorów jakościowych są one obojętne (0/1). Aby użyć ML, wymagane są założenia dystrybucyjne dla wszystkich zmiennych z brakami. Zdecydowanie najłatwiejszym podejściem jest wielowymiarowa normalna (MVN). Tak właśnie na przykład zrobi Mplus, jeśli nie wyjdziesz na drogę deklarowania typu zmiennej (np. Kategorialnej). W prostym przykładzie, który podałem, prawdopodobnie chciałbyś założyć, normalny dla wieku, Bernoulli dla seksu i wielomian dla rodzaju pracy. To drugie jest trudne, ponieważ tak naprawdę masz kilka zmiennych binarnych, ale nie chcesz traktować ich jak Bernoulliego. Oznacza to, że nie chcesz pracować ze zmiennymi fikcyjnymi sztucznymi, musisz pracować z rzeczywistą zmienną kategorialną, aby estymatory ML mogły poprawnie korzystać z wielomianu, ale to z kolei oznacza, że sztuczny proces kodowania musi być wbudowany w model , nie dane. Znowu komplikuje życie. Co więcej, wspólny rozkład zmiennych ciągłych i kategorialnych nie jest łatwy do obliczenia (kiedy napotykam takie problemy w Mplusie, dość szybko zaczyna się rozkładać i walczyć). Wreszcie, naprawdę idealnie określasz brakujący mechanizm danych. W stylu SEM, FIML, wszystkie zmienne są zasadniczo uwarunkowane wszystkimi innymi, ale niekoniecznie jest to poprawne. Na przykład może brakuje wieku jako funkcji nie płci i rodzaju zawodu, ale ich interakcji. Interakcja może nie być ważna dla wyniku ogniskowego, ale jeśli jest ważna z powodu braku wieku, to musi być również w modelu, niekoniecznie merytorycznym modelu zainteresowania, ale brakującym modelu danych.
lavaan użyje ML dla MVN, ale obecnie uważam, że kategoryczne opcje danych są ograniczone (znowu pochodzące z pola SEM, jest to standard). Wielokrotna imputacja na początku wydaje się mniej elegancka, ponieważ zawiera wiele ukrytych założeń stojących za FIML (takich jak założenia dystrybucyjne dla każdej zmiennej i model predykcyjny przyjęty dla braku każdej zmiennej). Daje to jednak dużą kontrolę i wyraźne myślenie o rozkładzie każdej zmiennej, a optymalny mechanizm braku danych dla każdej z nich jest cenny.
Coraz bardziej przekonuję się, że modele bayesowskie są sposobem na obsługę brakujących danych. Powodem jest to, że są bardzo elastyczne w uwzględnianiu rozkładów dla każdej zmiennej, pozwalając na wiele różnych rodzajów rozkładów, i mogą łatwo włączyć zmienność wprowadzoną przez brakujące dane w predyktorach do ogólnych oszacowań modelu (co jest sztuczką z wielokrotnym przypisaniem, w którym następnie jakoś połączyć wyniki). Oczywiście metody te nie są najłatwiejsze i mogą wymagać dużo treningu i czasu.
Więc to tak naprawdę nie odpowiada na twoje pytanie, ale wyjaśnia, dlaczego całkowicie ogólne ramy radzenia sobie z zaginięciem są trudne. W moim pakiecie semutils dla macierzy kowariancji używam lavaan pod spodem, aby używać ML. Robię to, ponieważ zakładam dla macierzy kowariancji wariancji, że i tak używasz zmiennych ciągłych, więc zakładam, że moi użytkownicy już zakładają MVN dla swoich danych.
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:
- Zwykły sposób z wielokrotnym przypisaniem
- W stylu SEM z lavaanem za pomocą FIML.
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.