Można wykonać regresję logit w R przy użyciu takiego kodu:
> 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
Wygląda na to, że algorytm optymalizacji jest zbiegnięty - jest informacja o liczbie kroków algorytmu oceniania Fishera:
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
Jestem ciekawy, jaki to optymalny algorytm? Czy to algorytm Newtona-Raphsona (spadek gradientu drugiego rzędu)? Czy mogę ustawić niektóre parametry, aby korzystać z algorytmu Cauchy'ego (spadek gradientu pierwszego rzędu)?
r
generalized-linear-model
optimization
algorithms
logit
Marcin Kosiński
źródło
źródło
Newton's method
jest to metoda spadku gradientu drugiego rzędu.Odpowiedzi:
Będziesz zainteresowany, aby dowiedzieć się, że dokumentacja, do której
glm
można uzyskać dostęp za pośrednictwem,?glm
zapewnia wiele użytecznych informacji: poniżejmethod
znajdujemy, że iteracyjnie przeważone najmniejsze kwadraty to metoda domyślna, dlaglm.fit
której jest funkcja konia roboczegoglm
. Dodatkowo w dokumentacji wspomniano, że tutaj mogą być dostarczone funkcje zdefiniowane przez użytkownika zamiast domyślnych.źródło
glm
lubfit.glm
wR
wierszu polecenia, aby przestudiować kod źródłowy.glm.fit
, która nie będzie całkowicie powtarzalne, ponieważ opiera się na kodzie CC_Cdqrls
.Zastosowana metoda jest wymieniona w samym danych wyjściowych: jest to punktacja Fishera. W większości przypadków jest to odpowiednik Newtona-Raphsona. Wyjątkiem są sytuacje, w których stosuje się parametry nienaturalne. Względny regres ryzyka jest przykładem takiego scenariusza. Tam oczekiwane i obserwowane informacje są różne. Ogólnie rzecz biorąc, Newton Raphson i Fisher Scoring dają prawie identyczne wyniki.
Domyślny ogólny optymalizator w R używa metod numerycznych do oszacowania drugiego momentu, zasadniczo w oparciu o linearyzację (uważaj na przekleństwo wymiarowości). Więc jeśli chciałbyś porównać wydajność i stronniczość, możesz wdrożyć naiwną logistyczną procedurę maksymalnego prawdopodobieństwa z czymś takim jak
daje mi
źródło
nlm
szacuje gradient numerycznie, a następnie stosuje Newtona Raphsona. W BFGS uważam, że gradient jest wymagany, jak w przypadku Newtona Raphsona, ale kolejne kroki są oceniane przy użyciu aproksymacji drugiego rzędu, która wymaga oszacowania Hesji. BFGS jest dobry do wysoce nieliniowych optymalizacji. Ale w przypadku GLM są zazwyczaj bardzo dobrze wychowani.Dla przypomnienia, prosta implementacja czystego R algorytmu glm R, oparta na punktacji Fishera (iteracyjnie ponownie ważona najmniejszych kwadratów), jak wyjaśniono w drugiej odpowiedzi, daje:
Przykład:
Dobra dyskusja na temat algorytmów dopasowania GLM, w tym porównanie z Newtonem-Raphsonem (który wykorzystuje obserwowany Hesjan w przeciwieństwie do oczekiwanego Hesji w algorytmie IRLS) i algorytmami hybrydowymi (które zaczynają się od IRLS, ponieważ są one łatwiejsze do zainicjowania, ale potem zakończone dalszą optymalizacją przy użyciu Newtona-Raphsona) można znaleźć w książce „Uogólnione modele liniowe i rozszerzenia” Jamesa W. Hardina i Josepha M. Hilbe .
źródło