glm Startwerte nicht akzeptiert log-link
Möchte ich laufen eine Gauß-GLM mit log-link und einen offset.
Die folgenden Probleme auftreten:
y <- c(1,1,0,0)
t <- c(5,3,2,4)
Kein problem:
exp(coef(glm(y~1 + offset(log(t)), family=poisson)))
mit family=gaussian
ab Werte müssen angegeben werden, es funktioniert hier:
exp(coef(glm(y~1, family=gaussian(link=log), start=0)))
aber funktioniert hier nicht:
exp(coef(glm(y~1 + offset(log(t)), family=gaussian(link=log), start=0)))
Error in eval(expr, envir, enclos) : cannot find valid starting values: please specify some"
Erkennt jemand, was falsch ist (hoffentlich nur in meinem coding) ?
"funktioniert nicht" ist weniger nützlich, als die eigentliche Fehlermeldung, die lautet "Error in eval(expr, envir, enclos) : cannot find valid starting values: please specify some" ich spielte w/ einige einfache
Meine "very small data set" ist, was die Leute rufen minimal-Beispiel lassen Sie
Ist es nicht, weil Sie versuchen, zu nehmen, melden 0?
Nein, ab dem Wert sollte im linearen Prädiktor Skala, das heißt, es beginnt mit beta_zero=0. Andere Startwerte gleichen Fehler. Frage mich, warum R fragt, für Startwerte, wenn Sie eigentlich angegeben...
Ich war die Bedeutung der Einnahme der log von 0 in die
glm(y~1+offset(junk))
- und alle haben einwandfrei funktioniert. Ich glaube, Sie haben einen sehr kleinen Datensatz und manche eher unwahrscheinlich offsets, so glm einfach nicht finden können, einen Sitz.Meine "very small data set" ist, was die Leute rufen minimal-Beispiel lassen Sie
Ist es nicht, weil Sie versuchen, zu nehmen, melden 0?
Nein, ab dem Wert sollte im linearen Prädiktor Skala, das heißt, es beginnt mit beta_zero=0. Andere Startwerte gleichen Fehler. Frage mich, warum R fragt, für Startwerte, wenn Sie eigentlich angegeben...
Ich war die Bedeutung der Einnahme der log von 0 in die
y
Werte. Versuchen Sie es mit non-zero positive y
und es wird funktionieren, und ohne start
erforderlich.InformationsquelleAutor Andi | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich sieht aus wie
start
nicht anerkannt werden, wennoffset
vorhanden ist. Sie versucht, den log von 0 in diey
Werte, die-Inf
.glm
offensichtlich nicht viel mit diesem, wenn Sie auf der Suche nach einer Lösung ohne etwas Hilfe vonstart
. Eine kleine Störung in Ihremy
Werte erlauben eine Lösung.Nett, danke!
InformationsquelleAutor James
Hier sind die Ergebnisse der Archäologie, die erklärt, was Los ist, tief in die
glm
Funktion:Debuggen (mit
debug("glm")
) und Durchlaufen der Funktion zeigt, dass es nicht bei dem folgenden Aufruf:Dies ist ein Versuch zur Berechnung der null-deviance für das Modell. Es ist nur dann ausgewertet, wenn es ein intercept-Begriff und eine offset-Begriff (ich bin mir nicht sicher, warum; kann es sein, dass die Standard-null-Abweichung, berechnet durch den vorherigen Aufruf von
glm
ist falsch in diesem Fall und müssen neu berechnet werden?). Es fordertglm.fit
(der Standardwertmethod
), aber ohne ab-Werte, denn diese sind in der Regel nicht für die intercept-only-Modell.Nun Debuggen innerhalb
glm.fit
zu sehen, was passiert: wir bekommen zuund wir sehen, dass, weil die Start-Werte waren nicht durchkam, weil eine log-link verwendet wird, und weil einige
y
Werte sind gleich null, die Passform ausfällt. Dies ist also ein Fall, der passieren soll, wenn (und nur wenn?) eine offset-und eine abzufangen, werden beide angegeben, wird ein log-link verwendet wird, und es gibt null-Werte in der Antwort.Wenn Sie
dump("glm",file="glmtemp.R")
; fügen Sie die Zeileauf den Anruf passt, dass die null-Abweichung (d.h. die oben dargestellt); und
source("glmtemp.R")
, es scheint zu funktionieren OK ... ich denke dies sollte eine angemessene Allgemeine Lösung. Wenn jemand will, um zu bringen, dieses Problem bis auf die R-Liste der Entwickler, fühlen Sie sich frei.Ich habe keine Zeit zu Graben, durch diese, aber warum würden Sie erwarten, dass Sie die gleiche sein? Ich denke, es ist ein besonderer Fall, der nicht-offset-Modelle sind identisch ... ich würde nur funktionieren durch die definition des Modells Schritt für Schritt (d.h. finden, die minimale erwartete Varianz gewichtete Summe der Quadrate auf der link-scale, mit oder ohne offset)
InformationsquelleAutor Ben Bolker