Descripcion de la data

La data elegida del presente trabajo trata sobre Ratios de Morosidad según días de incumplimiento de los meses: enero, febrero, marzo del años 2019, la cual tiene una extensión “xls” y forma parte de la base de datos de la SBS. La información estadística de Banca Múltiple registrada en la SBS la podemos encontrar [aquí] (http://www.sbs.gob.pe/app/stats_net/stats/EstadisticaBoletinEstadistico.aspx?p=1#)

library(readxl) #Cargo el paquete para leer Excel del tidyverse # parte de los paquetes que queremos usar
################ANTHONY MENDEZ- ALUMNO BEST###############
# OBJETIVO DE LA TAREA N2-BEST: Descargar 1 archivo de la SBS ####
#configurando mi directorio  de trabajo!
setwd("C:/Users/ROCIO/Desktop/TAREA BEST-R")
#copio la url de la SBS a usar sobre Ratios de Morosidad
fileUrl <-  "http://intranet2.sbs.gob.pe/estadistica/financiera/2019/Enero/B-220512-en2019.XLS"

# Primero el caso por default
download.file(fileUrl,destfile="MOROSIDAD MALA.XLS")
# Ahora el caso con wb
download.file(fileUrl,destfile="MOROSIDAD.XLS",mode="wb")

Primer Objetivo: crear 1 carpeta para almacenar la data descargada de la SBS sobre Ratio de Morosidad

mainDir <- "C:/Users/ROCIO/Desktop/TAREA BEST-R"
subDir <- "DATAMOROSIDAD"
dir.create(file.path(mainDir, subDir), showWarnings = T)

Segundo Objetivo: crear carpetas ENERO a MARZO con un loop

subfolder_names <- c("ENERO","FEBRERO","MARZO") #cambiar a mi  WD!!

mainDir <- "C:/Users/ROCIO/Desktop/TAREA BEST-R/DATAMOROSIDAD"

for (j in 1:length(subfolder_names)){
  dir.create(file.path(mainDir, subfolder_names[j]), showWarnings = T)
}

Tercer Objetivo: descargar todos los archivos de ENERO 2019 en la carpeta DATA/ENERO

ENERO

setwd(“C:/Users/ROCIO/Desktop/TAREA BEST-R/DATAMOROSIDAD/ENERO”) data_ENERO<- readLines(n=1) # leer las siguiente lineas http://intranet2.sbs.gob.pe/estadistica/financiera/2019/Enero/B-220512-en2019.XLS

for (i in data_ENERO) { destfile=strsplit(i,split=“/”) if (!file.exists(destfile[[1]][8])) { download.file(i,destfile[[1]][8],mode=“wb”) }
else print(“El archivo SBS ENERO 2019 esta descargado”)
}

FEBRERO

setwd(“C:/Users/ROCIO/Desktop/TAREAN2 BEST/DATAMOROSIDAD/FEBRERO”) data_FEBRERO<- readLines(n=1) http://intranet2.sbs.gob.pe/estadistica/financiera/2019/Febrero/B-220512-fe2019.XLS

for (i in data_FEBRERO) { destfile=strsplit(i,split=“/”) if (!file.exists(destfile[[1]][8])) { download.file(i,destfile[[1]][8],mode=“wb”) } else print(“El archivo SBS FEBRERO 2019 esta descargado”)
}

MARZO

setwd(“C:/Users/ROCIO/Desktop/TAREAN2 BEST/DATAMOROSIDAD/MARZO”) data_MARZO<- readLines(n=1) http://intranet2.sbs.gob.pe/estadistica/financiera/2019/Marzo/B-220512-ma2019.XLS

for (i in data_MARZO) { destfile=strsplit(i,split=“/”) if (!file.exists(destfile[[1]][8])) { download.file(i,destfile[[1]][8],mode=“wb”) } else print(“El archivo SBS MARZO 2019 esta descargado”)
}

Limpieza de datos

1 Objetivo: Leer el archivo excel

library(readxl) #Cargo el paquete para leer Excel del tidyverse
setwd("C:/Users/ROCIO/Desktop/TAREA BEST-R/DATAMOROSIDAD/ENERO") # Configuro el directorio de trabajo!
data<-readxl::read_xls("B-220512-en2019.xls") #carguemos la data de ENERO 2019 DE LA SBS MOROSIDAD
View(data)

2 Objetivo: Limpiamos la data SBS

library(dplyr)
library(tidyr)
setwd("C:/Users/ROCIO/Desktop/TAREA BEST-R/DATAMOROSIDAD/ENERO") # Configuro el directorio de trabajo!
data<-readxl::read_xls("B-220512-en2019.xls",skip = 6) 
#QUITAMOS LAS PRIMERAS 6 LÍNEAS DEL EXCEL
View(data)
data<-data[complete.cases(data),]

USAMOS LA FUNCIÓN PARA USAR FILAS sin ESPACIOS VACÍOS

complete.cases(data)
##  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [15] TRUE TRUE TRUE
View(data)
options(scipen=999)
#DESACTIVAMOS LA NOMENCLATURA CIENTÍFICO DE NÚMEROS
View(data)
names(data)
## [1] "EMPRESAS"                               
## [2] "Más de 30 días de incumplimiento"       
## [3] "Más de 60 días de incumplimiento"       
## [4] "Más de 90 días de incumplimiento*"      
## [5] "Más de 120 días de incumplimiento"      
## [6] "Morosidad según criterio contable SBS**"
names(data)[7] #SELECCIONAMOS LA EMPRESA 7
## [1] NA
data<-data[-7,] # quitamos la FILA 7 
names(data)
## [1] "EMPRESAS"                               
## [2] "Más de 30 días de incumplimiento"       
## [3] "Más de 60 días de incumplimiento"       
## [4] "Más de 90 días de incumplimiento*"      
## [5] "Más de 120 días de incumplimiento"      
## [6] "Morosidad según criterio contable SBS**"
names(data)[15] #SELECCIONAMOS LA EMPRESA 15
## [1] NA
data<-data[-15,] # quitamos la FILA 15 
exc = !names(data) %in% "EMPRESAS" 
#Esta forma de elegir todo excepto una columna de un vector
exc # va a aplicar todo excepto a la primera columna
## [1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
data[,exc] # ven? no aparece la columns "EMPRESAS"
## # A tibble: 15 x 5
##    `Más de 30 días~ `Más de 60 días~ `Más de 90 días~ `Más de 120 día~
##    <chr>            <chr>            <chr>            <chr>           
##  1 4.1026921471708~ 3.3843568899470~ 2.8027598009634~ 2.6083224077495~
##  2 2.7173827096708~ 2.6972701710665~ 2.6285709846177~ 2.4605477434023~
##  3 3.06311960797199 2.5780889793585~ 2.2979205997732~ 2.0795683900725~
##  4 3.6968370141985~ 3.2954780726225~ 3.0736816855470~ 2.7700796275703~
##  5 4.2765986360997~ 3.3583731690816~ 2.9165484345359~ 2.5568396372371~
##  6 3.5704745161775~ 3.2810340888408~ 3.0807690425354~ 2.8324414444589~
##  7 3.6985890732740~ 2.9550881895675~ 2.4992803081519~ 2.1734985792272~
##  8 5.5008834163959~ 4.4834474549621~ 3.3983693005427~ 2.7820955582131~
##  9 4.2329659071046~ 2.9633404961206~ 2.3571045761917~ 1.9169166975983~
## 10 5.3399794136474~ 3.6854993097396~ 2.5456397153871~ 1.5364618961774~
## 11 0.7583967630086~ 0.6292370754609~ 0.5851105287920~ 0.5826282699492~
## 12 5.3011488617571~ 3.8659043956126~ 2.8141769700876~ 1.8380768701383~
## 13 16.793457387270~ 11.939138032865~ 7.6525897898890~ 5.0217484337430~
## 14 9.3662712614794~ 7.3192936810474~ 4.9675122346518~ 2.8172938662463~
## 15 3.6145699080123~ 3.0224702158120~ 2.6156969476014~ 2.3409642395142~
## # ... with 1 more variable: `Morosidad según criterio contable
## #   SBS**` <chr>
data[,exc] = sapply(data[,exc],as.character) # lo convierto a character. 
data[,exc] = sapply(data[,exc],as.numeric) # lo convierto a numerico
data[,exc] = round(data[,exc],2) #redondeo a 2 cifras
View(data)

Creamos una columna para todas las empresas del día de actualizando de la presente data

data$Periodo= as.Date("2019-03-26") 
data
## # A tibble: 15 x 7
##    EMPRESAS `Más de 30 días~ `Más de 60 días~ `Más de 90 días~
##    <chr>               <dbl>            <dbl>            <dbl>
##  1 B. Cont~             4.1              3.38             2.8 
##  2 B. de C~             2.72             2.7              2.63
##  3 B. de C~             3.06             2.58             2.3 
##  4 B. Pich~             3.7              3.3              3.07
##  5 B. Inte~             4.28             3.36             2.92
##  6 Scotiab~             3.57             3.28             3.08
##  7 Interba~             3.7              2.96             2.5 
##  8 Mibanco              5.5              4.48             3.4 
##  9 B. GNB               4.23             2.96             2.36
## 10 B. Fala~             5.34             3.69             2.55
## 11 B. Sant~             0.76             0.63             0.59
## 12 B. Ripl~             5.3              3.87             2.81
## 13 B. Azte~            16.8             11.9              7.65
## 14 B. Cenc~             9.37             7.32             4.97
## 15 TOTAL B~             3.61             3.02             2.62
## # ... with 3 more variables: `Más de 120 días de incumplimiento` <dbl>,
## #   `Morosidad según criterio contable SBS**` <dbl>, Periodo <date>
View(data)
EMPRESAS <- c( "BBVA","B.del Comercio", "BCP",
              "Pichincha","BIF","Scotiabank",
              "Interbank","Mibanco",
              "GNB","Falabella","Santander","Ripley","Azteca","Cencosud",
              "TOTAL BANCA MÚLTIPLE")
cbind(EMPRESAS, data)
##                EMPRESAS
## 1                  BBVA
## 2        B.del Comercio
## 3                   BCP
## 4             Pichincha
## 5                   BIF
## 6            Scotiabank
## 7             Interbank
## 8               Mibanco
## 9                   GNB
## 10            Falabella
## 11            Santander
## 12               Ripley
## 13               Azteca
## 14             Cencosud
## 15 TOTAL BANCA MÚLTIPLE
##                                                  EMPRESAS
## 1                                          B. Continental
## 2                                          B. de Comercio
## 3  B. de Crédito del Perú (con sucursales en el exterior)
## 4                                            B. Pichincha
## 5                           B. Interamericano de Finanzas
## 6                                         Scotiabank Perú
## 7               Interbank (con sucursales en el exterior)
## 8                                                 Mibanco
## 9                                                  B. GNB
## 10                                      B. Falabella Perú
## 11                                      B. Santander Perú
## 12                                              B. Ripley
## 13                                         B. Azteca Perú
## 14                                            B. Cencosud
## 15                                   TOTAL BANCA MÚLTIPLE
##    Más de 30 días de incumplimiento Más de 60 días de incumplimiento
## 1                              4.10                             3.38
## 2                              2.72                             2.70
## 3                              3.06                             2.58
## 4                              3.70                             3.30
## 5                              4.28                             3.36
## 6                              3.57                             3.28
## 7                              3.70                             2.96
## 8                              5.50                             4.48
## 9                              4.23                             2.96
## 10                             5.34                             3.69
## 11                             0.76                             0.63
## 12                             5.30                             3.87
## 13                            16.79                            11.94
## 14                             9.37                             7.32
## 15                             3.61                             3.02
##    Más de 90 días de incumplimiento* Más de 120 días de incumplimiento
## 1                               2.80                              2.61
## 2                               2.63                              2.46
## 3                               2.30                              2.08
## 4                               3.07                              2.77
## 5                               2.92                              2.56
## 6                               3.08                              2.83
## 7                               2.50                              2.17
## 8                               3.40                              2.78
## 9                               2.36                              1.92
## 10                              2.55                              1.54
## 11                              0.59                              0.58
## 12                              2.81                              1.84
## 13                              7.65                              5.02
## 14                              4.97                              2.82
## 15                              2.62                              2.34
##    Morosidad según criterio contable SBS**    Periodo
## 1                                     3.09 2019-03-26
## 2                                     2.73 2019-03-26
## 3                                     2.80 2019-03-26
## 4                                     3.58 2019-03-26
## 5                                     3.02 2019-03-26
## 6                                     3.51 2019-03-26
## 7                                     2.65 2019-03-26
## 8                                     5.30 2019-03-26
## 9                                     2.79 2019-03-26
## 10                                    2.95 2019-03-26
## 11                                    0.64 2019-03-26
## 12                                    3.09 2019-03-26
## 13                                    9.30 2019-03-26
## 14                                    5.77 2019-03-26
## 15                                    3.04 2019-03-26

data <- data.frame(EMPRESAS, data) data

ELIMINAR FILA 2

names(data)
## [1] "EMPRESAS"                               
## [2] "Más de 30 días de incumplimiento"       
## [3] "Más de 60 días de incumplimiento"       
## [4] "Más de 90 días de incumplimiento*"      
## [5] "Más de 120 días de incumplimiento"      
## [6] "Morosidad según criterio contable SBS**"
## [7] "Periodo"
names(data)[2] 
## [1] "Más de 30 días de incumplimiento"
data<-data[,-2]  

CAMBIAR LOS NOMBRES

en_filas(data)<-c(“EMPRESAS”, “BBVA”,“B.del Comercio”, “BCP”, “Pichincha”,“BIF”,“Scotiabank”, “Interbank”,“Mibanco”, “GNB”,“Falabella”,“Santander”,“Ripley”,“Azteca”,“Cencosud”, “TOTAL BANCA MÚLTIPLE”) View(data)

data$EMPRESAS[5]="Morosidad según criterio contable SBS"

3 Objetivo: Guardar la data SBS

saveRDS(data,file="DatalimpiaMorosidad.RDS")  
data(data)

ANÁLISIS EXPLORATORIO

library(readxl) #Cargo el paquete para leer Excel del tidyverse
setwd("C:/Users/ROCIO/Desktop/TAREA BEST-R/DATAMOROSIDAD/ENERO") # Configuro el directorio de trabajo!
datamorosidad <- readRDS("DatalimpiaMorosidad.RDS") #carguemos la data de ENERO 2019 DE LA SBS MOROSIDAD
View(datamorosidad)
library(dplyr) #Para ver algunas características básicas del conjunto de datos
dim(datamorosidad) #No indica que tenemos 15 filas con 7 columnas
## [1] 15  7
str(datamorosidad)
## 'data.frame':    15 obs. of  7 variables:
##  $ EMPRESAS                               : Factor w/ 15 levels "Azteca","B.del Comercio",..: 3 2 4 11 5 14 9 10 8 7 ...
##  $ Más.de.30.días.de.incumplimiento       : num  4.1 2.72 3.06 3.7 4.28 3.57 3.7 5.5 4.23 5.34 ...
##  $ Más.de.60.días.de.incumplimiento       : num  3.38 2.7 2.58 3.3 3.36 3.28 2.96 4.48 2.96 3.69 ...
##  $ Más.de.90.días.de.incumplimiento.      : num  2.8 2.63 2.3 3.07 2.92 3.08 2.5 3.4 2.36 2.55 ...
##  $ Más.de.120.días.de.incumplimiento      : num  2.61 2.46 2.08 2.77 2.56 2.83 2.17 2.78 1.92 1.54 ...
##  $ Morosidad.según.criterio.contable.SBS..: num  3.09 2.73 2.8 3.58 3.02 3.51 2.65 5.3 2.79 2.95 ...
##  $ Periodo                                : Date, format: "2019-03-26" "2019-03-26" ...
datamorosidad 
##                EMPRESAS Más.de.30.días.de.incumplimiento
## 1                  BBVA                             4.10
## 2        B.del Comercio                             2.72
## 3                   BCP                             3.06
## 4             Pichincha                             3.70
## 5                   BIF                             4.28
## 6            Scotiabank                             3.57
## 7             Interbank                             3.70
## 8               Mibanco                             5.50
## 9                   GNB                             4.23
## 10            Falabella                             5.34
## 11            Santander                             0.76
## 12               Ripley                             5.30
## 13               Azteca                            16.79
## 14             Cencosud                             9.37
## 15 TOTAL BANCA MÚLTIPLE                             3.61
##    Más.de.60.días.de.incumplimiento Más.de.90.días.de.incumplimiento.
## 1                              3.38                              2.80
## 2                              2.70                              2.63
## 3                              2.58                              2.30
## 4                              3.30                              3.07
## 5                              3.36                              2.92
## 6                              3.28                              3.08
## 7                              2.96                              2.50
## 8                              4.48                              3.40
## 9                              2.96                              2.36
## 10                             3.69                              2.55
## 11                             0.63                              0.59
## 12                             3.87                              2.81
## 13                            11.94                              7.65
## 14                             7.32                              4.97
## 15                             3.02                              2.62
##    Más.de.120.días.de.incumplimiento
## 1                               2.61
## 2                               2.46
## 3                               2.08
## 4                               2.77
## 5                               2.56
## 6                               2.83
## 7                               2.17
## 8                               2.78
## 9                               1.92
## 10                              1.54
## 11                              0.58
## 12                              1.84
## 13                              5.02
## 14                              2.82
## 15                              2.34
##    Morosidad.según.criterio.contable.SBS..    Periodo
## 1                                     3.09 2019-03-26
## 2                                     2.73 2019-03-26
## 3                                     2.80 2019-03-26
## 4                                     3.58 2019-03-26
## 5                                     3.02 2019-03-26
## 6                                     3.51 2019-03-26
## 7                                     2.65 2019-03-26
## 8                                     5.30 2019-03-26
## 9                                     2.79 2019-03-26
## 10                                    2.95 2019-03-26
## 11                                    0.64 2019-03-26
## 12                                    3.09 2019-03-26
## 13                                    9.30 2019-03-26
## 14                                    5.77 2019-03-26
## 15                                    3.04 2019-03-26
head(datamorosidad,n=5) #si queremos evaluar solo los 5 primeras bancos 
##         EMPRESAS Más.de.30.días.de.incumplimiento
## 1           BBVA                             4.10
## 2 B.del Comercio                             2.72
## 3            BCP                             3.06
## 4      Pichincha                             3.70
## 5            BIF                             4.28
##   Más.de.60.días.de.incumplimiento Más.de.90.días.de.incumplimiento.
## 1                             3.38                              2.80
## 2                             2.70                              2.63
## 3                             2.58                              2.30
## 4                             3.30                              3.07
## 5                             3.36                              2.92
##   Más.de.120.días.de.incumplimiento
## 1                              2.61
## 2                              2.46
## 3                              2.08
## 4                              2.77
## 5                              2.56
##   Morosidad.según.criterio.contable.SBS..    Periodo
## 1                                    3.09 2019-03-26
## 2                                    2.73 2019-03-26
## 3                                    2.80 2019-03-26
## 4                                    3.58 2019-03-26
## 5                                    3.02 2019-03-26

PARA VISUALIZAR MEJOR LAS COLUMNAS, MODIFICAMOS SUS NOMBRES

colnames(datamorosidad)<-c("BANCOS", "+30 DÍAS INCUMPLIMIENTO", "+60 DÍAS INCUMPLIMIENTO",
                           "+90 DÍAS INCUMPLIMIENTO", "120 DÍAS INCUMPLIMIENTO","MOROSIDAD CRITERIO CONTABLE SBS",
                           "PERIODO")
View(datamorosidad)

Para explorar y ver el tipo de las variables en nuestra data SBS glimpse(datamorosidad) ###podemos ver a las columnas con formato “dbl” que son data numérica El resumen de las variables

summary(datamorosidad)
##             BANCOS  +30 DÍAS INCUMPLIMIENTO +60 DÍAS INCUMPLIMIENTO
##  Azteca        :1   Min.   : 0.760          Min.   : 0.630         
##  B.del Comercio:1   1st Qu.: 3.590          1st Qu.: 2.960         
##  BBVA          :1   Median : 4.100          Median : 3.300         
##  BCP           :1   Mean   : 5.069          Mean   : 3.965         
##  BIF           :1   3rd Qu.: 5.320          3rd Qu.: 3.780         
##  Cencosud      :1   Max.   :16.790          Max.   :11.940         
##  (Other)       :9                                                  
##  +90 DÍAS INCUMPLIMIENTO 120 DÍAS INCUMPLIMIENTO
##  Min.   :0.590           Min.   :0.580          
##  1st Qu.:2.525           1st Qu.:2.000          
##  Median :2.800           Median :2.460          
##  Mean   :3.083           Mean   :2.421          
##  3rd Qu.:3.075           3rd Qu.:2.775          
##  Max.   :7.650           Max.   :5.020          
##                                                 
##  MOROSIDAD CRITERIO CONTABLE SBS    PERIODO          
##  Min.   :0.640                   Min.   :2019-03-26  
##  1st Qu.:2.795                   1st Qu.:2019-03-26  
##  Median :3.040                   Median :2019-03-26  
##  Mean   :3.617                   Mean   :2019-03-26  
##  3rd Qu.:3.545                   3rd Qu.:2019-03-26  
##  Max.   :9.300                   Max.   :2019-03-26  
## 

Comencemos a utilizar gráficos

hist(datamorosidad$`+30 DÍAS INCUMPLIMIENTO`)

hist(datamorosidad$`+60 DÍAS INCUMPLIMIENTO`)

hist(datamorosidad$`+90 DÍAS INCUMPLIMIENTO`)

hist(datamorosidad$`120 DÍAS INCUMPLIMIENTO`)

hist(datamorosidad$`MOROSIDAD CRITERIO CONTABLE SBS`)

hist(datamorosidad$`+30 DÍAS INCUMPLIMIENTO`,freq=FALSE,col="lightcyan")

Agregamos un título a histograma de Ratios de morosidad de +30 días incumplimiento

hist(datamorosidad$`+30 DÍAS INCUMPLIMIENTO`,freq=FALSE,col="lightcyan", main="Histograma- Ratios Morosidad de +30 días incumplimiento")
lines(density(datamorosidad$`+30 DÍAS INCUMPLIMIENTO`),col="red",lwd=2)

hist(datamorosidad$`+60 DÍAS INCUMPLIMIENTO`,freq=FALSE,col="lightcyan", main="Histograma- Ratios Morosidad de +60 días incumplimiento")
lines(density(datamorosidad$`+60 DÍAS INCUMPLIMIENTO`),col="red",lwd=2)

hist(datamorosidad$`+90 DÍAS INCUMPLIMIENTO`,freq=FALSE,col="lightcyan", main="Histograma- Ratios Morosidad de +90 días incumplimiento")
lines(density(datamorosidad$`+90 DÍAS INCUMPLIMIENTO`),col="red",lwd=2)

hist(datamorosidad$`120 DÍAS INCUMPLIMIENTO`,freq=FALSE,col="lightcyan", main="Histograma- Ratios Morosidad de 120 días incumplimiento")
lines(density(datamorosidad$`120 DÍAS INCUMPLIMIENTO`),col="red",lwd=2)

hist(datamorosidad$`MOROSIDAD CRITERIO CONTABLE SBS`,freq=FALSE,col="lightcyan", main="Histograma- Ratios Morosidad de criterio contable SBS")
lines(density(datamorosidad$`MOROSIDAD CRITERIO CONTABLE SBS`),col="red",lwd=2)

CONTINUARÉ CON EL ANÁLISIS EXPLORATORIO DE GRÁFICOS Y EL ANÁLISIS ESTADÍSTICO A PROYECTAR EN LAS SIGUIENTES PUBLICACIONES