Opis Christophera Manninga dotyczący regresji logistycznej w R pokazuje regresję logistyczną w R w następujący sposób:
ced.logr <- glm(ced.del ~ cat + follows + factor(class),
family=binomial)
Niektóre dane wyjściowe:
> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
family = binomial("logit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-3.24384 -1.34325 0.04954 1.01488 6.40094
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.31827 0.12221 -10.787 < 2e-16
catd -0.16931 0.10032 -1.688 0.091459
catm 0.17858 0.08952 1.995 0.046053
catn 0.66672 0.09651 6.908 4.91e-12
catv -0.76754 0.21844 -3.514 0.000442
followsP 0.95255 0.07400 12.872 < 2e-16
followsV 0.53408 0.05660 9.436 < 2e-16
factor(class)2 1.27045 0.10320 12.310 < 2e-16
factor(class)3 1.04805 0.10355 10.122 < 2e-16
factor(class)4 1.37425 0.10155 13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4
Następnie szczegółowo opisuje interpretację współczynników, porównanie różnych modeli i tak dalej. Całkiem użyteczne.
Jaką jednak wariancję uwzględnia model? Strona Stata na regresji logistycznej mówi:
Technicznie, nie mogą być obliczane w ten sam sposób w regresji logistycznej, jak to jest regresję OLS. Pseudo R 2 , w regresji logistycznej, jest zdefiniowana jako 1 - L 1 , gdzieL0reprezentuje prawdopodobieństwo dziennika dla modelu „tylko stałego”, aL1jest prawdopodobieństwem dziennika dla pełnego modelu ze stałą i predyktorami.
Rozumiem to na wysokim poziomie. Model tylko stałej byłby bez żadnego parametru (tylko termin przechwytujący). Prawdopodobieństwo dziennika jest miarą tego, jak ściśle parametry pasują do danych. W rzeczywistości, Manning rodzaj podpowiedzi, że dewiacja może być . Być może odchylenie zerowe jest tylko stałe, a odchylenie resztkowe wynosi - 2 log L modelu? Jednak nie jestem w tym krystalicznie czysty.
Czy ktoś może sprawdzić, jak faktycznie wylicza jeden pseudo- w R korzystając z tego przykładu?
źródło
Odpowiedzi:
Nie zapomnij o pakiecie rms autorstwa Franka Harrella. Znajdziesz wszystko, czego potrzebujesz do dopasowania i sprawdzania poprawności GLM.
Oto przykład zabawki (z tylko jednym predyktorem):
Daje to:
Teraz za pomocą
lrm
funkcjiprint(mod1b)
Ręcznie,
źródło
źródło
pR2 = 1 - mod$deviance / mod$null.deviance # works for glm
Użyj funkcji „logLik” w R i definicji (działa również w próbie)
mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)
Przykład:
pseudo-R poza próbą
Kody:
pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)
źródło
model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)
model1$deviance
-2*logLik(model1)
jeśli odchylenie było proporcjonalne do prawdopodobieństwa dziennika, a jedna z nich używa definicji (patrz na przykład McFadden tutaj )
Pytanie brzmi: czy zgłaszane odchylenie jest proporcjonalne do logarytmu prawdopodobieństwa?
źródło
źródło