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")
binomial
generalized-linear-model
Matt Albrecht
fonte
fonte
cbind(accuracy, 16-accuracy)
), mas estou preocupado se isso é matematicamente justificado.Respostas:
Pergunta interessante. Uma possibilidade que me vem à mente é incluir um parâmetro adicional para controlar o limite superior da função 'link'.p ∈[ 0 , 1 ]
Deixe , j = 1 , . . . , n sejam observações independentes, onde y j ∼ Binomial { n i , p F ( x T j β ) } , p ∈ [ 0 , 1 ] , x j = ( 1 , x j 1 ,{ xj, yj, nj} j = 1 , . . . , n yj∼ Binomial { nEu, p F( xTjβ) } p ∈ [ 0 , 1 ] é um vector de variáveis explicativas, β = ( β 0 , . . . , Β k ) é um vector de coeficientes de regressão e F - 1 é a função de ligação. Então a função de probabilidade é dada porxj= ( 1 , xj 1, . . . , xj k)T β= ( β0 0, . . . , βk) F- 1
O próximo passo é escolher um link, digamos a distribuição logística e encontre o MLE correspondente de .( β, P )
Considere o exemplo seguinte brinquedo simulada usando um modelo de dose-resposta com e n = 31( β0 0, β1, p ) = ( 0,5 , 0,5 , 0,25 ) n = 31
Editar
Dada a edição (que altera significativamente o problema), o método que propus anteriormente pode ser modificado para ajustar os dados que você forneceu. Considere o modelo
fonte
Eu usaria o máximo do vetor X como o número total possível de sucessos. (Essa é uma estimativa tendenciosa do verdadeiro número máximo de sucessos, mas deve funcionar razoavelmente bem se você tiver dados suficientes).
Isso cria um gráfico que se parece com:
fonte
Observe que a regressão binomial é baseada em ter uma resposta binária para cada caso individual. cada resposta individual deve ser capaz de assumir um dos dois valores. Se houver algum limite para a proporção, também deve ter havido alguns casos que poderiam ter apenas um valor.
Parece que você não está lidando com dados binários, mas com dados em um intervalo finito. se for esse o caso, a regressão beta parece mais apropriada. Podemos escrever a distribuição beta como:
fonte