2015-10-24 7 views
8

Wenn man eine logit Regression in R durchführt, ist es möglich, Koeffizienten zu erhalten, nachdem der Optimierungsalgorithmus (oder nicht) mit coefficients() Funktion konvergiert hat:Gibt es eine Möglichkeit, Koeffizienten für jeden Schritt des Optimierungsalgorithmus in der Glm-Funktion zu erhalten?

library(MASS) 
data(menarche) 
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age, 
       family=binomial(logit), data=menarche) 
coefficients(glm.out) 
## (Intercept)   Age 
## -21.226395 1.631968 

Gibt es eine Möglichkeit zu erhalten Koeffizienten für jeden Schritt der Optimierungsalgorithmus, um seine Schritte zu verfolgen?

Antwort

7

Das control= Argument mit dem Wert bewirkt gezeigt, um die Abweichung zu drucken und die trace Anweisung wird die Koeffizientenwerte führen drucken:

trace(glm.fit, quote(print(coefold)), at = list(c(22, 4, 8, 4, 19, 3))) 
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age, 
        family=binomial(logit), data=menarche, 
        control = glm.control(trace = TRUE)) 

Die Ausgabe wie folgt aussehen wird:

Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
NULL 
Deviance = 27.23412 Iterations - 1 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -20.673652 1.589536 
Deviance = 26.7041 Iterations - 2 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -21.206854 1.630468 
Deviance = 26.70345 Iterations - 3 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -21.226370 1.631966 
Deviance = 26.70345 Iterations - 4 

zu entfernen Sie die Spur Verwendung:

untrace(glm.fit) 

Beachten Sie, dass im trace Aufruf coefold der Name einer Variablen ist, die intern im Quellcode glm.fit verwendet wird. Die verwendeten Nummern beziehen sich auf Anweisungsnummern im Quellcode und müssen daher geändert werden, wenn die Quelle glm.fit geändert wird. Ich verwende "R Version 3.2.2 gepatcht (2015-10-19 r69550)".