modelacion-bayesiana
Notas y contenido del curso en Modelación Bayesiana para la MCD @ ITAM
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (6.0%) to scientific vocabulary
Keywords
bayesian-inference
cmdstanr
rstan
rstats
Last synced: 6 months ago
·
JSON representation
·
Repository
Notas y contenido del curso en Modelación Bayesiana para la MCD @ ITAM
Basic Info
Statistics
- Stars: 24
- Watchers: 15
- Forks: 52
- Open Issues: 3
- Releases: 4
Topics
bayesian-inference
cmdstanr
rstan
rstats
Created over 5 years ago
· Last pushed almost 2 years ago
Metadata Files
Readme
License
Citation
README.org
#+TITLE: EST-46115: Modelación Bayesiana
#+AUTHOR: Prof. Alfredo Garbuno Iñigo
#+EMAIL: agarbuno@itam.mx
#+DATE: ~Primavera, 2023~
:REVEAL_PROPERTIES:
#+LANGUAGE: es
#+OPTIONS: num:nil toc:nil timestamp:nil
#+REVEAL_REVEAL_JS_VERSION: 4
#+REVEAL_THEME: night
#+REVEAL_SLIDE_NUMBER: t
#+REVEAL_HEAD_PREAMBLE:
#+REVEAL_INIT_OPTIONS: width:1600, height:900, margin:.2
#+REVEAL_EXTRA_CSS: ./notas/mods.css
#+REVEAL_PLUGINS: (notes)
:END:
#+STARTUP: showall
#+EXCLUDE_TAGS: toc github latex
[[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 :toc:
:PROPERTIES:
:TOC: :include all :ignore this :depth 2
:END:
:CONTENTS:
- [[#introducción][Introducción]]
- [[#contexto][Contexto]]
- [[#objetivo][Objetivo]]
- [[#temario][Temario]]
- [[#de-qué-trata-el-curso][¿De qué trata el curso?]]
- [[#estructura-del-curso][Estructura del curso]]
- [[#existe-un-libro-de-texto][¿Existe un libro de texto?]]
- [[#recursos][Recursos]]
- [[#ambiente-de-trabajo][Ambiente de trabajo]]
- [[#configuración-r][Configuración R]]
- [[#configuración-renv][Configuración renv]]
- [[#trabajando-con-ambiente-dockerizado][Trabajando con ambiente Dockerizado]]
- [[#configuración-de-docker][Configuración de Docker]]
- [[#contribuidores][Contribuidores]]
:END:
* 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.
#+REVEAL: split
#+begin_quote
Our goal is ~not to eliminate uncertainty~, but to understand and quantify the
uncertainty in order to make sound decisions. ---Netflix Tech Blog
#+end_quote
#+REVEAL: split
#+DOWNLOADED: screenshot @ 2022-01-23 01:22:55
#+attr_html: :width 1200 :align center
[[file:images/20220123-012255_screenshot.png]]
#+REVEAL: split
#+begin_quote
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.
#+end_quote
#+REVEAL: split
#+begin_quote
Probability theory is nothing but common sense reduced to calculation. ---Laplace, 1819.
#+end_quote
* 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
[[https://github.com/ITAM-DS/modelacion-bayesiana/blob/spring-2022/docs/temario-modelacion-bayesiana.pdf][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:
#+ATTR_REVEAL: :frag (appear)
1. Cómputo probabilístico.
2. Flujo de trabajo Bayesiano.
3. Modelación predictiva probabilística.
#+REVEAL: split
#+DOWNLOADED: screenshot @ 2023-01-08 17:39:42
#+attr_html: :width 400 :align center
[[file:images/20230108-173942_screenshot.png]]
** ¿Existe un libro de texto?
#+DOWNLOADED: screenshot @ 2022-01-23 01:11:36
#+attr_html: :width 1200 :align center
[[file:images/20220123-011136_screenshot.png]]
* Recursos
El contenido actual del curso se encuentra en la rama: [[https://github.com/agarbuno/modelacion-bayesiana/tree/spring-2023][spring-2023]]. La
estructura del repositorio se muestra a continuación donde a grandes razgos
tenemos:
#+begin_src bash :exports results :results org :eval never
tree -L 1 -d
#+end_src
#+RESULTS:
#+begin_src org
.
├── 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
#+end_src
* 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á
[[https://mc-stan.org/][Stan]] como lenguaje para definir y ajustar modelos bayesianos (tanto
asintóticamente correctos, como aproximados). En particular utilizaré la
interfase de [[https://www.r-project.org/][R]] por medio de ~cmdstanr~ pero de igual manera son bienvenidos en
utilizar la interfase de [[https://www.python.org/][python]] o la que les acomode$^\dagger$.
#+DOWNLOADED: screenshot @ 2023-01-08 17:38:42
#+attr_html: :width 700 :align center
[[file:images/20230108-173842_screenshot.png]]
#+REVEAL: split
Como herramienta de trabajo se sugiere utilizar +[[https://www.rstudio.com/products/rstudio/download/][Rstudio]]+
[[https://code.visualstudio.com/][Visual Studio Code]] para
poder trabajar en sus proyectos y sus tareas. En particular, el material de
clase es editado en [[https://www.gnu.org/software/emacs/][GNU Emacs]] a través de =orgfiles=
(archivos de texto plano con sufijo ~.org~) pero pueden ser visualizados en ~Github~.
#+REVEAL: split
*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:
#+begin_src conf :tangle ~/.Renviron :mkdirp yes
RENV_PATHS_ROOT=~/.renv
#+end_src
** Trabajando con ambiente ~Dockerizado~
Las imágenes de ~agarbuno/bayesiana~ (puedes ver imágenes en mi hub de Docker
[[https://hub.docker.com/repository/docker/agarbuno/bayesiana][aqui]], y/o los
~Dockerfiles~ [[https://github.com/agarbuno/dockerfiles][aqui]]) permiten tener un ambiente para trabajar con
~Docker~ en nuestro curso.
#+REVEAL: split
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.
#+REVEAL: split
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.
#+REVEAL: split
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~ 🥲 $\times 10^{78}$.
#+REVEAL: split
~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.
#+REVEAL: split
Esta imagen provee de un ambiente donde se podrán instalar las paqueterías que
utilizaremos sin ningún problema$^\dagger$. La idea, adicional, es que utilicemos
/volumes/ para poder tener permanencia en nuestro trabajo.
#+REVEAL: split
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/).
#+BEGIN_NOTES
El siguiente bloque de código sirve por si quieres levantar la imagen del =Docker= y trabajar en este por medio de ~ssh~.
#+END_NOTES
#+begin_src 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=
docker run -p 8787:8787 \
-e PASSWORD= \
-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:
#+end_src
** Configuración de ~Docker~ :github:
La imágen de Docker para el ambiente de RStudio está basada en la imagen de
[[https://hub.docker.com/r/rocker/tidyverse][rocker/verse]] de los desarrolladores en el [[https://www.rocker-project.org/][Proyecto de Rocker]] con las
siguientes herramientas agregadas para la materia de modelación bayesiana:
- [[https://cran.r-project.org/web/packages/posterior/index.html][posterior]]
- [[https://cran.r-project.org/web/packages/bayesplot/index.html][bayesplot]]
- [[https://github.com/mjskay/tidybayes][tidybayes]]
- [[https://mc-stan.org/users/interfaces/cmdstan][cmdstan]]
- [[https://mc-stan.org/cmdstanr/][cmdstanr]]
- [[languageserver]]
- [[httpgd]]
Para instrucciones de uso, se sugiere seguir la [[https://github.com/rocker-org/rocker/wiki/Using-the-RStudio-image][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
#+begin_src shell :exports code :results none
docker build --tag bayesiana:notas .
#+end_src
El contenedor lo podemos despertar con
#+begin_src shell
docker run -e PASSWORD=qwerty -p 8787:8787 --rm bayesiana:notas
#+end_src
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 [[https://docs.docker.com/storage/volumes/][documentación]].
* Contribuidores :github:
[[https://github.com/AdrianTJ][AdrianTJ]] (ambiente en ~Docker~).
* COMMENT Bibliografía :latex:
\nocite{*}
bibliographystyle:abbrvnat
bibliography:references.bib
* COMMENT Plan de trabajo [7/18][38%] :noexport:
:PROPERTIES:
:UNNUMBERED: notoc
:END:
** DONE Repaso
CLOSED: [2023-03-03 Fri 20:14]
** DONE Integración numerica
CLOSED: [2023-03-03 Fri 20:14]
** DONE MCMC (Parte 1)
CLOSED: [2023-03-03 Fri 20:14]
** DONE MCMC (Parte 2)
CLOSED: [2023-03-03 Fri 20:14]
** DONE HMC
CLOSED: [2023-03-03 Fri ]
** TODO Primer Examen Parcial
** TODO Introducción a Stan
** TODO Diagnosticos
** TODO Posterior Predictive Sampling
** TODO Posterior and prior predictive checks
** TODO Simulation Based calibration
** TODO Evaluation and cross validation
** TODO Decision Analysis
Optimización bayesiana
** TODO Multi-Armed Bandits
Tomar el caso en [[https://www.smartly.io/blog/tutorial-how-we-productized-bayesian-revenue-estimation-with-stan][Smartly.io]] o también [[https://www.linkedin.com/pulse/tutorial-how-we-productized-bayesian-revenue-estimation-markus-ojala/][aqui]]. Comentarios por [[https://statmodeling.stat.columbia.edu/2018/01/21/smartly-io-productized-bayesian-revenue-estimation-stan/][Andrew Gelman]].
** TODO Variational inference
** TODO Poststratification
** CANCEL Clustering
CLOSED: [2023-01-08 Sun 17:43]
** CANCEL Item response theory
CLOSED: [2023-01-08 Sun 17:43]
* COMMENT Posibles temas :noexport:
:PROPERTIES:
:UNNUMBERED: notoc
:END:
** TODO SIR modeling
Tomar el caso en [Grenable, Stan tutorial].
Referencia muy general [[https://michaeldewittjr.com/dewitt_blog/posts/2020-08-28-bayesian-sir/][Michael DeWitt: Bayesian SIR]]. El caso mas completo aqui: [[https://mc-stan.org/users/documentation/case-studies/boarding_school_case_study.html][Bayesian workflow for disease transmission modeling in Stan]]. Referencia de Grenable: [[https://www.generable.com/post/fitting-a-basic-sir-model-in-stan][Fitting a Basic SIR Model in Stan]].
citep:Kusmierczyk2019a
Owner
- Name: Alfredo Garbuno Iñigo
- Login: agarbuno
- Kind: user
- Location: Mexico City
- Company: ITAM
- Website: agarbuno.github.io
- Twitter: AlfredoGarbuno
- Repositories: 71
- Profile: https://github.com/agarbuno
Bayesian inference, non-parametric Bayesian models, MCMC algorithms, Kernel Methods, Data assimilation, Langevin dynamics
Citation (CITATION.cff)
cff-version: 1.2.0
title: 'Notas del curso: Modelación Bayesiana'
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Alfredo
family-names: Garbuno-Inigo
identifiers:
- type: doi
value: 10.5281/zenodo.8266097
version: v1.0.0
preferred-citation:
type: report
title: "Notas del curso: Modelación Bayesiana"
authors:
- given-names: Alfredo
family-names: Garbuno-Inigo
year: 2023
institution: ITAM
doi: 10.5281/zenodo.8266097
GitHub Events
Total
- Watch event: 1
- Fork event: 1
Last Year
- Watch event: 1
- Fork event: 1
Dependencies
.github/workflows/docker.yml
actions
- actions/checkout v3 composite
- docker/build-push-action v3 composite
- docker/login-action v2 composite
- docker/setup-buildx-action v2 composite
.devcontainer/Dockerfile
docker
- agarbuno/bayesiana notas build
Dockerfile
docker
- rocker/verse 4.2.2 build