Vollständige Informationen maximale Wahrscheinlichkeit für fehlende Daten in R

18

Kontext : Hierarchische Regression mit einigen fehlenden Daten.

Frage : Wie verwende ich die FIML-Schätzung (Full Information Maximum Likelihood), um fehlende Daten in R zu beheben? Gibt es ein Paket, das Sie empfehlen würden, und was sind typische Schritte? Auch Online-Ressourcen und Beispiele wären sehr hilfreich.

PS : Ich bin ein Sozialwissenschaftler, der vor kurzem mit R begonnen hat. Multiple Imputation ist eine Option, aber ich mag es wirklich, wie elegant Programme wie Mplus mit fehlenden Daten mit FIML umgehen. Leider scheint Mplus derzeit keine Modelle im Kontext der hierarchischen Regression zu vergleichen (bitte lassen Sie mich wissen, ob Sie einen Weg dazu kennen!). Ich fragte mich, ob es etwas Ähnliches in R gibt? Danke vielmals!

Sootica
quelle
1
Haben Sie WinBugs in Betracht gezogen ? Fehlende Daten werden auf natürliche Weise behandelt.
Mike Dunlavey
Eine Alternative zu WinBUGS ist OpenBUGS oder STAN. Diese sollten Mac-freundlicher sein.
Maxim.K

Antworten:

15

Der Verdienst dieser Antwort geht an @Joshua , der eine großartige Antwort gegeben hat, als ich diese Frage in der R and Statistics-Community auf Google+ gepostet habe . Ich füge einfach seine Antwort unten ein.

Um eine Regression durchzuführen (ohne latente Variablenmodellierung), lesen Sie bitte meine Notizen, die nach dem zitierten Text eingegeben wurden.

Die Behandlung fehlender Daten mit maximaler Wahrscheinlichkeit für alle verfügbaren Daten (sogenannte FIML) ist eine sehr nützliche Technik. Es gibt jedoch eine Reihe von Komplikationen, die eine allgemeine Implementierung erschweren. Stellen Sie sich ein einfaches lineares Regressionsmodell vor, das ein kontinuierliches Ergebnis anhand von Alter, Geschlecht und Berufstyp vorhersagt. Bei OLS kümmern Sie sich nicht um die Verteilung von Alter, Geschlecht und Beruf, sondern nur um das Ergebnis. Typischerweise sind sie für kategoriale Prädiktoren Dummy-codiert (0/1). Um ML zu verwenden, sind Verteilungsannahmen für alle fehlenden Variablen erforderlich. Der mit Abstand einfachste Ansatz ist das multivariate Normal (MVN). Dies ist zum Beispiel die Standardeinstellung von Mplus, wenn Sie nicht versuchen, den Variablentyp (z. B. kategorial) zu deklarieren. In dem einfachen Beispiel, das ich gegeben habe, Sie möchten wahrscheinlich annehmen, dass Bernoulli für das Alter, Bernoulli für das Geschlecht und multinomal für den Jobtyp ist. Letzteres ist schwierig, da Sie tatsächlich mehrere Binärvariablen haben, diese aber nicht als Bernoulli behandeln möchten. Dies bedeutet, dass Sie nicht mit den Dummy-codierten Variablen arbeiten möchten. Sie müssen mit der tatsächlichen kategorialen Variablen arbeiten, damit die ML-Schätzer ein Multinomial verwenden können. Dies bedeutet jedoch, dass der Dummy-Codierungsprozess in das Modell integriert werden muss , nicht die Daten. Das Leben wieder komplizieren. Darüber hinaus ist die gemeinsame Verteilung kontinuierlicher und kategorialer Variablen nicht einfach zu berechnen (wenn ich in Mplus auf Probleme wie diese stoße, beginnt sie ziemlich schnell zusammenzubrechen und zu kämpfen). Schließlich spezifizieren Sie den fehlenden Datenmechanismus wirklich ideal. Im SEM-Stil, FIML, Alle Variablen sind im Wesentlichen von allen anderen abhängig, dies ist jedoch nicht unbedingt korrekt. Zum Beispiel fehlt vielleicht das Alter als Funktion nicht des Geschlechts und des Berufstyps, sondern ihrer Interaktion. Die Interaktion ist möglicherweise nicht wichtig für das Fokusergebnis, aber wenn sie für das Fehlen des Alters wichtig ist, muss sie auch im Modell vorhanden sein, nicht unbedingt im inhaltlichen Modell von Interesse, sondern im fehlenden Datenmodell.

Lavaan wird ML für MVN verwenden, aber derzeit glaube ich, dass die kategorialen Datenoptionen begrenzt sind (ebenfalls aus dem SEM-Bereich, dies ist Standard). Die multiple Imputation scheint zunächst weniger elegant zu sein, da sie viele versteckte Annahmen hinter FIML explizit macht (wie etwa Verteilungsannahmen für jede Variable und das Vorhersagemodell, das für das Fehlen jeder Variablen angenommen wird). Es gibt Ihnen jedoch viel Kontrolle und ermöglicht Ihnen ein explizites Nachdenken über die Verteilung jeder Variablen, und der optimale Mechanismus für fehlende Daten für jede Variable ist wertvoll.

Ich bin immer mehr davon überzeugt, dass Bayes'sche Modelle der Weg sind, mit fehlenden Daten umzugehen. Der Grund dafür ist, dass sie sehr flexibel Verteilungen für jede Variable einbeziehen können, was viele verschiedene Arten von Verteilungen zulässt, und die durch fehlende Daten zu Prädiktoren verursachte Variabilität problemlos in die Gesamtmodellschätzungen einbeziehen können (was der Trick bei der Mehrfachzuschreibung ist, wenn Sie dies tun) dann muss man irgendwie die ergebnisse zusammenfassen). Natürlich sind diese Methoden nicht die einfachsten und erfordern viel Training und Zeit.

Das beantwortet Ihre Frage also nicht wirklich, erklärt aber ein wenig, warum völlig allgemeine Rahmenbedingungen für den Umgang mit Missständen schwierig sind. In meinem semutils-Paket für die Kovarianzmatrizen verwende ich Lavaan darunter, um ML zu verwenden. Ich mache das, weil ich für eine Varianz-Kovarianz-Matrix annehme, dass Sie ohnehin kontinuierliche Variablen verwenden, so dass ich annehme, dass meine Benutzer bereits MVN für ihre Daten annehmen.

Dies bedeutet, dass, wenn alle fehlenden Variablen stetig sind ( Lavaan) , ein Paket zur Strukturgleichungsmodellierung (SEM) für FIML in R hilfreich ist.

Kommen wir nun zu meiner ersten Frage zurück. Meine Absicht war es, eine magische Lösung für das Fehlen zu finden, wenn ich eine lineare Regression durchführe. Alle meine Variablen mit fehlenden waren nett und kontinuierlich. Also habe ich meine Analysen auf zwei Arten durchgeführt:

  • Der übliche Weg mit Mehrfachzuschreibung
  • Im SEM-Stil mit Lavaan unter Verwendung von FIML.

Ich habe viele Dinge übersehen, indem ich eine Regression im SEM-Stil durchgeführt habe. Beide Stile ergaben ähnliche Koeffizienten und R-Quadrate, aber im SEM-Stil erhielt ich keinen Signifikanztest der Regression (die typischen F-Werte mit df), sondern Fit-Indizes, die nicht hilfreich waren, da ich alle meine Grade aufgebraucht hatte der Freiheit. Auch wenn ein Modell ein größeres R2 als ein anderes hatte, konnte ich nicht vergleichen, ob der Unterschied signifikant war. Wenn Sie die Regression auf die übliche Weise durchführen, erhalten Sie darüber hinaus Zugriff auf eine Reihe von Tests für unbezahlbare Regressionsannahmen. Für eine detailliertere Antwort zu diesem Thema siehe meine andere Frage , die von @StasK gut beantwortet wurde .

Die Schlussfolgerung scheint also zu sein, dass Lavaan ein anständiges Paket für FIML in R ist, die Verwendung von FIML jedoch von statistischen Annahmen und der Art der durchgeführten Analyse abhängt. In Bezug auf die Regression (ohne latente Variablenmodellierung) ist es wahrscheinlich ein kluger Schritt, sie aus SEM-Programmen herauszuhalten und multiple Imputation zu verwenden.

Sootica
quelle
-3

Es gibt zwei Möglichkeiten, fehlende Daten / Datensätze zu behandeln. U Löschen Sie entweder die gesamte Beobachtungsreihe, in der ein Wert fehlt, oder finden Sie eine Möglichkeit, diesen fehlenden Wert zu generieren. Wenn Sie den ersten Ansatz wählen, verlieren Sie möglicherweise viele Daten. Im zweiten Ansatz müssen Sie eine "clevere" Methode finden, um diese fehlenden Daten so zu generieren, dass sich die Parameterschätzungen des neuen Datensatzes nicht wesentlich von den Parameterschätzungen des beobachteten Datensatzes unterscheiden.

Dieser zweite Ansatz wird als Datenimputation bezeichnet, und dafür gibt es mehrere R-Pakete. Eine davon heißt mclust, und die von Ihnen benötigte Funktion heißt imputeData. Diese Funktion verwendet den EM-Algorithmus (Expectation Maximization), um die Parameter des nicht beobachteten Teils des Datensatzes unter Berücksichtigung des beobachteten Teils zu schätzen. Sobald die Parameter gefunden wurden, werden die neuen Datenpunkte generiert. Die Verteilungsannahme der fehlenden Daten, der beobachteten Daten und des gesamten Datensatzes wird als Gauß'sch angenommen.

Hoffe, diese Erklärung hilft dir, das zu erreichen, was du versuchst zu tun

Lalas
quelle
Vielen Dank. Ich kenne Pakete für die Mehrfachzuschreibung, würde aber gerne wissen, ob es einen relativ einfachen Weg gibt, die maximale Wahrscheinlichkeit abzuschätzen.
Sootica
Die Wahrscheinlichkeitsfunktion ist nicht definiert, wenn die Stichprobe x fehlt. Also, ich denke, du suchst vielleicht nach etwas, das es nicht gibt.
Lalas
2
In diesem Artikel finden Sie eine Erklärung zur Verwendung von Maximum-Likelihood-Ansätzen für fehlende Daten ( Allison, 2012 ). Was das OP beschreibt, existiert.
Andy W
2
Und hier ist etwas von SAS darüber. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/... Ich habe noch nie etwas in R. gesehen
Jeremy Miles
Danke @JeremyMiles, ich habe gerade geschrieben, was mir bei der Beantwortung dieser Frage geholfen hat, dachte, andere könnten es auch hilfreich finden. PS. Das R-Buch, das du mit Andy Field geschrieben hast, ist großartig !! : D
Sootica