La régression logistique binomiale a des asymptotes supérieures et inférieures de 1 et 0 respectivement. Cependant, les données de précision (à titre d'exemple) peuvent avoir des asymptotes supérieures et inférieures très différentes de 1 et / ou 0. Je peux voir trois solutions potentielles à cela:
- Ne vous inquiétez pas si vous obtenez de bons ajustements dans la zone d'intérêt. Si vous n'obtenez pas de bons ajustements, alors:
- Transformez les données de sorte que le nombre minimum et maximum de réponses correctes dans l'échantillon donne des proportions de 0 et 1 (au lieu de dire 0 et 0,15).
ou - Utilisez une régression non linéaire pour pouvoir spécifier les asymptotes ou demander à l'installateur de le faire pour vous.
Il me semble que les options 1 et 2 seraient préférées à l'option 3 en grande partie pour des raisons de simplicité, auquel cas l'option 3 est peut-être la meilleure option car elle peut fournir plus d'informations?
modifier
Voici un exemple. La correction totale possible pour la précision est de 100, mais la précision maximale dans ce cas est de ~ 15.
accuracy <- c(0,0,0,0,0,1,3,5,9,13,14,15,14,15,16,15,14,14,15)
x<-1:length(accuracy)
glmx<-glm(cbind(accuracy, 100-accuracy) ~ x, family=binomial)
ndf<- data.frame(x=x)
ndf$fit<-predict(glmx, newdata=ndf, type="response")
plot(accuracy/100 ~ x)
with(ndf, lines(fit ~ x))
L'option 2 (selon les commentaires et pour clarifier ma signification) serait alors le modèle
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
L'option 3 (par souci d'exhaustivité) s'apparenterait à:
fitnls<-nls(accuracy ~ upAsym + (y0 - upAsym)/(1 + (x/midPoint)^slope),
start = list("upAsym" = max(accuracy), "y0" = 0, "midPoint" = 10, "slope" = 5),
lower = list("upAsym" = 0, "y0" = 0, "midPoint" = 1, "slope" = 0),
upper = list("upAsym" = 100, "y0" = 0, "midPoint" = 19, hillslope = Inf),
control = nls.control(warnOnly = TRUE, maxiter=1000),
algorithm = "port")
cbind(accuracy, 16-accuracy)
), mais je me demande si c'est mathématiquement justifié.