🎯 Objetivo

Reconocer las estructuras de datos en R y transformarlas con propósito para responder una pregunta simple de riesgo.


📦 Librerías sugeridas

# Instala si hace falta:
# install.packages(c("dplyr","tibble","ggplot2"))

library(dplyr)
library(tibble)
library(ggplot2)

🧩 Parte 1 — Identificación de estructuras

🧠 Actividad 1: Detectives de estructuras

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

🔄 Parte 2 — Transformación de estructuras

🧮 Actividad 2: Del caos al orden

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 resultado con los elementos solicitados.


📊 Parte 3 — Aplicación integradora

🚗 Caso: Riesgo y edad

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_final con los 4 componentes listados.


💬 Cierre reflexivo (responde en texto)


✅ Entregable

Pro tip: los chunks deben correr sin errores. Si algo no aplica, coméntalo y justifica.