Motivación

Los Modelos Lineales Generalizados (GLM) extienden la regresión lineal tradicional para permitir trabajar con variables respuesta que no necesariamente siguen una distribución normal.

En la práctica, muchas variables no son continuas simétricas, por ejemplo:

  • El número de reclamos de un asegurado (0, 1, 2, …)
  • Probabilidad de que un cliente compre un seguro (0/1)
  • Tiempo hasta la ocurrencia de un evento (positivo y continuo)
  • Porcentaje o proporción entre 0 y 1

Los GLM permiten modelar estas situaciones sin forzar un supuesto irreal de normalidad.

Idea Fundamental del GLM

Un Modelo Lineal Generalizado consta de tres componentes:

  1. Componente Aleatoria: La variable respuesta \((Y)\) sigue una distribución perteneciente a la familia exponencial (Normal, Binomial, Poisson, Gamma, Inversa Gaussiana, etc.)

  2. Componente Sistemática: Se define un predictor lineal: \[ \eta = \beta_0 + \beta_1 X_1 + \cdots + \beta_k X_k \]

  3. Función de Enlace: Relaciona la media \((\mu = E[Y])\) con el predictor lineal: \[ g(\mu) = \eta \]

La función de enlace permite “ajustar” la relación entre la media de la variable respuesta y los predictores, evitando asumir linealidad estricta.

Ejemplos Típicos de GLM

Tipo de variable respuesta \((Y)\) Distribución Función de enlace Modelo Caso práctico
Binaria (0/1) Binomial Logit Regresión Logística Probabilidad de compra de un seguro
Conteos Poisson Log Regresión Poisson Número de reclamos por asegurado
Conteos con sobredispersión Binomial Negativa Log NegBin Reclamos pero con alta variabilidad
Continuas positivas Gamma Log o Inversa Gamma GLM Costo (severidad) de siniestros
Proporciones (0 a 1) Binomial Logit Logística Tasa de cumplimiento (%)
Proporciones continuas (0,1) Beta Logit o Log-log Beta Regression Índices de riesgo, razones financieras

Nota: La regresión Beta no es técnicamente GLM clásico, pero se utiliza para proporciones continuas. Más adelante la agregamos si se requiere.

Ejemplo: Modelo Logístico

Supongamos que queremos modelar la probabilidad de que un cliente compre un seguro ((Compra = 1)) en función de su edad.

\[ \Pr(\text{Compra}=1) = \frac{e^{\beta_0 + \beta_1\cdot \text{Edad}}}{1 + e^{\beta_0 + \beta_1\cdot \text{Edad}}} \]

Si \((\beta_1 > 0)\), a mayor edad, aumenta la probabilidad de compra.

# Ejemplo artificial simple
set.seed(123)
n <- 200
datos <- data.frame(
  Edad = runif(n, 18, 70),
  Compra = rbinom(n, 1, prob = 0.3)
)

modelo_log <- glm(Compra ~ Edad, data = datos, family = binomial)
summary(modelo_log)
## 
## Call:
## glm(formula = Compra ~ Edad, family = binomial, data = datos)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)
## (Intercept)  -0.2174     0.4995  -0.435    0.663
## Edad         -0.0144     0.0110  -1.309    0.191
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 244.35  on 199  degrees of freedom
## Residual deviance: 242.61  on 198  degrees of freedom
## AIC: 246.61
## 
## Number of Fisher Scoring iterations: 4

Ejemplo: Modelo Poisson para Conteos

Se modela el número esperado de reclamos por asegurado en función de la edad.

set.seed(123)
n <- 200
datos2 <- data.frame(
  Edad = runif(n, 18, 70),
  Reclamos = rpois(n, lambda = 0.1 * (datos$Edad/30))
)

modelo_pois <- glm(Reclamos ~ Edad, data = datos2, family = poisson)
summary(modelo_pois)
## 
## Call:
## glm(formula = Reclamos ~ Edad, family = poisson, data = datos2)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.40938    0.64433  -3.739 0.000184 ***
## Edad         0.00978    0.01330   0.735 0.462148    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 115.65  on 199  degrees of freedom
## Residual deviance: 115.11  on 198  degrees of freedom
## AIC: 172.33
## 
## Number of Fisher Scoring iterations: 6

Interpretación de Coeficientes

Modelo Logístico: Compra ~ Edad

exp(coef(modelo_log))
## (Intercept)        Edad 
##   0.8046331   0.9857049
Parámetro OR (Odds Ratio)
Intercepto 0.8046
Edad 0.9857

Interpretación

  • Un OR = 0.9857 implica que por cada año adicional de edad, los odds (chances relativos) de comprar el seguro se multiplican por 0.9857, es decir:

[ (0.9857 - 1) %]

→ Cada año extra está asociado con una disminución del ~1.43% en la probabilidad de compra.

  • Pero, el p-valor fue 0.191, por lo tanto:

No hay evidencia estadística suficiente para afirmar que la edad influye en la probabilidad de compra. La diferencia podría ser puro ruido muestral.


Modelo Poisson: Reclamos ~ Edad

exp(coef(modelo_pois)) - 1
Parámetro % Cambio esperado
Intercepto -91.01% (no se interpreta directamente)
Edad +0.9828%

Interpretación

  • Cada año adicional de edad estaría asociado con un aumento del ~0.98% en la frecuencia esperada de reclamos.
  • Pero su p-valor fue 0.462.

No hay evidencia estadística suficiente para afirmar que la edad afecte la frecuencia de reclamos.


Resumen directo

Modelo Efecto de la Edad Tamaño del efecto ¿Significativo? Conclusión
Logístico (Compra) Probabilidad ↓ ~1.4% menos por año ❌ No No podemos afirmar relación.
Poisson (Reclamos) Frecuencia ↑ ~1% más por año ❌ No No podemos afirmar relación.

Moral del cuento: No siempre el signo cuenta la historia. La evidencia manda.



¿Por qué esto es importante en Actuaría?

Los GLM permiten modelar:

  • Frecuencia de siniestros → Poisson o Binomial Negativa
  • Severidad de siniestros → Gamma o Lognormal (vía GLM o GAM)
  • Pérdida Esperada → ( EL = E[S] )
  • Tarificación de primas → Base de pricing actuarial tradicional

En resumen: Los GLM son el corazón de la tarificación actuarial moderna.

Perfecto. Con esos valores, ahora la interpretación queda numéricamente precisa. Sigo desde la sección del documento, usando exactamente los valores que entregaste, y luego continuamos con el ejemplo asegurador completo + visualizaciones.


Ejemplo Asegurador: Frecuencia × Severidad → Prima Pura.

Vamos a tarificar, que es donde el actuarial saca músculo .

La Pérdida Esperada por póliza se define como:

\[ EL = \lambda \cdot E[S] \]

  • \(\lambda\) = frecuencia esperada de siniestros → se modela con Poisson
  • \((E[S]) =\) costo esperado del siniestro → se modela con Gamma
  • \((EL) =\) prima pura actuarial (antes de gastos, margen y ajuste comercial)

Simulación de cartera

set.seed(321)

n <- 500
datos_seg <- data.frame(
  Edad = sample(18:75, n, replace = TRUE),
  Tipo = sample(c("Básico", "Premium"), n, replace = TRUE, prob = c(0.7, 0.3))
)

# Frecuencia (Poisson)
datos_seg$Reclamos <- rpois(n, lambda = 0.02 + 0.001 * datos_seg$Edad + ifelse(datos_seg$Tipo=="Premium", 0.03, 0))

# Severidad (Gamma)
datos_seg$Costo <- rgamma(n, shape = 2, scale = 1200 + 10*datos_seg$Edad + ifelse(datos_seg$Tipo=="Premium", 2000, 0))

Ajuste GLM

mod_freq <- glm(Reclamos ~ Edad + Tipo, data = datos_seg, family = poisson)
mod_sev  <- glm(Costo ~ Edad + Tipo, data = datos_seg, family = Gamma(link="log"))

Predicción de Frecuencia, Severidad y Prima Pura

freq_pred <- predict(mod_freq, type="response")
sev_pred  <- predict(mod_sev, type="response")
datos_seg$Prima_Pura <- freq_pred * sev_pred

Visualizaciones

library(ggplot2)

# Frecuencia
ggplot(datos_seg, aes(Edad, freq_pred)) +
  geom_point(alpha=0.3) +
  geom_smooth(se=FALSE) +
  labs(title="Frecuencia Esperada vs Edad", y="Frecuencia Esperada")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

# Severidad
ggplot(datos_seg, aes(Edad, sev_pred, color=Tipo)) +
  geom_point(alpha=0.3) +
  geom_smooth(se=FALSE) +
  labs(title="Severidad Esperada vs Edad", y="Severidad Esperada")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

# Prima Pura
ggplot(datos_seg, aes(Edad, Prima_Pura, color=Tipo)) +
  geom_point(alpha=0.3) +
  geom_smooth(se=FALSE) +
  labs(title="Prima Pura Estimada", y="Prima Pura")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Interpretación del Modelo de Frecuencia (Poisson)

Modelo:

\[ \log(E[\text{Reclamos}]) = -2.9115 + 0.00543 \cdot \text{Edad} - 0.08998 \cdot I(\text{Tipo}=\text{Premium}) \]

Coeficiente Valor Interpretación
Intercepto -2.9115 Frecuencia base muy baja (≈ 0.054 reclamos por persona-año)
Edad +0.00543 La frecuencia aumenta con la edad
Tipo = Premium -0.08998 Los clientes Premium tienen menor frecuencia que los Básicos (todo lo demás constante)

Transformación a efectos multiplicativos

\[ e^{0.00543} \approx 1.00545 \]

Por cada año adicional de edad, la frecuencia esperada de reclamos aumenta en aproximadamente 0.55%.

\[ e^{-0.08998} \approx 0.914 \]

→ Una póliza Premium tiene ≈ 8.6% menos frecuencia de reclamos que una póliza Básica (todo lo demás igual).

Interpretación gráfica (Frecuencia)

La curva azul creciente en el gráfico muestra exactamente esa pendiente suave positiva:

  • Personas más jóvenes presentan frecuencias menores,
  • Personas mayores presentan frecuencias ligeramente superiores,
  • Pero la magnitud es baja → riesgo de ocurrencia es pequeño, como es típico en seguros personales.

Interpretación del Modelo de Severidad (Gamma con enlace log)

Modelo:

\[ \log(E[\text{Costo}]) = 7.956 + 0.00371 \cdot \text{Edad} + 0.8093 \cdot I(\text{Tipo}=\text{Premium}) \]

Coeficiente Valor Interpretación
Intercepto 7.956 Nivel base de costos ≈ 2,857
Edad +0.00371 La severidad aumenta con la edad
Tipo = Premium +0.8093 Los siniestros Premium son mucho más costosos

Transformación a efectos multiplicativos

\[ e^{0.00371} \approx 1.00372 \]

Cada año adicional de edad aumenta el costo esperado del siniestro en ≈ 0.37%.

\[ e^{0.8093} \approx 2.246 \]

→ Una póliza Premium tiene siniestros, en promedio, un 125% más costosos (más del doble) que una Básica.

Interpretación gráfica (Severidad)

El gráfico lo confirma:

  • Las curvas son casi rectas crecientes → la severidad aumenta suavemente con la edad.
  • La línea Premium está claramente por encima → mayor costo esperado del siniestro.

Combinación Frecuencia × Severidad → Prima Pura

\[ \text{Prima Pura}(i) = E[\text{Reclamos}_i] \times E[\text{Costo}_i] \]

Y eso es lo mismo que muestran tus últimas gráficas:

  • La prima crece con la edad porque crecen tanto la frecuencia como la severidad.
  • La prima Premium es mucho mayor porque la severidad Premium es significativamente mayor, aunque su frecuencia sea ligeramente menor.

Lectura clara de la gráfica de Prima Pura

  • Los asegurados jóvenes tienen primas más bajas.
  • Las primas aumentan suavemente con la edad.
  • Los planes Premium cuestan caro no porque reclamen más, sino porque cuando reclaman, el siniestro es más grande .

En Conclisión

La frecuencia aumenta ligeramente con la edad (≈ +0.5% por año).

La severidad también aumenta con la edad, pero lo más importante es que para pólizas Premium la severidad es más del doble que en Básico.

Por lo tanto, la prima pura aumenta con la edad y es sustancialmente más alta en el plan Premium.

No porque reclamen más, sino porque cuando reclaman, reclaman en grande.


Actividad: Tarificación técnica con GLM (Frecuencia × Severidad → Prima Pura)

0) Contexto

Una aseguradora desea revisar su estructura de precios diferenciando por Edad, Sexo, Región y Tipo de plan (Básico vs Premium). Se dispone de una muestra simulada de 15.000 pólizas con información mínima para estimar frecuencia de reclamos, severidad y prima pura técnica.

Objetivo del informe: construir un documento técnico (PDF, RMarkdown) que:

  1. Describa el portafolio,
  2. Explore relaciones entre variables,
  3. Modele frecuencia (Poisson) y severidad (Gamma),
  4. Obtenga prima pura por segmentos y emita recomendaciones tarifarias.

1) Variables de la base (diccionario)

  • Edad (numérica): 18–80 años.
  • Sexo (categórica): M / F.
  • Tipo (categórica): Básico / Premium.
  • Region (categórica): Norte / Sur / Centro / Oriente / Occidente.
  • Reclamos (entero ≥ 0): número de reclamos por póliza en el periodo (frecuencia).
  • Costo_Esperado (numérica > 0): severidad esperada (costo del siniestro).
  • Prima_Pura (numérica ≥ 0): producto Reclamos × Costo_Esperado (muchos ceros si no hubo reclamo).

Nota: Para tarificación técnica se recomienda estimar EL = λ × E[S] a partir de modelos, en vez de usar la Prima_Pura observada directamente, pues está “censurada” por los ceros de Reclamos.


2) Entregable y formato

  • Un solo PDF, generado con RMarkdown, estilo informe técnico.

  • Extensión sugerida: 6–10 páginas.

  • Estructura obligatoria (títulos tal cual Rmarkdown):

    1. Portada (título, autores, fecha)
    2. Resumen ejecutivo (≤ 150 palabras)
    3. Datos y variables
    4. Análisis descriptivo
    5. Correlaciones y relaciones clave
    6. Modelado GLM (frecuencia y severidad)
    7. Prima pura por segmentos
    8. Recomendaciones tarifarias
    9. Limitaciones del análisis

Incluyas código en el PDF. El código se revisará como parte del trabajo.


3) Guía paso a paso

3.1. Preparación del set

  1. Cargar la base y verificar número de filas/columnas.
  2. Revisar tipos de datos (numérico/categórico) y valores posibles en cada factor.
  3. Chequear calidad: conteo de NA, valores fuera de rango, duplicados y ceros lógicos (p. ej., Reclamos puede ser 0).
  4. Documentar decisiones de limpieza (si las hay) en 2–3 líneas.

Producto mínimo: una tabla “Ficha de datos” con: N observaciones, % NA por variable, rangos y niveles.


3.2. Análisis descriptivo (univariado y bivariado)

  1. Univariado:

    • Edad: media, mediana, IQR, histograma y/o densidad.
    • Sexo, Tipo, Región: tablas de frecuencias (%) y gráfico de barras.
    • Reclamos: distribución de conteos (muchos “0”), proporción de pólizas con ≥1 reclamo.
    • Costo_Esperado: mínimo, cuartiles, mediana, p90/p95; gráfico (boxplot o violín) por Tipo.
  2. Bivariado clave:

    • Edad vs Reclamos: tendencia media por tramos de edad (p. ej., 18–30, 31–45, 46–60, 61–80).
    • Edad vs Costo_Esperado: comparar curvas por Tipo.
    • Tipo y Región: comparar promedio de Reclamos y Costo_Esperado por grupo.
    • Sexo: contrastar Reclamos y Costo_Esperado por sexo (tabla + gráfico).

Producto mínimo: 3–5 gráficos bien rotulados y 2 tablas sintéticas con conclusiones de 1–2 líneas cada una.


3.3. Correlaciones y relaciones

  1. Correlación numérica: entre Edad, Reclamos (tratado como tasa media o como conteo) y Costo_Esperado.

    • Incluir matriz/tabla de correlación para variables numéricas.
  2. Relaciones categóricas:

    • Comparar medias de Reclamos y Costo_Esperado entre Tipo, Sexo y Región (no prueben hipótesis; solo describan).
  3. Hallazgos clave: redactar 3–5 bullets que conecten con la intuición actuarial (p. ej., “Premium presenta menor frecuencia pero mayor severidad”).

Producto mínimo: 1 matriz/tabla de correlación + 1 gráfico comparativo por Tipo.


3.4. Modelado GLM

  1. Frecuencia (Poisson)

    • Modelo: Reclamos ~ Edad + Tipo + Sexo + Región (enlace log).
    • Reportar: estimadores, signo esperado y efectos multiplicativos \((e^{\beta})\).
    • Comprobar sobredispersión de forma descriptiva (devianza residual vs g.l.; breve comentario).
    • Si señalan sobredispersión, mención de alternativas (p. ej., Quasi-Poisson o Binomial Negativa), sin implementarlas.
  2. Severidad (Gamma, enlace log)

    • Modelo: Costo_Esperado ~ Edad + Tipo + Sexo + Región.
    • Reportar: estimadores y interpretación porcentual \((100\cdot(e^{\beta}-1))\).
    • Comentar ajuste relativo \((devianza/AIC)\) y si las curvas por Tipo son coherentes con el descriptivo.
  3. Predicciones

    • Presentar la frecuencia esperada \((\hat\lambda)\) y la severidad esperada \((\widehat{E[S]})\) por combinaciones de interés:

      • Tramos de Edad (18–30, 31–45, 46–60, 61–80)
      • Tipo (Básico vs Premium)
      • (Opcional) Región
    • Mostrar una tabla resumen con \((\hat\lambda)\), \((\widehat{E[S]})\) y \(EL = (\hat\lambda \times \widehat{E[S]})\).

Producto mínimo: 2 tablas de coeficientes (o extractos) + 1 tabla de predicciones por segmento + 2–3 frases de interpretación.


3.5. Prima pura y lectura tarifaria

  1. Prima pura técnica (EL)

    • Calcular EL por segmento (tramo de Edad × Tipo).
    • Incluir gráfico de la prima pura por Edad (líneas o puntos) separando Tipo.
  2. Ranking de riesgo

    • Ordenar segmentos por EL (de menor a mayor).
    • Señalar brechas relativas (p. ej., “Premium 61–80 duplica a Básico 31–45”).
  3. Propuesta tarifaria (sin gastos)

    • Sugerir grilla con prima base por Tipo y factor por tramo de Edad (solo números redondeados).
    • Explicar en 3–4 líneas la lógica.

Producto mínimo: 1 tabla de EL por segmento + 1 gráfico + 1 mini-grilla tarifaria sugerida.


3.6. Recomendaciones y límites

  1. Recomendaciones (3–5 bullets):

    • Ajustes por Edad y Tipo, alertas por Región, comunicación comercial.
  2. Limitaciones (3 bullets):

    • Datos simulados, horizonte temporal, no se modelan coberturas ni exposición, etc.