Datos_Creditos <- read_excel("Datos_Creditos.xlsx")
Datos_Creditos <- na.omit(Datos_Creditos)
attach(Datos_Creditos)
head(Datos_Creditos)
## # A tibble: 6 x 8
## DEFAULT DIAS_MORA ANTIUEDAD EDAD CUOTA_TOTAL INGRESOS CARTERA_TOTAL
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 0 37.3 77.0 3020519 8155593 35907626
## 2 1 0 37.3 73.8 1766552 6181263 50845190
## 3 1 30 31.0 78.9 1673786 4328075 88809154
## 4 1 0 9.73 51.5 668479 5290910 36235112
## 5 1 0 8.44 39.0 1223559 5333818 52518827
## 6 1 1020 6.61 44.9 3517756 2710736 7041395
## # ... with 1 more variable: COMPROMISO <dbl>
Tipos de datos
str(Datos_Creditos)
## tibble [780 x 8] (S3: tbl_df/tbl/data.frame)
## $ DEFAULT : num [1:780] 1 1 1 1 1 1 1 1 1 1 ...
## $ DIAS_MORA : num [1:780] 0 0 30 0 0 1020 0 0 0 0 ...
## $ ANTIUEDAD : num [1:780] 37.32 37.32 30.98 9.73 8.44 ...
## $ EDAD : num [1:780] 77 73.8 78.9 51.5 39 ...
## $ CUOTA_TOTAL : num [1:780] 3020519 1766552 1673786 668479 1223559 ...
## $ INGRESOS : num [1:780] 8155593 6181263 4328075 5290910 5333818 ...
## $ CARTERA_TOTAL: num [1:780] 35907626 50845190 88809154 36235112 52518827 ...
## $ COMPROMISO : num [1:780] 37 28.6 38.7 12.6 22.9 ...
Para la selección de la variable que distribuya poisson, comparamos las medias y la varianza de todas las demás variables, para fijarnos que no hay ninguna donde su media y varianza sean iguales, la más “cercana” a este requerimiento es la variable Antiguedad, también se realizó una prueba de ajuste con la función goodfit() a las variables que cumplan con algunas carácterísticas de la poisson, esto usando el método de la chi-cuadrado, se obtuvo que ninguna era poisson, como se puede ver a continuación
antiu.gf<-goodfit(ANTIUEDAD, type = "poisson", method = "MinChisq")
summary(antiu.gf)
##
## Goodness-of-fit test for poisson distribution
##
## X^2 df P(> X^2)
## Pearson 1258177 36 0
dm.gf<-goodfit(DIAS_MORA, type = "poisson", method = "MinChisq")
summary(dm.gf)
##
## Goodness-of-fit test for poisson distribution
##
## X^2 df P(> X^2)
## Pearson NaN 1019 NaN
edad.gf<-goodfit(EDAD, type = "poisson", method = "MinChisq")
summary(edad.gf)
##
## Goodness-of-fit test for poisson distribution
##
## X^2 df P(> X^2)
## Pearson 17250.41 91 0
Aunque ninguna variable se ajusta a una distribución poisson según las características de la variable “ANTIGUEDAD” siendo de tipo conteo del número de años que el cliente tiene en la entidad bancaria se asigna esta variable a un modelo poisson donde sus resultados son:
Resumen de la variable ANTIGUEDAD
summary(ANTIUEDAD)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.2548 7.3767 15.1192 18.0353 30.6637 37.3178
Varianza de Antiguedad
var(ANTIUEDAD)
## [1] 142.5469
modpois<-glm(ANTIUEDAD~., data = Datos_Creditos, family = poisson(link = "log"))
summary(modpois)
##
## Call:
## glm(formula = ANTIUEDAD ~ ., family = poisson(link = "log"),
## data = Datos_Creditos)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -8.1408 -1.3595 -0.1417 1.1256 3.7558
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.315e-01 5.460e-02 2.409 0.015996 *
## DEFAULT -1.618e-01 4.560e-02 -3.548 0.000388 ***
## DIAS_MORA -2.909e-04 2.672e-04 -1.089 0.276208
## EDAD 3.920e-02 7.627e-04 51.397 < 2e-16 ***
## CUOTA_TOTAL 9.119e-08 2.511e-08 3.632 0.000281 ***
## INGRESOS 5.141e-08 3.953e-09 13.007 < 2e-16 ***
## CARTERA_TOTAL -8.979e-10 3.856e-10 -2.329 0.019882 *
## COMPROMISO 3.178e-03 1.445e-03 2.199 0.027902 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 6611.5 on 779 degrees of freedom
## Residual deviance: 2557.3 on 772 degrees of freedom
## AIC: Inf
##
## Number of Fisher Scoring iterations: 4
Por lo tanto los resultados del modelo ajustado para la variable de respuesta indican cuales son significativas.
Para el modelo logístico según las características de la variable, la que más se ajusta es la variable Default la cual hace referencia a la situación en la que el deudor no ha pagado la totalidad de las deudas que tiene con sus acreedores donde 1 es que está en “Default” y 0 “No Default” siendo esta la única variable de categorización dicotómica.
modelogit<-glm(DEFAULT~.,family = binomial,data=Datos_Creditos)
summary(modelogit)
##
## Call:
## glm(formula = DEFAULT ~ ., family = binomial, data = Datos_Creditos)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.4146 -0.2987 -0.2588 -0.1967 3.0141
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.973e+00 1.208e+00 -2.460 0.0139 *
## DIAS_MORA 8.313e-02 1.621e-02 5.127 2.95e-07 ***
## ANTIUEDAD -3.252e-02 2.667e-02 -1.219 0.2228
## EDAD 5.979e-03 2.232e-02 0.268 0.7888
## CUOTA_TOTAL 8.177e-07 6.323e-07 1.293 0.1959
## INGRESOS -1.394e-07 1.598e-07 -0.872 0.3832
## CARTERA_TOTAL -2.991e-09 8.096e-09 -0.369 0.7118
## COMPROMISO -7.326e-03 3.215e-02 -0.228 0.8198
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 309.68 on 779 degrees of freedom
## Residual deviance: 238.70 on 772 degrees of freedom
## AIC: 254.7
##
## Number of Fisher Scoring iterations: 7
Donde se observa que los resultados indican que la única variable significativa es los días de mora para explicar cuando una cae en Default o no