Per i modelli logistici di inferenza, è importante sottolineare prima che non ci sono errori qui. In warning
in ti sta informando correttamente che lo stimatore della massima verosimiglianza si trova al limite dello spazio dei parametri. Il rapporto di probabilità di∞
Con i dati generati lungo le linee di
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
Viene emesso un avviso:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
che ovviamente riflette la dipendenza che è integrata in questi dati.
In R il test Wald si trova con summary.glm
o con waldtest
nel lmtest
pacchetto. Il test del rapporto di verosimiglianza viene eseguito con anova
o con lrtest
inlmtest
confezione. In entrambi i casi, la matrice di informazioni è valutata all'infinito e non è disponibile alcuna inferenza. Piuttosto, R non produce in uscita, ma non ci si può fidare. L'inferenza che tipicamente R produce in questi casi ha valori di p molto vicini a uno. Questo perché la perdita di precisione in sala operatoria è minore rispetto alla perdita di precisione nella matrice varianza-covarianza.
Alcune soluzioni descritte qui:
Utilizzare uno stimatore in un passaggio,
Esistono molte teorie a supporto della bassa propensione, efficienza e generalizzabilità degli stimatori a un passo. È facile specificare uno stimatore one-step in R e i risultati sono in genere molto favorevoli per la previsione e l'inferenza. E questo modello non divergerà mai, perché l'iteratore (Newton-Raphson) semplicemente non ha la possibilità di farlo!
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
dà:
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
Quindi puoi vedere che le previsioni riflettono la direzione del trend. E l'inferenza è altamente suggestiva delle tendenze che crediamo essere vere.
eseguire un test del punteggio,
La statistica del punteggio (o Rao) differisce dal rapporto di probabilità e dalle statistiche calve. Non richiede una valutazione della varianza secondo l'ipotesi alternativa. Adattiamo il modello al valore null:
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
In entrambi i casi hai inferenza per un OR di infinito.
e utilizzare stime imparziali mediane per un intervallo di confidenza.
È possibile produrre un IC al 95% imparziale mediano e non singolare per il rapporto di probabilità infinito utilizzando la stima imparziale mediana. Il pacchetto epitools
in R può fare questo. E faccio un esempio di implementazione di questo stimatore qui: intervallo di confidenza per il campionamento di Bernoulli