{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import division\n", "import os\n", "import sys\n", "import glob\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "%matplotlib inline\n", "%precision 4\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "np.random.seed(1234)\n", "import pystan\n", "import scipy.stats as stats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PyStan\n", "====\n", "\n", "Install `PyStan` with\n", "```\n", "pip install pystan\n", "```\n", "\n", "The nice thing about `PyMC` is that everything is in Python. With `PyStan`, however, you need to use a domain specific language based on C++ syntax to specify the model and the data, which is less flexible and more work. However, in exchange you get an extremely powerful HMC package (only does HMC) that can be used in R and Python.\n", "\n", "### Useful links\n", "\n", "- [Paper describing Stan](http://www.stat.columbia.edu/~gelman/research/unpublished/stan-resubmit-JSS1293.pdf)\n", "- [Stan Examples and Reference Manual](https://github.com/stan-dev/example-models/wiki)\n", "- [PyStan docs](http://pystan.readthedocs.org/en/latest/)\n", "- [PyStan GitHub page](https://github.com/stan-dev/pystan)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Coin toss\n", "\n", "We'll repeat the example of determining the bias of a coin from observed coin tosses. The likelihood is binomial, and we use a beta prior." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "coin_code = \"\"\"\n", "data {\n", " int n; // number of tosses\n", " int y; // number of heads\n", "}\n", "transformed data {}\n", "parameters {\n", " real p;\n", "}\n", "transformed parameters {}\n", "model {\n", " p ~ beta(2, 2);\n", " y ~ binomial(n, p);\n", "}\n", "generated quantities {}\n", "\"\"\"\n", "\n", "coin_dat = {\n", " 'n': 100,\n", " 'y': 61,\n", " }\n", "\n", "fit = pystan.stan(model_code=coin_code, data=coin_dat, iter=1000, chains=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Loading from a file\n", "\n", "The string in coin_code can also be in a file - say `coin_code.stan` - then we can use it like so\n", "\n", "```python\n", "fit = pystan.stan(file='coin_code.stan', data=coin_dat, iter=1000, chains=1)\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Inference for Stan model: anon_model_7f1947cd2d39ae427cd7b6bb6e6ffd77.\n", "1 chains, each with iter=1000; warmup=500; thin=1; \n", "post-warmup draws per chain=500, total post-warmup draws=500.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "p 0.61 4.9e-3 0.05 0.52 0.57 0.61 0.64 0.7 100 1.02\n", "lp__ -70.27 0.06 0.68 -72.47 -70.48 -70.0 -69.81 -69.74 125 1.0\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 07:30:35 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1).\n" ] } ], "source": [ "print(fit)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "odict_keys(['p', 'lp__'])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coin_dict = fit.extract()\n", "coin_dict.keys() \n", "# lp_ is the log posterior" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fit.plot('p');\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Estimating mean and standard deviation of normal distribution\n", "\n", "$$X \\sim \\mathcal{N}(\\mu, \\sigma^2)$$" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "norm_code = \"\"\"\n", "data {\n", " int n; \n", " real y[n]; \n", "}\n", "transformed data {}\n", "parameters {\n", " real mu;\n", " real sigma;\n", "}\n", "transformed parameters {}\n", "model {\n", " y ~ normal(mu, sigma);\n", "}\n", "generated quantities {}\n", "\"\"\"\n", "\n", "norm_dat = {\n", " 'n': 100,\n", " 'y': np.random.normal(10, 2, 100),\n", " }\n", "\n", "fit = pystan.stan(model_code=norm_code, data=norm_dat, iter=1000, chains=1)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Inference for Stan model: anon_model_3318343d5265d1b4ebc1e443f0228954.\n", "1 chains, each with iter=1000; warmup=500; thin=1; \n", "post-warmup draws per chain=500, total post-warmup draws=500.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "mu 10.07 0.02 0.22 9.64 9.91 10.07 10.22 10.48 133 1.0\n", "sigma 2.02 0.01 0.15 1.76 1.93 2.01 2.12 2.33 127 1.02\n", "lp__ -117.3 0.1 1.02 -119.9 -117.7 -117.0 -116.5 -116.2 103 1.0\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 07:31:19 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1)." ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "trace = fit.extract()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nERFJ9P8AE1a3QmgfauEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,4))\n", "plt.subplot(1,2,1); \n", "plt.hist(trace['mu'][:], 25, histtype='step');\n", "plt.subplot(1,2,2); \n", "plt.hist(trace['sigma'][:], 25, histtype='step');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Optimization (finding MAP)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "OrderedDict([('mu', array(10.070206723560238)),\n", " ('sigma', array(1.9913542540072449))])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sm = pystan.StanModel(model_code=norm_code)\n", "op = sm.optimizing(data=norm_dat)\n", "op" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reusing fitted objects" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "new_dat = {\n", " 'n': 100,\n", " 'y': np.random.normal(10, 2, 100),\n", " }" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "fit2 = pystan.stan(fit=fit, data=new_dat, chains=1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Inference for Stan model: anon_model_3318343d5265d1b4ebc1e443f0228954.\n", "1 chains, each with iter=2000; warmup=1000; thin=1; \n", "post-warmup draws per chain=1000, total post-warmup draws=1000.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "mu 9.89 0.01 0.2 9.51 9.76 9.89 10.02 10.29 276 1.0\n", "sigma 2.0 9.3e-3 0.14 1.75 1.89 1.99 2.08 2.3 226 1.0\n", "lp__ -115.4 0.08 0.96 -118.2 -115.7 -115.1 -114.7 -114.5 151 1.01\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 07:32:02 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1)." ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Saving compiled models\n", "\n", "We can also compile Stan models and save them to file, so as to reload them for later use without needing to recompile." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def save(obj, filename):\n", " \"\"\"Save compiled models for reuse.\"\"\"\n", " import pickle\n", " with open(filename, 'wb') as f:\n", " pickle.dump(obj, f, protocol=pickle.HIGHEST_PROTOCOL)\n", "\n", "def load(filename):\n", " \"\"\"Reload compiled models for reuse.\"\"\"\n", " import pickle\n", " return pickle.load(open(filename, 'rb'))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model = pystan.StanModel(model_code=norm_code)\n", "save(model, 'norm_model.pic')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Inference for Stan model: anon_model_3318343d5265d1b4ebc1e443f0228954.\n", "1 chains, each with iter=2000; warmup=1000; thin=1; \n", "post-warmup draws per chain=1000, total post-warmup draws=1000.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "mu 9.9 0.01 0.2 9.52 9.77 9.9 10.05 10.27 258 1.0\n", "sigma 1.99 9.7e-3 0.15 1.73 1.89 1.98 2.08 2.32 252 1.0\n", "lp__ -115.5 0.08 1.08 -118.5 -116.0 -115.2 -114.8 -114.5 167 1.0\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 07:48:40 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1)." ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_model = load('norm_model.pic')\n", "fit4 = new_model.sampling(new_dat, chains=1)\n", "fit4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Estimating parameters of a linear regression model\n", "\n", "We will show how to estimate regression parameters using a simple linear model\n", "\n", "$$y \\sim ax + b$$\n", "\n", "We can restate the linear model $$y = ax + b + \\epsilon$$ as sampling from a probability distribution\n", "\n", "$$y \\sim \\mathcal{N}(ax + b, \\sigma^2)$$\n", "\n", "We will assume the following priors\n", "\n", "\\begin{align}\n", "a \\sim \\mathcal{N}(0, 100) \\\\\n", "b \\sim \\mathcal{N}(0, 100) \\\\\n", "\\sigma \\sim \\mathcal{U}(0, 20)\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lin_reg_code = \"\"\"\n", "data {\n", " int n; \n", " real x[n];\n", " real y[n]; \n", "}\n", "transformed data {}\n", "parameters {\n", " real a;\n", " real b;\n", " real sigma;\n", "}\n", "transformed parameters {\n", " real mu[n];\n", " for (i in 1:n) {\n", " mu[i] <- a*x[i] + b;\n", " }\n", "}\n", "model {\n", " sigma ~ uniform(0, 20);\n", " y ~ normal(mu, sigma);\n", "}\n", "generated quantities {}\n", "\"\"\"\n", "\n", "n = 11\n", "_a = 6\n", "_b = 2\n", "x = np.linspace(0, 1, n)\n", "y = _a*x + _b + np.random.randn(n)\n", "\n", "lin_reg_dat = {\n", " 'n': n,\n", " 'x': x,\n", " 'y': y\n", " }\n", "\n", "fit = pystan.stan(model_code=lin_reg_code, data=lin_reg_dat, iter=1000, chains=1)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Inference for Stan model: anon_model_4bdbb0aeaf5fafee91f7aa8b257093f2.\n", "1 chains, each with iter=1000; warmup=500; thin=1; \n", "post-warmup draws per chain=500, total post-warmup draws=500.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "a 7.26 0.1 0.89 5.62 6.73 7.27 7.78 9.04 82 1.03\n", "b 1.52 0.06 0.54 0.44 1.2 1.56 1.85 2.51 92 1.03\n", "sigma 0.88 0.03 0.28 0.54 0.7 0.82 0.99 1.58 71 1.01\n", "mu[0] 1.52 0.06 0.54 0.44 1.2 1.56 1.85 2.51 92 1.03\n", "mu[1] 2.25 0.05 0.46 1.27 1.97 2.29 2.53 3.13 95 1.02\n", "mu[2] 2.97 0.04 0.39 2.13 2.74 3.01 3.2 3.71 100 1.02\n", "mu[3] 3.7 0.03 0.33 2.97 3.51 3.72 3.89 4.36 110 1.02\n", "mu[4] 4.42 0.03 0.29 3.82 4.26 4.44 4.6 4.99 125 1.01\n", "mu[5] 5.15 0.02 0.27 4.63 4.99 5.16 5.32 5.68 145 1.0\n", "mu[6] 5.88 0.02 0.28 5.3 5.72 5.89 6.07 6.43 148 1.0\n", "mu[7] 6.6 0.03 0.31 5.93 6.42 6.62 6.81 7.23 125 1.0\n", "mu[8] 7.33 0.04 0.37 6.54 7.11 7.36 7.58 8.04 108 1.01\n", "mu[9] 8.06 0.04 0.43 7.11 7.8 8.07 8.33 8.91 98 1.01\n", "mu[10] 8.78 0.05 0.51 7.67 8.49 8.78 9.13 9.75 92 1.01\n", "lp__ -3.27 0.23 1.7 -7.43 -3.94 -2.79 -2.04 -1.5 57 1.0\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 08:00:48 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1)." ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nXd+GAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fit.plot(['a', 'b']);\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple Logistic model\n", "\n", "We have observations of height and weight and want to use a logistic model to guess the sex." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
maleheightweight
0063.2168.7
1068.7169.8
2064.8176.6
3067.9246.8
4168.9151.6
\n", "
" ], "text/plain": [ " male height weight\n", "0 0 63.2 168.7\n", "1 0 68.7 169.8\n", "2 0 64.8 176.6\n", "3 0 67.9 246.8\n", "4 1 68.9 151.6" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# observed data\n", "df = pd.read_csv('HtWt.csv')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "log_reg_code = \"\"\"\n", "data {\n", " int n; \n", " int male[n];\n", " real weight[n];\n", " real height[n];\n", "}\n", "transformed data {}\n", "parameters {\n", " real a;\n", " real b;\n", " real c;\n", "}\n", "transformed parameters {}\n", "model {\n", " a ~ normal(0, 10);\n", " b ~ normal(0, 10);\n", " c ~ normal(0, 10);\n", " for(i in 1:n) {\n", " male[i] ~ bernoulli(inv_logit(a*weight[i] + b*height[i] + c));\n", " }\n", "}\n", "generated quantities {}\n", "\"\"\"\n", "\n", "log_reg_dat = {\n", " 'n': len(df),\n", " 'male': df.male,\n", " 'height': df.height,\n", " 'weight': df.weight\n", " }\n", "\n", "fit = pystan.stan(model_code=log_reg_code, data=log_reg_dat, iter=2000, chains=1)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Inference for Stan model: anon_model_bbf283522d1e199c049bb423b4a6e0da.\n", "1 chains, each with iter=2000; warmup=1000; thin=1; \n", "post-warmup draws per chain=1000, total post-warmup draws=1000.\n", "\n", " mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat\n", "a 0.25 0.11 0.19-4.4e-4 0.02 0.38 0.4 0.41 3 2.28\n", "b -0.61 0.28 0.48 -1.05 -1.01 -0.94 -0.01 0.03 3 2.34\n", "c -0.31 0.64 1.11 -2.3 -1.63 0.49 0.5 0.5 3 1.78\n", "lp__ -191.2 66.47 115.13 -305.7 -289.3 -265.0 -47.06 -45.1 3 2.47\n", "\n", "Samples were drawn using NUTS(diag_e) at Tue Mar 1 08:01:40 2016.\n", "For each parameter, n_eff is a crude measure of effective sample size,\n", "and Rhat is the potential scale reduction factor on split chains (at \n", "convergence, Rhat=1)." ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_trace = pd.DataFrame(fit.extract(['c', 'b', 'a']))\n", "pd.scatter_matrix(df_trace[:], diagonal='kde');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Estimating parameters of a logistic model\n", "\n", "Gelman's book has an example where the dose of a drug may be affected to the number of rat deaths in an experiment.\n", "\n", "| Dose (log g/ml) | # Rats | # Deaths |\n", "|-----------------|--------|----------|\n", "| -0.896 | 5 | 0 |\n", "| -0.296 | 5 | 1 |\n", "| -0.053 | 5 | 3 |\n", "| 0.727 | 5 | 5 |\n", "\n", "We will model the number of deaths as a random sample from a binomial distribution, where $n$ is the number of rats and $p$ the probability of a rat dying. We are given $n = 5$, but we believe that $p$ may be related to the drug dose $x$. As $x$ increases the number of rats dying seems to increase, and since $p$ is a probability, we use the following model:\n", "\n", "\\begin{align}\n", "y \\sim \\text{Bin}(n, p) \\\\\n", "\\text{logit}(p) = \\alpha + \\beta x \\\\\n", "\\alpha \\sim \\mathcal{N}(0, 5) \\\\\n", "\\beta \\sim \\mathcal{N}(0, 10)\n", "\\end{align}\n", "\n", "where we set vague priors for $\\alpha$ and $\\beta$, the parameters for the logistic model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Original PyMC3 code\n", "\n", "```python\n", "n = 5 * np.ones(4)\n", "x = np.array([-0.896, -0.296, -0.053, 0.727])\n", "y = np.array([0, 1, 3, 5])\n", "\n", "def invlogit(x):\n", " return pm.exp(x) / (1 + pm.exp(x))\n", "\n", "with pm.Model() as model:\n", " # define priors\n", " alpha = pm.Normal('alpha', mu=0, sd=5)\n", " beta = pm.Flat('beta')\n", " \n", " # define likelihood\n", " p = invlogit(alpha + beta*x)\n", " y_obs = pm.Binomial('y_obs', n=n, p=p, observed=y)\n", " \n", " # inference\n", " start = pm.find_MAP()\n", " step = pm.NUTS()\n", " trace = pm.sample(niter, step, start, random_seed=123, progressbar=True)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise** - convert to PyStan version" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Using a hierarchical model\n", "\n", "This uses the Gelman radon data set and is based off this [IPython notebook](http://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/). Radon levels were measured in houses from all counties in several states. Here we want to know if the preence of a basement affects the level of radon, and if this is affected by which county the house is located in. \n", "\n", "The data set provided is just for the state of Minnesota, which has 85 counties with 2 to 116 measurements per county. We only need 3 columns for this example `county`, `log_radon`, `floor`, where `floor=0` indicates that there is a basement.\n", "\n", "We will perform simple linear regression on log_radon as a function of county and floor." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "radon = pd.read_csv('radon.csv')[['county', 'floor', 'log_radon']]\n", "radon.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Hiearchical model\n", "\n", "With a hierarchical model, there is an $a_c$ and a $b_c$ for each county $c$ just as in the individual county model, but they are no longer independent but assumed to come from a common group distribution\n", "\n", "\\begin{align}\n", "a_c \\sim \\mathcal{N}(\\mu_a, \\sigma_a^2) \\\\\n", "b_c \\sim \\mathcal{N}(\\mu_b, \\sigma_b^2)\n", "\\end{align}\n", "\n", "we further assume that the hyperparameters come from the following distributions\n", "\n", "\\begin{align}\n", "\\mu_a \\sim \\mathcal{N}(0, 100^2) \\\\\n", "\\sigma_a \\sim \\mathcal{U}(0, 100) \\\\ \n", "\\mu_b \\sim \\mathcal{N}(0, 100^2) \\\\\n", "\\sigma_b \\sim \\mathcal{U}(0, 100)\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Original PyMC3 code\n", "\n", "```python\n", "county = pd.Categorical(radon['county']).codes\n", "\n", "with pm.Model() as hm:\n", " # County hyperpriors\n", " mu_a = pm.Normal('mu_a', mu=0, tau=1.0/100**2)\n", " sigma_a = pm.Uniform('sigma_a', lower=0, upper=100)\n", " mu_b = pm.Normal('mu_b', mu=0, tau=1.0/100**2)\n", " sigma_b = pm.Uniform('sigma_b', lower=0, upper=100)\n", " \n", " # County slopes and intercepts\n", " a = pm.Normal('slope', mu=mu_a, sd=sigma_a, shape=len(set(county)))\n", " b = pm.Normal('intercept', mu=mu_b, tau=1.0/sigma_b**2, shape=len(set(county)))\n", " \n", " # Houseehold errors\n", " sigma = pm.Gamma(\"sigma\", alpha=10, beta=1)\n", " \n", " # Model prediction of radon level\n", " mu = a[county] + b[county] * radon.floor.values\n", " \n", " # Data likelihood\n", " y = pm.Normal('y', mu=mu, sd=sigma, observed=radon.log_radon)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise** - convert to PyStan version" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "\n", "\n", "\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }