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!
quelle
Antworten:
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.
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:
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.
quelle
In Bezug auf Ihre FIML-Frage dachte ich, ich würde dieses wunderbare SAS-Papier von Paul Allison http://www.statisticalhorizons.com/wp-content/uploads/MissingDataByML.pdf teilen
Angesichts der Kommentare von Paul Allison kann man das gleiche Verfahren mit lme oder nlmer problemlos in R implementieren.
quelle
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
quelle