A regressão logística binomial possui assíntotas superiores e inferiores de 1 e 0, respectivamente. No entanto, os dados de precisão (apenas como exemplo) podem ter assíntotas superiores e inferiores muito diferentes de 1 e / ou 0. Posso ver três soluções possíveis para isso:
- Não se preocupe se você estiver tendo bons ajustes na área de interesse. Se você não está obtendo bons ajustes, então:
- Transforme os dados para que o número mínimo e máximo de respostas corretas na amostra forneça proporções de 0 e 1 (em vez de dizer 0 e 0,15).
ou - Use a regressão não linear para poder especificar as assíntotas ou solicitar que o instalador faça isso por você.
Parece-me que as opções 1 e 2 seriam preferidas à opção 3, em grande parte por motivos de simplicidade; nesse caso, a opção 3 é talvez a melhor opção, pois pode gerar mais informações?
edit
Aqui está um exemplo. O total possível de precisão possível é 100, mas a precisão máxima nesse caso é ~ 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))
A opção 2 (conforme comentários e para esclarecer meu significado) seria então o modelo
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
A opção 3 (para completar) seria algo semelhante a:
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)
), mas estou preocupado se isso é matematicamente justificado.