Skip to content

Instantly share code, notes, and snippets.

@tbrown122387
Created April 22, 2025 19:28
Show Gist options
  • Select an option

  • Save tbrown122387/62e04811623c4de2e56a844bb95dbaf9 to your computer and use it in GitHub Desktop.

Select an option

Save tbrown122387/62e04811623c4de2e56a844bb95dbaf9 to your computer and use it in GitHub Desktop.
Module 5
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "cc4eac79-ebd8-4015-bcc9-cd5d0162aed2",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Module 5\n",
"\n",
"## DS-6040\n",
"### Bayesian Machine learning\n"
]
},
{
"cell_type": "markdown",
"id": "19fcc570",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Today's plan\n",
"\n",
"Markov chain Monte Carlo algorithms and `stan`!\n"
]
},
{
"cell_type": "markdown",
"id": "42a9c519-a4ea-4747-a848-0c4fc88bc2a3",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Motivation\n",
"\n",
"In all of our examples we have some unknown parameters, and we're aiming to quantify our belief about them by obtaining the posterior \n",
"\n",
"$$\n",
"\\pi(\\theta \\mid y) \\propto L(y \\mid \\theta) \\pi(\\theta)\n",
"$$\n",
"\n",
"Multiplying the prior and the likelihood is always trivial, but the difficult part was obtaining the normalizing constant \n",
"\n",
"$$\n",
"\\int L(y \\mid \\theta) \\pi(\\theta) \\text{d}\\theta\n",
"$$\n",
"\n",
"Many general purpose algorithms in Bayesian ML will allow us to fit models **without doing any integration!**"
]
},
{
"cell_type": "markdown",
"id": "6dd964fe-81a9-4c1e-8399-251afaa26838",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Big Picture\n",
"\n",
"It turns out that there are many ways to *sample* from a posterior without knowing exactly what the normalizing constant is.\n",
"\n",
"**Monte Carlo** (MC) algorithms simulate a large number of samples $\\theta_1, \\theta_2, \\ldots, \\theta_{M}$ from the posterior. \n",
"\n",
"These samples can be used for plotting (e.g. make a histogram of the samples), approximating centers of the posterior, obtaining intervals of the posterior, pretty much anything we want.\n",
"\n",
"**Markov chain Monte Carlo** (MCMC) are a subclass where the simulations are *correlated.*\n"
]
},
{
"cell_type": "markdown",
"id": "b08b5132-d5c1-4be3-b2ed-0aeea4adb2a4",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Big Picture\n",
"\n",
"The math justifying MCMC models is complex and completely separate from the math used in your modeling choices. \n",
"\n",
"Generally speaking, though, the more samples you collect, the better your posterior approximation becomes. \n",
"\n",
"The ideal MCMC algorithm is\n",
" - easy to tune,\n",
" - work for a lot of models\n",
" - work with models for many parameters, and\n",
" - work on massive data sets.\n",
"\n",
"We will use the No-U-Turn sampler (NUTS), which does a good job with all of these points."
]
},
{
"cell_type": "markdown",
"id": "61ffe02f-3c04-4b7e-a4fc-5fb21377c5c1",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Getting Started with Stan\n",
"\n",
"\n",
"In this section, we will not do too much math. Rather, we'll take a more applied approach. \n",
"\n",
"We'll be using the software library `stan`, which implements a variety of MCMC algorithms that we'll use to simulate from the posterior.\n",
"\n",
"`stan` is written in c++ so it's very fast. We'll use the Python interface called `cmdstanpy`\n"
]
},
{
"cell_type": "markdown",
"id": "c212e961-c02e-4bf2-bdde-c864aa18a101",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Getting Started with Stan\n",
"\n",
"Instructions for installing `cmdstanpy` can be found [here](https://mc-stan.org/cmdstanpy/installation.html).\n",
"\n",
"Alternatively, you can use the provided Docker image for this course, available [here](https://github.com/tbrown122387/ds-6040-docker).\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "aef33471-dea1-4076-822b-eb2757d1880d",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Getting Started with Stan\n",
"\n",
"\n",
"`stan` generates c++ code that describes your model, as well as everything it takes to simulate from its posterior. \n",
"\n",
"We need to be able to tell it what our model is, and we do that by writing a `.stan` file. You write a `.stan` file using the stan language.\n",
"\n",
"Each `.stan` file has a few *blocks*. \n",
" \n",
" 1. The *data* block describes your data $y$\n",
" 2. The *parameters* block describes your parameters $\\theta$\n",
" 3. The *model* block describes your model (i.e. $L(y \\mid \\theta)$ and $\\pi(\\theta)$)\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "aeb75040-e9fd-4700-9a44-6a629c894cbe",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Getting Started with Stan\n",
"\n",
"Once your `.stan` file is written, you can start writing your Python code. There are three steps:\n",
"\n",
" 1. Use `CmdStanModel()` to build a model object from your `.stan` file.\n",
" 2. Use your model object and data to simulate from $\\pi(\\theta \\mid y)$.\n",
" 3. Analyze the obtained samples.\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "af0dc02d-0f7b-484f-9f76-a7e2dd386919",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Getting Started with Stan\n",
"\n",
"\n",
"Before we use this to sample from much more complicated models, let's use it on our previous models. \n",
"\n",
"We already sampled from these posteriors using the Monte Carlo method. \n",
"\n",
"Doing it with MCMC now is overkill, but it's a good test, and it's good practice to learn how to write simple `.stan` files."
]
},
{
"cell_type": "markdown",
"id": "3d06f8ab-ae38-45a2-8dde-4505c21cf145",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 1\n",
"\n",
"From module 2 for one data point $y$: if\n",
"\n",
"$$\\pi(\\theta) = \\text{Beta}(a,b),$$ \n",
" \n",
"and\n",
"\n",
"$$L(y \\mid \\theta) = \\text{Binomial}(n,\\theta)$$\n",
"\n",
"then\n",
"\n",
"$$\\pi(\\theta \\mid y) = \\text{Beta}(a + y, n+b - y)$$ \n"
]
},
{
"cell_type": "markdown",
"id": "2b844d18-3e79-43c7-ae46-a7fc5250cae0",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 1\n",
"\n",
"`beta_binomial.stan`:\n",
"\n",
"```\n",
"data {\n",
" int<lower=0> y; \n",
" int<lower=0> n_trials; \n",
"}\n",
"parameters {\n",
" real<lower=0, upper=1> theta; \n",
"}\n",
"model {\n",
" // Prior\n",
" theta ~ beta(2, 2);\n",
" // Likelihood\n",
" y ~ binomial(n_trials, theta);\n",
"}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f3e85592-4c46-4b4a-9fdf-f9195dbb6c5a",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# build the model (slow!)\n",
"import os\n",
"from cmdstanpy import CmdStanModel\n",
"model_code = os.path.join('.', 'beta_binomial.stan')\n",
"model = CmdStanModel(stan_file=model_code)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "bc2928e0-33d7-4ee2-9a7d-7229719d0756",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:40 - cmdstanpy - INFO - CmdStan start processing\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "95ff443a39ae4a25876ac6cb7a517984",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 1 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b565b03abd7343ffbc3bc0567e5c1a1b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 2 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5a8b25ebca0b4938be2b0bf4426b2eb6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 3 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a6082369fbc54fb9a822bfec4c1e0e39",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 4 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:40 - cmdstanpy - INFO - CmdStan done processing.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"# sample from the model (fast!)\n",
"binom_data = {'n_trials' : 10, 'y': 5}\n",
"fit = model.sample(binom_data)"
]
},
{
"cell_type": "markdown",
"id": "ba666e94-6540-4b64-8399-7661f8fd9268",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## MCMC diagnostics\n",
"\n",
"MCMC algorithms need to \"converge\" to the posterior. Otherwise they're not good at representing that posterior. \n",
"\n",
"**Therefore, always check MCMC diagnostics before using your results!**\n",
"\n",
"The first thing to check is that $\\hat{R}$ is close to $1$. If so, then there is no advantage to running your chain for longer, and all of the other outputs are valid. \n",
"\n",
"A complementary check: do the trace plots look like \"fuzzy caterpillars?\" \n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "14ba16a5-22ed-4332-898f-0f4571d21b37",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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yldSUgIAaNKkCYDArEPfMroJhHqsrq7Gl19+iYsXLyIjIyPg6s+3fG4Coe4mTZqE2267DUOHDvX63gl1qCkcvNMpKipCdXU14uPjvb6Pj49HQUGBRVIpp1+/fvjkk0/QqVMnnD59Gi+99BIGDBiAPXv2eOQXKtvx48cBAAUFBYiIiEDjxo39rrFb+VmVp6CgAM2bN/dLv3nz5paXediwYfjTn/6EpKQkHD16FH//+99x4403Ijs7G5GRkY4qH8dxmDp1Kq699lqkpqZ6ZHPLy8epdShURsD59bhr1y5kZGSgvLwcDRs2xLfffouuXbt6Jhmn159Y+QDn1x0AfPnll9i+fTu2bt3q95sT+mBQKiNuXC6X198cx/l9Z0eGDRvm+Xf37t2RkZGB9u3b49///rfH6UpL2excfhblEbreDmUeOXKk59+pqalIT09HUlISli5dirvuukv0PjuW79FHH8Vvv/2GdevW+f0WKHUoVkan12Pnzp2xY8cOnD9/HkuWLMHYsWOxevVqUbmcVn9i5evatavj6y4vLw+PP/44fv75Z0RFRYleZ+c6DMplmri4OISGhvppcoWFhX6aoxNo0KABunfvjoMHD3p21UiVrUWLFqisrMS5c+dEr7ELrMrTokULnD592i/9M2fO2K7MCQkJSEpKwsGDBwE4p3yTJ0/G999/j5UrV6J169ae7wOpDsXKKITT6jEiIgIdOnRAeno6Zs2ahZ49e+LNN98MmPoTK58QTqu77OxsFBYWIi0tDWFhYQgLC8Pq1avx1ltvISwszJO/neswKJWRiIgIpKWlISsry+v7rKwsDBgwwCKptFNRUYF9+/YhISEBycnJaNGihVfZKisrsXr1ak/Z0tLSEB4e7nVNfn4+du/ebbvysypPRkYGSkpKsGXLFs81mzdvRklJie3KXFxcjLy8PCQkJACwf/k4jsOjjz6Kb775BitWrEBycrLX74FQh3JlFMJp9egLx3GoqKgIiPoTwl0+IZxWd0OGDMGuXbuwY8cOzyc9PR33338/duzYgXbt2tm/DnW5vzoY99bejz76iNu7dy83ZcoUrkGDBtyxY8esFk2WJ598klu1ahV35MgRbtOmTdzw4cO56Ohoj+yvvPIKFxsby33zzTfcrl27uPvuu09wC1fr1q25X375hdu+fTt34403Wra1t6ysjMvJyeFycnI4ANzs2bO5nJwczzZrVuW55ZZbuB49enAbN27kNm7cyHXv3t2UbXdS5SsrK+OefPJJbsOGDdzRo0e5lStXchkZGVyrVq0cU76//vWvXGxsLLdq1SqvrZGXLl3yXOP0OpQro9Prcdq0adyaNWu4o0ePcr/99hv37LPPciEhIdzPP//McZzz60+qfE6vOzH4u2k4zv51GLTKCMdx3LvvvsslJSVxERERXJ8+fby26dkZ9/7w8PBwrmXLltxdd93F7dmzx/N7TU0N98ILL3AtWrTgIiMjueuuu47btWuXVxqXL1/mHn30Ua5JkyZcvXr1uOHDh3O5ublmF4XjOI5buXIlB8DvM3bsWI7j2JWnuLiYu//++7no6GguOjqau//++7lz585ZWr5Lly5xmZmZXLNmzbjw8HCuTZs23NixY/1kt3P5hMoGgPv444891zi9DuXK6PR6fOihhzxjYbNmzbghQ4Z4FBGOc379SZXP6XUnhq8yYvc6dHEcx+mzrRAEQRAEQWgnKH1GCIIgCIKwD6SMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKaSMEARBEARhKf8fbi9//COULOgAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# trace plot for draws of theta \n",
"# fuzzy caterpillars?\n",
"fit.draws_pd()['theta'].plot()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "02f43d85-b63e-447e-9970-2b26bcc08e02",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"R_hat 1.00039\n",
"Name: theta, dtype: float64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Rhat is close to 1. yay! \n",
"details = fit.summary()\n",
"details.loc['theta',['R_hat']]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "56b65ba7-fb4c-4a9e-a75e-c8f47670dfe4",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Mean 0.498865\n",
"5% 0.292833\n",
"95% 0.712381\n",
"Name: theta, dtype: float64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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1mnKlClyOBy69NJL9cwzz4zQakMrmOx33HHHaR/3adOmjeCKQyPYx/zZZ5/V1Vdfrfj4eKWmpuoHP/jBsHxnjhFC8uU6w2zXrl2W3W63fv3rX1tvv/22dd9991kJCQnW0aNHTzv/yJEj1r333mtt377duuaaa6z77rtvZBccIsHmvu+++6zHHnvMevPNN63Dhw9ba9eutex2u/XWW2+N8MqHLtjsb731llVRUWE1NjZaR44csXbs2GHFx8dbv/rVr0Z45UMXbPZ+J06csC655BLL7XZbV1999cgsNsSCzf773//ekmS9++67VnNzs//yxRdfjPDKh24wj/uiRYusWbNmWdXV1daRI0es//7v/x7wHWfhINjsJ06cCHi8jx07Zk2cONF68MEHR3bhQxRs7n379llRUVHWL37xC+v999+39u3bZ02bNs266aabRnjlIyMsCsq1115r3XXXXQFjl19+ubVmzZqv3DcnJydsC8pQcve78sorrfXr14d6acMuFNn/8R//0brttttCvbRhN9jsN998s/WTn/zEevDBB8O2oASbvb+gtLW1jcDqhlew2V955RVr/Pjx1qeffjoSyxtWQ/33XllZadlsNusvf/nLcCxv2ASb++c//7l1ySWXBIw98cQT1uTJk4dtjaPJ+Jd4enp61NDQILfbHTDudrtVV1c3SqsafqHI3dfXp46ODk2cOHE4ljhsQpH9wIEDqqurU05OznAscdgMNvvWrVv15z//WQ8++OBwL3HYDOVxnzFjhlJTUzVv3jz9/ve/H85lDovBZH/ppZc0c+ZMlZSU6MILL9TUqVO1atUqdXd3j8SSQyYU/97Ly8uVm5s7qD/0OVoGkzs7O1vHjx/X7t27ZVmWPv74Y/37v/+7brjhhpFY8ogb1W8zPheffPKJent7B3yJYEpKyoAvGxxLQpH78ccf1+eff64lS5YMxxKHzVCyT548Wf/3f/+nL774Qh6PR3feeedwLjXkBpP9vffe05o1a7Rv3z7FxBj/T/qMBpM9NTVVW7ZsUVZWlrxer3bs2KF58+bptdde07e+9a2RWHZIDCb7+++/r9raWsXGxqqyslKffPKJli9frs8++yys3ocy1GNdc3OzXnnlFVVUVAzXEofFYHJnZ2fr2Wef1c0336y//vWv+uKLL7Ro0SKVlpaOxJJHXNgczWw2W8C2ZVkDxsaiweZ+7rnn5PF49Lvf/U4XXHDBcC1vWA0m+759+9TZ2ak33nhDa9as0de//nXdcsstw7nMYXGu2Xt7e5Wfn6/169dr6tSpI7W8YRXM437ZZZfpsssu82/Pnj1bx44d07/927+FVUHpF0z2vr4+2Ww2Pfvss/5vh924caO++93v6sknn1RcXNywrzeUBnus27Ztm8477zzddNNNw7Sy4RVM7rffflv33nuvfvrTn2r+/Plqbm7W/fffr7vuukvl5eUjsdwRZXxBmTRpkqKjowc0ytbW1gHNcywZSu7nn39ey5Yt029+8xvl5uYO5zKHxVCyp6enS5KmT5+ujz/+WB6PJ6wKSrDZOzo6tH//fh04cED33HOPpC+fuCzLUkxMjKqqqvTtb397RNY+VKH6t37ddddp586doV7esBpM9tTUVF144YUBX11/xRVXyLIsHT9+XBkZGcO65lAZyuNuWZaeeeYZ3X777Ro3btxwLjPkBpN7w4YNmjNnju6//35J0lVXXaWEhAR985vf1COPPKLU1NRhX/dIMv49KOPGjVNWVpaqq6sDxqurq5WdnT1Kqxp+g8393HPP6Y477lBFRUXYvi4Zqsfcsix5vd5QL29YBZs9KSlJhw4d0sGDB/2Xu+66S5dddpkOHjyoWbNmjdTShyxUj/uBAwfC7kA9mOxz5szRRx99pM7OTv/Y4cOHFRUVpcmTJw/rekNpKI97TU2N/vSnP2nZsmXDucRhMZjcXV1diooKfNqOjo6W9OXxbswZjXfmBqv/o1jl5eXW22+/bRUWFloJCQn+d2yvWbPGuv322wP2OXDggHXgwAErKyvLys/Ptw4cOGA1NTWNxvIHLdjcFRUVVkxMjPXkk08GfATvxIkToxVh0ILNXlZWZr300kvW4cOHrcOHD1vPPPOMlZSUZK1bt260IgzaYH7f/1Y4f4on2OybNm2yKisrrcOHD1uNjY3WmjVrLEnWCy+8MFoRBi3Y7B0dHdbkyZOt7373u1ZTU5NVU1NjZWRkWHfeeedoRRi0wf7O33bbbdasWbNGerkhE2zurVu3WjExMdZTTz1l/fnPf7Zqa2utmTNnWtdee+1oRRhWYVFQLMuynnzySWvKlCnWuHHjrL/7u7+zampq/NctXbrUysnJCZgvacBlypQpI7voEAgmd05OzmlzL126dOQXHgLBZH/iiSesadOmWfHx8VZSUpI1Y8YM66mnnrJ6e3tHYeVDF+zv+98K54JiWcFlf+yxx6xLL73Uio2NtSZMmGBdf/311ssvvzwKqw6NYB/3d955x8rNzbXi4uKsyZMnW0VFRVZXV9cIrzo0gs1+4sQJKy4uztqyZcsIrzS0gs39xBNPWFdeeaUVFxdnpaamWrfeeqt1/PjxEV71yLBZ1lg8LwQAAMKZ8e9BAQAAkYeCAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwDgUFAAAYh4ICAACMQ0EBAADGoaAAAADj/D8Bw3HbYnJsygAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# now we can do the fun part\n",
"fit.draws_pd()['theta'].hist()\n",
"details = fit.summary()\n",
"details.loc['theta',['Mean', '5%', '95%']]"
]
},
{
"cell_type": "markdown",
"id": "95842e0a-3e4b-46f3-8bb6-219eac065117",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 2\n",
"\n",
"From module 3 for many normally distributed data points $y = y_1, \\ldots, y_n$: if\n",
"\n",
"$$\n",
"\\theta \\sim \\text{Inverse-Gamma}(a,b)\n",
"$$\n",
" \n",
"and\n",
"\n",
"$$\n",
"y_1, \\ldots, y_n \\mid \\theta \\sim \\text{Normal}(0, \\theta)\n",
"$$\n",
"\n",
"then\n",
"\n",
"$$\\theta \\mid y_1, \\ldots, y_n \\sim \\text{Inverse-Gamma}(\\alpha+n/2, \\beta + ns/2)$$ "
]
},
{
"cell_type": "markdown",
"id": "445c4fac-b497-4bb6-9e15-1de8e2abf037",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 2\n",
"\n",
"`normal_inv_gamma.stan`:\n",
"\n",
"```\n",
"data {\n",
" int<lower=0> n; \n",
" vector[n] y;\n",
"}\n",
"parameters {\n",
" real<lower=0> theta; // Variance parameter\n",
"}\n",
"\n",
"model {\n",
" // Prior\n",
" theta ~ inv_gamma(2, 3); // Inverse gamma prior with shape = 2, scale = 3\n",
" // Likelihood\n",
" y ~ normal(0, sqrt(theta)); // stan normal needs square root not var\n",
"}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "967bcd10-3c08-47ee-8820-b51b439a5d7b",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# build the model (slow!)\n",
"import os\n",
"from cmdstanpy import CmdStanModel\n",
"model_code = os.path.join('.', 'normal_inv_gamma.stan')\n",
"model = CmdStanModel(stan_file=model_code)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1a757882-9526-4fb0-8771-7f30caa6ca6d",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"num_samps = 100\n",
"some_fake_data = np.random.normal(size=num_samps)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3348aabe-1889-4526-bb76-dee3a051e870",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:40 - cmdstanpy - INFO - CmdStan start processing\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "67c70ccbff5e4a1eba425cb4209068cd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 1 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4f68bb25503f40fabbc7b977a2382e91",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 2 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9f2bd8f64b614f46a01b66f61ca21c91",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 3 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2046471546354b91a627865dc9b92ce1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 4 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:40 - cmdstanpy - INFO - CmdStan done processing.\n",
"19:01:40 - cmdstanpy - WARNING - Non-fatal error during sampling:\n",
"Exception: normal_lpdf: Scale parameter is 0, but must be positive! (in 'normal_inv_gamma.stan', line 12, column 2 to column 29)\n",
"Consider re-running with show_console=True if the above output is unclear!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"# sample from the model (fast!)\n",
"num_samps = 100\n",
"normal_data = {'n' : num_samps, 'y': some_fake_data}\n",
"fit = model.sample(normal_data)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "df8f9a47-9d49-4fe1-be88-d8573964b767",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# trace plot for draws of theta \n",
"# time order matters!\n",
"fit.draws_pd()['theta'].plot()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ffea41ee-4c52-4c63-8073-1743d2a1db6a",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Mean 0.953989\n",
"5% 0.754090\n",
"95% 1.199980\n",
"R_hat 1.000430\n",
"Name: theta, dtype: float64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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n5+vY8eOye/3R6kq8/T19amjo0MpKSnRLmXY2759u/7whz/o0UcfjXYpxuC+YE+47gvD+if2DqWPPvpIvb29A36ZZFpa2oBfOtnvnXfeUX19veLj43XgwAF99NFHWrlypT755JNR8/6nnb7l5ORoz549uueee/SnP/1Jn332mQoLC1VVVRWJko3V3Nx8yT5/9tln+uijj5Senh6lyszy1FNP6fz58yoqKop2KcPa7373O61fv16/+c1vFBs7am8NIeO+YE+47gujdiWmn8PhCNq2LGvAWL++vj45HA7t2bNHs2bN0le+8hVt3rxZO3bsGHWpO5S+vfnmm1q9erW+973vqbGxUYcOHVJTUxO/A2sQLtXnS43j0p5//nl5vV7t379fEydOjHY5w1Zvb6+WLFmiTZs26cYbb4x2OUbhvmBPuO4LozZuT5gwQTExMQNWD1paWgb832+/9PR0XXvttUG/InzatGmyLEtnz55VZmbmkNY8HNjpW3l5ue644w59+9vfliR94Qtf0Lhx43TnnXfq3/7t31hRuAy3233JPsfGxio1NTVKVZlj//79WrFihX7yk59owYIF0S5nWOvo6NCxY8d0/PhxPfTQQ5Iu3Jwty1JsbKxqamr0d3/3d1GucnjivmBPuO4Lo3YlJi4uTtnZ2aqtrQ0ar62tVU5OziX3ueOOO/TBBx+os7MzMPb2229rzJgxmjRp0pDWO1zY6VtXV5fGjAl+qcXExEj688oCBpozZ86APtfU1GjmzJlyOp1RqsoMzz//vL7+9a9r7969fPZqEJKSkvTGG2/oxIkTgT8PPPCAbrrpJp04cUKzZ8+OdonDFvcFe8J2XwjpY8AjzL59+yyn02lt27bNevPNN62SkhJr3Lhx1rvvvmtZlmWtX7/eWrp0aWB+R0eHNWnSJOurX/2qderUKauurs7KzMy07rvvvmg9hagItW/bt2+3YmNjraefftr6wx/+YNXX11szZ860Zs2aFa2nEBUdHR3W8ePHrePHj1uSrM2bN1vHjx+3zpw5Y1nWwL698847VkJCgvWtb33LevPNN61t27ZZTqfT+ulPfxqtpxAVofZt7969VmxsrPWjH/3IOnfuXODPp59+Gq2nEBWh9u1io/XbSaH2jfvCBaH2LVz3hVEdYizLsn70ox9Z119/vRUXF2f9zd/8jVVXVxd4bPny5dbcuXOD5r/11lvWggULrLFjx1qTJk2ySktLra6urghXHX2h9u2HP/yhdfPNN1tjx4610tPTrXvvvdc6e/ZshKuOrl/96leWpAF/li9fblnWpfv261//2rrtttusuLg4a/LkydbWrVsjX3iUhdq3uXPnXnH+aGHn9faXRmuIsdM37gv2+haO+4LDsljPBwAA5hm1n4kBAABmI8QAAAAjEWIAAICRCDEAAMBIhBgAAGAkQgwAADASIQYAABiJEAMAAIxEiAEAAEYixAAAACMRYgAAgJEIMQAAwEj/D1FwHQRIK+ySAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fit.draws_pd()['theta'].hist()\n",
"details = fit.summary()\n",
"details.loc['theta',['Mean', '5%', '95%', 'R_hat']]"
]
},
{
"cell_type": "markdown",
"id": "48c3aee7-d2b9-4caa-8c5a-6c543861ab21",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Another `stan` block...\n",
"\n",
"Sometimes we want our parameters to be unconstrained so it's easier to specify priors for them.\n",
"\n",
"Introducing the `transformed parameters` block in `stan`...\n"
]
},
{
"cell_type": "markdown",
"id": "ee0800ed-9e7d-49ac-8fb0-b424cafbde74",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 3\n",
"\n",
"Here's a motivating example...\n",
"\n",
"$$\n",
"y \\mid \\theta \\sim \\text{Normal}(0, \\theta)\n",
"$$\n",
"\n",
"but $\\theta > 0$, and that's annoying to find priors for. \n",
"\n",
"Instead, what if we consider the log of the variance as a parameter! This is unconstrained, and we're more comfortable talking about distributions for unconstrained things.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "21022df1-9d0f-4f3f-81e5-3c1f10f23a59",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 3\n",
"\n",
"Instead...\n",
"\n",
"$$\n",
"y \\mid \\theta \\sim \\text{Normal}(0, e^{\\theta})\n",
"$$\n",
"\n",
"with the easy prior\n",
"$$\n",
"\\pi(\\theta) = \\text{Normal}(a,b)\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"id": "2ebbd8b8-8a49-405d-afa0-16593a123ce0",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"`normal_log_var.stan`:\n",
"\n",
"```\n",
"data {\n",
" int<lower=0> n; \n",
" vector[n] y;\n",
"}\n",
"parameters {\n",
" real theta; // *log* of variance parameter is unconstrained\n",
"}\n",
"transformed parameters {\n",
" real<lower=0> exp_theta;\n",
" exp_theta = exp(theta);\n",
"}\n",
"model {\n",
" // Prior on unconstrained thing now :)\n",
" theta ~ normal(0, 999); \n",
" y ~ normal(0, sqrt(exp_theta)); // stan normal needs square root not var\n",
"}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "6e37b53e-7f2c-4d74-8bcd-0bc49a15d468",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# build the model (slow!)\n",
"import os\n",
"from cmdstanpy import CmdStanModel\n",
"model_code = os.path.join('.', 'normal_log_var.stan')\n",
"model = CmdStanModel(stan_file=model_code)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "81105503-5d7e-491c-9cf8-299bb721fa37",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:41 - cmdstanpy - INFO - CmdStan start processing\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2401ce0086484ba39fd9de4b948ada5b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 1 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c400e8af040448e9a460f6533a070c6c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 2 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "72cf2371a790427f921cdcc4b5c453e4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 3 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "53f7cdd92a7a4d9292d4c6d2a11d3ea2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"chain 4 | | 00:00 Status"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:01:41 - cmdstanpy - INFO - CmdStan done processing.\n",
"19:01:41 - cmdstanpy - WARNING - Non-fatal error during sampling:\n",
"Exception: normal_lpdf: Scale parameter is 0, but must be positive! (in '/home/taylor/ds-6040/slides/module5/normal_log_var.stan', line 15, column 2 to column 33)\n",
"Exception: normal_lpdf: Scale parameter is 0, but must be positive! (in '/home/taylor/ds-6040/slides/module5/normal_log_var.stan', line 15, column 2 to column 33)\n",
"Exception: normal_lpdf: Scale parameter is 0, but must be positive! (in '/home/taylor/ds-6040/slides/module5/normal_log_var.stan', line 15, column 2 to column 33)\n",
"Exception: normal_lpdf: Scale parameter is 0, but must be positive! (in '/home/taylor/ds-6040/slides/module5/normal_log_var.stan', line 15, column 2 to column 33)\n",
"Consider re-running with show_console=True if the above output is unclear!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"# sample from the model (fast!)\n",
"num_samps = 100\n",
"normal_data = {'n' : num_samps, 'y': some_fake_data}\n",
"fit = model.sample(normal_data)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "5c577d0e-9d64-4d0d-ab8a-49765a761a95",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot simulations from posterior of the **log** of the variance \n",
"fit.draws_pd()['theta'].hist()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9b49245e-ce29-4754-b63e-054c719f941b",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# I should've checked the diagnostics before looking at the samples!\n",
"fit.summary()['R_hat']['theta']"
]
},
{
"cell_type": "markdown",
"id": "2d2819e1-882c-4c56-a253-35b4e61d9be8",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## One More Block\n",
"\n",
"The `generated quantities` block is a block that generates additional output for you. \n",
"\n",
"These outputs are not required for the sampler to be able to function. It's just there for convenience.\n",
"\n",
"Say you have a bunch of samples of $\\theta$. If you also wanted to calculate the logarithm of all those samples, then you can do that after the fact, or you can let `stan` do it for you."
]
},
{
"cell_type": "markdown",
"id": "a2f494b7-e5dc-407b-822c-b76af9b6a87d",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## The Posterior Predictive Distribution\n",
"\n",
"Performing posterior predictive checks requires simulating from the posterior predictive distribution:\n",
"\n",
"$$\n",
"p(\\tilde{y} \\mid y) = \\int L(\\tilde{y} \\mid \\theta) \\pi(\\theta \\mid y) \\text{d}\\theta\n",
"$$\n",
"\n",
"Algorithmically, we simulate data $\\tilde{y}$ in a two step-procedure:\n",
"\n",
" 1. simulate a $\\theta_i$ from the posterior, then\n",
" 2. simulate a $\\tilde{y}$ using $\\theta_i$ from the likelihood.\n",
"\n",
"Q: `stan` already did the first step (many times), so how can we do step 2? \n",
"\n",
"A: The `generated quantities` block!"
]
},
{
"cell_type": "markdown",
"id": "6ac54269-4970-4770-81c2-610629fc4dca",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 1\n",
"\n",
"Let's take an old model we fit several times and simulate from the posterior predictive distribution: `beta_binomial_part_deux.stan`\n",
"\n",
"```\n",
"data {\n",
" int<lower=0> y; \n",
" int<lower=0> n_trials; \n",
"}\n",
"parameters {\n",
" real<lower=0, upper=1> theta; \n",
"}\n",
"model {\n",
" theta ~ beta(2, 2);\n",
" y ~ binomial(n_trials, theta);\n",
"}\n",
"generated quantities {// new!\n",
" int<lower=0, upper=n_trials> y_tilde;\n",
" y_tilde = binomial_rng(n_trials, theta);\n",
"}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7ac9f5a5-4a00-43ce-9595-dc90a00bafac",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# build the model\n",
"import os\n",
"from cmdstanpy import CmdStanModel\n",
"model_code = os.path.join('.', 'beta_binomial_part_deux.stan')\n",
"model = CmdStanModel(stan_file=model_code)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d2523d7e-2635-4c4f-b8ed-f3eca264099b",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# sample from the model \n",
"binom_data = {'n_trials' : 10, 'y': 5}\n",
"fit = model.sample(binom_data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a3e5d33-7d18-48ad-b635-2acd281da3c0",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"#check diagnostics\n",
"details = fit.summary()\n",
"details.loc['theta',['R_hat']]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d5076fcb-ae1d-41e3-9d84-de5cf8a7894d",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# look at the *parameter* posterior\n",
"fit.draws_pd()['theta'].hist()\n",
"# and then finally..."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "746a3644-9e93-49ec-b405-f2124d697859",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# look at our predictive distribution p(ytilde | y)\n",
"fit.draws_pd()['y_tilde'].hist()"
]
},
{
"cell_type": "markdown",
"id": "34082347-5f6c-42fb-a563-d5819e4c41e0",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 1 (prior predictive distribution)\n",
"\n",
"We can also use this kind of block to simulate from the **prior** predictive distribution\n",
"\n",
"`beta_binomial_prior_predict.stan`\n",
"\n",
"```\n",
"data {\n",
" real<lower=0> first_hyper_param;\n",
" real<lower=0> second_hyper_param;\n",
" int<lower=0> n_trials; \n",
"}\n",
"generated quantities {\n",
" real<lower=0, upper=1> theta;\n",
" int<lower=0, upper=n_trials> y_tilde;\n",
" theta = beta_rng(first_hyper_param,second_hyper_param);\n",
" y_tilde = binomial_rng(n_trials, theta);\n",
"}\n",
"```\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3e07a2de-b109-4c5b-ba44-e927c1fc407a",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# build and simulate \n",
"model_code = os.path.join('.', 'beta_binomial_prior_predict.stan')\n",
"model = CmdStanModel(stan_file=model_code)\n",
"binom_data = {'first_hyper_param': 2, 'second_hyper_param':3, 'n_trials':42}\n",
"fit = model.sample(binom_data, fixed_param = True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1a02bee6-9c6d-419d-b231-c5670199fa8f",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"# simulate from prior predictive p(y)\n",
"fit.draws_pd()['y_tilde'].hist()"
]
},
{
"cell_type": "markdown",
"id": "b36b5dc3-2165-4932-9685-ed7363c29011",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Example 1 (prior predictive distribution)\n",
"\n",
"Careful!\n",
"\n",
"**We don't need to run MCMC to simulate from the prior!**\n",
"\n",
"Notice that \n",
" - we didn't need model or parameters blocks! \n",
" - `fixed_param = True` in `model.sample()`"
]
},
{
"cell_type": "markdown",
"id": "b03cfa44-70d9-43a3-9cb7-f128696fa5a3",
"metadata": {},
"source": [
"## Bayesian versus Frequentist\n",
"\n",
"\n",
"The Bayesians:\n",
"\n",
" - Interested in $\\pi(\\theta \\mid y) \\propto L(y \\mid \\theta)\\pi(\\theta)$ **the whole function**\n",
"\n",
" - Can use MCMC to sample from $\\pi(\\theta \\mid y)$ without being able to calculate normalizing constant $p(y)$\n",
"\n",
" - Other competitor algorithms will be discussed shortly\n",
"\n",
" - These samples can describe point estimates $\\hat{\\theta}$\n",
"\n",
" - They can also describe anything else you're interested in (e.g. intervals, correlation, etc.)\n",
"\n",
" \n",
"The frequentists\n",
"\n",
" - Interested in $\\pi(\\theta \\mid y) \\propto L(y \\mid \\theta)\\times 1$\n",
"\n",
" - Usuaully estimate $\\theta$ by **maximizing** $\\pi(\\theta \\mid y)$ \n",
"\n",
" - way less effort to describe the entire function\n",
"\n",
" - credible intervals are based on asymptotic inference\n",
"\n",
" - Not aware of any analogues with other Bayesian techniques we've described"
]
},
{
"cell_type": "markdown",
"id": "1b9adfdd-d0ca-4bfb-a824-03fc98b7ee5b",
"metadata": {},
"source": [
"### References\n",
"\n",
"[Bayesian Data Analysis 3](https://sites.stat.columbia.edu/gelman/book/BDA3.pdf) Chapters 11/12\n",
"\n",
"[Stan Documentation](https://mc-stan.org/docs/)"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment