Introducción

En el presente informe, se realiza un análisis exhaustivo de los datos relacionados con las pólizas emitidas por una compañía de seguros, con el fin de evaluar la calidad de los datos, identificar valores atípicos, realizar un análisis exploratorio de la prima emitida por sucursal y ramo comercial, analizar la evolución de la prima total y por ramo a lo largo del tiempo, y llevar a cabo una segmentación de clientes por tipo de póliza y monto asegurado.

El análisis está estructurado en cuatro secciones, cada una dirigida a un aspecto clave del estudio de datos.

1. Evaluación de la Calidad de los Datos en los Campos Asignados

En esta primera sección, se evalúa la calidad de los datos para detectar posibles problemas de inconsistencias o valores faltantes. La estructura de los datos fue inspeccionada mediante funciones de resumen estadístico, y se revisó la presencia de valores nulos en las principales variables de interés, como la fecha de constitución de la póliza, la prima anual, y la suma asegurada.

La base está conformada por un matriz de 15 variables y 32.028 filas de datos.

dim(data)
## [1] 32028    15

1.1 Resultados de la calidad de los datos

  1. Estructura de los Datos: Se evaluaron los tipos de datos y su estructura general, con el fin de garantizar la correcta lectura de los valores y tipos. Valores Nulos: No se observó la existencia de valores nulos en las variables de interés.

  2. Rango de Fechas: Las fechas mínimas y máximas de emisión de las pólizas fueron revisadas para detectar posibles inconsistencias.

  3. Estadísticos relevantes: Se verificó los principales estadísticos con la finalidad de hacernos una idea de la forma de las distribuciones de frecuencia de las variables numéricas Prima Anual y Suma Asegurada, y se puede anticipar que las mismas aparentan no siguir una distribución normal.

Tabla 1.1

Estadísticos relevantes en Prima Anual

summary_table_prima_anual <- Polizas_Emitidas %>%
  summarise(
    Min_Prima_Anual = min(prima_anual, na.rm = TRUE),
    Q1_Prima_Anual = quantile(prima_anual, 0.25, na.rm = TRUE),
    Median_Prima_Anual = median(prima_anual, na.rm = TRUE),
    Mean_Prima_Anual = mean(prima_anual, na.rm = TRUE),
    Q3_Prima_Anual = quantile(prima_anual, 0.75, na.rm = TRUE),
    Max_Prima_Anual = max(prima_anual, na.rm = TRUE),
  )

print(summary_table_prima_anual)
##   Min_Prima_Anual Q1_Prima_Anual Median_Prima_Anual Mean_Prima_Anual
## 1            6.84         406.32             1115.4         6422.432
##   Q3_Prima_Anual Max_Prima_Anual
## 1        3692.76         1153950

Tabla 1.2

Estadísticos relevantes en Suma Asegurada

summary_table_suma_aseg <- Polizas_Emitidas %>%
  summarise(
    Min_Suma_Aseg = min(suma_aseg, na.rm = TRUE),
    Q1_Suma_Aseg = quantile(suma_aseg, 0.25, na.rm = TRUE),
    Median_Suma_Aseg = median(suma_aseg, na.rm = TRUE),
    Mean_Suma_Aseg = mean(suma_aseg, na.rm = TRUE),
    Q3_Suma_Aseg = quantile(suma_aseg, 0.75, na.rm = TRUE),
    Max_Suma_Aseg = max(suma_aseg, na.rm = TRUE)
  )

print(summary_table_suma_aseg)
##   Min_Suma_Aseg Q1_Suma_Aseg Median_Suma_Aseg Mean_Suma_Aseg Q3_Suma_Aseg
## 1          0.01         5000         13971.06       77196.66     43170.78
##   Max_Suma_Aseg
## 1      24399116

Figura 1.3

Histograma de Prima Anual

ggplot(data, aes(x = prima_anual)) +
  geom_histogram(binwidth = 1000, fill = "blue", color = "black", alpha = 0.7) +
  labs(title = "Histograma de Prima Anual",
       x = "Prima Anual",
       y = "Frecuencia") +
  theme_minimal()

Nota: Distribución de valores en la variable Prima Anual cargados a la izquierda

Figura 1.4

Histograma de Suma Asegurada

ggplot(data, aes(x = suma_aseg / 1000000)) +  # Convertir a millones
  geom_histogram(binwidth = 0.5, fill = "green", color = "black", alpha = 0.7) +
  labs(title = "Histograma de Suma Asegurada",
       x = "Suma Asegurada (Millones)",
       y = "Frecuencia") +
  xlim(0, 25) + 
  scale_x_continuous(labels = scales::label_number(scale = 1)) +
  theme_minimal()

Nota: Distribución de valores en la variable Suma Asegurada

2. Identificación y Corrección de Valores Atípicos

En esta etapa, se utilizaron transformaciones logarítmicas en las variables Prima Anual y Suma Asegurada para identificar posibles valores atípicos (outliers). Mediante el uso de gráficos boxplot y estadística descriptiva; se identificaron los valores que se alejaban significativamente del comportamiento promedio, y se realizó una corrección o eliminación de estos valores.

2.1 Resultados de la identificación y corrección de Valores atípicos

  1. Identificación de Outliers: Se identificaron 281 valores atípicos en la variable Prima Anual, y 463 valores atípicos en la variable Suma Asegurada.

Figura 2.1

Boxplot de Prima Anual transformada

# Transformación a logaritmo natural y creación de boxplot de los datos
log_prima_anual <- log(data$prima_anual)
boxplot(log_prima_anual, main = "Boxplot de Prima Anual Transformada", ylab = "Log(Prima Anual)")

Nota: Previamente se realizó una transformación de los datos de prima anual a través del logaritmo para aproximarlo a datos de una distribución normal.

Figura 2.2

Boxplot de Suma Asegurada transformada

# Transformación a logaritmo natural y creación de boxplot de los datos
log_suma_aseg <- log(data$suma_aseg)
boxplot(log_suma_aseg, main = "Boxplot de la Suma Asegurada Transformada", ylab = "Log(Suma Asegurada)")

Nota: Previamente se realizó una transformación de los datos de prima anual a través del logaritmo para aproximarlo a datos de una distribución normal.

  1. Corrección de Outliers: Se procedió a filtrar estos valores para trabajar con un conjunto de datos más limpio y representativo donde se identificaron 281 valores atípicos de la variable Prima Anual y 463 valores atípicos de la variable Suma Asegurada en R.

Tabla 2.3

Identificación de valores atípicos en el espacio transformado en la variable Prima Anual

# Identificación de valores atípicos en el espacio transformado y reversión de la transformación logarítmica de outliers de la variable Prima Anual
outliers_prima_anual_transformada <- boxplot.stats(log_prima_anual)$out
outliers_prima_anual_original <- exp(outliers_prima_anual_transformada)
print(outliers_prima_anual_original)
##   [1]  135539.76       7.08  528000.00  156679.20  248994.12  184443.24
##   [7]  213041.04  224293.56  194115.48  237008.16  137837.16  210575.40
##  [13]  102116.88  133342.20  106845.36  562453.68  300000.00  154477.20
##  [19]  457381.56  152150.64       7.08  357500.64  197260.32  126060.48
##  [25]  149661.12  140498.64  129600.00  900000.00  112320.00  743326.44
##  [31]  160520.04  114660.00  127352.88  167432.64  780000.00  211458.00
##  [37]  171349.80  210000.00  133186.80  179494.32  105037.20  166067.04
##  [43]  257220.00  147800.16  114660.00      12.00  245266.80  252000.00
##  [49]  550105.44  158154.60  115200.00  397261.32  268321.32  192293.16
##  [55]  287211.00  137836.68  143802.72  216750.24  121446.60  139235.52
##  [61]  104814.60  120393.36  137837.16  103152.24  125846.64  177093.00
##  [67]  139872.48  378213.60  137837.16  123751.32  133186.80  106890.36
##  [73]  191473.92  393111.60  137837.16  184555.80  122550.72  180000.00
##  [79]  131178.12      12.00  110472.12  120734.52  457235.40  224707.92
##  [85]  113741.76  139235.52  219857.28  113127.96  388800.00  281369.76
##  [91]  172740.84  127860.00  720000.00  109212.36  127986.72  283969.68
##  [97]  578565.12  119020.80  277058.52  125892.36  216000.00  281830.68
## [103]  110461.08  859517.64  135971.52      12.00  108000.00  172687.56
## [109]  177093.00  198000.00  408086.04  158116.08  105729.00  147744.00
## [115]  108000.00       7.08  192000.00  113438.76  160801.32  566100.84
## [121]  577865.64  214684.68  137604.72  144000.00  108377.64  175768.44
## [127]  115403.64  261038.28  150347.16  139937.04  111790.68  143375.40
## [133]  143000.28  139322.52  132686.40  151944.60  111583.68  138600.00
## [139]  210000.00  205102.20  151944.60  156000.00 1029314.40  109632.48
## [145]  110082.60  168000.00  119602.32  112320.00  189283.08  117866.28
## [151]       7.08  105564.24  115200.00  347521.92  312000.00  145151.88
## [157] 1153949.52  517291.56  114660.00  220922.28  125053.08  120000.00
## [163]  287211.00  139235.52  110939.16  114368.28  157859.64  352837.44
## [169]  348315.60  139800.00  293817.00  222721.68  180000.00  144995.88
## [175]  143651.76  106520.52  108000.00  292001.64      12.00  129099.24
## [181]  104814.60  261302.16  139235.52  385038.12       6.84  101213.64
## [187]      12.00  131037.24  149722.32  887546.64  106520.52  308376.24
## [193]  432000.00  114194.40  457235.40  120000.00  432040.32  125892.36
## [199]  281830.68  137837.16  133099.68  324000.00  216000.00  145090.44
## [205]  125892.36  152439.84  551185.56       7.08  508540.08  156000.00
## [211]  139815.60  148898.04  160520.04  271962.24  102849.00  216000.00
## [217]  216000.00  404304.60  132892.56  195436.68  110958.96  562453.68
## [223]  292001.64  139800.00  152658.24  117580.92  128040.00  327950.88
## [229]  216750.24  252230.16  204053.04  208441.92  386792.88  127811.40
## [235]  215758.92  204128.76  304817.28  332726.52  253171.68  306580.20
## [241]  129600.00  144003.48  153014.04  692968.08 1103105.52  652817.64
## [247]  154118.04  151167.12  780000.00  136800.00  127602.00  286505.88
## [253]  148490.04  120666.72  181624.80  145123.68  148929.96  148898.04
## [259]  161966.64  132236.76  307030.08  253171.68  439256.76  129190.68
## [265]  179506.80  548598.36  269082.36  180000.00  303228.48  224190.24
## [271]  222101.64  107289.84  545753.40  184142.04  347361.24  123546.36
## [277]  129783.48  207606.60  119503.44  112291.92  142809.96  281369.76
## [283]  115200.00

Nota: Se identificaron 281 valores atípicos de la variable Prima Anual

Tabla 2.4

Identificación de valores atípicos en el espacio transformado en la variable Suma Asegurada

# Identificación de valores atípicos en el espacio transformado y reversión de la transformación logarítmica de outliers de la variable Suma Asegurada
outliers_suma_aseg_transformada <- boxplot.stats(log_suma_aseg)$out
outliers_suma_aseg_original <- exp(outliers_suma_aseg_transformada)
print(outliers_suma_aseg_original)
##   [1]      184.42  2726361.51  1303532.04  3244373.14  3327416.81  1960000.00
##   [7]  2000000.00  4000000.00  1188615.58  1430066.22  2040294.09  4110000.00
##  [13]  3000000.00  3270179.70      140.00  1960000.00  3000000.00  3000000.00
##  [19]      114.33  1458976.96      190.00  3327416.81  3500000.00      189.01
##  [25]  2590765.62  7811857.46      189.01  1308976.96  2979172.42  2000000.00
##  [31]      138.44      106.11  1303532.04  4726020.87      180.00  4564691.75
##  [37]  1458976.96  2525777.31  1351701.17  1200000.00      102.60  7500000.00
##  [43]  1200000.00 23551574.13  1308976.96  1850000.00  2954605.65  2233280.00
##  [49]  1184520.75      120.00  2500000.00  1258996.05       70.00      108.26
##  [55]  1220026.50      128.91  3237416.81      166.75  1114692.05      140.00
##  [61]  1193662.80  1243366.38  3000000.00  2292106.04  2687639.21  1823309.98
##  [67]       67.72  1200000.00  1659802.84        3.01  3000000.00  3327416.81
##  [73]      100.00  1823309.98  1168174.47  2981909.71  7325355.24      150.00
##  [79]      126.71  1308976.96  1458976.96      101.37  2000000.00      141.00
##  [85]        2.40  1517269.37  2712565.30  1823309.98  3327416.81  2119965.44
##  [91]  3271653.92  3550615.84       89.04  1423924.04  3327416.81      180.00
##  [97]  1100000.00       19.00  1500000.00      108.26  1500000.00  1100000.00
## [103]        7.50  1551242.09  2000000.00      102.60      150.00      126.71
## [109] 16607142.86  3327416.81  2525777.31      126.71      154.33      179.85
## [115]  3970000.00       70.00  1739832.94  1500000.00      165.00  1258996.05
## [121]  5609328.39  1150750.95      138.44  6350492.29  2954605.65  4796398.00
## [127]      141.00  3327416.81  1220026.50  4796398.00      114.33  3319261.07
## [133]  2653700.00      138.44      112.00  1338329.79  1729381.50  4500000.00
## [139]  3907913.38        0.01  6000000.00  2712565.30      136.60  2886025.77
## [145]  1458976.96  1236889.51  2712565.30      132.74  3244373.14      136.60
## [151]  1651259.40  2954605.65  1276408.35  1355000.00  2000000.00  1275000.00
## [157]  2000000.00       99.85  2935736.27  1423924.04      126.71  1436920.85
## [163]      126.71  2954605.65  1200000.00  1131496.50  1236106.94  1258996.05
## [169]  1308976.96  4796398.00  1300000.00  1844718.55        5.34  1500000.00
## [175]       78.15  3666460.86  2551175.00  1765273.75      144.55  1220026.50
## [181]  2233280.00      166.75  3456781.97      100.00  2000000.00  3045000.00
## [187]  3970000.00  1594342.57  8025911.72      150.00        0.01  1717341.65
## [193]  3327416.81  2236298.66  8867536.00  2000000.00      189.01  1517269.37
## [199]  1117896.50  2954605.65  1230000.00  1823309.98  8867536.00  1259370.21
## [205]  1960000.00       43.93  3667975.15  2356946.45  1700000.00  1765273.75
## [211]      184.47  2877236.13  1307816.26  3327416.81  3667975.15  1300000.00
## [217]  1115000.00  2954605.65      154.33  2712565.30      168.00  3578093.10
## [223]  3500000.00  2590765.62  2108929.20  3244373.14      126.71  1200000.00
## [229]      186.00  3237416.81  1099627.24       92.00  1950000.00       52.50
## [235]       66.65      180.54  1765273.75      196.00  4000000.00      145.00
## [241] 16607142.86       27.25  1971361.26  3237416.81  5342359.01  1436920.85
## [247]  3045000.00  3237416.81       67.73  1823309.98  2651441.88  1276408.35
## [253]  3000000.00      141.00        9.51      106.11      179.85  3608136.18
## [259]  1633649.65      180.00  1368734.50  3500000.00      136.60  1879280.80
## [265]  4900520.29  1451314.92       43.33  3327416.81  1651259.40      100.00
## [271]  4796398.00      189.01  2651441.88      180.00  1214757.09  1117896.50
## [277]  1250000.00      191.55  1220026.50       56.40  1258996.05  1340716.79
## [283]  3000000.00       75.00  1765273.75      101.70  1796434.54  4055577.60
## [289]      138.44  1128296.40      167.15  5609328.39  3237416.81  3970000.00
## [295]      166.75  1651259.40  1560655.80  1500000.00 24399115.93  3327416.81
## [301]  1214757.09  1368734.50  3456781.97      126.71  1432500.00  1295000.00
## [307]  1200000.00 16607142.86  1782409.00  5509430.98  3000000.00      100.00
## [313]  2233280.00  4500000.00  1169187.51       73.00  1488539.89  1739969.79
## [319]      196.00  6350492.29  1276408.35      170.25  1168174.47      189.01
## [325]       82.51  3237416.81  2935736.27  1308976.96  1879280.80  3327416.81
## [331]        0.01  3000000.00       15.00  2000000.00      179.85  1276408.35
## [337]      110.92  2226906.75  1300000.00  1607359.43  3275430.87  2525777.31
## [343]  3237416.81  1303532.04  1823309.98       50.76  1128015.00  1214757.09
## [349]  1175000.00        0.20  1308976.96  3777253.52  2657714.23      125.00
## [355]  1308976.96      192.80        0.02  2000000.00  2000000.00      150.00
## [361]  3244373.14      165.00      102.60  1258996.05  3200000.00  5084097.66
## [367]  1651259.40  7811857.46  4055577.60  1303532.04  1399772.90  1355680.96
## [373]  2000000.00  3237416.81  3237416.81 15370517.77  5693590.84  7325355.24
## [379]      196.00       50.76  2075790.66  1665326.46       45.15  1651259.40
## [385]  3786594.34        3.17  1193662.80  3907913.38  1405615.60      163.00
## [391]  4796398.00  1488539.89  4357008.25  1703223.42  3237416.81      126.71
## [397]  1551242.09       48.36  1458976.96  1114692.05      168.76       50.76
## [403]      189.01  1200000.00        6.00  1131496.50  3237416.81  1100000.00
## [409]  4779600.00  2590546.06       92.00      170.25  1458976.96  6500000.00
## [415]  2000000.00  1128015.00  1500000.00  1303532.04      150.00       49.37
## [421]  1458976.96  2954605.65      166.75       49.37  1128015.00  1300000.00
## [427]  3275430.87      110.92  1729381.50  1250000.00  2292106.04  4798984.00
## [433]  2954605.65  1121176.26  2000000.00  1440000.00  5200000.00      170.25
## [439]  1722000.00      180.00  1640365.51  1295000.00  1461121.25  1500000.00
## [445]  3275430.87  1451314.92      100.00  1298968.44  2877236.13  1295000.00
## [451]  1551242.09      141.00      175.00      166.75  1358000.00  1128483.54
## [457]       90.00  2107185.61  1458976.96  1552521.60  4796398.00  1193662.80
## [463]  3907913.38      158.23  1200000.00

Nota: Se identificaron 463 valores atípicos de la variable Suma Asegurada

Tabla 2.5

Resultados de la base depurada (“data_cleaned”)una vez eliminados los valores atipicos

# Definir función de comparación con tolerancia
near <- function(x, y, tol = .Machine$double.eps^0.5) {
  abs(x - y) < tol
}

# Filtro de los outliers de la base de datos original utilizando comparación con tolerancia
indices_sin_outliers_prima_anual <- sapply(data$prima_anual, function(x) !any(near(x, outliers_prima_anual_original)))
indices_sin_outliers_suma_aseg <- sapply(data$suma_aseg, function(x) !any(near(x, outliers_suma_aseg_original)))

# Combinación de las condiciones para eliminar cualquier fila que sea un outlier en cualquiera de los dos conjuntos
data_cleaned <- data[indices_sin_outliers_prima_anual & indices_sin_outliers_suma_aseg, ]

# Verificación de las dimensiones del nuevo conjunto de datos limpio
print(dim(data_cleaned))
## [1] 31428    15

Nota: La base depurada de valores atípicos “data_cleaned” quedó conformada por un matriz de 15 variables y 31.428 filas de datos.

3. Análisis Exploratorio: Correlación entre Sucursal y Ramo Comercial en Términos de Prima Emitida

El análisis exploratorio se centró en la relación entre las variables Prima Emitida, Sucursal y Ramo Comercial. Se construyeron gráficos de barras y tablas de contingencia para investigar si existe alguna relación significativa entre estos factores.

3.1 Resultados del analisis exploratorio:

  1. Relación entre Sucursal y Ramo Comercial: El análisis mostró que existen diferencias en la prima emitida entre diferentes ramos comerciales y sucursales.

Se evidenció la existencia de 33 combinaciones existentes en la base de Pólizas Emitidas, entre las variables Sucursal y Ramo Comercial. Se realizó un análisis de estadísticos de dichas combinaciones, así como un gráfico de barras de Ramo Comercial y Sucursal para ilustrar la forma como se correlacionan dichas variables, en función de la Prima Emitida.

Tabla 3.1

Tabla de estadísticos de las combinaciones de las variables Sucursal y Ramo Comercial

# Agrupación de los datos por 'sucursal' y 'ramo_comercial' y cáculo del resumen estadístico
summary_data <- data_cleaned %>%
  group_by(sucursal, ramo_comercial) %>%
  summarise(
    media_prima_emitida = mean(prima_emitida, na.rm = TRUE),
    mediana_prima_emitida = median(prima_emitida, na.rm = TRUE),
    sd_prima_emitida = sd(prima_emitida, na.rm = TRUE),
    n = n()
  ) %>%
  ungroup()

# Resumen estadístico
print(summary_data)
## # A tibble: 33 × 6
##    sucursal ramo_comercial             media_prima_emitida mediana_prima_emitida
##    <chr>    <chr>                                    <dbl>                 <dbl>
##  1 AMBATO   BUEN USO DE ANTICIPO                     353.                  147. 
##  2 AMBATO   FIEL CUMPLIMIENTO DE CONT…               159.                   64.8
##  3 AMBATO   GARANTIA ADUANERA                        266.                  266. 
##  4 AMBATO   GARANTIAS JUDICIALES                     358.                  358. 
##  5 AMBATO   SERIEDAD DE OFERTA                        69.9                  50  
##  6 CUENCA   BUEN USO DE ANTICIPO                     567.                  203. 
##  7 CUENCA   FIEL CUMPLIMIENTO DE CONT…               245.                   67.0
##  8 CUENCA   GARANTIA ADUANERA                        724.                  336. 
##  9 CUENCA   GARANTIAS JUDICIALES                     202.                   57.5
## 10 CUENCA   SERIEDAD DE OFERTA                       104.                   74.8
## # ℹ 23 more rows
## # ℹ 2 more variables: sd_prima_emitida <dbl>, n <int>

Figura 3.2

Gráfico de barras de las variables Sucursal y Ramo Comercial

# Agregación de los datos por sucursal y ramo comercial
data_aggregated <- data_cleaned %>%
  group_by(ramo_comercial, sucursal) %>%
  summarize(total_prima_emitida = sum(prima_emitida, na.rm = TRUE))

# (Ver) Creación de gráfico de barras con los datos agregados
ggplot(data_aggregated, aes(x = ramo_comercial, y = total_prima_emitida / 1e6, fill = sucursal)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(
    title = "Total de Prima Emitida por Ramo Comercial y Sucursal",
    x = "Ramo Comercial",
    y = "Total Prima Emitida (Millones de USD)"
  ) +
  scale_y_continuous(
    labels = scales::comma,  # Para formatear los números con comas en millones
    breaks = seq(0, max(data_aggregated$total_prima_emitida / 1e6), by = 0.2)  # Saltos de 0.2 millones de USD
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

b. Dependencia Estadística: A través de la prueba de chi-cuadrado, se identificó una dependencia estadísticamente significativa entre las variables Sucursal y Ramo Comercial. El resultado de la prueba muestra una dependencia estadísticamente significativa entre las variables Sucursal y Ramo Comercial, sin embargo, algunas celdas en la tabla de contingencia tienen un número de casos esperado menor a 5, lo que podría invalidar el test de chi-cuadrado.

Tabla 3.3

Resultados de la prueba Chi-cuadrado entre Sucursal y Ramo Comercial

# Cargar librerías necesarias
library(dplyr)
library(knitr)

# Filtrar datos limpios sin valores faltantes en las variables 'sucursal' y 'ramo_comercial'
data_cleaned <- data_cleaned %>%
  filter(!is.na(sucursal) & !is.na(ramo_comercial))

# Crear tabla de contingencia entre 'sucursal' y 'ramo_comercial'
tabla_contingencia <- table(data_cleaned$sucursal, data_cleaned$ramo_comercial)

# Realizar el test de Chi-cuadrado
test_chi <- chisq.test(tabla_contingencia)

# Crear una tabla con los resultados clave
resultado_chi <- data.frame(
  Estadístico = test_chi$statistic,   # Valor del estadístico de chi-cuadrado
  Grados_de_libertad = test_chi$parameter,  # Grados de libertad
  Valor_p = test_chi$p.value  # Valor p
)

# Agregar una columna para la interpretación
resultado_chi$Interpretación <- ifelse(resultado_chi$Valor_p < 0.05, 
                                       "Dependencia significativa", 
                                       "No hay dependencia significativa")

# Imprimir la tabla con los resultados
kable(resultado_chi)
Estadístico Grados_de_libertad Valor_p Interpretación
X-squared 7778.766 36 0 Dependencia significativa

Nota: El resultado obtenido del Chi-cuadrado indica dependencia entre las variables Sucursal y Ramo Comercial

4. Evolución de la Prima Emitida, Total y por Ramo Comercial, a lo largo del tiempo

Para observar el comportamiento de la variable Prima Emitida a lo largo del tiempo, se realizó un análisis temporal. Los datos fueron agrupados por año y ramo comercial, y se generaron gráficos de líneas para ilustrar la evolución de la prima.

4.1 Resultados de la evolución de la prima emitida total y por ramo comercial

Evolución Temporal: Se observó una tendencia de crecimiento y declive en la variable Prima Emitida Total por año a lo largo del tiempo.

Se identificaron variaciones en la evolución de la Prima Emitida entre los distintos ramos comerciales, con algunos mostrando un mayor crecimiento que otros.

La tendencia creciente, sobre de la de años 2016 a 2019 parece responder a un incremento de la Prima Anual en los ramos de Buen Uso de Anticipo, Fiel Cumplimiento de Contrato y Garantía Aduanera, posiblemente los dos primeros por una actividad importante de inversión por parte del estado. El declive posterior parece responder a la coyuntura de la declaración de pandemia mundial por Sars CoV 2, en la cual el mundo entero paralizó por 2,5 años consecutivos sus actividades.

Figura 4.1

Evolución de la Prima Anual total

# Asegurarmiento de que 'fecha_emision' esté en formato de fecha
data_cleaned$fecha_emision <- as.Date(data_cleaned$fecha_emision)

# Extracción el año de la fecha
data_cleaned$ano_emision <- format(data_cleaned$fecha_emision, "%Y")

# Agregación los datos por año
data_aggregated <- data_cleaned %>%
  group_by(ano_emision) %>%
  summarize(prima_anual_total = sum(prima_anual, na.rm = TRUE))

# Creación de gráfico de series temporales con el eje y en millones de dólares
ggplot(data_aggregated, aes(x = as.numeric(ano_emision), y = prima_anual_total / 1e6)) +
  geom_line(color = "blue") +  # Línea de la serie temporal
  geom_point(color = "red") +   # Puntos en cada año
  labs(
    title = "Evolución de la Prima Anual a lo Largo del Tiempo",
    x = "Año",
    y = "Prima Anual Total (Millones de USD)"
  ) +
  scale_y_continuous(
    labels = scales::comma,  # Formatear los números con comas
    breaks = scales::pretty_breaks(n = 10)  # Ajustar los saltos del eje y
  ) +
  scale_x_continuous(breaks = seq(min(as.numeric(data_aggregated$ano_emision)), 
                                  max(as.numeric(data_aggregated$ano_emision)), by = 1)) +
  theme_minimal()

Figura 4.1

Evolución de la Prima Anual por Ramo Comercial

# Agregación de los datos por año y por ramo_comercial
data_aggregated <- data_cleaned %>%
  group_by(ano_emision, ramo_comercial) %>%
  summarize(prima_anual_total = sum(prima_anual, na.rm = TRUE), .groups = 'drop')

# Creación de gráfico de series temporales para cada ramo_comercial
ggplot(data_aggregated, aes(x = as.numeric(ano_emision), y = prima_anual_total / 1e6, color = ramo_comercial, group = ramo_comercial)) +
  geom_line() +  # Línea de la serie temporal
  geom_point() + # Puntos en cada año
  labs(
    title = "Evolución de la Prima Anual por Ramo Comercial a lo Largo del Tiempo",
    x = "Año",
    y = "Prima Anual Total (Millones de USD)",
    color = "Ramo Comercial"
  ) +
  scale_y_continuous(
    labels = scales::comma,  # Formatear los números con comas
    breaks = scales::pretty_breaks(n = 10)  # Ajustar los saltos del eje y
  ) +
  scale_x_continuous(breaks = seq(min(as.numeric(data_aggregated$ano_emision)), 
                                  max(as.numeric(data_aggregated$ano_emision)), by = 1)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Ajuste de ángulo para etiquetas del eje x

5. Segmentación de Clientes por Tipo de Póliza y Monto Asegurado

Finalmente, se realizó una segmentación de clientes utilizando la Suma Asegurada y el Ramo Comercial como variables clave. Se utilizó el método de agrupamiento k-means para identificar diferentes grupos de clientes, y se analizaron las características de cada clúster.

5.1 Resultados de la segmentación de clientes por Tipo de Póliza y Monto Asegurado:

  1. Clústeres de Clientes: Se identificaron 3 clústeres basados en la variable de Suma Asegurada, con características distintivas entre ellos.

Figura 5.1

Identificación de los clusters por medio de su distribución de la Suma Asegurada

# Selección de variables para el agrupamiento
data_segmentacion <- data_cleaned %>%
  select(tipo_persona, tipo_agente, suma_aseg)

# Conversión de listas en columnas a vectores simples
data_segmentacion_clean <- data_segmentacion %>%
  mutate(
    tipo_persona = map_chr(tipo_persona, ~ as.character(.x[1])),
    tipo_agente = map_chr(tipo_agente, ~ as.character(.x[1]))
  ) %>%
  distinct()  # Eliminar duplicados basados en todas las columnas

# Clusters
set.seed(123)  # Para reproducibilidad
kmeans_result <- kmeans(data_segmentacion_clean %>% select(suma_aseg), centers = 3)

# Asignación de clústeres al dataframe
data_segmentacion_clean <- data_segmentacion_clean %>%
  mutate(cluster = factor(kmeans_result$cluster))

summary_clusters <- data_segmentacion_clean %>%
  group_by(cluster) %>%
  summarise(
    count = n(),
    mean_suma_aseg = mean(suma_aseg, na.rm = TRUE),
    .groups = 'drop'
  )

ggplot(data_segmentacion_clean, aes(x = suma_aseg, fill = cluster)) +
  geom_histogram(binwidth = 1000, position = 'dodge') +
  labs(title = "Distribución de la Suma Asegurada por Clúster",
       x = "Suma Asegurada (millones de $)",
       y = "Frecuencia") +
  scale_x_log10(
    labels = scales::label_dollar(scale = 1e-6, suffix = "M") # Formatear en millones
  ) +
  coord_cartesian(ylim = c(0, 15000)) +       # Ajustar el límite del eje y
  theme_minimal()

Figura 5.2

Identificación de los clusters por medio de su valor de Suma Asegurada

ggplot(data_segmentacion_clean, aes(x = suma_aseg, y = tipo_persona, color = cluster)) +
  geom_point(size = 3, alpha = 0.6) +
  scale_x_log10(labels = scales::label_dollar(scale = 1e-6, suffix = "M")) +  # Formatear en millones
  labs(title = "Segmentación de Clústeres por Suma Asegurada y Tipo de Persona",
       x = "Suma Asegurada (Millones de $)",
       y = "Tipo de Persona",
       color = "Clúster") +
  theme_minimal()

  1. Comportamiento por Ramo Comercial: Cada tipo de póliza y tipo de agente mostró diferencias significativas en términos de monto asegurado

Tabla 5.3

Comportamiento por Ramo Comercial

# Selección de variables para el agrupamiento
data_segmentacion <- data_cleaned %>%
  select(tipo_persona, tipo_agente, suma_aseg)

# Conversión de listas en columnas a vectores simples
data_segmentacion_clean <- data_segmentacion %>%
  mutate(
    tipo_persona = map_chr(tipo_persona, ~ as.character(.x[1])),
    tipo_agente = map_chr(tipo_agente, ~ as.character(.x[1]))
  ) %>%
  distinct()  # Eliminar duplicados basados en todas las columnas

# Verificación de los primeros registros para confirmar la transformación
head(data_segmentacion_clean)
# Agrupación y resumen de datos para obtener información sobre cada segmento
data_segmentacion_summary <- data_segmentacion_clean %>%
  group_by(tipo_persona, tipo_agente) %>%
  summarise(
    total_suma_aseg = sum(suma_aseg, na.rm = TRUE),
    promedio_suma_aseg = mean(suma_aseg, na.rm = TRUE),
    cuenta_clientes = n(),
    .groups = 'drop'
  )

Figura 5.4

Total de Suma Asegurada por Tipo de Persona y Tipo de Agente

# Gráfico de suma asegurada por tipo de persona y tipo de agente
ggplot(data_segmentacion_summary, aes(x = tipo_persona, y = total_suma_aseg, fill = tipo_agente)) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_y_continuous(labels = label_number(scale = 1e-6, suffix = "M")) +  # Escalar y etiquetar el eje y en millones
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Total Suma Asegurada por Tipo de Persona y Tipo de Agente",
       x = "Tipo de Persona",
       y = "Total Suma Asegurada (Millones de $)")

Figura 5.5

Promedio de Suma Asegurada por Tipo de Persona y Tipo de Agente

# Gráfico de promedio de suma asegurada por tipo de persona y tipo de agente
ggplot(data_segmentacion_summary, aes(x = tipo_persona, y = promedio_suma_aseg, fill = tipo_agente)) +
  geom_bar(stat = "identity", position = "dodge") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Promedio Suma Asegurada por Tipo de Persona y Tipo de Agente",
       x = "Tipo de Persona",
       y = "Promedio Suma Asegurada")

6. Conclusiones:

Este análisis ha permitido identificar aspectos clave sobre la calidad de los datos, la presencia de valores atípicos, la correlación entre las variables Sucursal y Ramo Comercial, la evolución de la Prima Emitida a lo largo del tiempo y la segmentación de clientes. Estos hallazgos proporcionan una base sólida para la toma de decisiones estratégicas en la compañía de seguros, así como para futuros análisis más detallados.