Je cherche à effectuer une régression logistique via la fonction glm afin d'expliquer le "Status" de valeur 0 ou 1 en fonction de 4 variables (3 continues que je discrétise et une qualitative prenant les valeurs 1, 5 et 8), et à récupérer les différents coefficients de ma régression linéaire.
Ma régression linéaire s'effectue correctement sauf que pour toutes mes variables quali et quanti, aucunes de mes bornes inférieures ne sont prises en compte, i.e. je discrétise un ratio de la manière suivante: [0;40][40;80][80;120][120;inf] et la borne inférieure [0:40] n'apparait pas dans mes Estimate, idem pour les autres variables quanti et quali.
Code : Tout sélectionner
myVariableNames<-c("Vintage","Employment", "DTI", "CLTV","Status")
# lecture du fichier texte
Edwin <- read.csv2("path")
# ajout d'un identifiant (le no de ligne)
Edwin$Cle <- seq(1,nrow(Edwin))
Edwin$Status <- factor(Edwin$Status)
# transformation de l'ensemble des variables qualitatives en facteurs
varquali <- c("Employment")
indices <- names(Edwin) %in% varquali
for (i in (1:ncol(Edwin))) { if (indices[i] == 1) { Edwin[,i] <- factor(Edwin[,i]) } }
# liste des variables quantitatives
varquanti <- c("DTI", "CLTV","Vintage")
# Création d'un echantillon d'apprentissage et d'un échantillon de validation
id <- (1:nrow(Edwin))[which(runif(nrow(Edwin)) < 0.66)]
train <- Edwin[id,]
valid <- Edwin[-id,]
# discrétisation des variables continues
Edwin$Vintage <- cut(Edwin$Vintage,c(0,1,2,4,6,Inf), right=TRUE)
Edwin$DTI <- cut(Edwin$DTI,c(0,0.1,0.15,0.25,Inf), right=TRUE)
Edwin$CLTV <- cut(Edwin$CLTV,c(0,40,80,100,120,Inf), right=TRUE)
# Régression logistique
predicteurs <- -grep('(Cle|Status)', names(Edwin))
formule <- as.formula(paste("y ~ ( ",paste(names(Edwin2[,predicteurs]),collapse="+"),")^2"))
formule
# sélection de modèle ascendante
logit <- glm(Status~.,data=train,family=binomial(link = "logit"))
summary(logit)
# recherche maximale
selection <- step(logit,direction="forward",trace=TRUE,k = log(nrow(train)),
scope=list(upper=formule))
selection
> summary(selection)
Call:
glm(formula = Status ~ Vintage + Employment + DTI + CLTV, family = binomial(link = "logit"),
data = train)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.3786 -0.1330 -0.1121 -0.0001 3.3750
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -51.103 4250.533 -0.012 0.990
Vintage(1,2] 17.069 3518.498 0.005 0.996
Vintage(2,4] 16.221 3518.498 0.005 0.996
Vintage(4,6] 16.597 3518.498 0.005 0.996
Vintage(6,Inf] 17.477 3518.498 0.005 0.996
Employment5 1.268 1.039 1.220 0.222
Employment8 -13.285 1945.866 -0.007 0.995
DTI(0.1,0.15] 14.097 1464.193 0.010 0.992
DTI(0.15,0.25] 14.341 1464.193 0.010 0.992
DTI(0.25,Inf] 14.348 1464.193 0.010 0.992
CLTV(40,80] -1.103 2047.920 -0.001 1.000
CLTV(80,100] 14.850 1882.376 0.008 0.994
CLTV(100,120] 15.474 1882.376 0.008 0.993
CLTV(120,Inf] 15.818 1882.376 0.008 0.993
Aucune de mes bornes inférieures n'a d'Estimate, à noter que la variable "Employment" prend la valeur 1 comme borne inférieure et bien que variable qualitative ne présente pas d'Estimate.
Merci beaucoup d'avance pour votre aide.
X.