GLM-Funktion in R mit log-link nicht funktioniert

Ich bin über das Buch "Generalisierte Lineare Modelle und Erweiterung" von Hardin und Hilbe (second edition, 2007) in dem moment. Die Autoren schlagen vor, dass anstelle der OLS-Modelle", die log-link wird in der Regel für response-Daten, die nur positive Werte auf einer kontinuierlichen Skala". Natürlich zeigen Sie auch, residual-plots zu überprüfen, ob ein "normales" lineares Modell unter einer Identität verknüpfen kann weiterhin verwendet werden.

Ich versuche zu replizieren, in der R, was Sie tun, das Buch in STATA. In der Tat, ich habe keine Probleme in STATA mit dem link anmelden. Jedoch beim Aufruf des gleichen Modells mit R glm-Funktion, aber die Angabe family=gaussian(link="log") ich bin gebeten Startwerte. Wenn ich Sie alle gleich null, ich bekomme immer die Meldung, dass der Algorithmus nicht konvergieren. Kommissionierung anderen Werte wird die Nachricht manchmal, aber mehr oft bekomme ich:

Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  :
     NA/NaN/Inf in 'x'

Wie gesagt, in STATA ich kann diese Modelle ohne Einstellung der Startwerte und ohne Fehler. Ich habe versucht, viele verschiedene Modelle und unterschiedliche Datensätze, aber das problem ist immer der gleiche (es sei denn, ich enthalten nur eine einzelne unabhängige variable). Könnte mir jemand sagen, warum dies der Fall ist, oder was ich falsch mache, oder warum die vorgeschlagenen Modelle aus dem Buch vielleicht nicht geeignet sein? Ich würde schätzen jede Hilfe, danke!

Edit: Als ein Beispiel, das den Fehler reproduziert betrachten Sie den Datensatz heruntergeladen werden kann hier. Mit diesem dataset geladen ist, führe ich das folgende Modell:

mod <- glm(betaplasma ~ age + vituse, family=gaussian(link="log"), data=data2, start=c(0,0,0))

Diese erzeugt die Warnmeldung, dass der Algorithmus nicht konvergieren.

Edit2: ich wurde gebeten, auch die STATA-output für das Modell. Hier ist es:

. glm betaplasma age vituse, link(log)

Iteration 0:   log likelihood = -2162.1385  
Iteration 1:   log likelihood = -2096.4765  
Iteration 2:   log likelihood = -2076.2465  
Iteration 3:   log likelihood = -2076.2244  
Iteration 4:   log likelihood = -2076.2244  

Generalized linear models                          No. of obs      =       315
Optimization     : ML                              Residual df     =       312
                                                   Scale parameter =  31384.51
Deviance         =  9791967.359                    (1/df) Deviance =  31384.51
Pearson          =  9791967.359                    (1/df) Pearson  =  31384.51

Variance function: V(u) = 1                        [Gaussian]
Link function    : g(u) = ln(u)                    [Log]

                                                   AIC             =  13.20142
Log likelihood   = -2076.224437                    BIC             =   9790173

------------------------------------------------------------------------------
             |                 OIM
  betaplasma |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         age |   .0056809   .0032737     1.74   0.083    -.0007354    .0120972
      vituse |   -.273027   .0650773    -4.20   0.000    -.4005762   -.1454779
       _cons |   5.467577   .2131874    25.65   0.000     5.049738    5.885417
------------------------------------------------------------------------------
dies ist cross-gepostet von R-Hilfe . Ich wollte Antwort ... crossposting ist nicht explizit verboten, aber zumindest sollten Sie erwähnen, dass Sie cross-posting. glm kann gut sein, mehr zerbrechlich als Stata - glm-fitting-code, aber ich haben link anmelden erfolgreich viele Male in der Vergangenheit. Kannst du ein reproduzierbares Beispiel [ tinyurl.com/reproducible-000 ] ?
Danke für die Antwort und sorry für das crossposting. Als relativer noob ich wusste nicht, war dies ein problem. Als Beispiel betrachten wir den Datensatz heruntergeladen werden kann hier. Dann führe ich das folgende Modell: mod <- glm(betaplasma ~ Alter + vituse, family=gaussian(link="log"), data=data2, start=c(0,0,0)), die gibt mir die Warnmeldung, dass der Algorithmus nicht konvergieren.
es wäre gut, fügen Sie diesen Kommentar auf Ihre Frage (durch Bearbeiten der ursprünglichen Frage) ...
Wäre interessant zu vergleichen, die eigentliche Stata-Ausgabe, erzeugt aus der quasipoisson-Modell. Pflege hinzufügen, dass auch auf Ihre Frage?
DWin, soeben die Ausgabe, es ist in der Tat sehr ähnlich. Danke dir, auch für deine Mühe!

InformationsquelleAutor Flow | 2012-11-26

Schreibe einen Kommentar