Se puede realizar una regresión logit en R usando dicho código:
> 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
Parece que el algoritmo de optimización ha convergido: hay información sobre el número de pasos del algoritmo de puntuación de pescador:
Call:
glm(formula = cbind(Menarche, Total - Menarche) ~ Age, family = binomial(logit),
data = menarche)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.0363 -0.9953 -0.4900 0.7780 1.3675
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -21.22639 0.77068 -27.54 <2e-16 ***
Age 1.63197 0.05895 27.68 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 3693.884 on 24 degrees of freedom
Residual deviance: 26.703 on 23 degrees of freedom
AIC: 114.76
Number of Fisher Scoring iterations: 4
Tengo curiosidad acerca de qué algoritmo optim es? ¿Es el algoritmo Newton-Raphson (descenso de gradiente de segundo orden)? ¿Puedo establecer algunos parámetros para usar el algoritmo Cauchy (descenso de gradiente de primer orden)?
r
generalized-linear-model
optimization
algorithms
logit
Marcin Kosiński
fuente
fuente
Newton's method
es un método de descenso de gradiente de segundo orden.Respuestas:
Le interesará saber que la documentación a la que se
glm
accede a través de?glm
proporciona muchas ideas útiles: amethod
continuación, descubrimos que los mínimos cuadrados repesados de forma iterativa son el método predeterminado paraglm.fit
, que es la función de caballo de batallaglm
. Además, la documentación menciona que aquí se pueden proporcionar funciones definidas por el usuario, en lugar de las predeterminadas.fuente
glm
ofit.glm
en elR
indicador para estudiar el código fuente.glm.fit
que no será totalmente reproducibles, ya que se basa en el código CC_Cdqrls
.El método utilizado se menciona en el resultado en sí: es Fisher Scoring. Esto es equivalente a Newton-Raphson en la mayoría de los casos. La excepción son las situaciones en las que está utilizando parametrizaciones no naturales. La regresión del riesgo relativo es un ejemplo de tal escenario. Allí, la información esperada y observada es diferente. En general, Newton Raphson y Fisher Scoring dan resultados casi idénticos.
El optimizador general predeterminado en R usa métodos numéricos para estimar un segundo momento, básicamente basado en una linealización (tenga cuidado con la maldición de la dimensionalidad). Entonces, si estaba interesado en comparar la eficiencia y el sesgo, podría implementar una rutina ingenua de máxima probabilidad logística con algo como
me da
fuente
nlm
estima el gradiente numéricamente y luego aplica Newton Raphson. En BFGS, creo que se requiere el gradiente como con Newton Raphson, pero los pasos sucesivos se evalúan utilizando una aproximación de segundo orden que requiere una estimación de la arpillera. BFGS es bueno para optimizaciones altamente no lineales. Pero para los GLM, generalmente se comportan muy bien.Para el registro, una implementación R pura y simple del algoritmo glm de R, basada en la puntuación de Fisher (mínimos cuadrados repesados de forma iterativa), como se explica en la otra respuesta, viene dada por:
Ejemplo:
Una buena discusión sobre los algoritmos de ajuste GLM, incluida una comparación con Newton-Raphson (que usa el Hessian observado en lugar del Hessian esperado en el algoritmo IRLS) y algoritmos híbridos (que comienzan con IRLS, ya que estos son más fáciles de inicializar, pero luego terminar con una mayor optimización con Newton-Raphson) se puede encontrar en el libro "Modelos lineales generalizados y extensiones" de James W. Hardin y Joseph M. Hilbe .
fuente