library(klaR) data(GermanCredit) model1 <- glm(credit_risk~duration,family=binomial,data=GermanCredit) X <- cbind(rep(1,1000),GermanCredit$duration); n <- dim(X)[1] ; s <- 0 for (i in 1:n) s <- s+as.numeric(plogis(model1$coeff%*%X[i,]))*as.numeric(1-plogis(model1$coeff%*%X[i,]))*X[i,]%*%t(X[i,]) summary(model1) sqrt(diag(solve(s))) # modele complet model.full <- glm(credit_risk~.,data=GermanCredit,family=binomial) summary(model.full) anova(model.full,test="Chisq") librzry(nnet) test <- multinom(credit_risk~.,data=GermanCredit,family=binomial) summary(test) # selection descendante de variables model.aic.backward <- step(model.full,direction="backward") anova(model.aic.backward,test="Chisq") n <- dim(GermanCredit)[1] model.bic.backward <- step(model.full,direction="backward",k=log(n)) anova(model.bic.backward,test="Chisq") # selection ascendante de variables et progressive model.null <- glm(credit_risk~1,data=GermanCredit,family=binomial) model.aic.forward <- step(model.null,direction="forward",scope=formula(model.full)) model.aic.stepwise <- step(model.null,direction="both",scope=formula(model.full)) formula(model.aic.forward) formula(model.aic.backward) formula(model.aic.stepwise) model.bic.forward <- step(model.null,direction="forward",scope=formula(model.full),k=log(n)) model.bic.stepwise <- step(model.null,direction="both",scope=formula(model.full),k=log(n)) formula(model.bic.forward) formula(model.bic.backward) formula(model.bic.stepwise) # estimation taux d'erreur de classification par validation croisee libary(caret) cv.model.bic <- train(formula(model.bic.backward),data=GermanCredit,method="glm", metric="Accuracy",trControl=trainControl(method="repeatedcv",number=10,repeats=50)) confusionMatrix(cv.model.bic) cv.model.aic <- train(formula(model.aic.forward),data=GermanCredit,method="glm", metric="Accuracy",trControl=trainControl(method="repeatedcv",number=10, repeats=50)) cv.model.aic <- train(formula(model.aic.forward),data=GermanCredit,method="multinom", metric="Accuracy",trControl=trainControl(method="repeatedcv",number=10, repeats=50)) confusionMatrix(cv.model.aic) library(glmnet) y <- GermanCredit$credit_risk x <- cbind(GermanCredit$duration,GermanCredit$amount,GermanCredit$age, GermanCredit$number_credits) model.lasso <- glmnet(x,y,family="binomial") plot(model.lasso)