TAREA: MERCEDES CORREA

Utilizaremos un conjunto de datos, contiene informacion de incumplimientos de pagos, factores demograficos, datos crediticios,

historial de pagos y estados de cuenta de clientes de tarjeta de credito.

ID: ID of each client

LIMIT_BAL: Amount of given credit in NT dollars (includes individual and family/supplementary credit

SEX: Gender (1=male, 2=female)

EDUCATION: (1=graduate school, 2=university, 3=high school, 4=others, 5=unknown, 6=unknown)

MARRIAGE: Marital status (1=married, 2=single, 3=others)

AGE: Age in years

PAY_0: Repayment status in September, 2005

(-1=pay duly,

1=payment delay for one month,

2=payment delay for two months, …

8=payment delay for eight months,

9=payment delay for nine months and above)

PAY_2: Repayment status in August, 2005 (scale same as above)

PAY_3: Repayment status in July, 2005 (scale same as above)

PAY_4: Repayment status in June, 2005 (scale same as above)

PAY_5: Repayment status in May, 2005 (scale same as above)

PAY_6: Repayment status in April, 2005 (scale same as above)

BILL_AMT1: Amount of bill statement in September, 2005 (NT dollar)

BILL_AMT2: Amount of bill statement in August, 2005 (NT dollar)

BILL_AMT3: Amount of bill statement in July, 2005 (NT dollar)

BILL_AMT4: Amount of bill statement in June, 2005 (NT dollar)

BILL_AMT5: Amount of bill statement in May, 2005 (NT dollar)

BILL_AMT6: Amount of bill statement in April, 2005 (NT dollar)

PAY_AMT1: Amount of previous payment in September, 2005 (NT dollar)

PAY_AMT2: Amount of previous payment in August, 2005 (NT dollar)

PAY_AMT3: Amount of previous payment in July, 2005 (NT dollar)

PAY_AMT4: Amount of previous payment in June, 2005 (NT dollar)

PAY_AMT5: Amount of previous payment in May, 2005 (NT dollar)

PAY_AMT6: Amount of previous payment in April, 2005 (NT dollar)

default.payment.next.month: Default payment (1=yes, 0=no)

#PRIMER MODELO ##Primero cargamos los paquetes a utilizar, luego importamos los datos. options(scipen=999) pkges<-c(“mfx”,“pROC”,“tidyverse”,“forecast”,“data.table”) lapply(pkges,“library”,character.only=T)

#BASE DE DATOS

maindir <- getwd() subdir <- c(“/Unidad 3/Semana 9/”) #————————————————————————————————-* datos <- read.csv(paste0(maindir,“/UCI_Credit_Card.csv”),header = T)

datos <- datos[complete.cases(datos),] #Se tiene que cambiar las variables, que son dicotomicas: plot1 <- ggplot(data = datos, aes(x=factor(SEX), fill =factor(default.payment.next.month))) + geom_bar() + ylab(“Observations count”) + scale_x_discrete(labels = c(‘Male’,‘Female’)) + xlab("")

plot1

plot2 <- ggplot(data = datos, aes(x=factor(EDUCATION), fill =factor(SEX))) + geom_bar() + ylab(“Observations count”) + xlab(“(1=graduate school, 2=university, 3=high school, 4=others, 5=unknown, 6=unknown)”)

plot2

#En los niveles educativos mas bajos hay mas mujeres, lo cual se aplica la inclusion financiera. #Se puede decir que estas dos variables estan correlacionadas, por lo tanto tienen que ir ambas en nuestro nuevo modelo.

#Se tiene que cambiar las variables, que son dicotomicas: cred <- datos[,-1] cred\(SEX <- as.factor(cred\)SEX) cred\(MARRIAGE <- as.factor(cred\)MARRIAGE) cred\(EDUCATION <- as.factor(cred\)EDUCATION)

#Hay un 22.12% de los contratos de tarjetas de credito que incumpliran el proximo mes.

#Haremos uso de los modelo Logit ya que es un modelo que analisa variables dicotomicas, como la base de datos que se tiene. #MODELAREMOS CON TODAS LAS VARIABLES modelo1 <- glm(default.payment.next.month ~ LIMIT_BAL + EDUCATION + PAY_2 + BILL_AMT1 + PAY_AMT1 ,data = cred, family = binomial (link = “logit”)) model.AIC <- stepAIC(modelo1) #Se puede observar que el AIC= 29300.52, es un creterio de informacion, tendra que ser comparado con otro AIC de otro modelo para elegir el mejor modelo que explique mejor la variable dependiente.

yhat1<-model.AIC$fitted.values hist(yhat1)

#Ahora lo que se buscara más adelante es un modelo con un AIC menor al de este modelo, pero que solo sontenga 5 variables.

modelo1 <- glm(default.payment.next.month ~ SEX + MARRIAGE + PAY_0 + BILL_AMT6 +, PAY_AMT6 , data = cred, family = binomial (link = “logit”)) model.AIC <- stepAIC(modelo1)

c<-seq(0.001,0.3,by=0.01) sens<-c() spec<-c() for (i in 1:length(c)){ y.pred<-ifelse(model.AIC\(fitted.values > c[i], yes = 1, no = 0) spec[i]<-prop.table(table(cred\)default.payment.next.month,y.pred),1)[1] sens[i]<-prop.table(table(cred$default.payment.next.month,y.pred),1)[4] } o.cut<-mean(c[which(round(spec,1)==round(sens,1))],na.rm = T) plot(c,sens,type=“l”,col=2,main=c(“Especificidad vs Sensibilidad”),ylab=c(“Especificidad/Sensibilidad”)) lines(c,spec,col=3)

##(ESPECIFICIDAD Y SENSIBILIDAD)

abline(v=o.cut) print(o.cut) y.pred<-ifelse(model.AIC\(fitted.values > o.cut, yes = 1, no = 0) matriz_confusion <- table(cred\)default.payment.next.month, y.pred, dnn = c(“observaciones”, “predicciones”)) prop.table(matriz_confusion,1) #Se evalua la matriz de confusion para interpretar la especificidad y la sensibilidad. #Si el modelo es correcto en prediccion se tendra la prediccion correcta de fracasos y exitos. #La especificidad se interpreta de la siguiente manera: con el modelo que se ha elejido hasta ahora se tiene #un 60% probabilidad de fracaso, en este caso 0= no default, por ello se puede decir que exite un 60% de probabilidad #de que no se entre en default en proximo mes,de acuerdo a las variables tomadas para dicha prediccion.

##AREA BAJO LA CURVA ROC roc(cred$default.payment.next.month,yhat1)

plot(roc(cred$default.payment.next.month,yhat1),main=c(“Curva ROC”))

#El area bajo la curva es 0.6761, por ello decimos que es media aceptable, se esperaria que sa mayor a 0.90 para que se acepte #completamente que si se hizo una buena prediccion. Es mejor cuando esta pegado a 1. #——————————————————————————————-* XB <- as.formula(“default.payment.next.month ~ factor(SEX)+factor(MARRIAGE)+factor(EDUCATION)”) modelo2 <- glm(XB,data = cred) summary(modelo2)

logitmfx(formula=XB, data=cred) summary (model.AIC)