R Fehler, der besagt "Modelle wurden nicht alle auf die gleiche Datensatzgröße angepasst"

8

Ich habe zwei verallgemeinerte lineare Modelle wie folgt erstellt:

%Vor%

Ich benutze dann die Funktion anova :

%Vor%

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.

    
REnthusiast 22.08.2013, 17:39
quelle

5 Antworten

9

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.

    
Greg Snow 22.08.2013 18:17
quelle
3

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:

  • verwenden Sie entweder data=glm1$model im 2. Modell passen
  • oder rufen Sie das korrekt unterteilte Dataset auf, indem Sie data=na.omit(orig.data[ , all.vars(formula(glm1))]) im 2. Modell fit
  • verwenden

Hier ist ein reproduzierbares Beispiel mit lm (für glm sollte der gleiche Ansatz funktionieren) und update :

%Vor%

Siehe auch:

landroni 24.05.2016 14:20
quelle
1

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.

    
Deleet 19.07.2015 01:07
quelle
0

Ich vermute, dass du schreiben wolltest:

%Vor%

Die Formelschnittstelle für R-Regressionsfunktionen erkennt Kommas nicht als Hinzufügen von Kovariaten zum RHS der Formel. Und verwende nicht attach() ; Verwenden Sie das Datenargument für Regressionsfunktionen.

    
42- 22.08.2013 19:01
quelle
0

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).

    
cpt. couteau 03.07.2017 11:56
quelle

Tags und Links