warning
∞
Z danymi generowanymi zgodnie z
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
Ostrzeżenie jest wysyłane:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
co bardzo wyraźnie odzwierciedla zależność wbudowaną w te dane.
W R test Walda znajduje się z summary.glm
lub waldtest
w lmtest
pakiecie. Test współczynnika prawdopodobieństwa jest wykonywany z anova
lub lrtest
w lmtest
pakiecie. W obu przypadkach matryca informacji jest nieskończenie ceniona i nie jest możliwe wnioskowanie. R tworzy raczej wynik, ale nie można mu ufać. Wnioskowanie, które R zwykle wytwarza w tych przypadkach, ma wartości p bardzo zbliżone do jednego. Jest tak, ponieważ utrata precyzji w OR jest o rząd wielkości mniejsza niż utrata precyzji w macierzy wariancji-kowariancji.
Niektóre rozwiązania przedstawione tutaj:
Użyj estymatora jednoetapowego,
Istnieje wiele teorii potwierdzających niski błąd systematyczny, wydajność i uogólnienie estymatorów jednoetapowych. Łatwo jest określić estymator jednoetapowy w R, a wyniki są zazwyczaj bardzo korzystne dla przewidywania i wnioskowania. I ten model nigdy się nie rozejdzie, ponieważ iterator (Newton-Raphson) po prostu nie ma na to szans!
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
Daje:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.03987 0.29569 -0.135 0.893
x 1.19604 0.16794 7.122 1.07e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Dzięki temu prognozy odzwierciedlają kierunek trendu. A wnioskowanie bardzo sugeruje trendy, które uważamy za prawdziwe.
wykonać test punktowy,
Wynik (lub Rao) statystyczny różni się od stosunku prawdopodobieństwo i wald statystyki. Nie wymaga oceny wariancji zgodnie z alternatywną hipotezą. Dopasowujemy model do zera:
mm <- model.matrix( ~ x)
fit0 <- glm(y ~ 1, family=binomial)
pred0 <- predict(fit0, type='response')
inf.null <- t(mm) %*% diag(binomial()$variance(mu=pred0)) %*% mm
sc.null <- t(mm) %*% c(y - pred0)
score.stat <- t(sc.null) %*% solve(inf.null) %*% sc.null ## compare to chisq
pchisq(score.stat, 1, lower.tail=F)
χ2)
> pchisq(scstat, df=1, lower.tail=F)
[,1]
[1,] 1.343494e-11
W obu przypadkach wnioskujesz o OR nieskończoności.
i użyj mediany obiektywnych szacunków dla przedziału ufności.
Za pomocą mediany szacunku bezstronnego można wygenerować medianę obiektywnego 95% CI dla nieskończonego ilorazu szans. Pakiet epitools
w R może to zrobić. Podam tutaj przykład implementacji tego estymatora: Przedział ufności dla próbkowania Bernoulliego