Warum wirft glm.nb nur bei sehr spezifischen Eingaben einen Fehler "fehlender Wert" auf

9

glm.nb löst einen ungewöhnlichen Fehler aus auf bestimmten Eingaben. Es gibt zwar eine Vielzahl von Werten, die diesen Fehler verursachen, aber die Änderung der Eingabe sogar sehr kann den Fehler leicht verhindern.

Ein reproduzierbares Beispiel:

%Vor%

Das Ausführen dieses Codes löst den Fehler aus:

%Vor%

Zuerst nahm ich an, dass dies etwas damit zu tun hat, dass der Algorithmus nicht konvergiert. Ich war jedoch überrascht zu sehen, dass das Ändern der Eingabe sogar sehr leicht den Fehler verhindern kann. Zum Beispiel:

%Vor%

Ich habe festgestellt, dass dieser Fehler bei 19,4% der Samen zwischen 1 und 500 auftritt:

%Vor%

Ich habe nur eine Erwähnung von diesem Fehler irgendwo gefunden ein Thread ohne Antworten.

Was könnte diesen Fehler verursachen und wie kann er behoben werden (außer per Zufall die Eingaben zu permutieren, wenn glm.nb einen Fehler erzeugt?)

ETA: Das Setzen von control=glm.control(maxit=200,trace = 3) stellt fest, dass der theta.ml -Algorithmus bricht, indem er sehr groß wird, dann -Inf wird und dann NaN :

wird %Vor%     
David Robinson 31.07.2012, 22:30
quelle

2 Antworten

5

Es ist ein bisschen grob, aber in der Vergangenheit konnte ich Probleme mit glm.nb umgehen, indem ich auf eine direkte Maximum-Likelihood-Schätzung zurückgriff (d. h. keine cleveren iterativen Schätzalgorithmen wie in glm.nb verwendet)

Einige stochern / Profiling zeigt an, dass die MLE für den Theta-Parameter effektiv unendlich ist. Ich entschied mich dafür, es auf die inverse Skala zu legen, so dass ich eine Grenze bei 0 setzen konnte (eine schickere Version würde eine Log-Likelihood-Funktion einrichten, die zu Poisson bei Theta = Null zurückkehrt, aber das würde den Versuchspunkt rückgängig machen kommen Sie mit einer schnellen, vorbereiteten Lösung).

Bei zwei der obigen schlechten Beispiele funktioniert das einigermaßen gut, obwohl es warnt, dass der Parameter fit an der Grenze ist ...

%Vor%

Das zweite Beispiel ist eigentlich interessanter, weil es numerisch zeigt, dass die MLE für Theta im Wesentlichen unendlich ist, obwohl wir einen großen Datensatz haben, der genau aus negativen Binomialabweichungen erzeugt wird (sonst bin ich etwas verwirrt). ..)

%Vor%     
Ben Bolker 01.08.2012, 02:20
quelle
-1

Ich sehe Ihre Lösung und ich möchte einen Offset mit der Funktion mle2 hinzufügen.

Ich mache diese Funktion:

%Vor%

In diesem Fall wird der Offset-Offset (X1) nicht berücksichtigt

    
Arnaud Cgl 14.02.2018 17:37
quelle

Tags und Links