GithubHelp home page GithubHelp logo

agarbuno / modelacion-bayesiana Goto Github PK

View Code? Open in Web Editor NEW
23.0 16.0 51.0 109.2 MB

Notas y contenido del curso en Modelación Bayesiana para la MCD @ ITAM

License: MIT License

R 68.98% CSS 0.44% Dockerfile 1.39% TeX 23.01% Stan 6.17%
rstats bayesian-inference rstan cmdstanr

modelacion-bayesiana's Introduction

EST-46115: Modelación Bayesiana

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

Contenido

Introducción

Este es el repositorio con el contenido del curso en Modelación Bayesiana de la maestría en ciencia de datos. También puede ser ofrecida de manera simultánea para alumnos avanzados en las licenciaturas de matemáticas aplicadas, ciencia de datos y actuaría.

Our goal is not to eliminate uncertainty, but to understand and quantify the uncertainty in order to make sound decisions. —Netflix Tech Blog

images/20220123-012255_screenshot.png

A previous acquaintance with probability and statistics is not necessary; indeed, a certain amount of innocence in this area may be desirable, because there will be less to unlearn. —Jaynes, 2003.

Probability theory is nothing but common sense reduced to calculation. —Laplace, 1819.

Contexto

Este es el curso EST-46115: Temas Selectos de Estadística. Lo conoceremos como Modelación Bayesiana y corresponde al segundo semestre de la Maestría en Ciencia de Datos.

Objetivo

En este curso se verán temas avanzados en la visualización, simulación y diagnóstico de modelos bayesianos para: inferencia, análisis de potencia y calibración de procedimientos estadísticos. Se estudiará un flujo de trabajo bayesiano que permite validar y evaluar hipótesis. Se introducirán algunos modelos modernos utilizados en distintas áreas como: modelos predictivos, selección de variables y sistemas de recomendación. El material se complementará con algunos podcasts y lecturas de artículos de divulgación e investigación a lo largo del curso.

Temario

El temario para el semestre de primavera 2022 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 esta iteración del curso se estudiarán las bases algorítmicas de la inferencia bayesiana (métodos de simulación por cadenas de Markov) así como los diagnósticos pertinentes. De igual manera estudiaremos un flujo de trabajo basado en calibración y simulación para poder identificar rutas potenciales de mejora en nuestros modelos y revisaremos principios basados en el método científico. El curso continuará con métodos de inferencia aproximada que han dado lugar a aplicaciones del estado de arte como sistemas de recomendación o análisis de texto.

Estructura del curso

El curso está planeado alrededor de tres temas centrales:

  1. Cómputo probabilístico.
  2. Flujo de trabajo Bayesiano.
  3. Modelación predictiva probabilística.

images/20230108-173942_screenshot.png

¿Existe un libro de texto?

images/20220123-011136_screenshot.png

Recursos

El contenido actual del curso se encuentra en la rama: spring-2023. La estructura del repositorio se muestra a continuación donde a grandes razgos tenemos:

.
├── docs       # Handouts con las notas de clase (pdf).
├── images     # Material visual de apoyo (png).
├── modelos    # Directorio con los modelos que usaremos en el curso (stan).
├── notas      # Material fuente de las notas (emacs).
├── renv       # Archivos de estructura de ambiente (R).
└── rscripts   # Codigo de R para interactuar con Stan (R).

6 directories

Ambiente de trabajo

El curso puede ser seguido en Python, Julia, etc (básicamente cualquier lenguaje de scripteo con interface a Stan). El curso utilizará Stan como lenguaje para definir y ajustar modelos bayesianos (tanto asintóticamente correctos, como aproximados). En particular utilizaré la interfase de R por medio de cmdstanr pero de igual manera son bienvenidos en utilizar la interfase de python o la que les acomode$^†$.

images/20230108-173842_screenshot.png

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.

Nota: Si van a utilizar R se recomienda tener instalada la versión 4.2.1 para tener la mejor compatibilidad con el código del curso.

Configuración R

Utilizaremos renv para mantener actualizada las herramientas de R junto con el contenido del curso. En la carpeta principal 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á refinando en los ejercicios de tarea que vayamos utilizando en el curso.

Configuración 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 y de fácil acceso:

RENV_PATHS_ROOT=~/.renv

Trabajando con ambiente Dockerizado

Las imágenes de agarbuno/bayesiana (puedes ver imágenes en mi hub de Docker aqui, y/o los Dockerfiles aqui) permiten tener un ambiente para trabajar con Docker en nuestro curso.

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/bayesiana 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.

La idea es que si usamos el combo Docker + Visual Code Studio, entonces ¡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: Si espero que sepan reproducir ustedes la configuración del ambiente de trabajo. Parte del curso contemplará organizar una sesión para discutir esto a profundidad. De momento, 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.

Esta imagen provee de un ambiente donde se podrán instalar las paqueterías que utilizaremos sin ningún problema$^†$. La idea, adicional, es que utilicemos volumes para poder tener permanencia en nuestro trabajo.

El contenedor se podrá levantar sin ningún problema por medio de la siguiente serie de instrucciones en terminal (también se puede establecer un script de shell).

# Ruta del cache de renv en el contenedor
RENV_PATHS_CACHE_CONTAINER=/home/rstudio/.renv
# Ruta del cache de renv en tu maquina
RENV_PATHS_CACHE_HOST=~/.renv/cache
# Ruta donde guardes los clones de las tareas
PATH_TRABAJO_HOST=<ruta hacia las carpetas de los repos de tareas>

docker run -p 8787:8787 \
    -e PASSWORD=<contraseña de tu preferencia> \
    -e "RENV_PATHS_CACHE=${RENV_PATHS_CACHE_CONTAINER}" \
    -e "RENV_PATHS_ROOT=${RENV_PATHS_CACHE_CONTAINER}" \
    -v "${RENV_PATHS_CACHE_HOST}:${RENV_PATHS_CACHE_CONTAINER}" \
    -m 6g \ 
    -v "${PATH_TRABAJO_HOST}:/home/rstudio/documentos" \
    agarbuno/bayesiana:<tag>

Configuración de Docker

La imágen de Docker para el ambiente de RStudio está basada en la imagen de rocker/verse de los desarrolladores en el Proyecto de Rocker con las siguientes herramientas agregadas para la materia de modelación bayesiana:

Para instrucciones de uso, se sugiere seguir la Documentación de Rocker

Un ejemplo de como construir y correr este contenedor sería lo siguiente. En un terminal, dentro del folder del repo, correr la siguiente línea

docker build --tag bayesiana:notas .

El contenedor lo podemos despertar con

docker run -e PASSWORD=qwerty -p 8787:8787 --rm bayesiana:notas

Para vistarlo basta con utilizar la ruta localhost:8787 en cualquier browser de internet y utilizar la contraseña especificada. Se puede agregar la bandera de -v si se quiere acceder a un folder local. Mas información de volúmenes se pueden encontrar en la documentación.

Contribuidores

AdrianTJ (ambiente en Docker).

modelacion-bayesiana's People

Contributors

agarbuno avatar dapivei avatar elyvv avatar felipegonzalez avatar maggiemusa avatar oaperez3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modelacion-bayesiana's Issues

Instalación de stan

Recomendaría hacer un ambiente de Docker para este curso, pues stan depende de muchas librarías del sistema. Quizá no necesitamos renv entonces. Puedo irlo creando

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.