dsl ... de mon coté, il n'y a pas vraiment de soucis ...
Code : Tout sélectionner
tab <- structure(list(Hours = c(0.5, 0.75, 1, 1.25, 1.5, 1.75, 1.75,2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 4, 4.25, 4.5, 4.75, 5, 5.5),
Pass = c(0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1,1, 1, 1, 1)), .Names = c("Hours", "Pass"),
row.names = c("V2","V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10", "V11", "V12",
"V13", "V14", "V15", "V16", "V17", "V18", "V19", "V20", "V21"
), class = "data.frame")
### à la main (régression pondérée)
# facile d'ajouter seuil de tolerance et contraintes sur les itérations
x <- tab$Hours
y <- tab$Pass
n <- length(y)
# proportions
f <- y
# link-transformation
g <- log(f/(1-f))
# weighting
w <- n*f*(1-f)
# weighted regression
r <- predict(lm(g~x,weights=w))
p <- exp(r)/(1+exp(r))
plot(x,f,ylim=c(0,1))
lines(x,p,col="green")
cols1 <- rainbow(5)
for(i in 1:5){
w <- p*(1-p)
gu <- r+(f-p)/p/(1-p)
lmr <- lm(gu~x,weights=w)
r <- predict(lmr)
p <- exp(r)/(1+exp(r))
lines(x,p,col=cols1[i])
print(coef(lmr))
}
### comparasion des résultats avec un GLM
glm1 <- glm(f~x, family=binomial(link="logit"))
lines(x,predict(glm1,type="response"),col="red",lty=2,lwd=2)
coefficients(lm(gu~x,weights=w))
coefficients(glm1)
je pense qu'on doit pas regarder la même chose ? ou alors, j'ai merdé à un moment dans le script?
@++ et bonne journée,
pierre