1. Introducción

Este documento presenta un análisis exploratorio de datos (EDA) del conjunto de datos “BD SFC.csv”, que contiene información detallada sobre las carteras de microcréditos y otros rubros, de diversas entidades financieras vigiladas en Colombia ..

2. Carga de librerías

Primero cargamos las librerías necesarias para nuestro análisis.

# Manipulación de datos
search()
## [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
## [4] "package:grDevices" "package:utils"     "package:datasets" 
## [7] "package:methods"   "Autoloads"         "package:base"
library(tidyverse)
library(lubridate)

# Visualización
library(ggplot2)
library(scales)
library(RColorBrewer)
library(leaflet)  # Para mapas
library(DT)       # Para tablas interactivas
library(forecast)

# Análisis espacial
library(sf)       # Para datos espaciales

3. Carga y exploración inicial de datos

Cargamos el dataset y examinamos su estructura.

# Carga de datos - ajusta la ruta según sea necesario
SFC_data <- read_csv("BD SFC.csv")

# Vista preliminar de los datos
head(SFC_data)
## # A tibble: 6 × 11
##   TIPO_ENTIDAD NOMBRE_TIPO_ENTIDAD     CODIGO_ENTIDAD NOMBRE_ENTIDAD FECHA_CORTE
##          <dbl> <chr>                            <dbl> <chr>          <chr>      
## 1            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 31/07/2024 
## 2            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 30/06/2024 
## 3            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 31/05/2024 
## 4            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 30/04/2024 
## 5            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 31/03/2024 
## 6            1 ESTABLECIMIENTOS BANCA…              1 BANCO DE BOGO… 29/02/2024 
## # ℹ 6 more variables: CUENTA <dbl>, NOMBRE_CUENTA <chr>, MONEDA <dbl>,
## #   `NOMBRE MONEDA` <chr>, SIGNO_VALOR <chr>, VALOR <dbl>
# Estructura del conjunto de datos
glimpse(SFC_data)
## Rows: 16,286,348
## Columns: 11
## $ TIPO_ENTIDAD        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ NOMBRE_TIPO_ENTIDAD <chr> "ESTABLECIMIENTOS BANCARIOS", "ESTABLECIMIENTOS BA…
## $ CODIGO_ENTIDAD      <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ NOMBRE_ENTIDAD      <chr> "BANCO DE BOGOTA S.A.", "BANCO DE BOGOTA S.A.", "B…
## $ FECHA_CORTE         <chr> "31/07/2024", "30/06/2024", "31/05/2024", "30/04/2…
## $ CUENTA              <dbl> 1e+05, 1e+05, 1e+05, 1e+05, 1e+05, 1e+05, 1e+05, 1…
## $ NOMBRE_CUENTA       <chr> "ACTIVO", "ACTIVO", "ACTIVO", "ACTIVO", "ACTIVO", …
## $ MONEDA              <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ `NOMBRE MONEDA`     <chr> "Total", "Total", "Total", "Total", "Total", "Tota…
## $ SIGNO_VALOR         <chr> "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", …
## $ VALOR               <dbl> 1.248434e+14, 1.237484e+14, 1.211837e+14, 1.205890…
# Resumen estadístico básico
summary(SFC_data)
##   TIPO_ENTIDAD    NOMBRE_TIPO_ENTIDAD CODIGO_ENTIDAD   NOMBRE_ENTIDAD    
##  Min.   :  1.00   Length:16286348     Min.   :  1.00   Length:16286348   
##  1st Qu.:  1.00   Class :character    1st Qu.:  6.00   Class :character  
##  Median : 11.00   Mode  :character    Median : 20.00   Mode  :character  
##  Mean   : 40.92                       Mean   : 29.64                     
##  3rd Qu.: 22.00                       3rd Qu.: 46.00                     
##  Max.   :509.00                       Max.   :161.00                     
##  FECHA_CORTE            CUENTA       NOMBRE_CUENTA          MONEDA     
##  Length:16286348    Min.   :100000   Length:16286348    Min.   :0.000  
##  Class :character   1st Qu.:190000   Class :character   1st Qu.:0.000  
##  Mode  :character   Median :410238   Mode  :character   Median :1.000  
##                     Mean   :387658                      Mean   :0.637  
##                     3rd Qu.:515000                      3rd Qu.:1.000  
##                     Max.   :840500                      Max.   :2.000  
##  NOMBRE MONEDA      SIGNO_VALOR            VALOR           
##  Length:16286348    Length:16286348    Min.   :-7.485e+13  
##  Class :character   Class :character   1st Qu.: 2.072e+07  
##  Mode  :character   Mode  :character   Median : 5.023e+08  
##                                        Mean   : 1.247e+12  
##                                        3rd Qu.: 8.635e+09  
##                                        Max.   : 8.998e+15

4. Limpieza y transformación de datos

Antes de profundizar en el análisis, vamos a filtrar, limpiar y transformar los datos.

# Filtrar los datos para el microcrédito (cuentas 141200-141299) y moneda = 0
SFC_filtrada <- subset(SFC_data, CUENTA >= 141200 & CUENTA <= 141299 & MONEDA == 0)

# Eliminar columnas innecesarias
columnas_a_eliminar <- c("TIPO_ENTIDAD", "NOMBRE_TIPO_ENTIDAD", "CODIGO_ENTIDAD", "MONEDA", "NOMBRE.MONEDA", "SIGNO_VALOR")
SFC_filtrada <- SFC_filtrada[, !(names(SFC_filtrada) %in% columnas_a_eliminar)]

# Convertir 'FECHA_CORTE'  y establecer como índice (usando rownames)
SFC_filtrada$ID <- 1:nrow(SFC_filtrada)
rownames(SFC_filtrada) <- paste(SFC_filtrada$FECHA_CORTE, SFC_filtrada$ID, sep = "_")


# Asegurarse de que la columna 'VALOR' sea numérica
SFC_filtrada$VALOR <- as.numeric(as.character(SFC_filtrada$VALOR))
SFC_filtrada <- SFC_filtrada[!is.na(SFC_filtrada$VALOR), ]
# Asegurarse de que la columna 'FECHA_CORTE' sea de tipo Date
SFC_filtrada$FECHA_CORTE <- as.Date(SFC_filtrada$FECHA_CORTE, format = "%d/%m/%Y") # Ajusta el formato si es diferente

# Agrupar por fecha para obtener el total mensual de microcréditos
# Suponemos que 'VALOR' es el valor de microcréditos en un periodo específico.
data_series <- aggregate(VALOR ~ format(FECHA_CORTE, "%Y-%m"), SFC_filtrada, sum)

# Convertir la columna de fechas a Date y establecer como índice
data_series$FECHA_CORTE <- as.Date(paste0(data_series$`format(FECHA_CORTE, "%Y-%m")`, "-01"))
rownames(data_series) <- data_series$FECHA_CORTE

5. Análisis exploratorio

5.1 Estadísticas descriptivas

## Resumen estadístico de la variable VALOR
summary(SFC_filtrada$VALOR)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.000e+00 6.073e+08 7.337e+09 2.166e+11 5.066e+10 9.888e+12
# Histograma de VALOR
ggplot(SFC_filtrada, aes(x = VALOR)) +
  geom_histogram(fill = "lightblue", color = "black") +
  labs(title = "Histograma de VALOR", x = "Valor", y = "Frecuencia") +
  theme_minimal()

# Boxplot de VALOR
ggplot(SFC_filtrada, aes(y = VALOR)) +
  geom_boxplot(fill = "lightgreen", color = "black") +
  labs(title = "Boxplot de VALOR", y = "Valor") +
  theme_minimal()

# Gráfico de series de tiempo de VALOR
ggplot(SFC_filtrada, aes(x = FECHA_CORTE, y = VALOR)) +
  geom_line(color = "blue") +
  labs(title = "Valor de microcréditos a lo largo del tiempo", x = "Fecha", y = "Valor") +
  theme_minimal()

# Gráfico de series de tiempo de VALOR agregado por mes
ggplot(data_series, aes(x = FECHA_CORTE, y = VALOR)) +
  geom_line(color = "red") +
  labs(title = "Valor total de microcréditos por mes", x = "Fecha", y = "Valor") +
  theme_minimal()

# Descomposición de la serie de tiempo agregada
ts_data <- ts(data_series$VALOR, frequency = 12) # Asumiendo datos mensuales
decomposed <- decompose(ts_data)
autoplot(decomposed) +
  theme_minimal()

5.2 Valores Atipicos

#{r distributions} #