Skip to content

agarbuno/simulacion

Repository files navigation

EST-24107: Simulación

https://github.com/agarbuno/simulacion/actions/workflows/docker.yml/badge.svg https://img.shields.io/docker/pulls/agarbuno/simulacion.svg?logo=docker https://img.shields.io/docker/image-size/agarbuno/simulacion/notas.svg?logo=docker https://img.shields.io/github/languages/top/agarbuno/simulacion.svg?logo=r https://img.shields.io/github/languages/code-size/agarbuno/simulacion.svg?logo=r https://zenodo.org/badge/493864430.svg

Contenido

Introducción

Este es el repositorio con el contenido del curso en simulación de la licenciatura en Actuaría del ITAM impartido por el Prof. Alfredo Garbuno.

Contexto

Este el curso de EST-24107: Simulación. Lo conoceremos como simulación estocástica o cuantificación de incertidumbre.

El curso se imparte en el plan de estudios de Actuaría (sexto semestre). Esta materia también es ofrecida de manera simultánea para alumnos en las licenciaturas de matemáticas aplicadas, ciencia de datos y economía como materia optativa.

Objetivo

El objetivo del curso es introducir al estudiante a distintos métodos de simulación de variables aleatorias. Esto con la intención de aprender y conocer herramientas útiles y bien fundamentadas que pueden utilizarse en distintas aplicaciones en matemáticas aplicadas, actuaría, estadística o ciencia de datos.

El curso, además, utilizará distintas herramientas computacionales para brindar al estudiante un marco de trabajo reproducible. Al final del curso, lxs estudiantes tendrán las competencias para:

  1. implementar principios de modelado estadístico de ciertos fenómenos relevantes en el quehacer de un científico aplicado;
  2. ser capaces de interpretar resultados computacionales basados en simulación estocástica;
  3. apreciar la necesidad de un ambiente reproducible de entrega de resultados; por nombrar algunas.

El curso en particular utilizará herramientas de código abierto: R como lenguaje de programación y GitHub como gestor de entrega y avance de tareas y trabajos.

El curso está pensando para cursarse después de haber acreditado Cálculo de Probabilidades II (o equivalente). Sin embargo, se aprovechará mejor si se lleva a la par junto con Procesos Estocásticos I y Estadística Matemática (o equivalentes).

Temario

El temario para el semestre de Otoño 2023 se puede encontrar aqui. Este es un plan preliminar que está sujeto al avance del curso a lo largo del semestre.

¿De qué trata el curso?

En el curso estudiaremos métodos de simulación estocástica con el fin de explorar realizaciones aleatorias de modelos de probabilidad. Esto nos permitirá:

  1. Explorar de manera computacional distribuciones de probabilidad generales.
  2. Resolver problemas numéricos de integración.
  3. Resolver problemas numéricos de optimización.

El enfoque del curso es poder utilizar lo que sabemos de modelado probabilístico y utilizarlo en tareas donde es necesario cuantificar la incertidumbre expresada en dicho modelo. Además de cref:fig-uq

images/20220624-174420_screenshot.png

./images/oscar-wilde.png

./images/vader.jpg

¿Tenemos un libro de texto?

No hay un libro que utilice la misma línea argumentativa que seguiremos en el curso, pero secciones se tomarán de [cite:@Glasserman2013;@Robert2013a;@Efron1993].

images/20220624-183051_screenshot.png

Recursos

El repositorio tiene la siguiente estructura:

.
├── docs     # Handouts de las notas de clase. 
├── images   
├── notas    # Código fuente que utilizo para generar las notas. 
├── renv     # Archivos de estructura del proyecto. 
└── rscripts # Scripts de R con el código de clase. 

5 directories

Ambiente de trabajo

Las notas y el material estará construido a partir de R. En particular, utilizaremos algunas herramientas del tidyverse como herramienta de programación dentro de R. Esto ofrece un ambiente unificado de distintas librerías enfocadas al manejo de estructura de datos y visualizaciones, lo cual será muy útil para las aplicaciones de nuestro curso.

En particular utilizaremos:

  1. tibble para estructura de datos.
  2. dplyr para manipular las estructuras de datos.
  3. tidyr para manipular estructuras tabulares de datos.
  4. purrr para tener una ambiente funcional de programación.
  5. ggplot2 para crear visualizaciones con una gramática.
  6. rsample para utilizar técnicas de remuestreo.

Ambiente de desarrollo gráfico integrado (IDE)

Como herramienta de trabajo se sugiere utilizar Rstudio Visual Studio Code para poder trabajar en sus proyectos y sus tareas. En particular, el material de clase es editado en GNU Emacs a través de orgfiles (archivos de texto plano con sufijo .org) pero pueden ser visualizados en Github.

Versión de R

Importante: Es necesario tener instalada la versión 4.3.1 de R para tener la mejor compatibilidad con el código del curso.

Todos trabajando igual

Utilizaremos renv para mantener actualizada las herramientas de R junto con el contenido del curso. En la carpeta se encuentran los archivos de requerimientos (renv.lock) con el que podrán usar los archivos que se vayan decantando en la carpeta rscripts. Aún asi, la configuración se irá construyendo en los ejercicios de tarea que vayamos utilizando en el curso.

Gestión de librerías: renv

Si utilizas MacOS o alguna distribución Linux se recomienda escribir en el archivo ~/.Renviron la siguiente línea lo cual mantendrá el cache de renv en un lugar centralizado

RENV_PATHS_ROOT=~/.renv

Trabajando con ambiente Dockerizado

Mi idea de ambiente computacional es el que se puede reproducir en cualquier sistema operativo. Para esto Docker es la herramienta ideal y el uso de los Codespaces de GitHub ha resultado increíble para una solución dentro de un ámbito educativo.

Para la imagen agarbuno/simulacion consideren que:

  1. El tag notas basado en una distribución linux en una emulación con un procesador Intel, tiene la configuración mínima necesaria para poder reproducir el ambiente de cómputo para poder ejecutar el material del curso

Esto no les puede decir mucho, pero básicamente con el combo Docker + Visual Code Studio, ¡tod@s tenemos la misma computadora para trabajar! 🥲. Y si lo quieren correr en la nube entonces: Docker + Visual Code Studio + Github Codespaces 🥲 $× 1078$.

Importante: No espero que sepan reproducir ustedes la configuración del ambiente de trabajo. Si les interesa podemos organizar una sesión para discutir esto a profundidad. Lo importante es que lo sepan utilizar en su computadora o en un explorador de internet. Esto es, que pueden utilizarlo para las prácticas del curso.