modelacion-bayesiana

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

https://github.com/agarbuno/modelacion-bayesiana

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
  • Host: GitHub
  • Owner: agarbuno
  • License: mit
  • Language: R
  • Default Branch: latest
  • Homepage:
  • Size: 107 MB
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

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