Sesión 1 · Bienvenida y práctica inicial
Conocer la ruta de la asignatura y realizar una primera experiencia,
corta y tranquila, en RStudio. Al finalizar, cada estudiante habrá
ejecutado código en un R Script y en un documento R Markdown, y habrá
construido un histograma y un diagrama de cajas con R base y con
ggplot2.
Al terminar, el estudiante podrá:
.R y un archivo
.Rmd;| Elemento | Información |
|---|---|
| Programa | Especialización en Actuaría |
| Asignatura | Electiva I: Análisis de datos en R |
| Código | 60912004 |
| Créditos | 2 |
| Modalidad | Presencial |
| Naturaleza | Teórico-práctica |
| Herramienta principal | R y RStudio |
El propósito general es utilizar R para visualizar, interpretar y analizar datos, con énfasis en decisiones actuariales. Durante el curso no bastará con obtener un número: será necesario explicar qué representa, de dónde proviene, qué supuestos utiliza y qué decisión puede respaldar.
La asignatura combina cuatro capacidades:
| Unidad | Contenidos principales |
|---|---|
| I. Introducción y metodologías | Introducción al curso; transformación de datos; etapas descriptiva, predictiva, prescriptiva y prospectiva; diagnóstico; CRISP-DM y KDD |
| II. Otras metodologías | SEMMA, KANBAN, TDSP, método propio y trabajo ad hoc |
| III. Ciclo del análisis | Tipos y estructuras; entendimiento del negocio y de los datos; preparación; modelamiento; evaluación, implementación y monitoreo |
| IV. Herramientas y calidad | Herramientas computacionales; limpieza; transformación; validación; localización de errores; imputación y ajustes |
| Sesión | Tema |
|---|---|
| 1 | Presentación del curso y primeros pasos en RStudio |
| 2 | Del problema actuarial al análisis reproducible en R |
| 3 | Objetos, vectores, clases y factores |
| 4 | Matrices, listas, data.frame y tibble |
| 5 | Importación, fechas y uniones |
| 6 | Transformación con dplyr, tidyr y
janitor |
| 7 | Analítica descriptiva, predictiva, prescriptiva y prospectiva |
| 8 | Diagnóstico y calidad de datos |
| 9 | Validación, valores atípicos e imputación |
| 10 | CRISP-DM y KDD |
| 11 | SEMMA y TDSP |
| 12 | KANBAN, método propio y trabajo ad hoc |
| 13 | Exploración y visualización actuarial |
| 14 | GLM de frecuencia y severidad |
| 15 | Evaluación, implementación y monitoreo |
| 16 | De los modelos a la prima |
Según el contenido programático de la asignatura:
| Momento | Porcentaje | Unidad |
|---|---|---|
| Primer corte | 20% | Unidad I |
| Segundo corte | 20% | Unidad II |
| Investigación y exposición | 30% | Unidad III |
| Examen final | 30% | Unidad IV |
La heteroevaluación corresponde al 95% y la autoevaluación al 5% en cada momento. Las fechas, productos y criterios detallados serán confirmados por el docente.
| Minutos | Actividad | Producto |
|---|---|---|
| 0–10 | Reconocer R, RStudio y sus paneles | Interfaz identificada |
| 10–20 | Abrir y ejecutar un R Script | Primer código con iris |
| 20–32 | Explorar datos y crear gráficos con R base | Histograma y boxplot |
| 32–42 | Abrir y ejecutar un R Markdown | Código, texto y resultados juntos |
| 42–52 | Instalar y cargar ggplot2 |
Paquete disponible |
| 52–58 | Repetir los gráficos con ggplot2 |
Dos gráficos nuevos |
| 58–60 | Guardar y verificar | Archivos listos |
R es el lenguaje y el motor que realiza los cálculos.
RStudio es el entorno que ayuda a escribir código, ejecutarlo, consultar objetos, ver gráficos, organizar archivos y producir documentos.
Una comparación sencilla: R es el motor; RStudio es el tablero y el espacio de trabajo. Tener un tablero muy bonito sin motor no nos lleva muy lejos.
RStudio suele mostrar cuatro áreas:
| Área | Uso |
|---|---|
| Source | Escribir y guardar scripts o documentos |
| Console | Ejecutar instrucciones y mostrar resultados inmediatos |
| Environment/History | Consultar objetos creados y comandos recientes |
| Files/Plots/Packages/Help/Viewer | Administrar archivos, gráficos, paquetes, ayuda y documentos |
Escriba el código en un archivo y ejecútelo desde allí. La consola es útil para pruebas breves, pero lo que solo queda en la consola se pierde con facilidad.
| Característica | R Script (.R) |
R Markdown (.Rmd) |
|---|---|---|
| Contenido principal | Código y comentarios | Texto, código, resultados y gráficos |
| Uso habitual | Procesar, limpiar, modelar y automatizar | Explicar y comunicar un análisis |
| Ejecución | Línea, selección o archivo | Bloques de código o documento completo |
| Salida | Objetos y resultados en RStudio | Informe HTML, Word o PDF |
| En esta sesión | actividad_iris_script.R |
Este documento |
Idea clave. No son competidores. Un proyecto puede usar scripts para preparar datos y R Markdown para presentar el análisis.
iris en un R ScriptAbra el archivo actividad_iris_script.R incluido con
esta sesión.
Para ejecutar una línea:
iris viene incluido con R. No es una base actuarial: la
usamos porque permite concentrarnos en RStudio sin descargar archivos ni
resolver problemas de acceso.
data(iris)
head(iris)
dim(iris)
## [1] 150 5
names(iris)
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
table(iris$Species)
##
## setosa versicolor virginica
## 50 50 50
iris tiene 150 filas y 5 variables;Species identifica la especie;Antes de calcular. Pregunte siempre qué representa una fila, qué representa una columna y en qué unidades está medida.
El histograma permite observar la distribución de una variable numérica.
hist(
iris$Sepal.Length,
main = "Longitud del sépalo",
xlab = "Longitud del sépalo (cm)",
ylab = "Frecuencia",
col = "skyblue",
border = "white"
)
Interpretación. Las longitudes se concentran principalmente entre 5 y 7 cm. El histograma muestra forma, concentración y posibles valores extremos, pero no permite comparar claramente las tres especies.
El boxplot permite comparar la distribución entre grupos.
boxplot(
Sepal.Length ~ Species,
data = iris,
main = "Longitud del sépalo por especie",
xlab = "Especie",
ylab = "Longitud del sépalo (cm)",
col = c("#7FC8A9", "#F6BD60", "#84A9C0")
)
Interpretación. La especie setosa presenta, en general, sépalos más cortos. Virginica tiene una mediana mayor y valores más dispersos. El gráfico describe los datos observados; por sí solo no prueba una relación causal.
Este archivo es un documento R Markdown. Un bloque ejecutable comienza con una cabecera de R y termina al cerrar las tres comillas invertidas.
Para ejecutar un bloque:
El texto explica; el código calcula; la salida muestra la evidencia. Esa combinación será fundamental durante el curso.
ggplot2Los paquetes amplían las capacidades de R.
Ejecute la siguiente instrucción en la consola:
install.packages("ggplot2")
library(ggplot2)
No coloque install.packages() en todos los
ejercicios. Instalar descarga el paquete.
library() lo deja disponible para trabajar.
ggplot2La estructura mínima es:
ggplot(datos, aes(variable_x, variable_y)) +
geometria()
No todas las gráficas necesitan x y y. Un
histograma utiliza una variable; un boxplot comparativo utiliza una
variable de agrupación y una numérica.
ggplot2ggplot(iris, aes(x = Sepal.Length)) +
geom_histogram(
binwidth = 0.30,
fill = "#235789",
color = "white"
) +
labs(
title = "Longitud del sépalo",
x = "Longitud del sépalo (cm)",
y = "Frecuencia"
) +
theme_minimal()
ggplot2ggplot(
iris,
aes(x = Species, y = Sepal.Length, fill = Species)
) +
geom_boxplot(alpha = 0.85) +
scale_fill_manual(
values = c("#7FC8A9", "#F6BD60", "#84A9C0")
) +
labs(
title = "Longitud del sépalo por especie",
x = "Especie",
y = "Longitud del sépalo (cm)"
) +
theme_minimal() +
theme(legend.position = "none")
Cambie Sepal.Length por Petal.Length y
vuelva a ejecutar los gráficos. El código completo está preparado:
# Histograma de longitud del pétalo
ggplot(iris, aes(x = Petal.Length)) +
geom_histogram(
binwidth = 0.25,
fill = "#0F8B8D",
color = "white"
) +
labs(
title = "Longitud del pétalo",
x = "Longitud del pétalo (cm)",
y = "Frecuencia"
) +
theme_minimal()
# Boxplot de longitud del pétalo por especie
ggplot(
iris,
aes(x = Species, y = Petal.Length, fill = Species)
) +
geom_boxplot() +
labs(
title = "Longitud del pétalo por especie",
x = "Especie",
y = "Longitud del pétalo (cm)"
) +
theme_minimal() +
theme(legend.position = "none")
Antes de terminar, verifique:
| Mensaje o situación | Qué revisar |
|---|---|
could not find function "ggplot" |
Ejecute library(ggplot2) |
there is no package called 'ggplot2' |
Instale el paquete una vez |
object 'Sepal.Length' not found |
Revise el nombre y el uso de data = iris |
| El código aparece, pero no se ejecuta | Use Run, Ctrl + Enter o el botón del bloque |
| Knit se detiene | Lea el primer error y ejecute los bloques en orden |
Complete oralmente:
Hoy no construimos un modelo actuarial, y está bien. Aprendimos a movernos en el entorno donde construiremos los análisis del curso. En la siguiente sesión pasaremos de una pregunta actuarial a datos, métricas técnicas y un análisis reproducible.