testlabels=c(1,2,2,1,1,1,2,2,2,1) score=c(43,43,67,43,67,67,43,43,43,67)/100 seuil=c(0,.5,1) tvp <- tfp <- NULL for (i in 1:length(seuil)){ fp=sum(testlabels==1&score<=seuil[i]) # nbre de faux positifs vp=sum(testlabels==2&score<=seuil[i]) # nbre de faux positifs fn=sum(testlabels==2&score>seuil[i]) # nbre de faux négatifs vn=sum(testlabels==1&score>seuil[i]) # nbre de vrais négatifs tvp[i]=vp/(vp+fn) # taux de vrais positifs tfp[i]=fp/(fp+vn) # taux de faux positifs } plot(tfp,tvp,'b',col='red') library(flux) AUC=auc(tfp,tvp) cat('AUC : ',AUC,'\n') thedata=data.frame(sexe=c('H','F','F','H','H','F','F','F','F','H'),premium=c('O','O','N','O','N','N','O','O','O','N'),classe=c(1,2,2,1,1,1,2,2,2,1)) attach(thedata) # tableau disjonctif complet xx <- array(dim=c(10,2,2)) xx[1:10,1,1]=as.matrix((sexe=='H')) xx[1:10,1,2]=as.matrix((sexe=='F')) xx[1:10,2,1]=as.matrix((premium=='O')) xx[1:10,2,2]=as.matrix((premium=='N')) alpha <- array(dim=c(2,2,2)) alpha[1,1,1]=0.4 alpha[1,1,2]=1-alpha[1,1,1] alpha[2,1,1]=0.4 alpha[2,1,2]=1-alpha[2,1,1] alpha[1,2,1]=0.6 alpha[1,2,2]=1-alpha[1,2,1] alpha[2,2,1]=0.8 alpha[2,2,2]=1-alpha[2,2,1] # log-vraisemblance maximisée litab <- array(dim=c(10,2)) li=0 for (i in 1:10){ li=li+(log(0.5)+xx[i,1,1]*log(alpha[classe[i],1,1])+xx[i,1,2]*log(alpha[classe[i],1,2])+xx[i,2,1]*log(alpha[classe[i],2,1])+xx[i,2,2]*log(alpha[classe[i],2,2])) } eta=(1+4) bic=li-eta/2*log(10) cat ('BIC :',bic,'\n')