Ich habe zwei verallgemeinerte lineare Modelle wie folgt erstellt:
%Vor% Ich benutze dann die Funktion anova
:
aber eine Fehlermeldung erhalten:
"Fehler in anova.glmlist (c (Liste (Objekt), Dotarge), Dispersion = Dispersion,:
Modelle wurden nicht alle auf die gleiche Datensatzgröße angepasst "
Was bedeutet das und wie kann ich das beheben? Ich habe attach
den Datensatz am Anfang meines Codes editiert, so dass beide Modelle vom selben Datensatz arbeiten.
Die Hauptursache für diesen Fehler ist, wenn in einer oder mehreren Prädiktorvariablen Werte fehlen. In neueren Versionen von R besteht die Standardaktion darin, alle Zeilen auszulassen, für die Werte fehlen (der vorherige Standard sollte einen Fehler erzeugen). Wenn zum Beispiel der Datenrahmen 100 Zeilen hat und es einen fehlenden Wert in X3 gibt, wird Ihr Modell glm1 an 99 Datenzeilen angepasst (die Zeile wird weggelassen, an der X3 fehlt), aber das glm2-Objekt wird vollständig angepasst 100 Zeilen Daten (da X3 nicht verwendet wird, müssen keine Zeilen gelöscht werden).
Also gibt die Funktion anova
Ihnen einen Fehler, weil die 2 Modelle zu verschiedenen Datensätzen passen (und wie berechnen Sie die Freiheitsgrade usw.).
Eine Lösung besteht darin, einen neuen Datenrahmen zu erstellen, der nur die Spalten enthält, die in mindestens einem Ihrer Modelle verwendet werden, und alle Zeilen mit fehlenden Werten zu entfernen (die Funktion na.omit
oder na.exclude
macht dies möglich) einfach), passen Sie dann beide Modelle an denselben Datenrahmen an, der keine fehlenden Werte enthält.
Andere Optionen wären Werkzeuge für Mehrfachimputation oder andere Möglichkeiten, mit fehlenden Daten umzugehen.
Um den Fehler "models were not all fitted to the same size of dataset"
zu vermeiden, müssen Sie beide Modelle an die genau gleiche Datenmenge anpassen. Es gibt zwei einfache Möglichkeiten, dies zu tun:
data=glm1$model
im 2. Modell passen data=na.omit(orig.data[ , all.vars(formula(glm1))])
im 2. Modell fit Hier ist ein reproduzierbares Beispiel mit lm
(für glm
sollte der gleiche Ansatz funktionieren) und update
:
Siehe auch:
Die Lösung ist zu verwenden:
%Vor%Dies wird R dazu veranlassen, die Fälle mit fehlenden Daten (NA) in das angepasste Modell aufzunehmen. Dies stellt sicher, dass Datensätze in verschiedenen Anpassungsmodellen identisch sind, unabhängig davon, wie fehlende Daten verteilt werden.
Die Ursache wird von Greg Snow gut beschrieben. Eine alternative und sehr einfache Lösung besteht darin, eine neue Variable hinzuzufügen, die den NAs der problematischen Variablen und ansonsten dem Wert 1 entspricht. Wenn beide Modelle eingeschlossen werden, schließt R die gleichen Zeilen in beiden Modellen aus (- & gt; Datasets stimmen überein).