En Actuaría, trabajar con datos no consiste únicamente en calcular indicadores o ajustar modelos. Antes de utilizar herramientas avanzadas es necesario comprender qué tipo de pregunta se está intentando responder.
En esta clase estudiaremos cuatro etapas del análisis:
| Etapa | Pregunta principal | Idea central |
|---|---|---|
| Descriptiva | ¿Qué ocurrió? | Resume y organiza la información observada |
| Predictiva | ¿Qué podría ocurrir? | Estima resultados futuros o no observados |
| Prescriptiva | ¿Qué deberíamos hacer? | Compara alternativas y apoya una decisión |
| Prospectiva | ¿Qué podría pasar bajo distintos futuros? | Explora escenarios y vulnerabilidades |
Objetivo de hoy: aprender a reconocer para qué sirve cada etapa, qué información utiliza, qué tipo de resultado produce y cómo se conecta con una decisión actuarial.
En esta sesión no construiremos todavía modelos predictivos. Más adelante estudiaremos con calma cómo se construyen, evalúan e interpretan.
Trabajaremos con una cartera simulada de seguros de automóviles.
La aseguradora quiere entender su situación y tomar decisiones para el próximo año.
Crearemos una base sencilla con:
n <- 2500
cartera <- tibble(
id_poliza = 1:n,
zona = sample(
c("Centro", "Norte", "Sur"),
n,
replace = TRUE,
prob = c(0.45, 0.30, 0.25)
),
uso = sample(
c("Particular", "Comercial"),
n,
replace = TRUE,
prob = c(0.82, 0.18)
),
edad_conductor = pmin(
pmax(round(rnorm(n, 42, 12)), 18),
80
),
antiguedad_vehiculo = pmin(
pmax(round(rgamma(n, shape = 2.5, scale = 2)), 0),
20
),
exposicion = runif(n, 0.25, 1)
) |>
mutate(
frecuencia_teorica =
0.11 *
if_else(zona == "Sur", 1.30,
if_else(zona == "Norte", 1.15, 1)
) *
if_else(uso == "Comercial", 1.35, 1) *
if_else(edad_conductor < 25, 1.35, 1) *
(1 + 0.02 * antiguedad_vehiculo),
n_siniestros =
rpois(
n(),
lambda = frecuencia_teorica * exposicion
),
severidad_teorica =
2800000 *
if_else(uso == "Comercial", 1.20, 1) *
if_else(zona == "Sur", 1.10, 1)
)
simular_costo <- function(n_siniestros, severidad) {
if (n_siniestros == 0) return(0)
sum(
rgamma(
n_siniestros,
shape = 2,
scale = severidad / 2
)
)
}
cartera <- cartera |>
rowwise() |>
mutate(
costo_siniestros =
simular_costo(
n_siniestros,
severidad_teorica
)
) |>
ungroup() |>
mutate(
prima_cobrada =
1.28 *
frecuencia_teorica *
severidad_teorica *
runif(n(), 0.90, 1.10)
)Revisemos algunas observaciones.
cartera |>
select(
id_poliza,
zona,
uso,
edad_conductor,
antiguedad_vehiculo,
exposicion,
n_siniestros,
costo_siniestros,
prima_cobrada
) |>
head(10)Para estudiar la cartera utilizaremos algunos indicadores básicos.
La exposición representa el tiempo durante el cual una póliza estuvo efectivamente expuesta al riesgo.
Una póliza vigente durante todo el año puede tener exposición igual a
1.
Una póliza vigente durante medio año puede tener exposición cercana a
0.5.
La frecuencia mide cuántos siniestros ocurren por unidad de exposición:
\[ \text{Frecuencia} = \frac{\text{Número de siniestros}} {\text{Exposición}} \]
La severidad representa el costo promedio por siniestro:
\[ \text{Severidad} = \frac{\text{Costo total de siniestros}} {\text{Número de siniestros}} \]
La prima pura representa el costo esperado del riesgo antes de gastos, comisiones, utilidad, impuestos u otros recargos.
A nivel agregado puede aproximarse mediante:
\[ \text{Prima pura} = \frac{\text{Costo de siniestros}} {\text{Exposición}} \]
¿Qué ocurrió?
La etapa descriptiva trabaja fundamentalmente con información observada.
No intenta todavía decir qué ocurrirá el próximo año ni recomendar una decisión.
Su trabajo es organizar la realidad histórica.
La gerencia pregunta:
¿Cómo se comportó nuestra cartera durante el último año?
Para responder necesitamos resumir:
resumen_general <- cartera |>
summarise(
polizas = n(),
exposicion = sum(exposicion),
siniestros = sum(n_siniestros),
costo_total = sum(costo_siniestros),
primas = sum(prima_cobrada * exposicion),
frecuencia = siniestros / exposicion,
severidad = costo_total / siniestros,
prima_pura = costo_total / exposicion,
loss_ratio = costo_total / primas
)
resumen_generalresumen_general |>
transmute(
Pólizas = polizas,
Exposición = round(exposicion, 1),
Siniestros = siniestros,
Frecuencia = round(frecuencia, 3),
Severidad = dollar(
severidad,
prefix = "$",
big.mark = ".",
decimal.mark = ","
),
`Prima pura` = dollar(
prima_pura,
prefix = "$",
big.mark = ".",
decimal.mark = ","
),
`Loss ratio` = percent(loss_ratio, accuracy = 0.1)
) |>
knitr::kable()| Pólizas | Exposición | Siniestros | Frecuencia | Severidad | Prima pura | Loss ratio |
|---|---|---|---|---|---|---|
| 2500 | 1557.8 | 243 | 0.156 | $3.215.128 | $501.537 | 0.0% |
Una lectura actuarial podría ser:
Un loss ratio de 70%, por ejemplo, significa que
aproximadamente $70 de cada $100 de prima se
utilizaron para cubrir siniestros, antes de considerar otros gastos.
Una cartera total puede ocultar diferencias importantes entre grupos.
resumen_zona <- cartera |>
group_by(zona) |>
summarise(
polizas = n(),
exposicion = sum(exposicion),
siniestros = sum(n_siniestros),
costo = sum(costo_siniestros),
frecuencia = siniestros / exposicion,
severidad = costo / siniestros,
prima_pura = costo / exposicion,
.groups = "drop"
)
resumen_zonaggplot(
resumen_zona,
aes(x = reorder(zona, frecuencia), y = frecuencia)
) +
geom_col() +
coord_flip() +
labs(
title = "Frecuencia observada por zona",
subtitle = "Análisis descriptivo de la cartera",
x = NULL,
y = "Frecuencia"
) +
theme_minimal()Ahora por tipo de uso:
resumen_uso <- cartera |>
group_by(uso) |>
summarise(
polizas = n(),
exposicion = sum(exposicion),
siniestros = sum(n_siniestros),
costo = sum(costo_siniestros),
frecuencia = siniestros / exposicion,
severidad = costo / siniestros,
prima_pura = costo / exposicion,
.groups = "drop"
)
resumen_usoggplot(
resumen_uso,
aes(x = uso, y = prima_pura)
) +
geom_col() +
scale_y_continuous(
labels = label_dollar(
prefix = "$",
big.mark = ".",
decimal.mark = ","
)
) +
labs(
title = "Prima pura observada por tipo de uso",
x = NULL,
y = "Prima pura"
) +
theme_minimal()Sí permite:
No permite por sí sola:
Regla para recordar: descriptivo = fotografía del comportamiento observado.
¿Qué podría ocurrir?
La etapa predictiva utiliza información disponible para estimar un resultado que todavía no conocemos.
Ejemplos actuariales:
Suponga que el equipo de modelación de la aseguradora ya realizó un estudio y entrega las siguientes estimaciones de frecuencia para el próximo año:
predicciones <- tribble(
~zona, ~uso, ~frecuencia_esperada,
"Centro", "Particular", 0.115,
"Centro", "Comercial", 0.155,
"Norte", "Particular", 0.130,
"Norte", "Comercial", 0.175,
"Sur", "Particular", 0.150,
"Sur", "Comercial", 0.205
)
prediccionesNuestro objetivo hoy no es preguntar cómo se construyó el modelo.
Eso lo estudiaremos después.
La pregunta de hoy es:
¿Qué significa que una frecuencia esperada sea 0.205?
Una frecuencia esperada de 0.205 puede interpretarse
aproximadamente como:
Si tuviéramos muchas pólizas similares durante un año completo, esperaríamos alrededor de 20.5 siniestros por cada 100 pólizas-año.
No significa que una póliza concreta vaya a sufrir 0.205
siniestros.
Es una expectativa promedio.
Comparemos la frecuencia histórica observada con la frecuencia esperada entregada por el equipo técnico.
comparacion <- cartera |>
group_by(zona, uso) |>
summarise(
exposicion = sum(exposicion),
siniestros = sum(n_siniestros),
frecuencia_observada =
siniestros / exposicion,
.groups = "drop"
) |>
left_join(
predicciones,
by = c("zona", "uso")
)
comparacioncomparacion |>
pivot_longer(
cols = c(
frecuencia_observada,
frecuencia_esperada
),
names_to = "tipo",
values_to = "frecuencia"
) |>
ggplot(
aes(
x = interaction(zona, uso),
y = frecuencia,
fill = tipo
)
) +
geom_col(position = "dodge") +
labs(
title = "Frecuencia observada vs. frecuencia esperada",
subtitle = "La etapa predictiva mira hacia un resultado aún no observado",
x = "Segmento",
y = "Frecuencia",
fill = NULL
) +
theme_minimal() +
theme(
axis.text.x = element_text(
angle = 35,
hjust = 1
)
)Porque una predicción puede incorporar información adicional:
La etapa predictiva no copia necesariamente el pasado.
Intenta utilizar el pasado y otra información disponible para estimar algo que aún no observamos.
En pensiones:
Pregunta descriptiva:
¿Cuál fue la edad promedio de retiro durante los últimos cinco años?
Pregunta predictiva:
¿Cuál podría ser la edad esperada de retiro de los afiliados que hoy tienen entre 55 y 60 años?
Son preguntas relacionadas, pero no son la misma pregunta.
Sí permite:
No implica automáticamente:
Regla para recordar: predictivo = estimación de algo que todavía no conocemos.
¿Qué deberíamos hacer?
La etapa prescriptiva aparece cuando tenemos que escoger entre alternativas.
Aquí ya no basta con conocer qué pasó ni con estimar qué podría pasar.
Necesitamos una decisión.
Ejemplos actuariales:
Suponga que el equipo actuarial propone tres alternativas tarifarias:
alternativas <- tribble(
~alternativa, ~aumento_prima, ~retencion_esperada, ~loss_ratio_esperado,
"A", 0.05, 0.94, 0.82,
"B", 0.10, 0.89, 0.75,
"C", 0.18, 0.76, 0.66
)
alternativasTenemos un conflicto:
No existe una alternativa “mejor” sin definir antes qué quiere lograr la compañía.
alternativas |>
mutate(
alternativa =
factor(
alternativa,
levels = c("A", "B", "C")
)
) |>
ggplot(
aes(
x = retencion_esperada,
y = loss_ratio_esperado,
label = alternativa
)
) +
geom_point(size = 4) +
geom_text(
nudge_y = 0.015
) +
scale_x_continuous(labels = percent) +
scale_y_continuous(labels = percent) +
labs(
title = "Comparación de alternativas tarifarias",
subtitle = "Una decisión puede implicar compensaciones entre objetivos",
x = "Retención esperada",
y = "Loss ratio esperado"
) +
theme_minimal()La respuesta depende del objetivo.
Mantener una retención mínima del 85% y buscar el menor loss ratio posible.
Podemos filtrar las alternativas factibles:
Bajo esta regla, solo consideramos alternativas que cumplen la restricción de retención.
La etapa prescriptiva agrega entonces tres elementos:
\[ \text{Predicción} + \text{Objetivo} + \text{Restricciones} \rightarrow \text{Decisión} \]
Una recomendación prescriptiva no es una verdad absoluta.
Depende de:
Regla para recordar: prescriptivo = comparar alternativas para recomendar una acción.
¿Qué podría pasar bajo diferentes futuros?
La prospectiva trabaja con escenarios.
No busca necesariamente identificar un único futuro “correcto”.
Busca comprender cómo cambiaría una decisión si cambian ciertas condiciones.
Ejemplos actuariales:
Suponga que estamos evaluando el próximo año.
La compañía plantea cuatro escenarios:
escenarios <- tribble(
~escenario, ~cambio_frecuencia, ~cambio_severidad,
"Favorable", -0.05, 0.03,
"Base", 0.00, 0.07,
"Adverso", 0.10, 0.15,
"Estrés", 0.25, 0.28
)
escenariosLa pregunta no es:
¿Cuál de estos escenarios ocurrirá exactamente?
La pregunta es:
¿Qué consecuencias tendría cada uno si ocurriera?
Si el costo esperado depende aproximadamente de frecuencia por severidad, podemos estudiar el efecto relativo:
escenarios_resultado <- escenarios |>
mutate(
factor_frecuencia =
1 + cambio_frecuencia,
factor_severidad =
1 + cambio_severidad,
factor_costo =
factor_frecuencia *
factor_severidad,
cambio_costo =
factor_costo - 1
)
escenarios_resultadoggplot(
escenarios_resultado,
aes(
x = reorder(escenario, cambio_costo),
y = cambio_costo
)
) +
geom_col() +
coord_flip() +
scale_y_continuous(labels = percent) +
labs(
title = "Cambio relativo del costo esperado por escenario",
subtitle = "Combinación de cambios en frecuencia y severidad",
x = NULL,
y = "Cambio del costo esperado"
) +
theme_minimal()Suponga que en el escenario de estrés el costo esperado aumenta 60%.
Eso no significa que sabemos que el costo aumentará 60%.
Significa:
Si la frecuencia y la severidad evolucionaran de acuerdo con los supuestos del escenario de estrés, entonces el costo esperado aumentaría aproximadamente en esa magnitud.
Ese “si… entonces…” es esencial en la prospectiva.
Imagine un fondo de pensiones.
Podrían construirse escenarios con:
El objetivo no es afirmar cuál ocurrirá.
El objetivo es preguntar:
¿El fondo continúa siendo sostenible bajo condiciones menos favorables?
Sí permite:
No pretende necesariamente:
Regla para recordar: prospectivo = explorar futuros posibles.
Podemos representar el proceso de la siguiente manera:
\[ \text{¿Qué ocurrió?} \rightarrow \text{¿Qué podría ocurrir?} \rightarrow \text{¿Qué hacemos?} \rightarrow \text{¿Qué pasa si el entorno cambia?} \]
| Etapa | Pregunta | Resultado típico |
|---|---|---|
| Descriptiva | ¿Qué ocurrió? | Tabla, indicador, gráfico |
| Predictiva | ¿Qué podría ocurrir? | Probabilidad, estimación, pronóstico |
| Prescriptiva | ¿Qué deberíamos hacer? | Recomendación, regla o alternativa |
| Prospectiva | ¿Qué podría pasar en distintos futuros? | Escenarios, sensibilidad, estrés |
Veamos algunas situaciones.
Durante 2026 la frecuencia de siniestros comerciales fue 18% superior a la de pólizas particulares.
Etapa: descriptiva.
¿Por qué?
Porque estamos hablando de un resultado ya observado.
Se estima que el próximo año las pólizas comerciales tendrán una frecuencia de 0.17.
Etapa: predictiva.
¿Por qué?
Porque estamos estimando un resultado futuro.
Entre tres alternativas tarifarias, se recomienda la alternativa B porque mantiene una retención superior al 85% y reduce el loss ratio esperado.
Etapa: prescriptiva.
¿Por qué?
Porque estamos seleccionando una acción.
Se analiza qué ocurriría con el resultado técnico si la frecuencia aumenta 15% y la severidad 20%.
Etapa: prospectiva.
¿Por qué?
Porque estamos estudiando un escenario hipotético.
En la práctica, los proyectos actuariales rara vez terminan en una sola etapa.
Por ejemplo:
¿Debemos aumentar las tarifas de seguros comerciales para el próximo año?
Para responder bien podríamos necesitar:
Descriptiva
Predictiva
Prescriptiva
Prospectiva
Esto muestra que las etapas no compiten entre sí.
Se complementan.
Clasifique cada pregunta en una de las cuatro etapas.
preguntas <- tibble(
numero = 1:8,
pregunta = c(
"¿Cuál fue la severidad promedio durante 2026?",
"¿Cuál podría ser la frecuencia de siniestros en 2027?",
"¿Qué deducible conviene ofrecer al asegurado?",
"¿Qué pasa con la reserva si la inflación aumenta al 12%?",
"¿Qué zona tuvo mayor loss ratio?",
"¿Qué afiliados presentan mayor probabilidad de retiro anticipado?",
"¿Qué estrategia de reaseguro conviene contratar?",
"¿Cómo cambia el capital requerido bajo un escenario de estrés?"
)
)
preguntas |>
knitr::kable()| numero | pregunta |
|---|---|
| 1 | ¿Cuál fue la severidad promedio durante 2026? |
| 2 | ¿Cuál podría ser la frecuencia de siniestros en 2027? |
| 3 | ¿Qué deducible conviene ofrecer al asegurado? |
| 4 | ¿Qué pasa con la reserva si la inflación aumenta al 12%? |
| 5 | ¿Qué zona tuvo mayor loss ratio? |
| 6 | ¿Qué afiliados presentan mayor probabilidad de retiro anticipado? |
| 7 | ¿Qué estrategia de reaseguro conviene contratar? |
| 8 | ¿Cómo cambia el capital requerido bajo un escenario de estrés? |
Antes de mirar la solución, responda para cada pregunta:
solucion <- preguntas |>
mutate(
etapa = c(
"Descriptiva",
"Predictiva",
"Prescriptiva",
"Prospectiva",
"Descriptiva",
"Predictiva",
"Prescriptiva",
"Prospectiva"
)
)
solucion |>
knitr::kable()| numero | pregunta | etapa |
|---|---|---|
| 1 | ¿Cuál fue la severidad promedio durante 2026? | Descriptiva |
| 2 | ¿Cuál podría ser la frecuencia de siniestros en 2027? | Predictiva |
| 3 | ¿Qué deducible conviene ofrecer al asegurado? | Prescriptiva |
| 4 | ¿Qué pasa con la reserva si la inflación aumenta al 12%? | Prospectiva |
| 5 | ¿Qué zona tuvo mayor loss ratio? | Descriptiva |
| 6 | ¿Qué afiliados presentan mayor probabilidad de retiro anticipado? | Predictiva |
| 7 | ¿Qué estrategia de reaseguro conviene contratar? | Prescriptiva |
| 8 | ¿Cómo cambia el capital requerido bajo un escenario de estrés? | Prospectiva |
Seguros Horizonte está preparando su planeación para el próximo año.
La gerencia entrega la siguiente información:
Clasifique cada una de las siguientes preguntas:
| Pregunta | Etapa |
|---|---|
| ¿Qué zona presentó mayor frecuencia durante el último año? | |
| ¿Qué frecuencia esperamos para las pólizas comerciales el próximo año? | |
| ¿Qué incremento de prima recomendaríamos? | |
| ¿Qué pasa si la inflación de siniestros alcanza 20%? | |
| ¿Qué segmento tuvo mayor severidad histórica? | |
| ¿Qué pólizas podrían presentar mayor riesgo el próximo año? | |
| ¿Qué alternativa cumple mejor la restricción de retención? | |
| ¿La recomendación seguiría siendo adecuada bajo un escenario de estrés? |
No basta con escribir el nombre de la etapa.
Para cada respuesta escriba una frase:
“Es __________ porque __________.”
Ejemplo:
Es descriptiva porque utiliza información que ya fue observada para resumir el comportamiento histórico.
Para cuatro de las preguntas anteriores indique:
Formule una pregunta actuarial original para cada etapa:
Puede utilizar alguno de estos campos:
Seleccione una de sus preguntas prescriptivas y explique:
Cuando reciba una pregunta de negocio, puede utilizar este árbol sencillo.
¿La pregunta se refiere principalmente a información que ya ocurrió?
Sí → Descriptiva
¿La pregunta intenta estimar algo que todavía no conocemos?
Sí → Predictiva
¿La pregunta pide escoger, recomendar u optimizar una acción?
Sí → Prescriptiva
¿La pregunta modifica supuestos para estudiar qué pasaría bajo diferentes condiciones?
Sí → Prospectiva
En problemas reales puede aparecer más de una etapa.
Entender el pasado y el presente observado.
Estimar algo que todavía no conocemos.
Elegir qué hacer con la información disponible.
Explorar qué podría pasar si el futuro cambia.
Un actuario puede tener una gran cantidad de datos y aun así formular mal el problema.
Antes de escoger una técnica conviene preguntar:
¿Qué tipo de respuesta necesita realmente quien toma la decisión?
Porque una tabla histórica, una predicción, una recomendación y un escenario responden preguntas diferentes.
El recorrido completo puede resumirse así:
\[ \boxed{ \text{Describir} \rightarrow \text{Predecir} \rightarrow \text{Decidir} \rightarrow \text{Explorar escenarios} } \]
En las siguientes clases estudiaremos con mayor profundidad cómo construir algunas de estas herramientas.
Por ahora, lo importante es saber cuándo y para qué utilizarlas.