Frage:
Keine gültigen Koeffizienten für die NegBin-Regression
Daniel Standage
2010-12-13 23:06:53 UTC
view on stackexchange narkive permalink

Ich mache eine multiple Regression mit einigen Daten (5 Prädiktoren, 1 Antwort). Da die Antwort diskret und nicht negativ ist, dachte ich, ich würde die Poisson-Regression versuchen. Die Daten sind jedoch erheblich überstreut (Varianz> Mittelwert), daher versuche ich jetzt eine negative binomiale Regression.

Ich konnte das Modell mit diesem Code anpassen.

  Bibliothek (MASS) model.nb <-glm.nb (Antwort ~ Pred1 + Pred2 + Pred3 + Pred4 + Pred5 - 1, Daten = d)  

Jetzt möchte ich sehen, ob ich kann eine bessere Anpassung erhalten, indem Interaktionen zwischen den Prädiktoren einbezogen werden. Wenn ich dies versuche, wird jedoch der folgende Fehler angezeigt:

  > model.nb.intr <glm.nb (Antwort ~ Pred1 * Pred2 * Pred3 * Pred4 * Pred5 - 1 , data = d) Fehler: Es wurde kein gültiger Satz von Koeffizienten gefunden: Bitte geben Sie die Startwerte an.  

Irgendwelche Ideen, was dies verursachen könnte?

Drei antworten:
#1
+10
Aniko
2010-12-13 23:57:44 UTC
view on stackexchange narkive permalink

Bevor Sie zu einem Modell springen, das alle Interaktionen enthält, können Sie versuchen, nur die bidirektionalen Interaktionen hinzuzufügen:

  model.nb.intr <-glm.nb (Antwort ~ (Pred1 +) Pred2 + Pred3 + Pred4 + Pred5) ^ 2 - 1, Daten = d)  
etwas einfacher wäre: `Antwort ~. ^ 2 -1, Daten = DF`, aber ausgezeichneter Punkt!
Ok, habe den Code basierend auf diesem Vorschlag ausgeführt und jetzt habe ich den Fehler "Warnung beim Anpassen von Theta: Wechselgrenze erreicht". Was ist die Wechselgrenze und wie gehe ich damit um?
Wie auf der Hilfeseite "glm.nb" beschrieben: "Es wird ein alternierender Iterationsprozess verwendet. Für gegebenes Theta wird das GLM nach dem gleichen Verfahren wie bei glm () angepasst. Für feste Mittelwerte wird der Theta-Parameter unter Verwendung von score und geschätzt Informationsiterationen. Die beiden werden bis zur Konvergenz beider abgewechselt. " Ihr Modell konvergiert nicht (Sie haben das Maximum der Theta-Iterationen erreicht). Sie können versuchen, den Parameter `trace` festzulegen, um zu sehen, was los ist. Oder Sie könnten ein anderes Paket verwenden - ich glaube, VGAM könnte einen anderen Algorithmus verwenden.
#2
+9
Gavin Simpson
2010-12-13 23:33:49 UTC
view on stackexchange narkive permalink

Ihr Modell ist zu komplex, als dass der Computer einige vernünftige Startwerte ermitteln könnte, die bei den glm.fit -Iterationen nicht zu unendlichen Abweichungen führen.

Haben Sie genug Daten, um all diese Wechselwirkungen abzuschätzen? Halten Sie es für plausibel, dass alle Prädiktoren miteinander interagieren? Wenn nicht, überlegen Sie, welche Prädiktoren interagieren könnten, und schließen Sie nur diese Begriffe ein.

Der Fehler fordert Sie auf, einige Startwerte anzugeben, damit es funktioniert. Dazu müssen Sie einen Vektor mit Parameterwerten als Argument start angeben. from ? glm :

  start: Startwerte für die Parameter im linearen Prädiktor.  

Sie müssen 31 Modelle angeben Parameter (ich hoffe, Sie haben viele 1000 Datenpunkte?) zum Start in dieser Reihenfolge:

  >-Spaltennamen (model.matrix (Y ~ Pred1 * Pred2 *) Pred3 * Pred4 * Pred5 -1, Daten = DF)) [1] "Pred1" "Pred2" [3] "Pred3" "Pred4" [5] "Pred5" "Pred1: Pred2" [7] "Pred1: Pred3" "Pred2: Pred3" [9] "Pred1: Pred4" "Pred2: Pred4" [11] "Pred3: Pred4" "Pred1: Pred5" [13] "Pred2: Pred5" "Pred3: Pred5" [15] "Pred4: Pred5 Pred1: Pred2: Pred3 [17] Pred1: Pred2: Pred4 Pred1: Pred3: Pred4 [19] Pred2: Pred3: Pred4 Pred1: P. red2: Pred5 "[21]" Pred1: Pred3: Pred5 "" Pred2: Pred3: Pred5 "[23]" Pred1: Pred4: Pred5 "" Pred2: Pred4: Pred5 "[25]" Pred3: Pred4: Pred5 "" Pred1 : Pred2: Pred3: Pred4 "[27]" Pred1: Pred2: Pred3: Pred5 "" Pred1: Pred2: Pred4: Pred5 "[29]" Pred1: Pred3: Pred4: Pred5 "" Pred2: Pred3: Pred4: Pred5 "[ 31] "Pred1: Pred2: Pred3: Pred4: Pred5"  

Ich würde die Coefs aus dem ersten Modell verwenden, um die ersten 5 Startwerte einzugeben, und dann liegt es an Ihnen, was Sie mit den anderen tun. Sie könnten versuchen, sie alle bei 1 zu starten und zu prüfen, ob das Modell dadurch passt?

Sie könnten auch von Code im Paket pscl a profitieren > die für Hürden- und Null-Inflationsmodelle geeignet sind, um Daten zu zählen.

Ich habe viele Daten (fast 300.000 Datenpunkte), bin jedoch nicht davon überzeugt, dass zwischen den einzelnen Prädiktoren signifikante Wechselwirkungen bestehen. Ich wollte diese Möglichkeit ausloten, aber ich glaube, ich habe mehr abgebissen, als ich kauen konnte.
@Daniel versuchen Sie es auf jeden Fall, aber Sie müssen einige Ausgangspunkte für den Algorithmus angeben
#3
+3
dave fournier
2010-12-15 04:23:25 UTC
view on stackexchange narkive permalink

Wenn Sie mit R nicht zufrieden sind, können Sie dieses und kompliziertere Modell mit AD Model Builder anpassen, einer kostenlosen Software, die unter http://admb-project.org verfügbar ist. Mit ADMB können Sie die Überdispersion auf verschiedene Weise modellieren, anstatt sich auf das GLM-Paradigma zu beschränken. Ich kann Sie beraten, wenn Sie interessiert sind.

Dave, würde glmmADMB nicht für dieses Problem funktionieren (als Anfang)?
Möglicherweise müssen einige Anpassungen vorgenommen werden. glmmADMB ist für ein gemischtes Negativ-Binomial-Modell vorgesehen. Es wäre ziemlich einfach, es nur für eine negative binomiale Regression zu modifizieren.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...