Reconocer las estructuras de datos en R y transformarlas con propósito para responder una pregunta simple de riesgo.
# Instala si hace falta:
# install.packages(c("dplyr","tibble","ggplot2"))
library(dplyr)
library(tibble)
library(ggplot2)
A continuación se crean objetos de distinto
tipo.
Tu tarea: 1) Identifica la estructura
de cada uno.
2) Propón un uso actuarial posible.
3) Anota operaciones útiles (p.ej., subset, summary,
bind, etc.).
# (No modifiques esta sección; úsala para observar/argumentar)
edades <- c(25, 31, 47)                           # vector
transicion <- matrix(c(0.98, 0.02, 0.10, 0.90),
                     nrow = 2, byrow = TRUE)      # matriz
colnames(transicion) <- c("Vida","Siniestro")
rownames(transicion) <- c("Vida","Siniestro")
polizas <- data.frame(ID = 1:3,
                      Edad = edades,
                      Riesgo = c("Bajo","Medio","Alto"))  # data.frame
resumen <- list(MediaEdad = mean(edades),
                Conteo = nrow(polizas))                  # lista
# Observa (usa str(), class(), typeof(), length(), etc.) — escribe tus hallazgos fuera del chunk.
Tabla a completar (en tu documento):
| Objeto | Estructura | Posible uso actuarial | Operaciones útiles | 
|---|---|---|---|
edades | 
|||
transicion | 
|||
polizas | 
|||
resumen | 
Se te entrega información en estructuras distintas. Debes organizarla para que sea utilizable.
Reto (pasos obligatorios): 1) Convertir una
matriz en data.frame con nombres de
columnas.
2) Agregar una columna con el número total de siniestros por
cliente (a partir de una lista).
3) Convertir el resultado a tibble.
4) Ordenar por número de siniestros
(descendente).
5) Crear un objeto lista llamado resultado
que contenga al menos:
- resultado$base (la tabla final)
- resultado$metadatos (lo que consideres útil: n filas, n
cols, etc.)
# Datos iniciales (puedes inspeccionar pero no están “listos”):
mat <- matrix(c(1, 2, 3,    # IDs
                0.2, 0.5, 0.8),  # algún puntaje/indicador de riesgo (no calcular primas)
              ncol = 2)
colnames(mat) <- c("ID","Indicador")
# Lista de siniestros por cliente (cada elemento = vector con 0/1)
siniestros <- list(
  c(0, 1, 0),
  c(1, 0, 0),
  c(0, 0, 0)
)
# 🧩 Escribe aquí tu pipeline para cumplir los 5 pasos.
# (No dejes objetos con el nombre de la solución final; crea los tuyos)
# TODO: convertir, agregar columna con sumas, pasar a tibble, ordenar, crear lista 'resultado'
Entrega mínima de esta parte: un objeto
resultadocon los elementos solicitados.
Una aseguradora desea explorar si la frecuencia de siniestros (conteo) varía con la edad.
Reto (pasos obligatorios): 1) Partiendo de tu tabla
final de la Parte 2, agrega una columna Edad con
valores simulados entre 20 y 60 (setea semilla para
reproducibilidad).
2) Crea los grupos etarios: ≤30,
31–45, >45.
3) Calcula el promedio de siniestros por grupo.
4) Construye un gráfico de barras con el promedio por
grupo (títulos y ejes claros).
5) Crea un objeto lista llamado
analisis_final que contenga:
- analisis_final$datos (tu tabla con edades y
grupos),
- analisis_final$resumen (promedios por grupo),
- analisis_final$grafico (el objeto ggplot),
- analisis_final$interpretacion (texto corto con 2–4
líneas).
# Sugerencia: usa set.seed() y sample() para Edad.
# Crea variable Grupo con case_when().
# Resume con group_by() + summarise().
# Grafica con ggplot2::geom_col().
# TODO: escribe aquí tu solución SIN copiar/pegar soluciones vistas en clase.
Entrega mínima de esta parte: objeto
analisis_finalcon los 4 componentes listados.
Pro tip: los chunks deben correr sin errores. Si algo no aplica, coméntalo y justifica.