Pode-se executar uma regressão logit em R usando esse 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 o algoritmo de otimização convergiu - há informações sobre o número das etapas do algoritmo de pontuação do fisher:
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
Estou curioso sobre o algoritmo de otimização que é. É o algoritmo de Newton-Raphson (descida gradiente de segunda ordem)? Posso definir alguns parâmetros para usar o algoritmo de Cauchy (descida gradiente de primeira ordem)?
r
generalized-linear-model
optimization
algorithms
logit
Marcin Kosiński
fonte
fonte
Newton's method
é um segundo método de gradiente descendente ordem.Respostas:
Você ficará interessado em saber que a documentação para
glm
, acessada via,?glm
fornece muitas informações úteis: emmethod
que descobrimos que mínimos quadrados com ponderação iterativa é o método padrão paraglm.fit
, que é a função de burro de cargaglm
. Além disso, a documentação menciona que funções definidas pelo usuário podem ser fornecidas aqui, em vez do padrão.fonte
glm
oufit.glm
noR
prompt para estudar o código-fonte.glm.fit
que não será totalmente reprodutível, uma vez que se baseia em código CC_Cdqrls
.O método usado é mencionado na própria saída: é Fisher Scoring. Isso é equivalente a Newton-Raphson na maioria dos casos. A exceção são as situações em que você está usando parametrizações não naturais. A regressão de risco relativo é um exemplo desse cenário. Lá, as informações esperadas e observadas são diferentes. Em geral, Newton Raphson e Fisher Scoring fornecem resultados quase idênticos.
O otimizador geral padrão em R usa métodos numéricos para estimar um segundo momento, basicamente com base em uma linearização (desconfie da maldição da dimensionalidade). Portanto, se você estiver interessado em comparar a eficiência e o viés, poderá implementar uma rotina ingênua de máxima verossimilhança logística com algo como
me dá
fonte
nlm
estima o gradiente numericamente e aplica Newton Raphson. No BFGS, acho que o gradiente é necessário, como acontece com Newton Raphson, mas etapas sucessivas são avaliadas usando uma aproximação de segunda ordem que requer uma estimativa do Hessiano. O BFGS é bom para otimizações altamente não lineares. Mas para os GLMs, eles geralmente são muito bem comportados.Para o registro, uma implementação simples e pura de R do algoritmo glm de R, com base na pontuação de Fisher (mínimos quadrados ponderados iterativamente), conforme explicado na outra resposta, é dada por:
Exemplo:
Uma boa discussão dos algoritmos de ajuste GLM, incluindo uma comparação com Newton-Raphson (que usa o Hessian observado em oposição ao esperado Hessian no algoritmo IRLS) e algoritmos híbridos (que começam com IRLS, pois são mais fáceis de inicializar, mas depois pode ser encontrada no livro "Generalized Linear Models and Extensions", de James W. Hardin e Joseph M. Hilbe .
fonte