\[\text{PRIMAS POR RAMO Y COBERTURAS}\]

Lo primero que hacemos es cargar nuestra base de datos de los siniestros ocurridos de la aseguradora

Base_Siniestros <- read_excel("Documents/MASDFR/BASE_SINIESTROS_TAREA1.xlsx")
Base_Siniestros$MONTO_OCURRIDO <- round(Base_Siniestros$MONTO_OCURRIDO)
Base_Siniestros$SUMA_ASEGURADA <- round(Base_Siniestros$SUMA_ASEGURADA)
Base_Siniestros

Observamos que nuestros montos de los siniestros se encuentran en dos tipos de moneda, las cuales son MXN y USD, sabemos que el tipo de cambio al día de hoy es en promedio 20.60 MXN = 1 USD, por lo cual decidimos convertir los pesos mexicanos a dólares

#library(dplyr)
Base_Siniestros <- Base_Siniestros %>% mutate(MONTO_OCURRIDO = ifelse(MONEDA == "1-MXN",Base_Siniestros$MONTO_OCURRIDO / 20.6, MONTO_OCURRIDO))
Base_Siniestros$MONTO_OCURRIDO <- round(Base_Siniestros$MONTO_OCURRIDO)

Como tambien ocuparemos la Suma aseguradora para el cálculo de la prima, convertimos los pesos mexicanos a dólares para la variable SUMA_ASEGURADA

#library(dplyr)
Base_Siniestros <- Base_Siniestros %>% mutate(SUMA_ASEGURADA= ifelse(MONEDA == "1-MXN",Base_Siniestros$SUMA_ASEGURADA / 20.6, SUMA_ASEGURADA))
Base_Siniestros$SUMA_ASEGURADA <- round(Base_Siniestros$SUMA_ASEGURADA)

Base_Siniestros <- Base_Siniestros %>% mutate(MONEDA= ifelse(MONEDA == "1-MXN","2-USD", MONEDA)) #Esto es para poner la varible Moneda en termino de USD

Antes de realizar todo el proceso del cálculo de Primas, primero definire mis gastos para el cálculo de la Prima Tarifa, los cuales serán:

  • Gastos de Admisnitración = 15%
  • Gastos de Adquisición = 5%
  • Margen de Utilidad = 10%
Gastos_de_Administracion = 0.15
Gastos_de_Adquisición = 0.05
Margen_de_Utilidad = 0.10

\[\text{Ramos del Seguro}\]

Ahora vamos a separar nuestros siniestros por RAMO, pero primero ocupamos la función as.factor() en la variable RAMO para transformarlos a tipo factor y poder graficarlos

Base_Siniestros$RAMO<- as.factor(Base_Siniestros$RAMO)

Checamos los tipos de RAMOS, los cuales son:

levels(Base_Siniestros$RAMO)
## [1] "Diversos"               "Huracán"                "Incendio"              
## [4] "Marítimo y Trasnportes" "Responsabilidad Civil"  "Terremoto"

El número de siniestros por RAMO es:

#Frecuencia relativa
Frec_abs_Ramos <-data.frame(table(Base_Siniestros$RAMO))
Frec_abs_Ramos
plot(Base_Siniestros$RAMO,col=c("lightseagreen","lightskyblue","lightskyblue1",
                                "lightskyblue3","lightskyblue4","lightcyan3"),main="Frecuencia por Ramo",
     xlab="Ramos", ylab="Número de Siniestros")
legend("topright",legend=c("Diversos","Huracán","Incendio","Marítimo y Trasnportes","Responsabilidad Civil","Terremoto"),pch=19,col=c("lightseagreen","lightskyblue","lightskyblue1",                                                                                    "lightskyblue3","lightskyblue4","lightcyan3"),cex=0.8)

Frecuencia relativa:

Al contar solo con el número de polizas que sufrieron siniestro, la frecuencia lo determinamos de acuerdo a la base de datos, donde dividimos nuestras frecuencias por RAMOS entre el total de siniestro que tuvo la aseguradora

Frec_rel_Ramos <- data.frame(
  "Ramos" = Frec_abs_Ramos$Var1, 
  "Frecuencia" = Frec_abs_Ramos$Freq/length(Base_Siniestros$RAMO))
Frec_rel_Ramos

A continuación analizaremos cada uno de los RAMOS

\[\text{Diversos}\]

Filtramos los datos del RAMO Diversos

Diversos <- filter(Base_Siniestros,RAMO =="Diversos")
Diversos

Monto total:

Siniestralidad_Diversos <- sum(Diversos$MONTO_OCURRIDO) 
Siniestralidad_Diversos
## [1] 2613689107

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Diversos <-boxplot(Diversos$MONTO_OCURRIDO,main="boxplot Diversos",outpch = 21,outbg = "lightseagreen")

length(boxplot_Diversos$out) #Cantidad de outliers 
## [1] 16

Tenemos un total de 16 valores atípicos, pero podemos observar claramente que hay 2 en especifico que estan muy alejados del boxplot, por lo cual decidimos eliminar solo los 3 valores que estaban más alejados, a continuación podemos observar el boxplot antes y después de eliminar los 3 valores atípicos

par(mfrow = c(1, 2))
boxplot_Diversos <-boxplot(Diversos$MONTO_OCURRIDO,main="boxplot antes",outpch = 21,outbg = "lightseagreen")

Diversos_2 <-Diversos %>% filter(MONTO_OCURRIDO < 100000000)
boxplot(Diversos_2$MONTO_OCURRIDO,main="boxplot después",col = "lightseagreen",outpch = 21,outbg = "lightseagreen")

Al sacar la Severidad Promedio podemos notar una gran diferencia en eliminar y no eliminar los 3 valores atípicos

Severidad_Prom_Diversos = mean(Diversos$MONTO_OCURRIDO)
Severidad_Prom_Diversos
## [1] 29701013
Severidad_Prom_Diversos_2 = mean(Diversos_2$MONTO_OCURRIDO)
Severidad_Prom_Diversos_2
## [1] 4534711

Una diferencia de $25,166,302 dólares, una suma muy considerable que hay que tomar muy en cuenta

Severidad_Prom_Diversos- Severidad_Prom_Diversos_2
## [1] 25166302

En este caso yo me quedaría con la Severidad promedio sin contar los 3 valores atípicos

Cuota de riesgo

Cuota_Riesgo_Diversos=(Frec_rel_Ramos[2]$Frecuencia[1])*Severidad_Prom_Diversos_2
Cuota_Riesgo_Diversos
## [1] 51906.16

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Diversos$SUMA_ASEGURADA/(sum(Diversos$SUMA_ASEGURADA)))*Siniestralidad_Diversos)) #Calculo de la Prima de Riesgo
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## Please use `tibble()` instead.
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Diversos<-cbind(Diversos,Prima_Riesgo,Prima_Tarifa)
datos_Diversos<-select(datos_Diversos,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Diversos

\[\text{Coverturas del Ramo Diversos }\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Diversos$COBERTURA<- as.factor(Diversos$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Diversos, los cuales son:

levels(Diversos$COBERTURA)
##  [1] "01-Calderas"                                                  
##  [2] "02-Bienes almacenados fuera del sitio"                        
##  [3] "02-Equipo electrónico"                                        
##  [4] "03-Equipo de contratistas"                                    
##  [5] "04-Rotura de maquinaria"                                      
##  [6] "05-Error de diseño / Riesgo del fabricante"                   
##  [7] "07-Garantía"                                                  
##  [8] "14-Cobertura básica de Montaje (Amparo A)"                    
##  [9] "16-Obras civiles aseguradas, recibidas o puestas en operación"
## [10] "19-Pruebas maquinaria e instalaciones"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Diversos
Frec_abs_Cob_Div<-data.frame(table(Diversos$COBERTURA))
Frec_abs_Cob_Div
plot(Diversos$COBERTURA,col = terrain.colors(10),main="Frecuencia por Cobertura 
     del Ramo Diversos",xlab="Coberturas", ylab="Número de Siniestros")
legend("topright",legend=c("Calderas","Bienes almacenados","Equipo electrónico",
                           "Equipo de contratistas","Rotura de maquinaria",
                           "Error de diseño","Garantía","Cobertura básica","Obras            civiles","Pruebas maquinaria"),pch=19,col = terrain.colors(10),cex=0.8)

Frec_rel_Cob_Div <- data.frame(
  "Coberturas" = Frec_abs_Cob_Div$Var1, 
  "Frecuencia" = Frec_abs_Cob_Div$Freq/length(Diversos$RAMO))
Frec_rel_Cob_Div 

Severidad Promedio

Estos valores lo calcularemos con Diversos_2 la base donde eliminamos 3 valores atípicos por lo que mencionamos anteriormente

Calderas <- filter(Diversos_2,COBERTURA =="01-Calderas")
Bienes <- filter(Diversos_2,COBERTURA =="02-Bienes almacenados fuera del sitio")
Eq_elect <- filter(Diversos_2,COBERTURA =="02-Equipo electrónico")
Eq_cont <- filter(Diversos_2,COBERTURA =="03-Equipo de contratistas")
Rotura <- filter(Diversos_2,COBERTURA =="04-Rotura de maquinaria")
Error <- filter(Diversos_2,COBERTURA =="05-Error de diseño / Riesgo del fabricante")
Garantia <- filter(Diversos_2,COBERTURA =="07-Garantía")
Cobertura <- filter(Diversos_2,COBERTURA =="14-Cobertura básica de Montaje (Amparo A)")
Obras <- filter(Diversos_2,COBERTURA =="16-Obras civiles aseguradas, recibidas o puestas en operación")
Pruebas <- filter(Diversos_2,COBERTURA =="19-Pruebas maquinaria e instalaciones")

data.frame("Coberturas_del_Ramo_Diversos"=Frec_abs_Cob_Div$Var1,"Severidad"=c(mean(Calderas$MONTO_OCURRIDO),mean(Bienes$MONTO_OCURRIDO),mean(Eq_elect$MONTO_OCURRIDO),mean(Eq_cont$MONTO_OCURRIDO),mean(Rotura$MONTO_OCURRIDO),mean(Error$MONTO_OCURRIDO),mean(Garantia$MONTO_OCURRIDO),mean(Cobertura$MONTO_OCURRIDO),mean(Obras$MONTO_OCURRIDO),mean(Pruebas$MONTO_OCURRIDO)))

\[\text{Huracán}\]

Filtramos los datos del RAMO Huracán

Huracan <- filter(Base_Siniestros,RAMO =="Huracán")
Huracan

Monto total:

Siniestralidad_Huracan <- sum(Huracan$MONTO_OCURRIDO) 
Siniestralidad_Huracan
## [1] 29756957840

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Huracan <-boxplot(Huracan$MONTO_OCURRIDO,main="boxplot Huracán",outpch = 21,outbg = "lightskyblue")

length(boxplot_Huracan$out) #Cantidad de outliers 
## [1] 57
max(boxplot_Huracan$out) #Máximo outliers 
## [1] 4475334738

Tenemos un total de 57 valores atípicos, pero a diferencia del Ramo Diversos estos no se encuentran tan alejados, podriamos eliminar solo el máximo y ver como se comporta nuestro promedio, para asi determinar cual escoger

par(mfrow = c(1, 2))
boxplot_Huracan <-boxplot(Huracan$MONTO_OCURRIDO,main="boxplot antes",outpch = 21,outbg = "lightskyblue")

Huracan_2 <-Huracan %>% filter(MONTO_OCURRIDO < 4400000000)
boxplot(Huracan_2$MONTO_OCURRIDO,main="boxplot después",col = "lightskyblue",outpch = 21,outbg = "lightskyblue")

Al sacar la Severidad Promedio podemos notar una diferencia considerable en eliminar y no eliminar solo el máximo de los valores atípicos

Severidad_Prom_Huracan= mean(Huracan$MONTO_OCURRIDO)
Severidad_Prom_Huracan
## [1] 107039417
Severidad_Prom_Huracan_2 = mean(Huracan_2$MONTO_OCURRIDO)
Severidad_Prom_Huracan_2
## [1] 91269397

Con una diferencia de $15,770,019 dólares, una suma considerable

Severidad_Prom_Huracan- Severidad_Prom_Huracan_2
## [1] 15770019

En este caso yo me quedaría con la Severidad promedio sin contar el máximo de los valores atípicos

Cuota de riesgo

Cuota_Riesgo_Huracan=(Frec_rel_Ramos[2]$Frecuencia[2])*Severidad_Prom_Huracan_2
Cuota_Riesgo_Huracan
## [1] 3300324

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Huracan$SUMA_ASEGURADA/(sum(Huracan$SUMA_ASEGURADA)))*Siniestralidad_Huracan)) #Calculo de la Prima de Riesgo
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima de Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Huracan<-cbind(Huracan,Prima_Riesgo,Prima_Tarifa)
datos_Huracan<-select(datos_Huracan,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Huracan

\[\text{Coverturas del Ramo Diversos }\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Huracan$COBERTURA<- as.factor(Huracan$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Huracán, los cuales son:

levels(Huracan$COBERTURA)
## [1] "01-Riesgos Hidrometeorológicos" "18-MIGRACIÓN (POR VALIDAR)"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Huracán
Frec_abs_Cob_Hur<-data.frame(table(Huracan$COBERTURA))
Frec_abs_Cob_Hur
plot(Huracan$COBERTURA,col= c("brown3","cadetblue4"),main="Frecuencia por Cobertura 
     del Ramo Huracán",xlab="Coberturas", ylab="Número de Siniestros")

Frec_rel_Cob_Hur <- data.frame(
  "Coberturas" = Frec_abs_Cob_Hur$Var1, 
  "Frecuencia" = Frec_abs_Cob_Hur$Freq/length(Huracan$RAMO))
Frec_rel_Cob_Hur 

Severidad Promedio

Estos valores lo calcularemos con Huracan_2 la base donde eliminamos el máximo valor atípico

Riesgos_H <- filter(Huracan_2,COBERTURA =="01-Riesgos Hidrometeorológicos")
Migracion <- filter(Huracan_2,COBERTURA =="18-MIGRACIÓN (POR VALIDAR)")

data.frame("Coberturas_del_Ramo_Huracán"=Frec_abs_Cob_Hur$Var1,"Severidad"=c(mean(Riesgos_H$MONTO_OCURRIDO),mean(Migracion$MONTO_OCURRIDO)))

\[\text{Incendio}\]

Filtramos los datos del RAMO Incendio

Incendio <- filter(Base_Siniestros,RAMO =="Incendio")
Incendio

Monto total:

Siniestralidad_Incendio <- sum(Incendio$MONTO_OCURRIDO) 
Siniestralidad_Incendio
## [1] 60562843391

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Incendio <-boxplot(Incendio$MONTO_OCURRIDO,main="boxplot Incendio",outpch = 21,outbg = "lightskyblue1")

En el caso del Ramo Incendio considero dejar todos los siniestros, lo cual nos da una severidad promedio de:

Severidad_Prom_Incendio= mean(Incendio$MONTO_OCURRIDO)
Severidad_Prom_Incendio
## [1] 49887021

Cuota de riesgo

Cuota_Riesgo_Incendio=(Frec_rel_Ramos[2]$Frecuencia[3])*Severidad_Prom_Incendio
Cuota_Riesgo_Incendio
## [1] 7877581

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Incendio$SUMA_ASEGURADA/(sum(Incendio$SUMA_ASEGURADA)))*Siniestralidad_Incendio)) #Calculo de la Prima de Riesgo
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima de Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Incendio<-cbind(Incendio,Prima_Riesgo,Prima_Tarifa)
datos_Incendio<-select(datos_Incendio,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Incendio

\[\text{Coverturas del Ramo Incendio }\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Incendio$COBERTURA<- as.factor(Incendio$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Incendio, los cuales son:

levels(Incendio$COBERTURA)
## [1] "01-Bienes en cuartos o aparatos refrigerados o en incubadoras"
## [2] "02-Combustión Espontánea"                                     
## [3] "06-Ganancias Brutas"                                          
## [4] "09-Huelgas o Alborotos Populares"                             
## [5] "10-Incendio, rayo y explosión"                                
## [6] "15-Pérdida de Utilidades, Gastos Fijos y Salarios"            
## [7] "18-Todo Riesgo"                                               
## [8] "99-Otra cobertura"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Incendio
Frec_abs_Cob_Inc<-data.frame(table(Incendio$COBERTURA))
Frec_abs_Cob_Inc
plot(Incendio$COBERTURA,col = cm.colors(8),main="Frecuencia por Cobertura 
     del Ramo Incendio",xlab="Coberturas", ylab="Número de Siniestros")
legend("topright",legend=c("Bienes en cuartos o aparatos ","Combustión Espontánea","Ganancias Brutas","Huelgas o Alborotos","Incendio, rayo y explosión",
                           "Pérdida de Utilidades","Todo Riesgo","Otra cobertura"),pch=19,col = cm.colors(8),cex=0.45)

Frec_rel_Cob_Inc <- data.frame(
  "Coberturas" = Frec_abs_Cob_Inc$Var1, 
  "Frecuencia" = Frec_abs_Cob_Inc$Freq/length(Incendio$RAMO))
Frec_rel_Cob_Inc 

Severidad Promedio

Estos valores lo calcularemos con la base original, Incendio

Bienes <- filter(Incendio,COBERTURA =="01-Bienes en cuartos o aparatos refrigerados o en incubadoras")
Combustion <- filter(Incendio,COBERTURA =="02-Combustión Espontánea")
GB <- filter(Incendio,COBERTURA =="06-Ganancias Brutas")
Huelgas <- filter(Incendio,COBERTURA =="09-Huelgas o Alborotos Populares")
IRE <- filter(Incendio,COBERTURA =="10-Incendio, rayo y explosión")
Perdida <- filter(Incendio,COBERTURA =="15-Pérdida de Utilidades, Gastos Fijos y Salarios")
T_Riesgo <- filter(Incendio,COBERTURA =="18-Todo Riesgo")
Otra_C <- filter(Incendio,COBERTURA =="99-Otra cobertura")

data.frame("Coberturas_del_Ramo_Incendio"=Frec_abs_Cob_Hur$Var1,"Severidad"=c(mean(Bienes$MONTO_OCURRIDO),mean(Combustion$MONTO_OCURRIDO),mean(GB$MONTO_OCURRIDO),mean(Huelgas$MONTO_OCURRIDO),mean(IRE$MONTO_OCURRIDO),mean(Perdida$MONTO_OCURRIDO),mean(T_Riesgo$MONTO_OCURRIDO),mean(Otra_C$MONTO_OCURRIDO)))

\[\text{Marítimo y Trasnporte}\]

Filtramos los datos del RAMO Marítimo y Trasnporte

Maritimo_T <- filter(Base_Siniestros,RAMO =="Marítimo y Trasnportes")
Maritimo_T

Monto total:

Siniestralidad_Maritimo_T <- sum(Maritimo_T$MONTO_OCURRIDO) 
Siniestralidad_Maritimo_T
## [1] 28303530260

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Maritimo_T <-boxplot(Maritimo_T$MONTO_OCURRIDO,main="boxplot Marítimo y Trasnporte",outpch = 21,outbg = "lightskyblue3")

En el caso del Ramo Marítimo y Trasnporte considero dejar todos los siniestros, lo cual nos da una severidad promedio de:

Severidad_Prom_Maritimo_T = mean(Maritimo_T$MONTO_OCURRIDO)
Severidad_Prom_Maritimo_T
## [1] 5672050

Cuota de riesgo

Cuota_Riesgo_Maritimo_T=(Frec_rel_Ramos[2]$Frecuencia[4])*Severidad_Prom_Maritimo_T
Cuota_Riesgo_Maritimo_T
## [1] 3681521

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Maritimo_T$SUMA_ASEGURADA/(sum(Maritimo_T$SUMA_ASEGURADA)))*Siniestralidad_Maritimo_T)) #Calculo de la Prima de Riesgo
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Maritimo_T<-cbind(Maritimo_T,Prima_Riesgo,Prima_Tarifa)
datos_Maritimo_T<-select(datos_Maritimo_T,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Maritimo_T

\[\text{Coverturas del Ramo Marítimo y Trasnporte}\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Maritimo_T$COBERTURA<- as.factor(Maritimo_T$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Marítimo y Trasnporte, los cuales son:

levels(Maritimo_T$COBERTURA)
##  [1] "01-Riesgos Ordinarios de Tránsito (ROT) (básica)"
##  [2] "02-Robo Total sin violencia"                     
##  [3] "03-Robo Total con violencia y/o asalto"          
##  [4] "04-Robo Parcial sin violencia o extravío"        
##  [5] "05-Robo Parcial con violencia y/o asalto"        
##  [6] "06-REVISAR"                                      
##  [7] "07-Robo de bulto por entero"                     
##  [8] "08-Mojadura"                                     
##  [9] "09-Oxidación"                                    
## [10] "10-Manchas"                                      
## [11] "11-Contaminación por contacto con otras Cargas"  
## [12] "12-Rotura o rajadura, abolladura y dobladura"    
## [13] "13-Derrames y/o Mermas"                          
## [14] "16-Daños a bienes refrigerados"                  
## [15] "20-Maniobras de Carga y Descarga"                
## [16] "23-Todo Riesgo"                                  
## [17] "99-Otras coberturas"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Maritimo_T
Frec_abs_Cob_Mar_T<-data.frame(table(Maritimo_T$COBERTURA))
Frec_abs_Cob_Mar_T
plot(Maritimo_T$COBERTURA,col=rainbow(17, alpha=0.8),main="Frecuencia por Cobertura 
     del Ramo Marítimo y Trasnportes",xlab="Coberturas", ylab="Número de Siniestros")
legend("topright",legend=c("Riesgos Ordinarios","Robo Total sin violencia","Robo Total con violencia","Robo Parcial sin violencia","Robo Parcial con violencia ",
                           "REVISAR","Robo de bulto","Mojadura","Oxidación","Manchas","Contaminación por contacto","Rotura o rajadura","Derrames y/o Mermas","Daños a bienes refrigerados","Maniobras de Carga y Descarga","Todo Riesgo","Otras coberturas"),pch=19,col=rainbow(17, alpha=0.8) ,cex=0.6)

Frec_rel_Cob_Mar_T <- data.frame(
  "Coberturas" = Frec_abs_Cob_Mar_T$Var1, 
  "Frecuencia" = Frec_abs_Cob_Mar_T$Freq/length(Maritimo_T$RAMO))
Frec_rel_Cob_Mar_T

Severidad Promedio

Estos valores lo calcularemos con Maritimo_T:

ROT <- filter(Maritimo_T,COBERTURA =="01-Riesgos Ordinarios de Tránsito (ROT) (básica)")
RTSV <- filter(Maritimo_T,COBERTURA =="02-Robo Total sin violencia")
RTCV <- filter(Maritimo_T,COBERTURA =="03-Robo Total con violencia y/o asalto")
RPSV <- filter(Maritimo_T,COBERTURA =="04-Robo Parcial sin violencia o extravío")
RPCV <- filter(Maritimo_T,COBERTURA =="05-Robo Parcial con violencia y/o asalto")
Revisar <- filter(Maritimo_T,COBERTURA =="06-REVISAR")
RBE <- filter(Maritimo_T,COBERTURA =="07-Robo de bulto por entero")
Mojadura <- filter(Maritimo_T,COBERTURA =="08-Mojadura")
Oxidacion <- filter(Maritimo_T,COBERTURA =="09-Oxidación")
Manchas <- filter(Maritimo_T,COBERTURA =="10-Manchas")
Contaminacion <- filter(Maritimo_T,COBERTURA =="11-Contaminación por contacto con otras Cargas")
RRAD <- filter(Maritimo_T,COBERTURA =="12-Rotura o rajadura, abolladura y dobladura")
Derrames <- filter(Maritimo_T,COBERTURA =="13-Derrames y/o Mermas")
DBR <- filter(Maritimo_T,COBERTURA =="16-Daños a bienes refrigerados")
MCD <- filter(Maritimo_T,COBERTURA =="20-Maniobras de Carga y Descarga")
TR <- filter(Maritimo_T,COBERTURA =="23-Todo Riesgo")
Otras <- filter(Maritimo_T,COBERTURA =="99-Otras coberturas")

data.frame("Coberturas_del_Ramo_Maritimo"=Frec_abs_Cob_Mar_T$Var1,"Severidad"=c(mean(ROT$MONTO_OCURRIDO),mean(RTSV$MONTO_OCURRIDO),mean(RTCV$MONTO_OCURRIDO),mean(RPSV$MONTO_OCURRIDO),mean(RPCV$MONTO_OCURRIDO),mean(Revisar$MONTO_OCURRIDO),mean(RBE$MONTO_OCURRIDO),mean(Mojadura$MONTO_OCURRIDO),mean(Oxidacion$MONTO_OCURRIDO),mean(Manchas$MONTO_OCURRIDO),mean(Contaminacion$MONTO_OCURRIDO),mean(RRAD$MONTO_OCURRIDO),mean(Derrames$MONTO_OCURRIDO),mean(DBR$MONTO_OCURRIDO),mean(MCD$MONTO_OCURRIDO),mean(TR$MONTO_OCURRIDO),mean(Otras$MONTO_OCURRIDO)))

\[\text{Responsabilidad Civil}\]

Filtramos los datos del RAMO Responsabilidad Civil

Resp_Civil <- filter(Base_Siniestros,RAMO =="Responsabilidad Civil")
Resp_Civil

Monto total:

Siniestralidad_Resp_Civil <- sum(Resp_Civil$MONTO_OCURRIDO) 
Siniestralidad_Resp_Civil
## [1] 2014072734

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Resp_Civil <-boxplot(Resp_Civil$MONTO_OCURRIDO,main="boxplot Responsabilidad Civil",outpch = 21,outbg ="lightskyblue4")

Observamos que hay 3 valores atípicos que destacan en la parte superior, al ser el Ramo de Responsabilidad Civil decidimos quitarlos para nuestra severidad promedio, entonces:

par(mfrow = c(1, 2))
boxplot(Resp_Civil$MONTO_OCURRIDO,main="boxplot antes",outpch = 21,outbg ="lightskyblue4")

Resp_Civil_2 <-Resp_Civil %>% filter(MONTO_OCURRIDO < 80000000)
boxplot(Resp_Civil_2$MONTO_OCURRIDO,main="boxplot después",col = "lightskyblue4",outpch = 21,outbg = "lightskyblue4")

Al sacar la Severidad Promedio podemos notar que la diferencia no es tan grande a comparación de los otros ramos

Severidad_Prom_Resp_Civil = mean(Resp_Civil$MONTO_OCURRIDO)
Severidad_Prom_Resp_Civil
## [1] 2193979
Severidad_Prom_Resp_Civil_2 = mean(Resp_Civil_2$MONTO_OCURRIDO)
Severidad_Prom_Resp_Civil_2
## [1] 1800592

Ya que su diferencia es de $393,386 dólares aún asi ya que estamos hablando de dólares, no se puede tomar a la ligera

Severidad_Prom_Resp_Civil- Severidad_Prom_Resp_Civil_2
## [1] 393386.5

En este caso tomamos el que no tiene los 3 valores atípicos

Cuota de riesgo

Cuota_Riesgo_Resp_Civil=(Frec_rel_Ramos[2]$Frecuencia[5])*Severidad_Prom_Resp_Civil_2
Cuota_Riesgo_Resp_Civil
## [1] 215003.1

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Resp_Civil$SUMA_ASEGURADA/(sum(Resp_Civil$SUMA_ASEGURADA)))*Siniestralidad_Resp_Civil)) #Calculo de la Prima de Riesgo
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Resp_Civil<-cbind(Resp_Civil,Prima_Riesgo,Prima_Tarifa)
datos_Resp_Civil<-select(datos_Diversos,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Resp_Civil

\[\text{Coverturas del Ramo Responsabilidad Civil}\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Resp_Civil$COBERTURA<- as.factor(Resp_Civil$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Responsabilidad Civil, los cuales son:

levels(Resp_Civil$COBERTURA)
##  [1] "01-Actividades e inmuebles"                  
##  [2] "02-Asumida"                                  
##  [3] "04-Bienes bajo custodia"                     
##  [4] "05-Carga y descarga"                         
##  [5] "06-Contaminación al medio ambiente"          
##  [6] "08-Cruzada"                                  
##  [7] "11-Daños a instalaciones"                    
##  [8] "12-Daños a la contraparte del contrato"      
##  [9] "13-Daños a terceros con vehículo en custodia"
## [10] "14-Daños a vehículos en custodia"            
## [11] "16-Daños por la carga"                       
## [12] "17-Daños por trabajos y obras especiales"    
## [13] "18-Demandas en el extranjero"                
## [14] "20-Equipaje y efectos de huéspedes"          
## [15] "21-Estacionamientos"                         
## [16] "24-Patronal (Subsidiaria)"                   
## [17] "25-Productos y trabajos terminados"          
## [18] "26-RC Profesionistas"                        
## [19] "29-Talleres automotrices"                    
## [20] "30-Unión, mezcla y transformación"           
## [21] "31-RC Viajero"                               
## [22] "32-Viajes en el extranjero"                  
## [23] "33-RC Hospitales"                            
## [24] "99-RC Otros u Otra Cobertura"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Responsabilidad Civil
Frec_abs_Cob_Rsp_C<-data.frame(table(Resp_Civil$COBERTURA))
Frec_abs_Cob_Rsp_C
plot(Resp_Civil$COBERTURA,col=rainbow(24, alpha=0.6),main="Frecuencia por Cobertura 
     Responsabilidad Civil",xlab="Coberturas", ylab="Número de Siniestros")
legend("topright",legend=c("Actividades e inmuebles","Asumida","Bienes bajo custodia","Carga y descarga","Contaminación al medio","Cruzada","Daños a instalaciones","Daños a la contraparte","Daños a terceros","Daños a vehículos","Daños por la carga","Daños por trabajos","Demandas en el extranjero","Equipaje y efectos","Estacionamientos","Patronal (Subsidiaria)","Productos y trabajos","RC Profesionistas","Talleres automotrices","Unión, mezcla","RC Viajero","Viajes en el extranjero","RC Hospitales","RC Otros "),pch=19,col=rainbow(24, alpha=0.6),cex=0.35)

Frec_rel_Cob_Rsp_C <- data.frame(
  "Coberturas" = Frec_abs_Cob_Rsp_C$Var1, 
  "Frecuencia" = Frec_abs_Cob_Rsp_C$Freq/length(Resp_Civil$RAMO))
Frec_rel_Cob_Rsp_C 

Severidad Promedio

Estos valores lo calcularemos con Resp_Civil_2 la base donde eliminamos 3 valores atípicos por lo que mencionamos anteriormente

AEI <- filter(Resp_Civil_2,COBERTURA =="01-Actividades e inmuebles")
Asumida <- filter(Resp_Civil_2,COBERTURA =="02-Asumida")
BBC <- filter(Resp_Civil_2,COBERTURA =="04-Bienes bajo custodia")
CYD <- filter(Resp_Civil_2,COBERTURA =="05-Carga y descarga")
Cont_A <- filter(Resp_Civil_2,COBERTURA =="06-Contaminación al medio ambiente")
Cruzada <- filter(Resp_Civil_2,COBERTURA =="08-Cruzada")
Daños_inst <- filter(Resp_Civil_2,COBERTURA =="11-Daños a instalaciones")
Daños_cont <- filter(Resp_Civil_2,COBERTURA =="12-Daños a la contraparte del contrato")
Daños_tercero <- filter(Resp_Civil_2,COBERTURA =="13-Daños a terceros con vehículo en custodia")
Daños_Veh <- filter(Resp_Civil_2,COBERTURA =="14-Daños a vehículos en custodia")
Daños_carga <- filter(Resp_Civil_2,COBERTURA =="16-Daños por la carga")
Daños_trab <- filter(Resp_Civil_2,COBERTURA =="17-Daños por trabajos y obras especiales")
Demandas <- filter(Resp_Civil_2,COBERTURA =="18-Demandas en el extranjero")
Equipaje <- filter(Resp_Civil_2,COBERTURA =="20-Equipaje y efectos de huéspedes")
Estacion <- filter(Resp_Civil_2,COBERTURA =="21-Estacionamientos")
Patronal<- filter(Resp_Civil_2,COBERTURA =="24-Patronal (Subsidiaria)")
Productos <- filter(Resp_Civil_2,COBERTURA =="25-Productos y trabajos terminados")
Profesionista <- filter(Resp_Civil_2,COBERTURA =="26-RC Profesionistas")
tall_auto <- filter(Resp_Civil_2,COBERTURA =="29-Talleres automotrices")
UMT <- filter(Resp_Civil_2,COBERTURA =="30-Unión, mezcla y transformación")
RC_viajero <- filter(Resp_Civil_2,COBERTURA =="31-RC Viajero")
Viajes <- filter(Resp_Civil_2,COBERTURA =="32-Viajes en el extranjero")
Hospital <- filter(Resp_Civil_2,COBERTURA =="33-RC Hospitales")
Otras_Cob<- filter(Resp_Civil_2,COBERTURA =="99-RC Otros u Otra Cobertura")

data.frame("Coberturas_del_Ramo_Resp_C"=Frec_abs_Cob_Rsp_C$Var1,"Severidad"=c(mean(AEI$MONTO_OCURRIDO),mean(Asumida$MONTO_OCURRIDO),mean(BBC$MONTO_OCURRIDO),mean(CYD$MONTO_OCURRIDO),mean(Cont_A$MONTO_OCURRIDO),mean(Cruzada$MONTO_OCURRIDO),mean(Daños_inst$MONTO_OCURRIDO),mean(Daños_cont$MONTO_OCURRIDO),mean(Daños_tercero$MONTO_OCURRIDO),mean(Daños_Veh$MONTO_OCURRIDO),mean(Daños_carga$MONTO_OCURRIDO),mean(Daños_trab$MONTO_OCURRIDO),mean(Demandas$MONTO_OCURRIDO),mean(Equipaje$MONTO_OCURRIDO),mean(Estacion$MONTO_OCURRIDO),mean(Patronal$MONTO_OCURRIDO),mean(Productos$MONTO_OCURRIDO),mean(Profesionista$MONTO_OCURRIDO),mean(tall_auto$MONTO_OCURRIDO),mean(UMT$MONTO_OCURRIDO),mean(RC_viajero$MONTO_OCURRIDO),mean(Viajes$MONTO_OCURRIDO),mean(Hospital$MONTO_OCURRIDO),mean(Otras_Cob$MONTO_OCURRIDO)))

\[\text{Terremoto}\]

Filtramos los datos del RAMO Terremoto

Terremoto <- filter(Base_Siniestros,RAMO =="Terremoto")
Terremoto

Monto total:

Siniestralidad_Terremoto <- sum(Terremoto$MONTO_OCURRIDO) 
Siniestralidad_Terremoto
## [1] 24330437892

Severidad Promedio:

Se realiza un boxplot para observar si contamos con valores atípicos que puedan llegar a modificar drásticamente la severidad promedio

boxplot_Terremoto <-boxplot(Terremoto$MONTO_OCURRIDO,main="boxplot Terremoto",outpch = 21,outbg = "lightcyan3")

max(boxplot_Terremoto$out)
## [1] 10699934463

A simple vista podemos ver que hay 3 valores atípicos que se encuentra alejados de los demáss, por lo cual decidimos eliminarlos, a continuación podemos observar el boxplot antes y después de eliminar esos valores

par(mfrow = c(1, 2))
boxplot(Terremoto$MONTO_OCURRIDO,main="boxplot antes",outpch = 21,outbg = "lightcyan3")

Terremoto_2 <-Terremoto %>% filter(MONTO_OCURRIDO < 2000000000)
boxplot(Terremoto_2$MONTO_OCURRIDO,main="boxplot después",col = "lightcyan3",outpch = 21,outbg = "lightcyan3")

Al sacar la Severidad Promedio podemos notar una gran diferencia en eliminar y no eliminar los 3 valores atípicos

Severidad_Prom_Terremoto = mean(Terremoto$MONTO_OCURRIDO)
Severidad_Prom_Terremoto
## [1] 121652189
Severidad_Prom_Terremoto_2 = mean(Terremoto_2$MONTO_OCURRIDO)
Severidad_Prom_Terremoto_2
## [1] 38356515

Una diferencia de $83,295,674 dólares, una suma muy considerable que hay que tomar muy en cuenta

Severidad_Prom_Terremoto- Severidad_Prom_Terremoto_2
## [1] 83295674

En este caso yo me quedaría con la Severidad promedio sin contar los 3 valores atípicos

Cuota de riesgo

Cuota_Riesgo_Terremoto=(Frec_rel_Ramos[2]$Frecuencia[6])*Severidad_Prom_Terremoto_2
Cuota_Riesgo_Terremoto
## [1] 997828.2

Prima de Riesgo

La Prima de Riesgo la calculamos por Ponderada por suma asegurada

Prima_Riesgo <-data_frame("PRIMA_RIESGO"=((Terremoto$SUMA_ASEGURADA/(sum(Terremoto$SUMA_ASEGURADA)))*Siniestralidad_Terremoto)) #Calculo de la Prima de Riesgo
Prima_Riesgo$PRIMA_RIESGO<-round(Prima_Riesgo$PRIMA_RIESGO)

Prima Tarifa

Prima_Tarifa <-data_frame("PRIMA_TARIFA"=(Prima_Riesgo$PRIMA_RIESGO/(1-(Gastos_de_Administracion + Gastos_de_Adquisición + Margen_de_Utilidad)))) #Calculo de la Prima Tarifa
Prima_Tarifa$PRIMA_TARIFA<-round(Prima_Tarifa$PRIMA_TARIFA)

En la siguiente tabla se muestra el número de siniestro, la suma asegurada, el monto ocurrido, la prima de Riesgo, la prima tarifa, el ramo y la Cobertura

datos_Terremoto<-cbind(Terremoto,Prima_Riesgo,Prima_Tarifa)
datos_Terremoto<-select(datos_Terremoto,NUM_SINIESTRO,SUMA_ASEGURADA,MONTO_OCURRIDO,PRIMA_RIESGO,PRIMA_TARIFA,RAMO,COBERTURA)
datos_Terremoto

\[\text{Coverturas del Ramo Terremoto }\]

Ahora vamos a separar nuestros siniestros por COBERTURA dependiendo de cada RAMO, pero primero ocupamos la función as.factor() en la variable COBERTURA para transformarlos a tipo factor y poder graficarlos

Terremoto$COBERTURA<- as.factor(Terremoto$COBERTURA)

Checamos los tipos de COBERTURAS del RAMO Terremoto, los cuales son:

levels(Terremoto$COBERTURA)
## [1] "01-Terremoto"  "16-Terrorismo"

El número de siniestros por COBERTURA es:

# Frecuencia absoluta, de acuerdo al número de siniestros encontrados en el Ramo Terremoto
Frec_abs_Cob_Terr<-data.frame(table(Terremoto$COBERTURA))
Frec_abs_Cob_Terr
plot(Terremoto$COBERTURA,col = c("goldenrod","gold4"),main="Frecuencia por Cobertura 
     del Ramo Terremoto",xlab="Coberturas", ylab="Número de Siniestros")

Frec_rel_Cob_Terr <- data.frame(
  "Coberturas" = Frec_abs_Cob_Terr$Var1, 
  "Frecuencia" = Frec_abs_Cob_Terr$Freq/length(Terremoto$RAMO))
Frec_rel_Cob_Terr

Severidad Promedio

Estos valores lo calcularemos con Terremoto_2 la base donde eliminamos 3 valores atípicos por lo que mencionamos anteriormente

Terr_01 <- filter(Terremoto_2,COBERTURA =="01-Terremoto")
Terrorismo <- filter(Terremoto_2,COBERTURA =="16-Terrorismo")

data.frame("Coberturas_del_Ramo_Terremoto"=Frec_abs_Cob_Terr$Var1,"Severidad"=c(mean(Terr_01$MONTO_OCURRIDO),mean(Terrorismo$MONTO_OCURRIDO)))

\[\text{Conclusiones}\]

La base de datos contaba con 6 Ramos en total, donde la más frecuente es Marítimo y Trasnporte y la menos frecuente Diversos, a pesar de ser la menos frecuente sus montos de ocurrencia son bastantes altos, fue en este Ramo donde se encontraron los valores atípicos más alejados de la media, que como observamos llegan a modificar mucho el promedio de la severidad esto debido a que las cantidades eran bastantes altas por lo que decidimos quitarla en algunos Ramos esto dependiendo el tipo y que tan alejado se encontraba de la media.

Por último, al calcular las primas por Ramo observamos que varios de los Ramos son de alta severidad y poca frecuencia, como el caso del Ramo Incendio el cual en caso de suceder ocasiona perdida total, o los que son ocasionados por fenómenos naturales.

\[\text{Integrantes:}\]

  • Toledo Serna Odilia Karime \(~~314189112\)
  • Cruz Alfaro Alan Jesus \(~~~~~~~~~~~~414025631\)