diff --git a/docs/notebooks/gallery.yml b/docs/notebooks/gallery.yml index 930ce19af..3d4c5a36b 100644 --- a/docs/notebooks/gallery.yml +++ b/docs/notebooks/gallery.yml @@ -84,6 +84,10 @@ subtitle: Survey Data and Representative Sampling href: mister_p.ipynb thumbnail: thumbnails/mr_p_adjustment.png + - title: Zero inflated models + subtitle: When the outcome is mostly zeros and or is overdispersed + href: zero_inflated_regression.ipynb + thumbnail: thumbnails/zero_inflated_pps.png - category: More advanced models description: "" tiles: diff --git a/docs/notebooks/thumbnails/zip_model_pps.png b/docs/notebooks/thumbnails/zip_model_pps.png new file mode 100644 index 000000000..ab6b52b7f Binary files /dev/null and b/docs/notebooks/thumbnails/zip_model_pps.png differ diff --git a/docs/notebooks/zero_inflated_regression.ipynb b/docs/notebooks/zero_inflated_regression.ipynb new file mode 100644 index 000000000..03e18d3ce --- /dev/null +++ b/docs/notebooks/zero_inflated_regression.ipynb @@ -0,0 +1,1856 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING (pytensor.tensor.blas): Using NumPy C-API based implementation for BLAS functions.\n" + ] + } + ], + "source": [ + "import arviz as az\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.lines import Line2D\n", + "import numpy as np\n", + "import pandas as pd\n", + "import scipy.stats as stats\n", + "import seaborn as sns\n", + "import warnings\n", + "\n", + "import bambi as bmb\n", + "\n", + "warnings.simplefilter(action='ignore', category=FutureWarning)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Zero inflated models\n", + "\n", + "In this notebook, we will describe zero inflated outcomes and why the data generating process behind these outcomes requires a special class of generalized linear models: zero-inflated Poisson (ZIP) and hurdle Poisson. Subsequently, we will describe and implement each model using a set of zero-inflated data from ecology. Along the way, we will also use the `interpret` sub-package to interpret the predictions and parameters of the models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zero inflated outcomes\n", + "\n", + "Sometimes, an observation is not generated from a single process, but from a _mixture_ of processes. Whenever there is a mixture of processes generating an observation, a mixture model may be more appropriate. A mixture model uses more than one probability distribution to model the data. Count data are more susceptible to needing a mixture model as it is common to have a large number of zeros **and** values greater than zero. A zero means \"nothing happened\", and this can be either because the rate of events is low, or because the process that generates the events was never \"triggered\". For example, in health service utilization data (the number of times a patient used a service during a given time period), a large number of zeros represents patients with no utilization during the time period. However, some patients do use a service which is a result of some \"triggered process\". \n", + "\n", + "There are two popular classes of models for modeling zero-inflated data: (1) ZIP, and (2) hurdle Poisson. First, the ZIP model is described and how to implement it in Bambi is outlined. Subsequently, the hurdle Poisson model and how to implement it is outlined thereafter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zero inflated poisson\n", + "\n", + "To model zero-inflated outcomes, the ZIP model uses a distribution that mixes two data generating processes. The first process generates zeros, and the second process uses a Poisson distribution to generate counts (of which some may be zero). The result of this mixture is a distribution that can be described as\n", + "\n", + "$$P(Y=0) = (1 - \\psi) + \\psi e^{-\\mu}$$\n", + "\n", + "$$P(Y=y_i) = \\psi \\frac{e^{-\\mu} \\mu_{i}^y}{y_{i}!} \\ \\text{for} \\ y_i = 1, 2, 3,...,n$$\n", + "\n", + "where $y_i$ is the outcome, $\\mu$ is the mean of the Poisson process where $\\mu \\ge 0$, and $\\psi$ is the probability of the Poisson process where $0 \\lt \\psi \\lt 1$. To understand how these two processes are \"mixed\", let's simulate some data using the two process equations above (taken from the PyMC [docs](https://www.pymc.io/projects/docs/en/latest/api/distributions/generated/pymc.ZeroInflatedPoisson.html))." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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UERGRmLbtm26dhr7vjf3/Xzttddw9OhRnDhxAhkZGbhy5QoefPBBg3q3x1RQUAAnJyeDIU+RSITAwEBdnNp5gqGhoSZjuHHjBgDNitnbfwZee+01CIKAwsJCAMD27dsxbdo0fPDBB4iNjYW3tzemTp2KnJwcAJa9D0T2wDlmRDawbds2rFmzBpMmTcKLL75osp6vry98fHywe/duo/ffvvVE/YnwWj4+PsjOzjYoz8rK0j2Gve3YsQPl5eX4+uuvER4eritPTU21uA1LXyttApKTk6O3jUNtbW2jklQ/Pz/ExMQYvU/7GKZed7FYjA4dOphsu2/fvvjss88gCAJOnTqFTZs2Yfny5XBxccHChQsBAOPHj8f48eOhVCpx5MgRrFq1CpMnT0anTp0QGxvb4u97586dTb4e9d3+M+rj44Pa2lrk5eXpJWeCICAnJ0fXO6i97/r160Z7l4Fbz+mdd94xufo5ICBAVzcxMRGJiYnIyMjAzp07sXDhQuTm5up+hix5H4haGnvMiKzs1KlTmDlzJiIjIw1Wk91u7NixKCgogEqlQkxMjMHRo0ePBh9vxIgR2Lt3r+4PstbmzZvh6upq8g9YS9L+sdb20gCaP8zvv/++QV25XG60F8fS12r48OEAgK1bt+qd//nnn6O2ttYqz6dHjx4ICQnBp59+CkEQdOXl5eX46quvdCs1GyISidCvXz+89dZb8PLywokTJwzqyOVy3H333XjttdcAaIaEAc37fu7cOYNzNm/eDJFIZLKXtqVpJ+Nv2bJFr/yrr75CeXm57v74+HhIJBKsX7/eZFtDhgyBl5cXzp07Z/RnICYmBjKZzOC8jh074tlnn8XIkSONvsaWvA9ELYU9ZkRWdPPmTTz44INQKpVYsGABTp8+bbSen58funTpgkcffRRbt27F6NGj8fzzz2PQoEGQSqW4fv069u3bh/Hjx+Ohhx4y+5hLlizB999/j3vuuQf/+te/4O3tja1bt+KHH37A6tWrm7TiztpGjhwJmUyGxx57DC+99BKqqqqwfv16o8N9ffv2xddff43169cjOjoaYrEYMTExFr9WvXr1whNPPIHExERIpVLcd999OHPmDN544w14enpa5fmIxWKsXr0ajz/+OMaOHYunn34aSqUSr7/+OoqKivDqq6+aPPf777/HunXr8OCDD6Jz584QBAFff/01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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(0, 22)\n", + "psis = [0.7, 0.4]\n", + "mus = [10, 4]\n", + "plt.figure(figsize=(7, 3))\n", + "for psi, mu in zip(psis, mus):\n", + " pmf = stats.poisson.pmf(x, mu)\n", + " pmf[0] = (1 - psi) + pmf[0] # 1.) generate zeros\n", + " pmf[1:] = psi * pmf[1:] # 2.) generate counts\n", + " pmf /= pmf.sum() # normalize to get probabilities\n", + " plt.plot(x, pmf, '-o', label='$\\\\psi$ = {}, $\\\\mu$ = {}'.format(psi, mu))\n", + "\n", + "plt.title(\"Zero Inflated Poisson Process\")\n", + "plt.xlabel('x', fontsize=12)\n", + "plt.ylabel('f(x)', fontsize=12)\n", + "plt.legend(loc=1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice how the blue line, corresponding to a higher $\\psi$ and $\\mu$, has a higher rate of counts and less zeros. Additionally, the inline comments above describe the first and second process generating the data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ZIP regression model\n", + "\n", + "The equations above only describe the ZIP distribution. However, predictors can be added to make this a regression model. Suppose we have a response variable $Y$, which represents the number of events that occur during a time period, and $p$ predictors $X_1, X_2, ..., X_p$. We can model the parameters of the ZIP distribution as a linear combination of the predictors.\n", + "\n", + "$$Y_i \\sim \\text{ZIPoisson}(\\mu_i, \\psi_i)$$\n", + "\n", + "$$g(\\mu_i) = \\beta_0 + \\beta_1 X_{1i}+,...,+\\beta_p X_{pi}$$\n", + "\n", + "$$h(\\psi_i) = \\alpha_0 + \\alpha_1 X_{1i}+,...,+\\alpha_p X_{pi}$$\n", + "\n", + "where $g$ and $h$ are the link functions for each parameter. Bambi, by default, uses the log link for $g$ and the logit link for $h$. Notice how there are two linear models and two link functions: one for each parameter in the $\\text{ZIPoisson}$. The parameters of the linear model differ, because any predictor such as $X$ may be associated differently with each part of the mixture. Actually, you don't even need to use the same predictors in both linear models—but this beyond the scope of this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The fish dataset\n", + "\n", + "To demonstrate the ZIP regression model, we model and predict how many fish are caught by visitors at a state park using survey [data](\"https://stats.idre.ucla.edu/stat/data/fish.csv\"). Many visitors catch zero fish, either because they did not fish at all, or because they were unlucky. The dataset contains data on 250 groups that went to a state park to fish. Each group was questioned about how many fish they caught (`count`), how many children were in the group (`child`), how many people were in the group (`persons`), if they used a live bait (`livebait`) and whether or not they brought a camper to the park (`camper`)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "fish_data = pd.read_stata(\"http://www.stata-press.com/data/r11/fish.dta\")\n", + "cols = [\"count\", \"livebait\", \"camper\", \"persons\", \"child\"]\n", + "fish_data = fish_data[cols]\n", + "fish_data[\"livebait\"] = pd.Categorical(fish_data[\"livebait\"])\n", + "fish_data[\"camper\"] = pd.Categorical(fish_data[\"camper\"])\n", + "fish_data = fish_data[fish_data[\"count\"] < 60] # remove outliers" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countlivebaitcamperpersonschild
00.00.00.01.00.0
10.01.01.01.00.0
20.01.00.01.00.0
30.01.01.02.01.0
41.01.00.01.00.0
\n", + "
" + ], + "text/plain": [ + " count livebait camper persons child\n", + "0 0.0 0.0 0.0 1.0 0.0\n", + "1 0.0 1.0 1.0 1.0 0.0\n", + "2 0.0 1.0 0.0 1.0 0.0\n", + "3 0.0 1.0 1.0 2.0 1.0\n", + "4 1.0 1.0 0.0 1.0 0.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fish_data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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39FnNRs3btTQoUPldDpls9m0atUqj+3GGCUmJsrpdKpRo0aKi4vTzp07fVOsl11s7A8++GCZn4Prr7/eN8V6WXJysnr27KmQkBC1bNlSd955p3bt2uXRp67OfUXGXlfn/s0339TVV1/t/hDV3r176+OPP3Zvr6tzXupi46+r816e5ORk2Ww2JSQkuNu8Mf+ENh/54IMPlJCQoGnTpmnr1q268cYbNXjwYB08eNDXpdWITp06KScnx71s377d1yVVi+PHj6tr166aN29eudvnzJmjlJQUzZs3T5s2bZLD4dDAgQMr9YXOtdXFxi5Jt9xyi8fPwUcffVSDFVafDRs2aOzYsfr666+VlpamM2fOKD4+XsePH3f3qatzX5GxS3Vz7lu1aqVZs2Zp8+bN2rx5s26++Wbdcccd7v+Y6+qcl7rY+KW6Oe9/tGnTJi1YsEBXX321R7tX5r/S39AOr7juuuvMY4895tF25ZVXmqefftpHFdWc6dOnm65du/q6jBonyaxcudK9XlJSYhwOh5k1a5a77dSpUyYsLMy89dZbPqiw+vxx7MYYM2rUKHPHHXf4pJ6alpeXZySZDRs2GGPq19z/cezG1K+5b9asmfnv//7vejXnv1c6fmPqx7wXFhaamJgYk5aWZvr27WsmTpxojPHe7zxn2nyguLhYGRkZio+P92iPj49Xenq6j6qqWbt375bT6VTbtm117733at++fb4uqcZlZWUpNzfX4+cgMDBQffv2rTc/B59//rlatmyp9u3b69FHH1VeXp6vS6oWBQUFkqTw8HBJ9Wvu/zj2UnV97s+ePavly5fr+PHj6t27d72ac6ns+EvV9XkfO3asbrvtNg0YMMCj3VvzXye+EcFqjhw5orNnz5b5Qnu73V7mi+/rol69eundd99V+/bt9csvv2jmzJmKjY3Vzp07FRER4evyakzpXJf3c3DgwAFflFSjBg8erLvvvlvR0dHKysrSc889p5tvvlkZGRl16pPTjTGaNGmSbrjhBnXu3FlS/Zn78sYu1e253759u3r37q1Tp06pSZMmWrlypTp27Oj+j7muz/n5xi/V7XmXpOXLl2vLli3atGlTmW3e+p0ntPmQzWbzWDfGlGmriwYPHuz+e5cuXdS7d29dccUVWrx4sSZNmuTDynyjvv4c3HPPPe6/d+7cWT169FB0dLT+93//V8OG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tEiStGLFCrVq1UozZsxQTk6OcnJyKlUDAEne/EZ7ANY0atQoc8cddxhjjLn++uvNQw89ZIwxZuXKleb3/0xMnz7ddO3a1WPfV1991URHR3scKzo62pw9e9bd1qFDB3PjjTe618+cOWOCg4PNsmXLjDHGZGVlGUlm1qxZ7j6nT582rVq1MrNnzzbGGPPcc8+Z+Ph4j9fOzs42ksyuXbuMMcb07dvXdOvW7aLjdTqd5qWXXvJo69mzpxkzZox7vWvXrmb69OkXPM6oUaOMn5+fCQ4Odi933XWXu5aJEycaY4z529/+ZkJDQ43L5Sr3OH379jU33HBDmXqeeuqpcvv/8ssvRpJJSUm5YH3l+fbbb40kU1hYaIwxZuHChSYsLMyjzx/nvVevXmbs2LEeffr06ePxs1A672fOnHG33X333eaee+5xr0dHR5tXX3210jUDOIczbQA8zJ49W4sXL9b3339f5WN06tRJDRr8+58Xu92uLl26uNf9/PwUERHhcZlOknr37u3+u7+/v3r06KEffvhBkpSRkaH169erSZMm7uXKK6+UdO7+s1I9evS4YG0ul0uHDx9Wnz59PNr79Onjfq3K6NevnzIzM93L66+/XqbPwIEDFR0drcsvv1wPPPCA3n//fZ04ccKjz9VXX+2xHhkZWeb9KWX+/yGDilxi3Lp1q+644w5FR0crJCREcXFxkqSDBw9WZHiSpF27dum6667zaPvjunRu3n9/L9+FxgCg8ghtADzcdNNNGjRokJ555pky2xo0aFDmqcTSe5Z+LyAgwGPdZrOV21ZSUnLRekqDSUlJiYYOHeoRkDIzM7V7926PS43BwcEXPebvj1vKGFOl+6yCg4PVrl079xIZGVmmT0hIiLZs2aJly5YpMjJSzz//vLp27arffvvN3acy70+LFi3UrFmzi4bM48ePKz4+Xk2aNNGSJUu0adMmrVy5UtK5y6ZSxee0vPfrj6o6xwAqhtAGoIxZs2bp73//u9LT0z3aW7RoodzcXI//sL352Wpff/21++9nzpxRRkaG+2zatddeq507d6pNmzYeIaldu3YVDmqSFBoaKqfTqS+//NKjPT09XVdddZV3BlIOf39/DRgwQHPmzNG2bdu0f/9+rVu3rkrHatCgge655x69//77Onz4cJntx48f15kzZ/Tjjz/qyJEjmjVrlm688UZdeeWVZc58tWjRQoWFhTp+/Li77Y9z2qFDB3377bcebZs3b6503Q0bNtTZs2crvR+AcwhtAMro0qWLRo4cqblz53q0x8XF6V//+pfmzJmjvXv36o033tDHH3/stdd94403tHLlSv34448aO3as8vPz9dBDD0mSxo4dq6NHj+q+++7Tt99+q3379mnNmjV66KGHKh0EnnzySc2ePVsffPCBdu3apaefflqZmZmaOHGi18bye//4xz/0+uuvKzMzUwcOHNC7776rkpISdejQocrHTEpKUlRUlHr16qV3331X33//vXbv3q133nlH3bp107Fjx9S6dWs1bNhQc+fO1b59+7R69eoynx3Xq1cvNW7cWM8884z27NmjpUuXuh8eKDV+/Hi9/fbbWrx4sXbv3q2ZM2dq27ZtlT4z2aZNG23cuFGHDh3yeOoXQMUQ2gCU68UXXyxzCeyqq67S/Pnz9cYbb6hr16769ttvL/nJyt+bNWuWZs+era5du+qLL77Qhx9+qObNm0uSnE6nvvrqK509e1aDBg1S586dNXHiRIWFhXncP1cREyZM0OTJkzV58mR16dJFn3zyiVavXq2YmBivjeX3mjZtqhUrVujmm2/WVVddpbfeekvLli1Tp06dqnzMZs2a6euvv9b999+vmTNn6pprrtGNN96oZcuW6eWXX1ZYWJhatGihRYsW6X/+53/UsWNHzZo1S6+88orHccLDw7VkyRJ99NFH6tKli5YtW1bm40ZGjhypqVOn6oknntC1117rfgI1KCioUjXPmDFD+/fv1xVXXKEWLVpUeexAfWUz5d2YAADABQwcOFAOh0Pvvfeer0sB6g2+EQEAcEEnTpzQW2+9pUGDBsnPz0/Lli3T2rVrz/s5cgCqB2faAAAXdPLkSQ0dOlRbtmxRUVGROnTooGeffVbDhg3zdWlAvUJoAwAAsAAeRAAAALAAQhsAAIAFENoAAAAsgNAGAABgAYQ2AAAACyC0AQAAWAChDQAAwAIIbQAAABZAaAMAALCA/wNbIfFzNUshtQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Excess zeros, and skewed count\n", + "plt.figure(figsize=(7, 3))\n", + "sns.histplot(fish_data[\"count\"], discrete=True)\n", + "plt.xlabel(\"Number of Fish Caught\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To fit a ZIP regression model, we pass `family=zero_inflated_poisson` to the `bmb.Model` constructor." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Auto-assigning NUTS sampler...\n", + "Initializing NUTS using jitter+adapt_diag...\n", + "Multiprocess sampling (4 chains in 4 jobs)\n", + "NUTS: [count_psi, Intercept, livebait, camper, persons, child]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " 100.00% [8000/8000 00:03<00:00 Sampling 4 chains, 0 divergences]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 4 seconds.\n" + ] + } + ], + "source": [ + "zip_model = bmb.Model(\n", + " \"count ~ livebait + camper + persons + child\", \n", + " fish_data, \n", + " family='zero_inflated_poisson'\n", + ")\n", + "\n", + "zip_idata = zip_model.fit(\n", + " draws=1000, \n", + " target_accept=0.95, \n", + " random_seed=1234, \n", + " chains=4\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets take a look at the model components. Why is there only one linear model and link function defined for $\\mu$. Where is the linear model and link function for $\\psi$? By default, the \"main\" (or first) formula is defined for the parent parameter; in this case $\\mu$. Since we didn't pass an additional formula for the non-parent parameter $\\psi$, $\\psi$ was never modeled as a function of the predictors as explained above. If we want to model both $\\mu$ and $\\psi$ as a function of the predictor, we need to expicitly pass two formulas. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " Formula: count ~ livebait + camper + persons + child\n", + " Family: zero_inflated_poisson\n", + " Link: mu = log\n", + " Observations: 248\n", + " Priors: \n", + " target = mu\n", + " Common-level effects\n", + " Intercept ~ Normal(mu: 0.0, sigma: 9.5283)\n", + " livebait ~ Normal(mu: 0.0, sigma: 7.2685)\n", + " camper ~ Normal(mu: 0.0, sigma: 5.0733)\n", + " persons ~ Normal(mu: 0.0, sigma: 2.2583)\n", + " child ~ Normal(mu: 0.0, sigma: 2.9419)\n", + " \n", + " Auxiliary parameters\n", + " psi ~ Beta(alpha: 2.0, beta: 2.0)\n", + "------\n", + "* To see a plot of the priors call the .plot_priors() method.\n", + "* To see a summary or plot of the posterior pass the object returned by .fit() to az.summary() or az.plot_trace()" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zip_model" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Auto-assigning NUTS sampler...\n", + "Initializing NUTS using jitter+adapt_diag...\n", + "Multiprocess sampling (4 chains in 4 jobs)\n", + "NUTS: [Intercept, livebait, camper, persons, child, psi_Intercept, psi_livebait, psi_camper, psi_persons, psi_child]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " 100.00% [8000/8000 00:05<00:00 Sampling 4 chains, 0 divergences]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 6 seconds.\n" + ] + } + ], + "source": [ + "formula = bmb.Formula(\n", + " \"count ~ livebait + camper + persons + child\", # parent parameter mu\n", + " \"psi ~ livebait + camper + persons + child\" # non-parent parameter psi\n", + ")\n", + "\n", + "zip_model = bmb.Model(\n", + " formula, \n", + " fish_data, \n", + " family='zero_inflated_poisson'\n", + ")\n", + "\n", + "zip_idata = zip_model.fit(\n", + " draws=1000, \n", + " target_accept=0.95, \n", + " random_seed=1234, \n", + " chains=4\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " Formula: count ~ livebait + camper + persons + child\n", + " psi ~ livebait + camper + persons + child\n", + " Family: zero_inflated_poisson\n", + " Link: mu = log\n", + " psi = logit\n", + " Observations: 248\n", + " Priors: \n", + " target = mu\n", + " Common-level effects\n", + " Intercept ~ Normal(mu: 0.0, sigma: 9.5283)\n", + " livebait ~ Normal(mu: 0.0, sigma: 7.2685)\n", + " camper ~ Normal(mu: 0.0, sigma: 5.0733)\n", + " persons ~ Normal(mu: 0.0, sigma: 2.2583)\n", + " child ~ Normal(mu: 0.0, sigma: 2.9419)\n", + " target = psi\n", + " Common-level effects\n", + " psi_Intercept ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_livebait ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_camper ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_persons ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_child ~ Normal(mu: 0.0, sigma: 1.0)\n", + "------\n", + "* To see a plot of the priors call the .plot_priors() method.\n", + "* To see a summary or plot of the posterior pass the object returned by .fit() to az.summary() or az.plot_trace()" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zip_model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, both $\\mu$ and $\\psi$ are defined as a function of a linear combination of the predictors. Additionally, we can see that the log and logit link functions are defined for $\\mu$ and $\\psi$, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "clusterlivebait_dim (1)\n", + "\n", + "livebait_dim (1)\n", + "\n", + "\n", + "clustercamper_dim (1)\n", + "\n", + "camper_dim (1)\n", + "\n", + "\n", + "clusterpsi_livebait_dim (1)\n", + "\n", + "psi_livebait_dim (1)\n", + "\n", + "\n", + "clusterpsi_camper_dim (1)\n", + "\n", + "psi_camper_dim (1)\n", + "\n", + "\n", + "clustercount_obs (248)\n", + "\n", + "count_obs (248)\n", + "\n", + "\n", + "\n", + "persons\n", + "\n", + "persons\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "count\n", + "\n", + "count\n", + "~\n", + "MarginalMixture\n", + "\n", + "\n", + "\n", + "persons->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_Intercept\n", + "\n", + "psi_Intercept\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi\n", + "\n", + "psi\n", + "~\n", + "Deterministic\n", + "\n", + "\n", + "\n", + "psi_Intercept->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Intercept\n", + "\n", + "Intercept\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "Intercept->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_child\n", + "\n", + "psi_child\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_child->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "child\n", + "\n", + "child\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "child->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_persons\n", + "\n", + "psi_persons\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_persons->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "livebait\n", + "\n", + "livebait\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "livebait->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "camper\n", + "\n", + "camper\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "camper->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_livebait\n", + "\n", + "psi_livebait\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_livebait->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_camper\n", + "\n", + "psi_camper\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_camper->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi->count\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zip_model.graph()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since each parameter has a different link function, and each parameter has a different meaning, we must be careful on how the coefficients are interpreted. Coefficients without the substring \"psi\" correspond to the $\\mu$ parameter (the mean of the Poisson process) and are on the log scale. Coefficients with the substring \"psi\" correspond to the $\\psi$ parameter (this can be thought of as the log-odds of non-zero data) and are on the logit scale. Interpreting these coefficients can be easier with the `interpret` sub-package. Below, we will show how to use this sub-package to interpret the coefficients conditional on a set of the predictors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
meansdhdi_3%hdi_97%mcse_meanmcse_sdess_bulkess_tailr_hat
Intercept-1.5730.310-2.130-0.9560.0050.0043593.03173.01.0
livebait[1.0]1.6090.2721.1432.1690.0040.0034158.03085.01.0
camper[1.0]0.2620.0950.0850.4400.0010.0015032.02816.01.0
persons0.6150.0450.5270.6970.0010.0004864.02709.01.0
child-0.7950.094-0.972-0.6250.0020.0013910.03232.01.0
psi_Intercept-1.4430.817-2.9410.1240.0130.0094253.03018.01.0
psi_livebait[1.0]-0.1880.677-1.4901.0520.0100.0114470.02776.01.0
psi_camper[1.0]0.8410.3230.2221.4370.0040.0036002.03114.01.0
psi_persons0.9120.1930.5711.2880.0030.0024145.03169.01.0
psi_child-1.8900.305-2.502-1.3530.0050.0034022.02883.01.0
\n", + "
" + ], + "text/plain": [ + " mean sd hdi_3% hdi_97% mcse_mean mcse_sd \\\n", + "Intercept -1.573 0.310 -2.130 -0.956 0.005 0.004 \n", + "livebait[1.0] 1.609 0.272 1.143 2.169 0.004 0.003 \n", + "camper[1.0] 0.262 0.095 0.085 0.440 0.001 0.001 \n", + "persons 0.615 0.045 0.527 0.697 0.001 0.000 \n", + "child -0.795 0.094 -0.972 -0.625 0.002 0.001 \n", + "psi_Intercept -1.443 0.817 -2.941 0.124 0.013 0.009 \n", + "psi_livebait[1.0] -0.188 0.677 -1.490 1.052 0.010 0.011 \n", + "psi_camper[1.0] 0.841 0.323 0.222 1.437 0.004 0.003 \n", + "psi_persons 0.912 0.193 0.571 1.288 0.003 0.002 \n", + "psi_child -1.890 0.305 -2.502 -1.353 0.005 0.003 \n", + "\n", + " ess_bulk ess_tail r_hat \n", + "Intercept 3593.0 3173.0 1.0 \n", + "livebait[1.0] 4158.0 3085.0 1.0 \n", + "camper[1.0] 5032.0 2816.0 1.0 \n", + "persons 4864.0 2709.0 1.0 \n", + "child 3910.0 3232.0 1.0 \n", + "psi_Intercept 4253.0 3018.0 1.0 \n", + "psi_livebait[1.0] 4470.0 2776.0 1.0 \n", + "psi_camper[1.0] 6002.0 3114.0 1.0 \n", + "psi_persons 4145.0 3169.0 1.0 \n", + "psi_child 4022.0 2883.0 1.0 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "az.summary(\n", + " zip_idata, \n", + " var_names=[\"Intercept\", \"livebait\", \"camper\", \"persons\", \"child\"], \n", + " filter_vars=\"like\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Interpret model parameters\n", + "\n", + "Since we have fit a distributional model, we can leverage the `plot_predictions()` function in the `interpret` sub-package to visualize how the $\\text{ZIPoisson}$ parameters $\\mu$ and $\\psi$ vary as a covariate changes. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAE8CAYAAAD+PkEYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8r0lEQVR4nO3dd3xb5b0/8I+GJWtZlvceie04cRLIIJOQQBgFyiyrUFZ7+ytlpumlhQ7W5ZLbckuhpVC47U1oWWlZlxYISSELMsgkw0kcJ95LtmxtS9Z4fn84EdhxEjs6soY/79crL/Dx0dFzdGQ9+p7neb5fmRBCgIiIiIiIiELk0W4AERERERFRrGGgRERERERENAgDJSIiIiIiokEYKBEREREREQ3CQImIiIiIiGgQBkpERERERESDMFAiIiIiIiIahIESERERERHRIAyUiIiIiIiIBmGgRERERERENAgDJSIiIiIiokEYKFFCWrlyJaqqqqDRaCCTybB79+6otWXTpk147LHHYLVaT/jdihUrIJPJUF9fP+rtGolYej2JiOJVrH2Wnqx/Yt9E1I+BEiWczs5O3HrrrRg/fjxWrVqFzZs3o6KiImrt2bRpEx5//PEhA6XLL78cmzdvRm5u7ug3bJhi7fUkIopHsfhZerL+iX0TUT9ltBtAJLWamhr4fD585zvfwcKFC6PdnFPKzMxEZmZmtJtxSrH4errdbmi12mg3g4ho2GLxs/Rk2DedGfZNCUjQmFVSUiJuu+22E7aff/754rzzzjvlYw8fPizuuOMOUVZWJjQajcjLyxPf/OY3xZ49ewbsZzabxfe//31RUFAgVCqVyMjIEPPmzRNr1qyR5PiD3X777QLAgH8LFy4M/a64uPiExzz66KNi8J/C8W379u0TN910k0hJSRFZWVnizjvvFFardcC+Bw4cEDfddJPIysoSKpVKFBYWiltvvVV4PJ7QcQb/W7t2rRBCiOXLlwsAoq6ubsAxN27cKC644AKh1+uFRqMRc+fOFf/85z/PuI0nc7rnOdXrOZTjbdq5c6e45pprhMFgECkpKeKWW24RZrP5hP1ramrEt7/9bZGZmSlUKpWorKwUzz///JDH3LFjh/jWt74lUlNTRU5OjhBieO+v4byWI3k9z/Q9TUSnFwgEhF6vFz/5yU+EEEIcPHhQABB/+9vfhBBCvPLKKwKAqKmpGfLx7Ju+cqq+6evHGqp/Yt8U+b5J6teTfVNkcERpjLJYLKivr8fSpUsHbBdCYOfOnfjud797yse3trYiPT0d//Vf/4XMzEx0d3fjlVdewezZs7Fr1y5MmDABAHDrrbdi586d+M///E9UVFTAarVi586dsFgskhx/sF/+8peYNWsW7rnnHjz11FM4//zzkZKSMoJXZqBvfetbuPHGG/G9730Pe/fuxcMPPwwA+N///V8AwJdffolzzz0XGRkZeOKJJ1BeXo62tja8//776Ovrw7/927+hu7sbv//97/HOO++EpjFMmjTppM+5fv16XHTRRZg6dSr+/Oc/Q61W44UXXsAVV1yBN954AzfeeOOI2hjO85zp63nNNdfghhtuwF133YX9+/fjl7/8Jaqrq7F161YkJSUBAKqrqzFv3jwUFRXhN7/5DXJycvDxxx/j/vvvR1dXFx599NEBx7z22mtx00034a677oLL5QJw+vfXSF/L4byeZ/qeJqLTO3DgAJxOJ2bOnAkA2L59OwCEft6xYweMRiPKysqGfDz7puH1TWq1+pT901Brk9g3Sdc3ReL1ZN8UIdGO1Cg6Vq1aJQCITZs2Ddh+6NAhAUC8+uqrIzqe3+8XfX19ory8XPzoRz8Kbdfr9WLJkiVht/dkxx/K2rVrBQDx97//fcD2M7lr9+tf/3rA9rvvvlskJyeLYDAohBDiggsuEKmpqUPekTru6aefHvLOnBBDjyjNmTNHZGVlCYfDEdrm9/vF5MmTRUFBQei5h9vGkxnu85zs9RzK8TYNvkavvfbaCe+rSy65RBQUFAibzTZg33vvvVckJyeL7u7uAcd85JFHTni+072/hnuOX3+e072eUr2niehEK1asEADE0aNHhRBCLFmyRKSnp4d+P2/ePHH++ecP+3jsm07eNwlx8v6JfVNk+6aRnCf7puhiMocxatu2bVAqlTj77LMHbN+xYwcAYMaMGad8vN/vx1NPPYVJkyZBpVJBqVRCpVLh8OHDOHDgQGi/WbNmYcWKFXjyySexZcsW+Hy+YbVvuMePtCuvvHLAz1OnToXH44HZbIbb7cb69etxww03SDaX2+VyYevWrbjuuuug1+tD2xUKBW699VY0Nzfj0KFDw26jlM8zErfccsuAn2+44QYolUqsXbsWAODxePDJJ5/gmmuugVarhd/vD/277LLL4PF4sGXLlgHH+Na3vnXC85zq/XWm53i61/NM39NEdHrbt29Heno6SktLQz8f748CgQB2794dGl0aCvsm9k2nEgt905meJ/um6GCgNEZt374dkyZNgkajOWG7Xq8/beaYpUuX4pe//CWuvvpq/OMf/8DWrVuxbds2nHXWWejt7Q3tt3LlStx+++3405/+hLlz5yItLQ233XYb2tvbJTl+pKWnpw/4Wa1WAwB6e3vR09ODQCCAgoICyZ6vp6cHQoghMw3l5eUBwAnD6Kdqo5TPMxI5OTkDflYqlUhPTw8d02KxwO/34/e//z2SkpIG/LvssssAAF1dXQOOMVRbT/X+OtNzPN3reabvaSI6vW3btoUCo2AwOCAwOnjwINxu9ylv5LFvYt90KrHQN53pebJvig6uURqjtm/fjosuuuiE7evWrcO0adMgl586hn711Vdx22234amnnhqwvaurC6mpqaGfMzIy8Oyzz+LZZ59FY2Mj3n//fTz00EMwm81YtWpV2McfieTkZHi93hO2D/7QG660tDQoFAo0Nzef0eOHYjKZIJfL0dbWdsLvWltbAfS/prH+PO3t7cjPzw/97Pf7YbFYQh/0JpMpdOfsnnvuGfIYx+8oHyeTyU7Y51Tvr7fffjsi53im72kiOr39+/eH7voPXq90/O9rwYIFJ308+yb2TacSC33TqlWrInKe7JsigyNKY1B7eztaWlqgVA6Mk9evX4+dO3eedtod0P/BcPxuxnEffPABWlpaTvqYoqIi3Hvvvbjooouwc+dOyY9/OiUlJTCbzejo6Aht6+vrw8cff3xGx9NoNFi4cCH+/ve/n7JDG85dtON0Oh1mz56Nd955Z8D+wWAQr776KgoKCiSpExHp53nttdcG/Py3v/0Nfr8fixYtAgBotVqcf/752LVrF6ZOnYqZM2ee8G/w3bPTGfz+Go3XciTvaSI6vWAwiKamJgADEzmYzWY899xzuPzyy0N33IfCvmn4fRMw/P6JfZN0fdNonCf7JulwRGkM2rZtGwDg73//OyZNmoSysjLs3r0bf/jDHwAAZrMZ+/btw+TJk096jG9+85tYsWIFKisrMXXqVOzYsQNPP/30gKF+m82G888/HzfffDMqKythMBiwbds2rFq1Ctdee+0p2zic44/UjTfeiEceeQQ33XQTHnzwQXg8Hvzud79DIBA442M+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HwMlojB8vZM4/nN5eTmmTZuGQCAAs9mMsrKyAf9ycnJOe9xp06bh4YcfxqZNmzB58mS8/vrrAICJEyfis88+G7Dvpk2bMHHixBG1OzMzE3fccQdeffVVPPvss3j55ZdH9HgiIopd7JuIpKGMdgOI4llTUxOWLl2KH/zgB9i5cyd+//vf4ze/+Q0qKipwyy234LbbbsNvfvMbTJs2DV1dXfj0008xZcoUXHbZZUMer66uDi+//DKuvPJK5OXl4dChQ6ipqcFtt90GAHjwwQdxww03YPr06Vi8eDH+8Y9/4J133sG//vWvYbf5kUcewYwZM1BVVQWv14t//vOfI+7MiIgodrFvIpIGAyWiMNx2223o7e3FrFmzoFAocN999+H//b//B6B/msKTTz6JH//4x2hpaUF6ejrmzp170o4IALRaLQ4ePIhXXnkFFosFubm5uPfee/GDH/wAAHD11Vfjueeew9NPP437778fpaWlWL58ORYtWjTsNqtUKjz88MOor6+HRqPBggUL8Oabb4b1OhARUexg30QkDZkQxxLrE9GILFq0CGeffTaeffbZaDeFiIgIAPsmIilxjRIREREREdEgDJSIiIiIiIgG4dQ7IiIiIiKiQTiiRERERERENAgDJSIiIiIiokEYKBEREREREQ3CQImIiIiIiGgQBkpERERERESDMFAiIiIiIiIahIESERERERHRIAyUiIiIiIiIBvn/HOYPW3LUhkcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10, 3))\n", + "\n", + "bmb.interpret.plot_predictions(\n", + " zip_model,\n", + " zip_idata,\n", + " covariates=\"persons\",\n", + " ax=ax[0]\n", + ")\n", + "ax[0].set_ylabel(\"mu (fish count)\")\n", + "ax[0].set_title(\"$\\\\mu$ as a function of persons\")\n", + "\n", + "bmb.interpret.plot_predictions(\n", + " zip_model,\n", + " zip_idata,\n", + " covariates=\"persons\",\n", + " target=\"psi\",\n", + " ax=ax[1]\n", + ")\n", + "ax[1].set_title(\"$\\\\psi$ as a function of persons\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Interpreting the left plot (the $\\mu$ parameter) as the number of people in a group fishing increases, so does the number of fish caught. The right plot (the $\\psi$ parameter) shows that as the number of people in a group fishing increases, the probability of the Poisson process increases. One interpretation of this is that as the number of people in a group increases, the probability of catching no fish decreases." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Posterior predictive distribution\n", + "\n", + "Lastly, lets plot the posterior predictive distribution against the observed data to see how well the model fits the data. To plot the samples, a utility function is defined below to assist in the plotting of discrete values." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def adjust_lightness(color, amount=0.5):\n", + " import matplotlib.colors as mc\n", + " import colorsys\n", + " try:\n", + " c = mc.cnames[color]\n", + " except:\n", + " c = color\n", + " c = colorsys.rgb_to_hls(*mc.to_rgb(c))\n", + " return colorsys.hls_to_rgb(c[0], c[1] * amount, c[2])\n", + "\n", + "def plot_ppc_discrete(idata, bins, ax):\n", + " \n", + " def add_discrete_bands(x, lower, upper, ax, **kwargs):\n", + " for i, (l, u) in enumerate(zip(lower, upper)):\n", + " s = slice(i, i + 2)\n", + " ax.fill_between(x[s], [l, l], [u, u], **kwargs)\n", + "\n", + " var_name = list(idata.observed_data.data_vars)[0]\n", + " y_obs = idata.observed_data[var_name].to_numpy()\n", + " \n", + " counts_list = []\n", + " for draw_values in az.extract(idata, \"posterior_predictive\")[var_name].to_numpy().T:\n", + " counts, _ = np.histogram(draw_values, bins=bins)\n", + " counts_list.append(counts)\n", + " counts_arr = np.stack(counts_list)\n", + "\n", + " qts_90 = np.quantile(counts_arr, (0.05, 0.95), axis=0)\n", + " qts_70 = np.quantile(counts_arr, (0.15, 0.85), axis=0)\n", + " qts_50 = np.quantile(counts_arr, (0.25, 0.75), axis=0)\n", + " qts_30 = np.quantile(counts_arr, (0.35, 0.65), axis=0)\n", + " median = np.quantile(counts_arr, 0.5, axis=0)\n", + "\n", + " colors = [adjust_lightness(\"C0\", x) for x in [1.8, 1.6, 1.4, 1.2, 0.9]]\n", + "\n", + " add_discrete_bands(bins, qts_90[0], qts_90[1], ax=ax, color=colors[0])\n", + " add_discrete_bands(bins, qts_70[0], qts_70[1], ax=ax, color=colors[1])\n", + " add_discrete_bands(bins, qts_50[0], qts_50[1], ax=ax, color=colors[2])\n", + " add_discrete_bands(bins, qts_30[0], qts_30[1], ax=ax, color=colors[3])\n", + "\n", + " \n", + " ax.step(bins[:-1], median, color=colors[4], lw=2, where=\"post\")\n", + " ax.hist(y_obs, bins=bins, histtype=\"step\", lw=2, color=\"black\", align=\"mid\")\n", + " handles = [\n", + " Line2D([], [], label=\"Observed data\", color=\"black\", lw=2),\n", + " Line2D([], [], label=\"Posterior predictive median\", color=colors[4], lw=2)\n", + " ]\n", + " ax.legend(handles=handles)\n", + " return ax" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAE6CAYAAACmtH4VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABdS0lEQVR4nO3dd1gUV9sG8HtpSxGWzrJSxIYNK/ao2MUeNdZEicaYxKhEjbHEiCX2lphYkigYe4r62aLBHlsiqLHGoIIVxIKAoJTd8/1BmNel7iKwq9y/65or2Zlzzjwze4SHc6bIhBACRERERGR0TAwdABERERHljYkaERERkZFiokZERERkpJioERERERkpJmpERERERoqJGhEREZGRYqJGREREZKSYqBEREREZKSZqREREREaKiRqVKplMVugSEhKiVf7jjz+WPsfExGiVNTExgZOTEzp37oyTJ08a4Ij0ExISAplMVqS6QUFBqFChQrHGc/jwYa3zaWpqCjc3N7z11lu4cuVKse4r2+zZs7F9+/YSaTu7f4SFhZVI+3nty5B9Ma8+kfPfkC7u3buHkJAQnDt3Lte2l+mzLyMsLEzr/FpaWkKpVKJ169aYM2cO4uPjiyXW1NRUhISE4PDhw3rVy2tfFSpUQNeuXfVqpzAbN27E0qVL89xWlO+aXj1mhg6Aypb8foFlZmZi8ODBuHv3Ljp37lxoO6NGjcLAgQOhVqtx6dIlTJ8+Ha1bt8bJkydRr1694g77tTd79my0bt0a6enpiIiIwIwZM3DgwAFcuHAB5cuXL/Z99enTBz179izWdgHA3d0dJ0+eRKVKlYq97fwYW188efIkPDw89Kpz7949TJ8+HRUqVEDdunW1tr333nvo1KlTMUaon9DQUFSrVg0ZGRmIj4/HsWPHMG/ePCxcuBBbtmxBu3btXirW1NRUTJ8+HQAQEBCgc73SOi8bN27ExYsXERwcnGtbUb5revUwUaNS1aRJkzzXjx49GtHR0Vi1ahUaNWpUaDteXl5SW82bN0flypXRtm1bLF++HN9//32xxlwWVKlSRTqfLVu2hL29PYYNG4awsDBMmTLFwNEVTq1WIzMzE3K5PN8+VhTPnj2DpaVlgaM0RemLurRbVMV5/ADg4eFh0GSgVq1a8Pf3lz737t0bn3zyCd544w306tULUVFRcHNzA1A6saampsLa2trg5wUo/u+ajBOnPsng1q1bh2XLlmHYsGF4//33i9RG9g+smzdvFlgue2pi165dqFevHqysrFC9enXs2rULQNZ0S/Xq1WFjY4NGjRohIiIiVxs7duxA06ZNYW1tDVtbW7Rv3z7PkcLdu3ejbt26kMvl8PHxwcKFC/OMSQiB5cuXo27durCysoKDgwP69OmDGzdu6Hsaik3O86nRaDB//nxUq1YNcrkcrq6uGDx4MO7cuaNV7+zZs+jatStcXV0hl8uhUqnQpUsXqZxMJkNKSgrWrl0rTWm9OIoRFxeHESNGwMPDAxYWFvDx8cH06dORmZkplcmecpw/fz5mzZoFHx8fyOVyHDp0KN+pz2PHjqFt27awtbWFtbU1mjVrht27d2uVyZ5q+/333zF06FC4uLjA2toaaWlpL3XuCmt3y5YtaNq0KWxsbFCuXDl07NgRZ8+ezdVuWFgYfH19IZfLUb16dfz444957j+v6bC7d+/i/fffh6enJywsLKBSqdCnTx/cv38fhw8fRsOGDQEA7777bq5LEHJO8fXs2RPe3t7QaDS59t24cWPUr19f+lxSfdvLywuLFi1CcnIyVq1aJa3Pazry4MGDCAgIgJOTE6ysrODl5YXevXsjNTUVMTExcHFxAQBMnz5dOvagoCCt9s6cOYM+ffrAwcFBGq0taJp127ZtqF27NiwtLVGxYkV8/fXXWtuz+0RMTIzW+uxLEbKnYQMCArB7927cvHlTaxo4W17f9cWLF9GjRw84ODjA0tISdevWxdq1a/Pcz6ZNmzBlyhSoVCrY2dmhXbt2uHr1av4nngyCiRoZ1NmzZzFixAg0bNgQ3377bZHbuXbtGgBIP3QL8vfff2PSpEn47LPPsHXrVigUCvTq1QvTpk3DDz/8gNmzZ2PDhg1ITExE165d8ezZM6nuxo0b0aNHD9jZ2WHTpk1YvXo1EhISEBAQgGPHjknlDhw4gB49esDW1habN2/GggUL8NNPPyE0NDRXPCNGjEBwcDDatWuH7du3Y/ny5bh06RKaNWuG+/fvF/mcvIyc5/PDDz/EZ599hvbt22PHjh2YOXMm9u7di2bNmuHhw4cAgJSUFLRv3x7379/Ht99+i/DwcCxduhReXl5ITk4GkDVVY2VlJV3HdfLkSSxfvhxAVpLWqFEj7Nu3D1988QV+++03DBs2DHPmzMHw4cNzxfj111/j4MGDWLhwIX777TdUq1Ytz2M5cuQI2rRpg8TERKxevRqbNm2Cra0tunXrhi1btuQqP3ToUJibm2PdunX45ZdfYG5u/lLnrqB2Z8+ejQEDBqBGjRr46aefsG7dOiQnJ6NFixa4fPmyVDcsLAzvvvsuqlevjl9//RWff/45Zs6ciYMHDxYaz927d9GwYUNs27YNY8eOxW+//YalS5dCoVAgISEB9evXl/rl559/Ln0v7733Xp7tDR06FLdu3cq173/++Qd//fUX3n33XWldSfbtzp07w9TUFEePHs23TExMDLp06QILCwusWbMGe/fuxdy5c2FjY4P09HS4u7tj7969AIBhw4ZJxz516lStdnr16oXKlSvj559/xsqVKwuM69y5cwgODsYnn3yCbdu2oVmzZhgzZky+f6gVZPny5WjevDmUSqUUW0HXP169ehXNmjXDpUuX8PXXX2Pr1q2oUaMGgoKCMH/+/FzlJ0+ejJs3b+KHH37Ad999h6ioKHTr1g1qtVrvWKkECSIDefDggfD29hYuLi7i1q1beZYBIEaOHCl9jo6OFgDEvHnzREZGhnj+/LmIjIwUDRs2FADE7t27C9ynt7e3sLKyEnfu3JHWnTt3TgAQ7u7uIiUlRVq/fft2AUDs2LFDCCGEWq0WKpVK+Pn5CbVaLZVLTk4Wrq6uolmzZtK6xo0bC5VKJZ49eyatS0pKEo6OjuLFf3YnT54UAMSiRYu04rx9+7awsrISEyZMkNYNGTJEeHt7F3h8+jp06JAAILZs2SIyMjJEamqqOHr0qKhcubIwNTUVf//9t7hy5YoAID766COtun/++acAICZPniyEECIiIkIAENu3by9wnzY2NmLIkCG51o8YMUKUK1dO3Lx5U2v9woULBQBx6dIlIcT/+kClSpVEenq6VtnsbaGhodK6Jk2aCFdXV5GcnCyty8zMFLVq1RIeHh5Co9EIIYQIDQ0VAMTgwYMLPmk59lVYX8yv3Vu3bgkzMzMxatQorfXJyclCqVSKvn37CiH+1+/q168vxSqEEDExMcLc3DxXnwAgpk2bJn0eOnSoMDc3F5cvX873WE6fPp3rvGWbNm2aVp/NyMgQbm5uYuDAgVrlJkyYICwsLMTDhw+FEPr17bxkn7fTp0/nW8bNzU1Ur14931h/+eUXAUCcO3cu3zYePHiQ65zlbO+LL77Id9uLvL29hUwmy7W/9u3bCzs7O+nnS/axRUdHa5XL/vd46NAhaV2XLl3y/XefM+7+/fsLuVye6+dpYGCgsLa2Fk+ePNHaT+fOnbXK/fTTTwKAOHnyZJ77I8PgiBoZhFqtRv/+/XHnzh1s2bIFnp6eetX/7LPPYG5uDktLSzRo0AC3bt3CqlWrdLoRoW7duloXyFevXh1A1jSDtbV1rvXZU1hXr17FvXv38M4778DE5H//dMqVK4fevXvj1KlTSE1NRUpKCk6fPo1evXrB0tJSKpc9ivOiXbt2QSaT4e2330ZmZqa0KJVK1KlTR+870YQQWu28OGVYkH79+sHc3BzW1tZo2bIl1Go1fvnlF9SuXRuHDh0CAGk6KFujRo1QvXp1HDhwAABQuXJlODg44LPPPsPKlSu1RoR0sWvXLrRu3RoqlUor/sDAQABZI2Mv6t69e6GjXSkpKfjzzz/Rp08flCtXTlpvamqKd955B3fu3Mk11dO7d2+94ta1L+Zsd9++fdJNNC8er6WlJVq1aiV999n9buDAgVrTXt7e3mjWrFmh8f32229o3bq11J9flpmZGd5++21s3boViYmJALL+Pa9btw49evSAk5MTgOLv23kRQhS4vW7durCwsMD777+PtWvXFnnKVZ8+UbNmTdSpU0dr3cCBA5GUlIQzZ84Uaf+6OnjwINq2bZvr52lQUBBSU1NzjcZ1795d63Pt2rUBFH4JCZUu3kxABjFhwgQcOHAACxcuROvWrfWuP2bMGLz99tswMTGBvb09fHx8dL4w29HRUeuzhYVFgeufP38OAHj06BGArDsLc1KpVNBoNEhISIAQAhqNBkqlMle5nOvu378PIYR0MXROFStW1OWQJGvXrtWaegIK/2UGAPPmzUObNm1gamoKZ2dnrR/0hR139g91hUKBI0eO4Msvv8TkyZORkJAAd3d3DB8+HJ9//nmhSdX9+/exc+fOfMtlT7FmyyuenLK/j/xif/H49Gn3Rbr2xZztZk/9ZV8fllP2HwPZ8eXXn3Je55TTgwcPiv2i96FDh2LRokXYvHkzRowYgX379iE2Nlar7xV3384pJSUFjx49gp+fX75lKlWqhP3792P+/PkYOXIkUlJSULFiRYwePRpjxozReV/69ImC/t3n7GvF7dGjR3r19eykOptcLgcArcs9yPCYqFGp27RpExYvXox+/fph3LhxRWrDw8ND606w0pD9Qy02NjbXtnv37sHExAQODg4QQkAmkyEuLi5XuZzrnJ2dIZPJ8Mcff0g/JF+U17qCdOvWDadPn9arDpD1SzO/8/nicef8hX/v3j04OztLn/38/LB582YIIXD+/HmEhYVhxowZsLKywsSJEwuMwdnZGbVr18aXX36Z5/bsXzbZdEnMHRwcYGJiku93lr1ffdt9ka59MWe72fv95Zdf4O3tnW+97POvS3/Ki4uLS66bPl5WjRo10KhRI4SGhmLEiBEIDQ2FSqVChw4dpDLF3bdz2r17N9RqdaGP1GjRogVatGgBtVqNiIgILFu2DMHBwXBzc0P//v112pc+faKg7yn7u8weac95o0rOP0b05eTkpFdfp1cDpz6pVJ0/fx7vvfceatWqhdWrVxs6HL34+vqifPny2Lhxo9YoVUpKCn799VfpTtDsO0a3bt0qjcYBQHJyMnbu3KnVZteuXSGEwN27d+Hv759rKWi0IC9OTk652nhZbdq0AQCsX79ea/3p06dx5coVtG3bNlcdmUyGOnXqYMmSJbC3t9ea8pHL5Xn+xd61a1dcvHgRlSpVyvNc5EzUdGFjY4PGjRtj69atWvvUaDRYv349PDw8ULVqVb3bLQ4dO3aEmZkZrl+/nufxZn93vr6+cHd3x6ZNm7T63c2bN3HixIlC9xMYGIhDhw4VeDdfUUZS3n33Xfz55584duwYdu7ciSFDhsDU1FTaXtx9+0W3bt3C+PHjoVAoMGLECJ3qmJqaonHjxtJNS9l9srhHkS5duoS///5ba93GjRtha2sr3RGb/ZDi8+fPa5XbsWNHrvby+/eSl7Zt2+LgwYNSYpbtxx9/hLW1NR/n8YriiBqVmoSEBPTs2RNpaWn47LPPcOHChTzLubi4lOoDS3VlYmKC+fPnY9CgQejatStGjBiBtLQ0LFiwAE+ePMHcuXOlsjNnzkSnTp3Qvn17jBs3Dmq1GvPmzYONjQ0eP34slWvevDnef/99vPvuu4iIiEDLli1hY2OD2NhYHDt2DH5+fvjwww8NcbgSX19fvP/++1i2bBlMTEwQGBiImJgYTJ06FZ6envjkk08AZF2TtHz5cvTs2RMVK1aEEAJbt27FkydP0L59e6k9Pz8/HD58GDt37oS7uztsbW3h6+uLGTNmIDw8HM2aNcPo0aPh6+uL58+fIyYmBnv27MHKlSuLNIU3Z84ctG/fHq1bt8b48eNhYWGB5cuX4+LFi9i0aZNBnroPZP2ynjFjBqZMmYIbN26gU6dOcHBwwP379/HXX3/BxsYG06dPh4mJCWbOnIn33nsPb775JoYPH44nT54gJCQkz2m2nGbMmIHffvsNLVu2xOTJk+Hn54cnT55g7969GDt2LKpVq4ZKlSrBysoKGzZsQPXq1VGuXDmoVKoCk+MBAwZg7NixGDBgANLS0nJdw1hcffvixYvS9W3x8fH4448/EBoaClNTU2zbtq3AO71XrlyJgwcPokuXLvDy8sLz58+xZs0aAJAelGtrawtvb2/83//9H9q2bQtHR0c4OzsX+S0gKpUK3bt3R0hICNzd3bF+/XqEh4dj3rx50jWwDRs2hK+vL8aPH4/MzEw4ODhg27ZtWneOZ/Pz88PWrVuxYsUKNGjQACYmJvn+ATZt2jTpWs8vvvgCjo6O2LBhA3bv3o358+dDoVAU6ZjIwAxxBwOVTdl3GhW2vHhHIPK563PBggVFisHb21t06dIl1/qc+yloX9u3bxeNGzcWlpaWwsbGRrRt21YcP348V5s7duwQtWvXFhYWFsLLy0vMnTs3zzvFhBBizZo1onHjxsLGxkZYWVmJSpUqicGDB4uIiAipTEne9fnzzz8XWE6tVot58+aJqlWrCnNzc+Hs7Czefvttcfv2banMP//8IwYMGCAqVaokrKyshEKhEI0aNRJhYWFabZ07d040b95cWFtbCwCiVatW0rYHDx6I0aNHCx8fH2Fubi4cHR1FgwYNxJQpU8TTp0+FEAX3gbzu+hRCiD/++EO0adNGOr9NmjQRO3fu1Cqjy12Gee2rsL5YWLvbt28XrVu3FnZ2dkIulwtvb2/Rp08fsX//fq1yP/zwg6hSpYqwsLAQVatWFWvWrMmzTyCPOxhv374thg4dKpRKpTA3NxcqlUr07dtX3L9/XyqzadMmUa1aNWFubq7VRn59VgghBg4cKACI5s2b53v8uvTtvGSft+zFwsJCuLq6ilatWonZs2eL+Pj4XHVyxnry5Enx5ptvCm9vbyGXy4WTk5No1aqVdCd3tv3794t69eoJuVyu9TMou70HDx4Uui8h/vfz5ZdffhE1a9YUFhYWokKFCmLx4sW56v/777+iQ4cOws7OTri4uIhRo0aJ3bt357rr8/Hjx6JPnz7C3t5eyGQyrX3m9V1fuHBBdOvWTSgUCmFhYSHq1KmT699Dfv/u8/v3Q4YlE0KHK42JiIiIqNTxGjUiIiIiI8VEjYiIiMhIMVEjIiIiMlJM1IiIiIiMFBM1IiIiIiPFRI2IiIjISPGBt8h6Svm9e/dga2trsIdfEhERUdkghEBycjJUKpX0Xt/8MFFD1nvQXnwJNREREVFJu337dqFvXGGihqxXiABZJ8zOzs7A0RAREdHrLCkpCZ6enlL+URAmaoA03WlnZ8dEjYiIiEqFLpdb8WYCIiIiIiPFRI2IiIjISDFRIyIiIjJSvEaNiMiIqdVqZGRkGDoMItKTubk5TE1NX7odJmpEREbq6dOnuHPnDoQQhg6FiPQkk8ng4eGBcuXKvVQ7TNSIiIyQWq3GnTt3YG1tDRcXFz6Mm+gVIoTAgwcPcOfOHVSpUuWlRtaYqBERGaGMjAwIIeDi4gIrKytDh0NEenJxcUFMTAwyMjKYqL0qEp6pkaHWbwrD3FQGB6uXn+MmolcTR9KIXk3F9W+XiVopSXimxo/nnhSp7uC69kzWiIiIyiA+nqOU6DuSVlx1iYiI6NXFRI2IiAyiQoUKWLp0qaHDKDZFOZ6goCD07NmzROKh1wMTNSIiKla3b9/GsGHDoFKpYGFhAW9vb4wZMwaPHj0ydGivvJiYGMhkMpw7d87QoVApYaJGRETF5saNG/D398e///6LTZs24dq1a1i5ciUOHDiApk2b4vHjxwaLTa1WQ6PRGGz/REXBRI2IiIrNyJEjYWFhgd9//x2tWrWCl5cXAgMDsX//fty9exdTpkzRKp+cnIyBAweiXLlyUKlUWLZsmdb2kJAQeHl5QS6XQ6VSYfTo0dK29PR0TJgwAeXLl4eNjQ0aN26Mw4cPS9vDwsJgb2+PXbt2oUaNGpDL5fj+++9haWmJJ0+eaO1n9OjRaNWqlfT5xIkTaNmyJaysrODp6YnRo0cjJSVF2h4fH49u3brBysoKPj4+2LBhQ6HnRq1WY+zYsbC3t4eTkxMmTJiQ62HGe/fuxRtvvCGV6dq1K65fvy5t9/HxAQDUq1cPMpkMAQEBAIDTp0+jffv2cHZ2hkKhQKtWrXDmzJlCYyLjZ9BE7ejRo+jWrRtUKhVkMhm2b9+utT0oKAgymUxradKkiVaZtLQ0jBo1Cs7OzrCxsUH37t1x586dUjwKIqLS4e/vDw8Pj1Jf/P39dYrv8ePH2LdvHz766KNcz35TKpUYNGgQtmzZopWcLFiwALVr18aZM2cwadIkfPLJJwgPDwcA/PLLL1iyZAlWrVqFqKgobN++HX5+flLdd999F8ePH8fmzZtx/vx5vPXWW+jUqROioqKkMqmpqZgzZw5++OEHXLp0CW+//Tbs7e3x66+/SmXUajV++uknDBo0CABw4cIFdOzYEb169cL58+exZcsWHDt2DB9//LFUJygoCDExMTh48CB++eUXLF++HPHx8QWen0WLFmHNmjVYvXo1jh07hsePH2Pbtm1aZVJSUjB27FicPn0aBw4cgImJCd58801pJPCvv/4CAOzfvx+xsbHYunUrgKyEd8iQIfjjjz9w6tQpVKlSBZ07d0ZycnIh3xoZO4M+niMlJQV16tTBu+++i969e+dZplOnTggNDZU+W1hYaG0PDg7Gzp07sXnzZjg5OWHcuHHo2rUrIiMji+UdW8UpXS2g0fNVMCZ8hhIR/ScuLg537941dBj5ioqKghAC1atXz3N79erVkZCQgAcPHsDV1RUA0Lx5c0ycOBEAULVqVRw/fhxLlixB+/btcevWLSiVSrRr1w7m5ubw8vJCo0aNAADXr1/Hpk2bcOfOHahUKgDA+PHjsXfvXoSGhmL27NkAsh4cvHz5ctSpU0eKo1+/fti4cSOGDRsGADhw4AASEhLw1ltvAchKHgcOHIjg4GAAQJUqVfD111+jVatWWLFiBW7duoXffvsNp06dQuPGjQEAq1evzve4sy1duhSTJk2Sft+tXLkS+/bt0yqT83fh6tWr4erqisuXL6NWrVpwcXEBADg5OUGpVErl2rRpo1Vv1apVcHBwwJEjR9C1a9cC4yLjZtBELTAwEIGBgQWWkcvlWp3xRYmJiVi9ejXWrVuHdu3aAQDWr18PT09P7N+/Hx07diz2mIvqUWombiUW7cXKj1Iz4VqOj7wjKuvy+1n4quw3eyTtxQeBNm3aVKtM06ZNpTsn33rrLSxduhQVK1ZEp06d0LlzZ3Tr1g1mZmY4c+YMhBCoWrWqVv20tDQ4OTlJny0sLFC7dm2tMoMGDULTpk1x7949qFQqbNiwAZ07d4aDgwMAIDIyEteuXdOazhRCQKPRIDo6Gv/++y/MzMy0RhqrVasGe3v7fI89MTERsbGxWseb3caLI4zXr1/H1KlTcerUKTx8+FAaSbt16xZq1aqVb/vx8fH44osvcPDgQdy/fx9qtRqpqam4detWvnXo1WD0v/0PHz4MV1dX2Nvbo1WrVvjyyy+lv8QiIyORkZGBDh06SOVVKhVq1aqFEydO5JuopaWlIS0tTfqclJRUsgeBrNE0Q9QlotdHRESEoUMoUOXKlSGTyXD58uU8Hznxzz//wMHBAc7OzgW2k53IeXp64urVqwgPD8f+/fvx0UcfYcGCBThy5Ag0Gg1MTU3znD158SXYVlZWuZ4Q36hRI1SqVAmbN2/Ghx9+iG3btmnN3Gg0GowYMULrerhsXl5euHr1qlacxalbt27w9PTE999/D5VKBY1Gg1q1aiE9Pb3AekFBQXjw4AGWLl0Kb29vyOVyNG3atNB6ZPyMOlELDAzEW2+9BW9vb0RHR2Pq1Klo06YNIiMjIZfLERcXBwsLC+mvoGxubm6Ii4vLt905c+Zg+vTpJR0+EVGZ4uTkhPbt22P58uX45JNPtK5Ti4uLw4YNGzB48GCtBOfUqVNabZw6dQrVqlWTPltZWaF79+7o3r07Ro4ciWrVquHChQuoV68e1Go14uPj0aJFC71jHThwIDZs2AAPDw+YmJigS5cu0rb69evj0qVLqFy5cp51q1evjszMTEREREhTsVevXs11g8KLFAoF3N3dcerUKbRs2RIAkJmZicjISNSvXx8A8OjRI1y5cgWrVq2SjunYsWNa7WRf/qNWq7XW//HHH1i+fDk6d+4MIOsRKQ8fPtT1dJARM+pErV+/ftL/16pVC/7+/vD29sbu3bvRq1evfOsJIQr8S2fSpEkYO3as9DkpKQmenp7FE3QB0tUaaPQcHDPhJWpE9Ar55ptv0KxZM3Ts2BGzZs2Cj48PLl26hE8//RTly5fHl19+qVX++PHjmD9/Pnr27Inw8HD8/PPP2L17N4CsuzbVajUaN24Ma2trrFu3DlZWVvD29oaTkxMGDRqEwYMHY9GiRahXrx4ePnyIgwcPws/PT0pY8jNo0CBMnz4dX375Jfr06QNLS0tp22effYYmTZpg5MiRGD58OGxsbHDlyhWEh4dj2bJl8PX1RadOnTB8+HB89913MDMzQ3BwcK4bKHIaM2YM5s6diypVqqB69epYvHixVnLn4OAAJycnfPfdd3B3d8etW7ek6/eyubq6wsrKCnv37oWHhwcsLS2hUChQuXJlrFu3Dv7+/khKSsKnn35aaDz0anilHs/h7u4Ob29v6Y4epVKJ9PR0JCQkaJWLj4+Hm5tbvu3I5XLY2dlpLSXtYUombj3JwJ1E/ZZbTzLwMCWzxOMjIioOVapUQUREBCpVqoR+/fqhUqVKeP/999G6dWucPHkSjo6OWuXHjRuHyMhI1KtXDzNnzsSiRYuky1bs7e3x/fffo3nz5qhduzYOHDiAnTt3SteghYaGYvDgwRg3bhx8fX3RvXt3/Pnnnzr94V2lShU0bNgQ58+fl+72zFa7dm0cOXIEUVFRaNGiBerVq4epU6fC3d1dKhMaGgpPT0+0atUKvXr1wvvvvy9dlpOfcePGYfDgwQgKCkLTpk1ha2uLN998U9puYmKCzZs3IzIyErVq1cInn3yCBQsWaLVhZmaGr7/+GqtWrYJKpUKPHj0AAGvWrEFCQgLq1auHd955B6NHjy40Hno1yETOh7gYiEwmw7Zt2wp8lcajR49Qvnx5fPfddxg8eDASExPh4uKC9evXo2/fvgCA2NhYeHh4YM+ePTrfTJCUlASFQoHExMQSS9r2XE3Csj+L9qDHUY0d0dm35JNJIjIez58/R3R0NHx8fLRGe4jo1VDQv2F98g6DTn0+ffoU165dkz5HR0fj3LlzcHR0hKOjI0JCQtC7d2+4u7sjJiYGkydPhrOzs/QXiEKhwLBhwzBu3Dg4OTnB0dER48ePh5+fn3QXKBEREdGryqCJWkREBFq3bi19zr5ubMiQIVixYgUuXLiAH3/8EU+ePIG7uztat26NLVu2wNbWVqqzZMkSmJmZoW/fvnj27Bnatm2LsLAwo3uGGhEREZG+DJqoBQQE5Hp9xotyPggwL5aWlli2bFmu144Yo3S1BvpONPN5t0RERGWXUd/1+Tp5kJKJ20V84O0D3kxARERUJr1Sd32+yp5nFv2ejZepS0RERK8uJmpERERERopTn6Vk9pC2uBeb/9sSCqzrrsSIK+eKNyAiIiIyekzUSkns3TvITH5UpLqPTTn1SUREVBYxUSsl0t2tMhlMre11qqNOfQIIgbQM3kxARERUFjFRKyXZ7x41tXaA+7BvdaoTu/ojqFMS9H6kBxERFS4sLAzBwcEFvkz9VfHi231iYmLg4+ODs2fPom7dukVqrzjaMCY5j+fw4cNo3bo1EhISYG9vb+jwCsSbCUqJjaUFAEBmZg4rn3o6LQAfokZEr5agoCDIZDLIZDKYm5ujYsWKGD9+PFJSUl667ZiYGMhkMpw7d+7lAwXQr18//Pvvv8XSljHx9PREbGwsatWqpVP5oKCgXK9v1LeNV02zZs0QGxsLhUJh6FAKxRE1IiIqVp06dUJoaCgyMjLwxx9/4L333kNKSgpWrFhh6NAkGRkZsLKygpWV1Uu3Y25uXmwxFUdbpqamUCqVBm/DmFlYWLwyx8cRtVLCNwwQUVkhl8uhVCrh6emJgQMHYtCgQdi+fTsAIC0tDaNHj4arqyssLS3xxhtv4PTp01LdhIQEDBo0CC4uLrCyskKVKlUQGhoKAPDx8QEA1KtXDzKZDAEBAVK90NBQVK9eHZaWlqhWrRqWL18ubcseifvpp58QEBAAS0tLrF+/HmFhYbmmvVasWIFKlSrBwsICvr6+WLdundZ2mUyGlStXokePHrCxscGsWbPyPAcVKlTAzJkzMXDgQJQrVw4qlSrXG3Tya2vnzp1o0KABLC0tUbFiRUyfPh2Zmf+7VjkqKgotW7aEpaUlatSogfDwcK128xp5vHTpErp06QI7OzvY2tqiRYsWuH79OkJCQrB27Vr83//9nzQSevjwYa02NBoNPDw8sHLlSq39nDlzBjKZDDdu3AAAJCYm4v3334erqyvs7OzQpk0b/P3333men5zfS4sWLWBlZYWGDRvi33//xenTp+Hv749y5cqhU6dOePDggVbdgr5vAPjrr79Qr149WFpawt/fH2fPntXafvjwYchkMmna+9GjRxgwYAA8PDxgbW0NPz8/bNq0SatOQEAARo8ejQkTJsDR0RFKpRIhISH5Hl9x4YhaKTHJvkbNRAYPO93+YrrB5I6IXtB53m48SH5e6vt1sbXEns+6FLm+lZUVMjKy3swyYcIE/Prrr1i7di28vb0xf/58dOzYEdeuXYOjoyOmTp2Ky5cv47fffoOzszOuXbuGZ8+eAcj65duoUSPs378fNWvWhIVF1iUl33//PaZNm4ZvvvkG9erVw9mzZzF8+HDY2NhgyJAhUhyfffYZFi1ahNDQUMjlcvz+++9acW7btg1jxozB0qVL0a5dO+zatQvvvvsuPDw8tN5LPW3aNMyZMwdLliwp8L3SCxYswOTJkxESEoJ9+/bhk08+QbVq1dC+fft829q3bx/efvttfP3111Iy9f7770tlNRoNevXqBWdnZ5w6dQpJSUkIDg4u8PzfvXsXLVu2REBAAA4ePAg7OzscP34cmZmZGD9+PK5cuYKkpCQpIXZ0dMS9e/ek+iYmJujfvz82bNiADz74QFq/ceNGNG3aFBUrVoQQAl26dIGjoyP27NkDhUKBVatWoW3btvj333/h6OiYb3zTpk3D0qVL4eXlhaFDh2LAgAGws7PDV199BWtra/Tt2xdffPGFNCJb2PedkpKCrl27ok2bNli/fj2io6MxZsyYAs/R8+fP0aBBA3z22Wews7PD7t278c4776BixYpo3LixVG7t2rUYO3Ys/vzzT5w8eRJBQUFo3ry51nda3JioGYDcjAOZRKS/B8nPEfck1dBh6OWvv/7Cxo0b0bZtW2n6MywsDIGBgQCyfumGh4dj9erV+PTTT3Hr1i3Uq1cP/v7+ALJGprK5uLgAAJycnLSmrWbOnIlFixahV69eALJG3i5fvoxVq1ZpJWrBwcFSmbwsXLgQQUFB+OijjwAAY8eOxalTp7Bw4UKtRG3gwIEYOnRoocfevHlzTJw4EQBQtWpVHD9+HEuWLNH6pZ6zrXfeeQcTJ06U4q5YsSJmzpyJCRMmYNq0adi/fz+uXLmCmJgYeHh4AABmz54tnc+8fPvtt1AoFNi8ebM0tVq1alVpu5WVFdLS0gqcChw0aBAWL16MmzdvwtvbGxqNBps3b8bkyZMBAIcOHcKFCxcQHx8PuVwunc/t27fjl19+kZLNvIwfPx4dO3YEAIwZMwYDBgzAgQMH0Lx5cwDAsGHDEBYWJpUv7PvesGED1Go11qxZA2tra9SsWRN37tzBhx9+mG8M5cuXx/jx46XPo0aNwt69e/Hzzz9rJWq1a9fGtGnTAABVqlTBN998gwMHDjBRIyKirJGtV2G/u3btQrly5ZCZmYmMjAz06NEDy5Ytw/Xr15GRkSH9AgYAc3NzNGrUCFeuXAEAfPjhh+jduzfOnDmDDh06oGfPnmjWrFm++3rw4AFu376NYcOGYfjw4dL6zMzMXBeKZyd/+bly5UquhKJ58+b46quv9GonW9OmTXN9Xrp0aYFtRUZG4vTp0/jyyy+ldWq1Gs+fP0dqaiquXLkCLy8vKUnLaz85nTt3Di1atHip69/q1auHatWqYdOmTZg4cSKOHDmC+Ph49O3bV4r76dOncHJy0qr37NkzXL9+vcC2a9euLf2/m5sbAMDPz09rXXx8PADdvu8rV66gTp06sLa2lrYXdo7UajXmzp2LLVu24O7du0hLS0NaWhpsbGzyjRUA3N3dpdhKChM1IqJXxMtMP5am1q1bY8WKFTA3N4dKpZIShNjYWAD/e1xRNiGEtC4wMBA3b97E7t27sX//frRt2xYjR47EwoUL89yXRqMBkDUy9+LIB4Bc05I5f+nmpaDY9GlH1/ZztqXRaDB9+vQ8R/4sLS3/90zOAtrM6WVvmMg2aNAgbNy4ERMnTsTGjRvRsWNHODs7S3G7u7vj8OHDueoV9viLFxPI7GPJuS77e9bl+87rHBVm0aJFWLJkCZYuXQo/Pz/Y2NggODgY6enp+caaM7aSwjm4UsLLzYiorLCxsUHlypXh7e2t9YutcuXKsLCwwLFjx6R1GRkZiIiIQPXq1aV1Li4uCAoKwvr167F06VJ89913ACBdk6ZWq6Wybm5uKF++PG7cuIHKlStrLdk3H+iqevXqWrEBwIkTJ7Ri08epU6dyfa5WrVqBderXr4+rV6/mOpbKlSvDxMQENWrUwK1bt7SuITt58mSBbdauXRt//PGHdJ1gThYWFlrnND8DBw7EhQsXEBkZiV9++QWDBg3SijsuLg5mZma54s5O5oqDLt93jRo18Pfff0vXNgK5v4uc/vjjD/To0QNvv/026tSpg4oVKyIqKqrY4n4ZHFErJSb/pcSmJoCHQr/hZ94xSkSvAxsbG3z44Yf49NNP4ejoCC8vL8yfPx+pqakYNmwYAOCLL75AgwYNULNmTaSlpWHXrl1SouTq6gorKyvs3bsXHh4esLS0hEKhQEhICEaPHg07OzsEBgYiLS0NERERSEhIwNixY3WO79NPP0Xfvn1Rv359tG3bFjt37sTWrVuxf//+Ih3v8ePHMX/+fPTs2RPh4eH4+eefsXv37gLrfPHFF+jatSs8PT3x1ltvwcTEBOfPn8eFCxcwa9YstGvXDr6+vhg8eDAWLVqEpKQkTJkypcA2P/74Yyxbtgz9+/fHpEmToFAocOrUKTRq1Ai+vr6oUKEC9u3bh6tXr8LJySnfZ4v5+PigWbNmGDZsGDIzM9GjRw9pW7t27dC0aVP07NkT8+bNg6+vL+7du4c9e/agZ8+eOk8X66Kw73vgwIGYMmUKhg0bhs8//xwxMTH5jshmq1y5Mn799VecOHECDg4OWLx4MeLi4oqcpBcnjqiVMhlksDQz0WkhInrdzJ07F71798Y777yD+vXr49q1a9i3bx8cHBwAZI3uTJo0CbVr10bLli1hamqKzZs3AwDMzMzw9ddfY9WqVVCpVFKi8N577+GHH35AWFgY/Pz80KpVK4SFhek9otazZ0989dVXWLBgAWrWrIlVq1YhNDRU6zEg+hg3bhwiIyNRr1496QL47Ivm89OxY0fs2rUL4eHhaNiwIZo0aYLFixfD29sbQNYdmNu2bUNaWhoaNWqE9957T+t6trw4OTnh4MGDePr0KVq1aoUGDRrg+++/l0Y7hw8fDl9fX/j7+8PFxQXHjx/Pt61Bgwbh77//Rq9evbSmVGUyGfbs2YOWLVti6NChqFq1Kvr374+YmBjpurPiUtj3Xa5cOezcuROXL19GvXr1MGXKFMybN6/ANqdOnYr69eujY8eOCAgIgFKpzPUQYEORiaJM5r5mkpKSoFAokJiYCDs7uxLZh5uqPOJj78HGyR3vro3Uqc6K/rWgfvoY5raOSE8q2gvdiejV9Pz5c0RHR8PHxweWloa5iYCKrkKFCggODi700Rn0+iro37A+eQeHbUoJZy+JiIhIX7xGrZT874G3gIedbqedyR0REVHZxkStlMkAXn9GRPSai4mJMXQI9JpgxkBERERkpJioEREZMd7vRfRqKq5/u0zUiIiMUPZT1nM+GZ2IXg3Z/3ZzviFDXwa9Ru3o0aNYsGABIiMjERsbi23btknPLcnIyMDnn3+OPXv24MaNG1AoFGjXrh3mzp0LlUoltREQEIAjR45otduvXz/puTtERK8iMzMzWFtb48GDBzA3N4eJCf+uJnpVaDQaPHjwANbW1jAze7lUy6CJWkpKCurUqYN3330XvXv31tqWmpqKM2fOYOrUqahTpw4SEhIQHByM7t27IyIiQqvs8OHDMWPGDOlzcb3XjIjIUGQyGdzd3REdHY2bN28aOhwi0pOJiQm8vLwKfRdrYQyaqAUGBiIwMDDPbQqFAuHh4Vrrli1bhkaNGuHWrVvw8vKS1ltbW0OpVJZorEREpc3CwgJVqlTh9CfRK8jCwqJYRsJfqcdzJCYmQiaTwd7eXmv9hg0bsH79eri5uSEwMBDTpk2Dra1tvu2kpaUhLS1N+pyUlFRSIUtM/kuorc1NMMAv7/eo5fQpH6RGVOaZmJjwzQREZdgrk6g9f/4cEydOxMCBA7VetzBo0CD4+PhAqVTi4sWLmDRpEv7+++9co3EvmjNnDqZPn14aYediIgNcy70yp52IiIgM6JXIGDIyMtC/f39oNBosX75ca9vw4cOl/69VqxaqVKkCf39/nDlzBvXr18+zvUmTJmHs2LHS56SkJHh6epZM8ERERERFZPSJWkZGBvr27Yvo6GgcPHiw0JeX1q9fH+bm5oiKiso3UZPL5ZDL5SURLhEREVGxMepELTtJi4qKwqFDh+Dk5FRonUuXLiEjIwPu7u6lECERERFRyTFoovb06VNcu3ZN+hwdHY1z587B0dERKpUKffr0wZkzZ7Br1y6o1WrExcUBABwdHWFhYYHr169jw4YN6Ny5M5ydnXH58mWMGzcO9erVQ/PmzQ11WERERETFwqCJWkREBFq3bi19zr5ubMiQIQgJCcGOHTsAAHXr1tWqd+jQIQQEBMDCwgIHDhzAV199hadPn8LT0xNdunTBtGnTXvpJwERERESGZtBELSAgoMB3YRX2nixPT89cbyUgIiIiel3wnSRERERERoqJGhEREZGRYqJGREREZKSYqBEREREZKSZqREREREaKiRoRERGRkWKiRkRERGSkmKgRERERGSkmakRERERGiokaERERkZFiokZERERkpJioERERERkpJmpERERERoqJGhEREZGRYqJGREREZKSYqBEREREZKSZqREREREaKiRoRERGRkWKiRkRERGSkmKgRERERGSkmakRERERGiokaERERkZFiokZERERkpJioERERERkpgyZqR48eRbdu3aBSqSCTybB9+3at7UIIhISEQKVSwcrKCgEBAbh06ZJWmbS0NIwaNQrOzs6wsbFB9+7dcefOnVI8CiIiIqKSYdBELSUlBXXq1ME333yT5/b58+dj8eLF+Oabb3D69GkolUq0b98eycnJUpng4GBs27YNmzdvxrFjx/D06VN07doVarW6tA6DiIiIqESYGXLngYGBCAwMzHObEAJLly7FlClT0KtXLwDA2rVr4ebmho0bN2LEiBFITEzE6tWrsW7dOrRr1w4AsH79enh6emL//v3o2LFjqR0LERERUXEz2mvUoqOjERcXhw4dOkjr5HI5WrVqhRMnTgAAIiMjkZGRoVVGpVKhVq1aUpm8pKWl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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "zip_pps = zip_model.predict(idata=zip_idata, kind=\"pps\", inplace=False)\n", + "\n", + "bins = np.arange(39)\n", + "fig, ax = plt.subplots(figsize=(7, 3))\n", + "ax = plot_ppc_discrete(zip_pps, bins, ax)\n", + "ax.set_xlabel(\"Number of Fish Caught\")\n", + "ax.set_ylabel(\"Count\")\n", + "ax.set_title(\"ZIP model - Posterior Predictive Distribution\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model captures the number of zeros accurately. However, the model seems to slightly underestimate the counts 1 and 2. Nonetheless, the plot shows that the model captures the overall distribution of counts reasonably well." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Hurdle poisson\n", + "\n", + "Both ZIP and hurdle models both use two processes to generate data. The two models differ in their conceptualization of how the zeros are generated. In $\\text{ZIPoisson}$, the zeroes can come from any of the processes, while in the hurdle Poisson they come only from one of the processes. Thus, a hurdle model assumes zero and positive values are generated from two independent processes. In the hurdle model, there are two components: (1) a \"structural\" process such as a binary model for modeling whether the response variable is zero or not, and (2) a process using a truncated model such as a truncated Poisson for modeling the counts. The result of these two components is a distribution that can be described as\n", + "\n", + "$$P(Y=0) = 1 - \\psi$$\n", + "\n", + "$$P(Y=y_i) = \\psi \\frac{e^{-\\mu_i}\\mu_{i}^{y_i} / y_i!}{1 - e^{-\\mu_i}} \\ \\text{for} \\ y_i = 1, 2, 3,...,n$$\n", + "\n", + "where $y_i$ is the outcome, $\\mu$ is the mean of the Poisson process where $\\mu \\ge 0$, and $\\psi$ is the probability of the Poisson process where $0 \\lt \\psi \\lt 1$. The numerator of the second equation is the Poisson probability mass function, and the denominator is one minus the Poisson cumulative distribution function. This is a lot to digest. Again, let's simulate some data to understand how data is generated from this process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.arange(0, 22)\n", + "psis = [0.7, 0.4]\n", + "mus = [10, 4]\n", + "\n", + "plt.figure(figsize=(7, 3))\n", + "for psi, mu in zip(psis, mus):\n", + " pmf = stats.poisson.pmf(x, mu) # pmf evaluated at x given mu\n", + " cdf = stats.poisson.cdf(0, mu) # cdf evaluated at 0 given mu\n", + " pmf[0] = 1 - psi # 1.) generate zeros\n", + " pmf[1:] = (psi * pmf[1:]) / (1 - cdf) # 2.) generate counts\n", + " pmf /= pmf.sum() # normalize to get probabilities\n", + " plt.plot(x, pmf, '-o', label='$\\\\psi$ = {}, $\\\\mu$ = {}'.format(psi, mu))\n", + "\n", + "plt.title(\"Hurdle Poisson Process\")\n", + "plt.xlabel('x', fontsize=12)\n", + "plt.ylabel('f(x)', fontsize=12)\n", + "plt.legend(loc=1)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The differences between the ZIP and hurdle models are subtle. Notice how in the code for the hurdle Poisson process, the zero counts are generate by `(1 - psi)` versus `(1 - psi) + pmf[0]` for the ZIP process. Additionally, the positive observations are generated by the process `(psi * pmf[1:]) / (1 - cdf)` where the numerator is a vector of probabilities for positive counts scaled by $\\psi$ and the denominator uses the Poisson cumulative distribution function to evaluate the probability a count is greater than 0." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hurdle regression model\n", + "\n", + "To add predictors in the hurdle model, we follow the same specification as in the _ZIP regression model_ section since both models have the same structure. The only difference is that the hurdle model uses a truncated Poisson distribution instead of a ZIP distribution. Right away, we will model both the parent and non-parent parameter as a function of the predictors." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Auto-assigning NUTS sampler...\n", + "Initializing NUTS using jitter+adapt_diag...\n", + "Multiprocess sampling (4 chains in 4 jobs)\n", + "NUTS: [Intercept, livebait, camper, persons, child, psi_Intercept, psi_livebait, psi_camper, psi_persons, psi_child]\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " 100.00% [8000/8000 00:06<00:00 Sampling 4 chains, 0 divergences]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 6 seconds.\n" + ] + } + ], + "source": [ + "hurdle_formula = bmb.Formula(\n", + " \"count ~ livebait + camper + persons + child\", # parent parameter mu\n", + " \"psi ~ livebait + camper + persons + child\" # non-parent parameter psi\n", + ")\n", + "\n", + "hurdle_model = bmb.Model(\n", + " hurdle_formula, \n", + " fish_data, \n", + " family='hurdle_poisson'\n", + ")\n", + "\n", + "hurdle_idata = hurdle_model.fit(\n", + " draws=1000, \n", + " target_accept=0.95, \n", + " random_seed=1234, \n", + " chains=4\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " Formula: count ~ livebait + camper + persons + child\n", + " psi ~ livebait + camper + persons + child\n", + " Family: hurdle_poisson\n", + " Link: mu = log\n", + " psi = logit\n", + " Observations: 248\n", + " Priors: \n", + " target = mu\n", + " Common-level effects\n", + " Intercept ~ Normal(mu: 0.0, sigma: 9.5283)\n", + " livebait ~ Normal(mu: 0.0, sigma: 7.2685)\n", + " camper ~ Normal(mu: 0.0, sigma: 5.0733)\n", + " persons ~ Normal(mu: 0.0, sigma: 2.2583)\n", + " child ~ Normal(mu: 0.0, sigma: 2.9419)\n", + " target = psi\n", + " Common-level effects\n", + " psi_Intercept ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_livebait ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_camper ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_persons ~ Normal(mu: 0.0, sigma: 1.0)\n", + " psi_child ~ Normal(mu: 0.0, sigma: 1.0)\n", + "------\n", + "* To see a plot of the priors call the .plot_priors() method.\n", + "* To see a summary or plot of the posterior pass the object returned by .fit() to az.summary() or az.plot_trace()" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hurdle_model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "clusterlivebait_dim (1)\n", + "\n", + "livebait_dim (1)\n", + "\n", + "\n", + "clustercamper_dim (1)\n", + "\n", + "camper_dim (1)\n", + "\n", + "\n", + "clusterpsi_livebait_dim (1)\n", + "\n", + "psi_livebait_dim (1)\n", + "\n", + "\n", + "clusterpsi_camper_dim (1)\n", + "\n", + "psi_camper_dim (1)\n", + "\n", + "\n", + "clustercount_obs (248)\n", + "\n", + "count_obs (248)\n", + "\n", + "\n", + "\n", + "persons\n", + "\n", + "persons\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "count\n", + "\n", + "count\n", + "~\n", + "MarginalMixture\n", + "\n", + "\n", + "\n", + "persons->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_Intercept\n", + "\n", + "psi_Intercept\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi\n", + "\n", + "psi\n", + "~\n", + "Deterministic\n", + "\n", + "\n", + "\n", + "psi_Intercept->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Intercept\n", + "\n", + "Intercept\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "Intercept->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_child\n", + "\n", + "psi_child\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_child->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "child\n", + "\n", + "child\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "child->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_persons\n", + "\n", + "psi_persons\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_persons->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "livebait\n", + "\n", + "livebait\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "livebait->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "camper\n", + "\n", + "camper\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "camper->count\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_livebait\n", + "\n", + "psi_livebait\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_livebait->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi_camper\n", + "\n", + "psi_camper\n", + "~\n", + "Normal\n", + "\n", + "\n", + "\n", + "psi_camper->psi\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "psi->count\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hurdle_model.graph()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the same link functions are used for ZIP and Hurdle model, the coefficients can be interpreted in a similar manner." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
meansdhdi_3%hdi_97%mcse_meanmcse_sdess_bulkess_tailr_hat
Intercept-1.6150.363-2.278-0.9150.0060.0053832.02121.01.0
livebait[1.0]1.6610.3291.0312.2730.0050.0044149.01871.01.0
camper[1.0]0.2710.1000.0730.4490.0010.0016843.02934.01.0
persons0.6100.0450.5330.7000.0010.0004848.03196.01.0
child-0.7910.094-0.970-0.6180.0010.0014371.03006.01.0
psi_Intercept-2.7800.583-3.906-1.7150.0080.0064929.03258.01.0
psi_livebait[1.0]0.7640.427-0.0671.5570.0060.0055721.02779.01.0
psi_camper[1.0]0.8490.2980.2831.3780.0040.0035523.02855.01.0
psi_persons1.0400.1830.7191.3960.0030.0023852.03007.01.0
psi_child-2.0030.282-2.555-1.5170.0040.0034021.03183.01.0
\n", + "
" + ], + "text/plain": [ + " mean sd hdi_3% hdi_97% mcse_mean mcse_sd \\\n", + "Intercept -1.615 0.363 -2.278 -0.915 0.006 0.005 \n", + "livebait[1.0] 1.661 0.329 1.031 2.273 0.005 0.004 \n", + "camper[1.0] 0.271 0.100 0.073 0.449 0.001 0.001 \n", + "persons 0.610 0.045 0.533 0.700 0.001 0.000 \n", + "child -0.791 0.094 -0.970 -0.618 0.001 0.001 \n", + "psi_Intercept -2.780 0.583 -3.906 -1.715 0.008 0.006 \n", + "psi_livebait[1.0] 0.764 0.427 -0.067 1.557 0.006 0.005 \n", + "psi_camper[1.0] 0.849 0.298 0.283 1.378 0.004 0.003 \n", + "psi_persons 1.040 0.183 0.719 1.396 0.003 0.002 \n", + "psi_child -2.003 0.282 -2.555 -1.517 0.004 0.003 \n", + "\n", + " ess_bulk ess_tail r_hat \n", + "Intercept 3832.0 2121.0 1.0 \n", + "livebait[1.0] 4149.0 1871.0 1.0 \n", + "camper[1.0] 6843.0 2934.0 1.0 \n", + "persons 4848.0 3196.0 1.0 \n", + "child 4371.0 3006.0 1.0 \n", + "psi_Intercept 4929.0 3258.0 1.0 \n", + "psi_livebait[1.0] 5721.0 2779.0 1.0 \n", + "psi_camper[1.0] 5523.0 2855.0 1.0 \n", + "psi_persons 3852.0 3007.0 1.0 \n", + "psi_child 4021.0 3183.0 1.0 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "az.summary(\n", + " hurdle_idata,\n", + " var_names=[\"Intercept\", \"livebait\", \"camper\", \"persons\", \"child\"], \n", + " filter_vars=\"like\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Posterior predictive samples\n", + "\n", + "As with the ZIP model above, we plot the posterior predictive distribution against the observed data to see how well the model fits the data." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAE6CAYAAACmtH4VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfKUlEQVR4nO3dd1xV9f8H8Ndl3MtG9mWLCxcqhrlScCLukSNNxVVfs8zUTCsDzVw5s0wrBc2ZpeZKw1kOSnCmZqiQC8TBEpRx7+f3h3F+Xua9CNyrvJ6Px3noPefz+Zz3GVzefD5nyIQQAkRERERkcIz0HQARERERFY2JGhEREZGBYqJGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSgmKgRERERGSgmakREREQGiokalUlkZCRkMhliYmKKXN69e3dUr1690uKpXr06QkNDpc+HDx+GTCbD4cOHy20dMpkMMplMYz1PmzlzplQmISGh3NYbGhpa5n0ZFBSEoKCgcosF+P9jnz+ZmJjAw8MDI0aMwK1bt8p1XQCQlZWF8PDwcj2WT6uIc6W0deVPxsbGcHFxQf/+/XHp0qUKXz9Q+JxISEiATCZDZGSkTu1cvHgR4eHhRZ7rz3LOPovw8HCN/WthYQEPDw8EBwdj2bJlyMjIKJdYb9++jfDwcJw5c0anekWtSyaT4e2339apndIsX768yONZ1mNN+sVEjUgH1tbW2LJlS6EvfCEEIiMjYWNjo6fIKl9ERAROnDiBqKgojBkzBhs3bkSbNm2QmZlZruvJysrCjBkzKiyRatq0KU6cOIGmTZtWSPtFmT17Nk6cOIFDhw7hgw8+QFRUFFq3bl0hiW5pXF1dceLECXTr1k2nehcvXsSMGTOKTNSmT5+Obdu2lVOEutu7dy9OnDiBvXv3YsGCBfDy8sKUKVPQoEEDnD17VqNsWWK9ffs2ZsyYoXOiVln7pbhErazHmvSLiRo9F7KysvQdAgCgV69eEEJg06ZNGvMPHjyI+Ph4DBw4UE+RVb6GDRuiRYsWaNeuHcLCwjBlyhTEx8dj+/bt+g5NK7m5ucjLy4ONjQ1atGhRbkm2Nudq7dq10aJFC7Rt2xYTJ07EokWLkJKSUmJPR0X9DCgUCrRo0QJOTk7l1mbNmjXh7+9fbu3p6qWXXpL276BBg/Dtt98iOjoa6enp6NmzJ7Kzsys11vxjp+/9UhHHmioeEzWqFCV1uctkMoSHh0uf84cvTp06hVdffRV2dnaoWbMmgCe/XKdMmQKlUgkLCwu88sor+PPPP7WOIyYmBj179oS9vT3MzMzg7++PH374Qev6tra26NOnD1avXq0xf/Xq1WjdujXq1KlTZL3Vq1ejcePGMDMzg729Pfr06VPkUFdkZCR8fX2hUChQr149rF27tsj2cnJyMGvWLNStWxcKhQJOTk4YMWIE7t69q/W2lLcWLVoAAP79918AwOPHjzFt2jT4+PhALpfD3d0d48aNQ2pqqka9gwcPIigoCA4ODjA3N4eXlxf69euHrKwsJCQkSL9UZsyYUeTwc1xcHAYPHgxnZ2dpv3311Vca68gfcvz+++8xadIkuLu7Q6FQ4MqVK8UOfe7YsQMtW7aEhYUFrK2t0alTJ5w4cUKjTEnn6rPsu5LaFUJg+fLlaNKkCczNzWFnZ4dXX30V165d02hTCIH58+fD29sbZmZmaNq0KX755ZdC6y7uZ/Pvv//Ga6+9BhcXFygUCnh5eWHYsGHIzs5GZGQk+vfvDwBo166ddFzy2yg4xOfv7482bdoUWrdKpYK7uzv69u0rzauoc7tx48b46KOPcP36dWzevFmaX9Rw5JYtW9C8eXPY2trCwsICNWrUwMiRIwE8OZeaNWsGABgxYoS07fnfYaGhobCyssL58+fRuXNnWFtbo0OHDsWuK9/KlStRp04dKBQK1K9fv9Afg/nnREH5lyLk92xWr14dFy5cwJEjR6TY8tdZ3LE+evQoOnToAGtra1hYWKBVq1bYvXt3kes5dOgQxo4dC0dHRzg4OKBv3764fft2kdtE5YOJGj0TlUqFvLy8QpMQ4pnb7tu3L2rVqoUtW7ZgxYoVAIAxY8ZgwYIFGDZsGH7++Wf069cPffv2RUpKSqntHTp0CK1bt0ZqaipWrFiBn3/+GU2aNMHAgQN1umZj1KhRiI6OlhKt1NRUbN26FaNGjSqy/Jw5czBq1Cg0aNAAW7duxdKlS3Hu3Dm0bNkScXFxUrnIyEiMGDEC9erVw08//YSPP/4Yn376KQ4ePKjRnlqtRq9evTB37lwMHjwYu3fvxty5cxEVFYWgoCA8evRI620pT1euXAEAODk5QQiB3r17Y8GCBRg6dCh2796NiRMnYs2aNWjfvr3Uo5GQkIBu3bpBLpdj9erV2Lt3L+bOnQtLS0vk5OTA1dUVe/fuBfBkv584cQInTpzA9OnTATwZfmvWrBn++usvLFy4ELt27UK3bt0wfvx4zJgxo1CM06ZNw/Xr17FixQrs3LkTzs7ORW7Lhg0b0KtXL9jY2GDjxo1YtWoVUlJSEBQUhKNHjxYqX9S5WtZ9V1q7b775JiZMmICOHTti+/btWL58OS5cuIBWrVrhzp07Ut0ZM2bggw8+QKdOnbB9+3aMHTsWY8aMweXLl0uN5+zZs2jWrBmio6Mxc+ZM/PLLL5gzZw6ys7ORk5ODbt26Yfbs2QCAr776SjouxQ2pjRgxAkePHtU43wHg119/xe3btzFixAgAFX9u9+zZEwDw22+/FVvmxIkTGDhwIGrUqIFNmzZh9+7d+OSTT5CXlwfgyVB5REQEAODjjz+Wtn306NFSGzk5OejZsyfat2+Pn3/+uchz8Wk7duzAF198gZkzZ+LHH3+Et7c3XnvtNfz44486b+O2bdtQo0YN+Pv7S7GVNNx65MgRtG/fHmlpaVi1ahU2btwIa2tr9OjRQyOhzTd69GiYmppiw4YNmD9/Pg4fPozXX39d5zhJB4KoDCIiIgSAEidvb2+pfHx8vAAgIiIiCrUFQISFhUmfw8LCBADxySefaJS7dOmSACDee+89jfnr168XAMTw4cOleYcOHRIAxKFDh6R5devWFf7+/iI3N1ejfvfu3YWrq6tQqVQlbjMAMW7cOKFWq4WPj4+YPHmyEEKIr776SlhZWYmMjAzx+eefCwAiPj5eCCFESkqKMDc3F127dtVo6/r160KhUIjBgwcLIYRQqVTCzc1NNG3aVKjVaqlcQkKCMDU11diXGzduFADETz/9pNHmyZMnBQCxfPlyaV5gYKAIDAwscbt0lX/so6OjRW5ursjIyBC7du0STk5OwtraWiQlJYm9e/cKAGL+/PkadTdv3iwAiG+++UYIIcSPP/4oAIgzZ84Uu767d+8WOkfyBQcHCw8PD5GWlqYx/+233xZmZmbiwYMHQoj/Px/atm1bqI2C50r+sfDz89M4JzIyMoSzs7No1aqVNK+4c7U4+evavHmzyM3NFVlZWeK3334TtWrVEsbGxuLs2bMltnvixAkBQCxcuFBj/o0bN4S5ubmYMmWKEOLJeWdmZib69OmjUe7YsWMCgMY5UdTPZvv27UW1atVEcnJysduyZcuWQj9j+YYPH65xzt67d0/I5XLx4YcfapQbMGCAcHFxkX4mdTm3i5K/3+7evVvk8kePHgkAIiQkpNhYFyxYIACI1NTUYteTH09R32fDhw8XAMTq1auLXPb0uoR48r1ibm4ukpKSpHl5eXmibt26olatWoW2raD8n8f87xwhhGjQoEGRP/dFHesWLVoIZ2dnkZGRobH+hg0bCg8PD+n7KH89b731lkab8+fPFwBEYmJiofVR+WCPGj2TtWvX4uTJk4WmV1555Znb7tevn8bnQ4cOAQCGDBmiMX/AgAEwMTEpsa0rV67g77//luo+3fvXtWtXJCYmatXTAEAaevv++++Rl5eHVatWYcCAAbCysipU9sSJE3j06FGhO0U9PT3Rvn17HDhwAABw+fJl3L59G4MHD9YY3vD29karVq006u7atQvVqlVDjx49NLajSZMmUCqVOl90r1arNdpRqVRa1WvRogVMTU1hbW2N7t27Q6lU4pdffoGLi4vUC1hwu/v37w9LS0tpu5s0aQK5XI433ngDa9asKTR8V5LHjx/jwIED6NOnDywsLAod08ePHyM6OlqjTsFzqij5x2Lo0KEwMvr/r0grKyv069cP0dHRha4X06bdpw0cOBCmpqawsLBA27ZtoVKp8OOPP6JRo0Yltrtr1y7IZDK8/vrrGturVCrRuHFj6difOHECjx8/LvSz0qpVK3h7e5cYW1ZWFo4cOYIBAwaU27VMDg4O6NGjB9asWQO1Wg0ASElJwc8//4xhw4ZJP7/lfW4XJLTo6c8f1hwwYAB++OGHMt/gocs50aFDB7i4uEifjY2NMXDgQFy5cgU3b94s0/q1kZmZiT/++AOvvvqqxveXsbExhg4dips3bxb6XszvlcyXf87mD9tT+WOiRs+kXr16CAgIKDTZ2to+c9uurq4an+/fvw8AUCqVGvNNTEzg4OBQYlv5Q0KTJ0+GqampxvTWW28BAO7du6d1bPnXzMyePRunTp0qdtgzP+aC2wIAbm5u0vLitq2oeXfu3EFqairkcnmhbUlKStJpO4AnjxV5ug1tr7HKT9JPnz6N27dv49y5c2jdurW0PSYmJoV+0ctkMiiVSml7a9asif3798PZ2Rnjxo1DzZo1UbNmTSxdurTU9d+/fx95eXlYtmxZof3QtWtXAIWPaVHHoah2iyvr5uYGtVpdaKhdm3afNm/ePJw8eRKnTp3C9evXce3aNfTu3btQuYLt3rlzB0IIuLi4FNrm6OhoaXt1OZ8KSklJgUqlgoeHh07bVJqRI0fi1q1biIqKAgBs3LgR2dnZGsl8eZ/bBeUnE25ubsWWadu2LbZv3468vDwMGzYMHh4eaNiwITZu3Kj1eiwsLHS6OaWk45R/LCtCSkoKhBDFnutFrb/gd61CoQAAvV1yURWU3A1BVE7MzMwAQONuK6DkL6GCF87mf0EkJSXB3d1dmp+Xl1fql5mjoyOAJ9coPX3h8tN8fX1LbONpnp6e6NixI2bMmAFfX99CvV4FY05MTCy07Pbt21JcT29bQQXn5V/Em3/tVkHW1tZabwcAvPHGG+jevbv0Of+LtzT5SXpRHBwckJeXh7t372oka0IIJCUlSb0WANCmTRu0adMGKpUKMTExWLZsGSZMmAAXFxcMGjSo2PXb2dlJf/mPGzeuyDI+Pj4an4u6GLuo2IHij5mRkRHs7Ox0bvdpNWrUKHbfldSuo6MjZDIZfv/99yKPU/680s6nkp4bZm9vD2Nj43LvyQkODoabmxsiIiIQHByMiIgING/eHPXr15fKlPe5XdCOHTsAoNRnC/bq1Qu9evVCdnY2oqOjMWfOHAwePBjVq1dHy5YtS12PrudDST/3+cfy6e/Qp4/9sySvdnZ2MDIyKvZcB/7/u5P0hz1qVClcXFxgZmaGc+fOacz/+eeftW4j/8t1/fr1GvN/+OEH6ULf4vj6+qJ27do4e/ZskT2AAQEBOv8SmDRpEnr06CFd2F6Uli1bwtzcHOvWrdOYf/PmTRw8eFC6G8zX1xeurq7YuHGjxvDMv//+i+PHj2vU7d69O+7fvw+VSlXkduiScAJP/nJ+ur6fn59O9YuSv10Ft/unn35CZmamtPxpxsbGaN68uXTH5qlTpwAU/xe7hYUF2rVrh9OnT6NRo0ZF7ovSelqL4uvrC3d3d2zYsEHjWGRmZuKnn36S7gTVh+7du0MIgVu3bhW5vfnHrkWLFjAzMyv0s3L8+PFSh6jMzc0RGBiILVu2lJgE6NqTkp9Ub9++Hb///jtiYmKkOymf3r7yPLefdvbsWcyePRvVq1fHgAEDtKqjUCgQGBiIefPmAQBOnz4tzQfKrxfpwIEDGjeCqFQqbN68GTVr1pR6NvOT64LfoTt37iwybm1is7S0RPPmzbF161aN8mq1GuvWrYOHh0exd7JT5WGPGlWK/OtqVq9ejZo1a6Jx48b4888/sWHDBq3bqFevHl5//XUsWbIEpqam6NixI/766y8sWLBAq2GGlStXIiQkBMHBwQgNDYW7uzsePHiAS5cu4dSpU9iyZYtO29S5c2d07ty5xDLVqlXD9OnT8eGHH2LYsGF47bXXcP/+fcyYMQNmZmYICwsDABgZGeHTTz/F6NGj0adPH4wZMwapqakIDw8vNCwyaNAgrF+/Hl27dsW7776Ll19+Gaamprh58yYOHTqEXr16oU+fPjptS3nr1KkTgoOD8cEHHyA9PR2tW7fGuXPnEBYWBn9/fwwdOhQAsGLFChw8eBDdunWDl5cXHj9+LD36pGPHjgCe9KJ4e3vj559/RocOHWBvbw9HR0dUr14dS5cuxSuvvII2bdpg7NixqF69OjIyMnDlyhXs3Lmz0B2z2jAyMsL8+fMxZMgQdO/eHW+++Says7Px+eefIzU1FXPnzi2/HaWj1q1b44033sCIESMQExODtm3bwtLSEomJiTh69Cj8/PwwduxY2NnZYfLkyZg1axZGjx6N/v3748aNG0WeT0VZtGgRXnnlFTRv3hxTp05FrVq1cOfOHezYsQMrV66EtbU1GjZsCAD45ptvYG1tDTMzM/j4+JSYHI8cORLz5s3D4MGDYW5uXui5g+V1bsfGxsLW1ha5ubm4ffs2Dhw4gO+//x7Ozs7YuXMn5HJ5sXU/+eQT3Lx5Ex06dICHhwdSU1OxdOlSmJqaIjAwEMCTIXtzc3OsX78e9erVg5WVFdzc3EocUi2Jo6Mj2rdvj+nTp8PS0hLLly/H33//rfGIjq5du8Le3h6jRo3CzJkzYWJigsjISNy4caNQe35+fti0aRM2b96MGjVqwMzMrNg/wObMmYNOnTqhXbt2mDx5MuRyOZYvX46//voLGzdu1Ll3kCqAHm9koOdY/h1AJ0+eLHJ5t27dCt3dlJaWJkaPHi1cXFyEpaWl6NGjh0hISCj2rs+i7tzKzs4WkyZNEs7OzsLMzEy0aNFCnDhxQnh7e5d616cQQpw9e1YMGDBAODs7C1NTU6FUKkX79u3FihUrSt1m/HfXZ0kK3vWZ77vvvhONGjUScrlc2Nrail69eokLFy4Uqv/dd9+J2rVrC7lcLurUqSNWr15d5J1iubm5YsGCBaJx48bCzMxMWFlZibp164o333xTxMXFSeUq8q7P4o59vkePHokPPvhAeHt7C1NTU+Hq6irGjh0rUlJSpDInTpwQffr0Ed7e3kKhUAgHBwcRGBgoduzYodHW/v37hb+/v1AoFIXu8I2PjxcjR44U7u7uwtTUVDg5OYlWrVqJWbNmSWXyz4ctW7YUirO4c2X79u2iefPmwszMTFhaWooOHTqIY8eOaZQp7S7D4tZVVBy6tLt69WrRvHlzYWlpKczNzUXNmjXFsGHDRExMjFRGrVaLOXPmCE9PTyGXy0WjRo3Ezp07C50Txd2RffHiRdG/f3/h4OAg5HK58PLyEqGhoeLx48dSmSVLlggfHx9hbGys0UZR52y+Vq1aCQBiyJAhRS7X9twuab/lTwqFQri6uorOnTuLpUuXivT09EJ1Csa6a9cuERISItzd3YVcLhfOzs6ia9eu4vfff9eot3HjRlG3bl1hamqq8R02fPhwYWlpWWR8xd31OW7cOLF8+XJRs2ZNYWpqKurWrSvWr19fqP6ff/4pWrVqJSwtLYW7u7sICwsT3333XaHvnISEBNG5c2dhbW2tcQd+ccf6999/F+3bt5fOpxYtWoidO3dqlCnu5764nx8qPzIhyuGBV0RERERU7niNGhEREZGBYqJGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSg+MBbPHkK8+3bt2Ftbc2H+xEREVGFEkIgIyMDbm5uMDIquc+MiRqevNPM09NT32EQERFRFXLjxg3pNWHFYaKG/3/R740bN7R6FRERERFRWaWnp8PT01Ord0wzUQOk4U4bGxsmakRERFQptLncijcTEBERERkoJmpEREREBoqJGhEREZGB4jVqREQGTKVSITc3V99hEJGOTE1NYWxs/MztMFEjIjJQDx8+xM2bNyGE0HcoRKQjmUwGDw8PWFlZPVM7TNSIiAyQSqXCzZs3YWFhAScnJz6Mm+g5IoTA3bt3cfPmTdSuXfuZetaYqBERGaDc3FwIIeDk5ARzc3N9h0NEOnJyckJCQgJyc3OZqD0vUh6pkKvSbQjD1FgGO/NnH+MmoucTe9KInk/l9bPLRK2SpDxSYe2Z1DLVHdakGpM1IiKiKoiP56gkuvaklVddIiIien4xUSMiIr2oXr06lixZou8wyk1Ztic0NBS9e/eukHjoxcBEjYiIytWNGzcwatQouLm5QS6Xw9vbG++++y7u37+v79CeewkJCZDJZDhz5oy+Q6FKwkSNiIjKzbVr1xAQEIB//vkHGzduxJUrV7BixQocOHAALVu2xIMHD/QWm0qlglqt1tv6icqCiRoREZWbcePGQS6X49dff0VgYCC8vLwQEhKC/fv349atW/joo480ymdkZGDw4MGwsrKCm5sbli1bprE8PDwcXl5eUCgUcHNzw/jx46VlOTk5mDJlCtzd3WFpaYnmzZvj8OHD0vLIyEhUq1YNu3btQv369aFQKPDtt9/CzMwMqampGusZP348AgMDpc/Hjx9H27ZtYW5uDk9PT4wfPx6ZmZnS8uTkZPTo0QPm5ubw8fHB+vXrS903KpUKEydORLVq1eDg4IApU6YUepjx3r178corr0hlunfvjqtXr0rLfXx8AAD+/v6QyWQICgoCAJw8eRKdOnWCo6MjbG1tERgYiFOnTpUaExk+vSZqv/32G3r06AE3NzfIZDJs375dY3loaChkMpnG1KJFC40y2dnZeOedd+Do6AhLS0v07NkTN2/erMSt0F6OSuBxnlqnKYc3EhDRfwICAuDh4VHpU0BAgFbxPXjwAPv27cNbb71V6NlvSqUSQ4YMwebNmzWSk88//xyNGjXCqVOnMG3aNLz33nuIiooCAPz4449YvHgxVq5cibi4OGzfvh1+fn5S3REjRuDYsWPYtGkTzp07h/79+6NLly6Ii4uTymRlZWHOnDn47rvvcOHCBbz++uuoVq0afvrpJ6mMSqXCDz/8gCFDhgAAzp8/j+DgYPTt2xfnzp3D5s2bcfToUbz99ttSndDQUCQkJODgwYP48ccfsXz5ciQnJ5e4fxYuXIjVq1dj1apVOHr0KB48eIBt27ZplMnMzMTEiRNx8uRJHDhwAEZGRujTp4/UE/jnn38CAPbv34/ExERs3boVwJOEd/jw4fj9998RHR2N2rVro2vXrsjIyCjlqJGh0+vjOTIzM9G4cWOMGDEC/fr1K7JMly5dEBERIX2Wy+UayydMmICdO3di06ZNcHBwwKRJk9C9e3fExsaWyzu2ysv9rDxcTyvb+/ruZ+XB2YpPUiGq6pKSknDr1i19h1GsuLg4CCFQr169IpfXq1cPKSkpuHv3LpydnQEArVu3xtSpUwEAderUwbFjx7B48WJ06tQJ169fh1KpRMeOHWFqagovLy+8/PLLAICrV69i48aNuHnzJtzc3AAAkydPxt69exEREYHZs2cDePLg4OXLl6Nx48ZSHAMHDsSGDRswatQoAMCBAweQkpKC/v37A3iSPA4ePBgTJkwAANSuXRtffPEFAgMD8fXXX+P69ev45ZdfEB0djebNmwMAVq1aVex251uyZAmmTZsm/b5bsWIF9u3bp1Gm4O/CVatWwdnZGRcvXkTDhg3h5OQEAHBwcIBSqZTKtW/fXqPeypUrYWdnhyNHjqB79+4lxkWGTa+//UNCQhASElJiGYVCoXEyPi0tLQ2rVq3C999/j44dOwIA1q1bB09PT+zfvx/BwcHlHnNZPUvPGHvViAhAsd+Fz8t683vSnn4QaMuWLTXKtGzZUrpzsn///liyZAlq1KiBLl26oGvXrujRowdMTExw6tQpCCFQp04djfrZ2dlwcHCQPsvlcjRq1EijzJAhQ9CyZUvcvn0bbm5uWL9+Pbp27Qo7OzsAQGxsLK5cuaIxnCmEgFqtRnx8PP755x+YmJho9DTWrVsX1apVK3bb09LSkJiYqLG9+W083cN49epVTJ8+HdHR0bh3757Uk3b9+nU0bNiw2PaTk5PxySef4ODBg7hz5w5UKhWysrJw/fr1YuvQ88Hgu2kOHz4MZ2dnVKtWDYGBgfjss8+kv8RiY2ORm5uLzp07S+Xd3NzQsGFDHD9+vNhELTs7G9nZ2dLn9PT0it0IIqJyEBMTo+8QSlSrVi3IZDJcvHixyEdO/P3337Czs4Ojo2OJ7eQncp6enrh8+TKioqKwf/9+vPXWW/j8889x5MgRqNVqGBsbFzl68vRLsM3NzQs9If7ll19GzZo1sWnTJowdOxbbtm3TGLlRq9V48803Na6Hy+fl5YXLly9rxFmeevToAU9PT3z77bdwc3ODWq1Gw4YNkZOTU2K90NBQ3L17F0uWLIG3tzcUCgVatmxZaj0yfAadqIWEhKB///7w9vZGfHw8pk+fjvbt2yM2NhYKhQJJSUmQy+XSX0H5XFxckJSUVGy7c+bMwYwZMyo6fCKiKsXBwQGdOnXC8uXL8d5772lcp5aUlIT169dj2LBhGglOdHS0RhvR0dGoW7eu9Nnc3Bw9e/ZEz549MW7cONStWxfnz5+Hv78/VCoVkpOT0aZNG51jHTx4MNavXw8PDw8YGRmhW7du0rKmTZviwoULqFWrVpF169Wrh7y8PMTExEhDsZcvXy50g8LTbG1t4erqiujoaLRt2xYAkJeXh9jYWDRt2hQAcP/+fVy6dAkrV66Utuno0aMa7eRf/qNSqTTm//7771i+fDm6du0K4MkjUu7du6ft7iADZtCJ2sCBA6X/N2zYEAEBAfD29sbu3bvRt2/fYusJIUr8S2fatGmYOHGi9Dk9PR2enp7lE3QJclRqqHUcxTTia/6I6Dny5ZdfolWrVggODsasWbPg4+ODCxcu4P3334e7uzs+++wzjfLHjh3D/Pnz0bt3b0RFRWHLli3YvXs3gCd3bapUKjRv3hwWFhb4/vvvYW5uDm9vbzg4OGDIkCEYNmwYFi5cCH9/f9y7dw8HDx6En5+flLAUZ8iQIZgxYwY+++wzvPrqqzAzM5OWffDBB2jRogXGjRuHMWPGwNLSEpcuXUJUVBSWLVsGX19fdOnSBWPGjME333wDExMTTJgwodANFAW9++67mDt3LmrXro169eph0aJFGsmdnZ0dHBwc8M0338DV1RXXr1+Xrt/L5+zsDHNzc+zduxceHh4wMzODra0tatWqhe+//x4BAQFIT0/H+++/X2o89Hx4rh7P4erqCm9vb+mOHqVSiZycHKSkpGiUS05OhouLS7HtKBQK2NjYaEwV7V5mHq6n5uJmmm7T9dRc3MvMq/D4iIjKQ+3atRETE4OaNWti4MCBqFmzJt544w20a9cOJ06cgL29vUb5SZMmITY2Fv7+/vj000+xcOFC6bKVatWq4dtvv0Xr1q3RqFEjHDhwADt37pSuQYuIiMCwYcMwadIk+Pr6omfPnvjjjz+0+sO7du3aaNasGc6dOyfd7ZmvUaNGOHLkCOLi4tCmTRv4+/tj+vTpcHV1lcpERETA09MTgYGB6Nu3L9544w3pspziTJo0CcOGDUNoaChatmwJa2tr9OnTR1puZGSETZs2ITY2Fg0bNsR7772Hzz//XKMNExMTfPHFF1i5ciXc3NzQq1cvAMDq1auRkpICf39/DB06FOPHjy81Hno+yETBh7joiUwmw7Zt20p8lcb9+/fh7u6Ob775BsOGDUNaWhqcnJywbt06DBgwAACQmJgIDw8P7NmzR+ubCdLT02Fra4u0tLQKS9r2XE7Hsj/K9qDHd5rbo6tvxSeTRGQ4Hj9+jPj4ePj4+Gj09hDR86Gkn2Fd8g69Dn0+fPgQV65ckT7Hx8fjzJkzsLe3h729PcLDw9GvXz+4uroiISEBH374IRwdHaW/QGxtbTFq1ChMmjQJDg4OsLe3x+TJk+Hn5yfdBUpERET0vNJrohYTE4N27dpJn/OvGxs+fDi+/vprnD9/HmvXrkVqaipcXV3Rrl07bN68GdbW1lKdxYsXw8TEBAMGDMCjR4/QoUMHREZGGtQz1IiIiIjKQq+JWlBQUKHXZzyt4IMAi2JmZoZly5YVeu2IIcpRqaHrQHMF3P1NREREzwmDvuvzRXI3Mw83yvhmgru8mYCIiKhKeq7u+nyePc4r+z0bz1KXiIiInl9M1IiIiIgMFIc+K8nE3s2RnZ5SesGCZMAnzkq8efVC+QdFREREBo2JWiXJyUiBKrNsz1FL4Q0FREREVRITtUoivdJKJoOxhV3Jhf+jykoBhND5TlEiIiJ6MTBRqySWZnKkZgAmNs7wCT+iVZ1rH7cqcy8cERGVLDIyEhMmTCjxZerPi6ff7pOQkAAfHx+cPn0aTZo0KVN75dGGISm4PYcPH0a7du2QkpKCatWq6Tu8EvFmAiIiKjehoaGQyWSQyWQwNTVFjRo1MHnyZGRmZj5z2wkJCZDJZDhz5syzBwpg4MCB+Oeff8qlLUPi6emJxMRENGzYUKvyoaGhhV7fqGsbz5tWrVohMTERtra2+g6lVOxRIyKictWlSxdEREQgNzcXv//+O0aPHo3MzEx8/fXX+g5NkpubC3Nzc5ibmz9zO6ampuUWU3m0ZWxsDKVSqfc2DJlcLn9uto89apWEbxggoqpCoVBAqVTC09MTgwcPxpAhQ7B9+3YAQHZ2NsaPHw9nZ2eYmZnhlVdewcmTJ6W6KSkpGDJkCJycnGBubo7atWsjIiICAODj4wMA8Pf3h0wmQ1BQkFQvIiIC9erVg5mZGerWrYvly5dLy/J74n744QcEBQXBzMwM69atQ2RkZKFhr6+//ho1a9aEXC6Hr68vvv/+e43lMpkMK1asQK9evWBpaYlZs2YVuQ+qV6+OTz/9FIMHD4aVlRXc3NwKvUGnuLZ27tyJl156CWZmZqhRowZmzJiBvLz/f/B5XFwc2rZtCzMzM9SvXx9RUVEa7RbV83jhwgV069YNNjY2sLa2Rps2bXD16lWEh4djzZo1+Pnnn6We0MOHD2u0oVar4eHhgRUrVmis59SpU5DJZLh27RoAIC0tDW+88QacnZ1hY2OD9u3b4+zZs0Xun4LHpU2bNjA3N0ezZs3wzz//4OTJkwgICICVlRW6dOmCu3fvatQt6XgDwJ9//gl/f3+YmZkhICAAp0+f1lh++PBhyGQyadj7/v37eO211+Dh4QELCwv4+flh48aNGnWCgoIwfvx4TJkyBfb29lAqlQgPDy92+8oLe9QqidF/mZqxkQweNtr9xXSNyR0RPaXrvN24m/G40tfrZG2GPR90K3N9c3Nz5OY+eTPLlClT8NNPP2HNmjXw9vbG/PnzERwcjCtXrsDe3h7Tp0/HxYsX8csvv8DR0RFXrlzBo0ePADz55fvyyy9j//79aNCgAeRyOQDg22+/RVhYGL788kv4+/vj9OnTGDNmDCwtLTF8+HApjg8++AALFy5EREQEFAoFfv31V404t23bhnfffRdLlixBx44dsWvXLowYMQIeHh4a76UOCwvDnDlzsHjx4hLfK/3555/jww8/RHh4OPbt24f33nsPdevWRadOnYpta9++fXj99dfxxRdfSMnUG2+8IZVVq9Xo27cvHB0dER0djfT0dEyYMKHE/X/r1i20bdsWQUFBOHjwIGxsbHDs2DHk5eVh8uTJuHTpEtLT06WE2N7eHrdv35bqGxkZYdCgQVi/fj3+97//SfM3bNiAli1bokaNGhBCoFu3brC3t8eePXtga2uLlStXokOHDvjnn39gb29fbHxhYWFYsmQJvLy8MHLkSLz22muwsbHB0qVLYWFhgQEDBuCTTz6RemRLO96ZmZno3r072rdvj3Xr1iE+Ph7vvvtuifvo8ePHeOmll/DBBx/AxsYGu3fvxtChQ1GjRg00b95cKrdmzRpMnDgRf/zxB06cOIHQ0FC0bt1a45iWNyZqeqAwYUcmEenubsZjJKVm6TsMnfz555/YsGEDOnToIA1/RkZGIiQkBMCTX7pRUVFYtWoV3n//fVy/fh3+/v4ICAgA8KRnKp+TkxMAwMHBQWPY6tNPP8XChQvRt29fAE963i5evIiVK1dqJGoTJkyQyhRlwYIFCA0NxVtvvQUAmDhxIqKjo7FgwQKNRG3w4MEYOXJkqdveunVrTJ06FQBQp04dHDt2DIsXL9b4pV6wraFDh2Lq1KlS3DVq1MCnn36KKVOmICwsDPv378elS5eQkJAADw8PAMDs2bOl/VmUr776Cra2tti0aZM0tFqnTh1pubm5ObKzs0scChwyZAgWLVqEf//9F97e3lCr1di0aRM+/PBDAMChQ4dw/vx5JCcnQ6FQSPtz+/bt+PHHH6VksyiTJ09GcHAwAODdd9/Fa6+9hgMHDqB169YAgFGjRiEyMlIqX9rxXr9+PVQqFVavXg0LCws0aNAAN2/exNixY4uNwd3dHZMnT5Y+v/POO9i7dy+2bNmikag1atQIYWFhAIDatWvjyy+/xIEDB5iovQjYOUZEz8rJ2uy5WO+uXbtgZWWFvLw85ObmolevXli2bBmuXr2K3Nxc6RcwAJiamuLll1/GpUuXAABjx45Fv379cOrUKXTu3Bm9e/dGq1atil3X3bt3cePGDYwaNQpjxoyR5ufl5RW6UDw/+SvOpUuXCiUUrVu3xtKlS3VqJ1/Lli0LfV6yZEmJbcXGxuLkyZP47LPPpHkqlQqPHz9GVlYWLl26BC8vLylJK2o9BZ05cwZt2rR5puvf/P39UbduXWzcuBFTp07FkSNHkJycjAEDBkhxP3z4EA4ODhr1Hj16hKtXr5bYdqNGjaT/u7i4AAD8/Pw05iUnJwPQ7nhfunQJjRs3hoWFhbS8tH2kUqkwd+5cbN68Gbdu3UJ2djays7NhaWlZbKwA4OrqKsVWUZioVRKj/zrRjI0AD1vdflh4fRsRAXim4cfK1K5dO3z99dcwNTWFm5ublCAkJiYCeOq5kv8RQkjzQkJC8O+//2L37t3Yv38/OnTogHHjxmHBggVFrkutVgN40jP3dM8HgELDkgV/6RalpNh0aUfb9gu2pVarMWPGjCJ7/szMzCCKeLBmwTYLetYbJvINGTIEGzZswNSpU7FhwwYEBwfD0dFRitvV1RWHDx8uVK+0x188nUDmb0vBefnHWZvjXdQ+Ks3ChQuxePFiLFmyBH5+frC0tMSECROQk5NTbKwFY6soTNQqmQwymHHok4heYJaWlqhVq1ah+bVq1YJcLsfRo0cxePBgAE/udIyJidG4zsrJyQmhoaEIDQ1FmzZt8P7772PBggXSNWkqlUoq6+LiAnd3d1y7dg1Dhgx5prjr1auHo0ePYtiwYdK848ePo169emVqLzo6utDnunXrllinadOmuHz5cpH7DwDq16+P69ev4/bt23BzcwMAnDhxosQ2GzVqhDVr1hR7V6lcLtfYp8UZPHgwPv74Y8TGxuLHH3/UuIu3adOmSEpKgomJicZwdXnT5njXr18f33//PR49eiQlqQWPRUG///47evXqhddffx3Ak4QwLi6uzMe+PDFRIyKiSmFpaYmxY8fi/fffh729Pby8vDB//nxkZWVh1KhRAIBPPvkEL730Eho0aIDs7Gzs2rVL+mXp7OwMc3Nz7N27Fx4eHjAzM4OtrS3Cw8Mxfvx42NjYICQkBNnZ2YiJiUFKSgomTpyodXzvv/8+BgwYgKZNm6JDhw7YuXMntm7div3795dpe48dO4b58+ejd+/eiIqKwpYtW7B79+4S63zyySfo3r07PD090b9/fxgZGeHcuXM4f/48Zs2ahY4dO8LX1xfDhg3DwoULkZ6ejo8++qjENt9++20sW7YMgwYNwrRp02Bra4vo6Gi8/PLL8PX1RfXq1bFv3z5cvnwZDg4OxT5bzMfHB61atcKoUaOQl5eHXr16Scs6duyIli1bonfv3pg3bx58fX1x+/Zt7NmzB71799Z6uFgbpR3vwYMH46OPPsKoUaPw8ccfIyEhodge2Xy1atXCTz/9hOPHj8POzg6LFi1CUlKSQSRq7NohIqJKM3fuXPTr1w9Dhw5F06ZNceXKFezbtw92dk9erSeXyzFt2jQ0atQIbdu2hbGxMTZt2gQAMDExwRdffIGVK1fCzc1NShRGjx6N7777DpGRkfDz80NgYCAiIyOlx3loq3fv3li6dCk+//xzNGjQACtXrkRERITGY0B0MWnSJMTGxsLf31+6AD7/ovniBAcHY9euXYiKikKzZs3QokULLFq0CN7e3gCe3IG5bds2ZGdn4+WXX8bo0aM1rmcrioODAw4ePIiHDx8iMDAQL730Er799lupd23MmDHw9fVFQEAAnJyccOzYsWLbGjJkCM6ePYu+fftqDKnKZDLs2bMHbdu2xciRI1GnTh0MGjQICQkJ0nVn5aW0421lZYWdO3fi4sWL8Pf3x0cffYR58+aV2Ob06dPRtGlTBAcHIygoCEqlstBDgPVFJsoymPuCSU9Ph62tLdLS0mBjY1Mh63Bxc0dy4m1YOrhixJpYrep8PaghVA8fwNTaHjnp9yskLiIyTI8fP0Z8fDx8fHxgZqafmwio7KpXr44JEyaU+ugMenGV9DOsS97BHrVKwvsBiIiISFe8Rq2S/P8DbwEPG+12O5M7IiKiqo2JWiWTAbzrk4joBZeQkKDvEOgFwYyBiIiIyEAxUSMiMmC834vo+VReP7tM1IiIDFD+U9YLPhmdiJ4P+T+7Bd+QoSu9XqP222+/4fPPP0dsbCwSExOxbds26bklubm5+Pjjj7Fnzx5cu3YNtra26NixI+bOnSs9jRkAgoKCcOTIEY12Bw4cKD13h4joeWRiYgILCwvcvXsXpqamMDLi39VEzwu1Wo27d+/CwsICJibPlmrpNVHLzMxE48aNMWLECPTr109jWVZWFk6dOoXp06ejcePGSElJwYQJE9CzZ0/ExMRolB0zZgxmzpwpfS6v95oREemLTCaDq6sr4uPj8e+//+o7HCLSkZGREby8vEp9F2tp9JqohYSEICQkpMhltra2iIqK0pi3bNkyvPzyy7h+/Tq8vLyk+RYWFlAqlRUa67My+u84WZga4TW/ol/PUdD7fD4HUZUml8tRu3ZtDn8SPYfkcnm59IQ/V4/nSEtLg0wmQ7Vq1TTmr1+/HuvWrYOLiwtCQkIQFhYGa2vrYtvJzs5Gdna29Dk9Pb2iQi7ESAY4Wz1Xu52I9MjIyIhvJiCqwp6bjOHx48eYOnUqBg8erPG6hSFDhsDHxwdKpRJ//fUXpk2bhrNnzxbqjXvanDlzMGPGjMoIm4iIiKjMnotELTc3F4MGDYJarcby5cs1lo0ZM0b6f8OGDVG7dm0EBATg1KlTaNq0aZHtTZs2DRMnTpQ+p6enw9PTs2KCJyIiIiojg0/UcnNzMWDAAMTHx+PgwYOlvry0adOmMDU1RVxcXLGJmkKhgEKhqIhwiYiIiMqNQSdq+UlaXFwcDh06BAcHh1LrXLhwAbm5uXB1da2ECImIiIgqjl4TtYcPH+LKlSvS5/j4eJw5cwb29vZwc3PDq6++ilOnTmHXrl1QqVRISkoCANjb20Mul+Pq1atYv349unbtCkdHR1y8eBGTJk2Cv78/Wrdura/NIiIiIioXek3UYmJi0K5dO+lz/nVjw4cPR3h4OHbs2AEAaNKkiUa9Q4cOISgoCHK5HAcOHMDSpUvx8OFDeHp6olu3bggLC3vmJwETERER6ZteE7WgoKAS34VV2nuyPD09C72VgIiIiOhFwXeSEBERERkoJmpEREREBoqJGhEREZGBYqJGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSgmKgRERERGSgmakREREQGiokaERERkYFiokZERERkoJioERERERkoJmpEREREBoqJGhEREZGBYqJGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSgmKgRERERGSgmakREREQGiokaERERkYFiokZERERkoPSaqP3222/o0aMH3NzcIJPJsH37do3lQgiEh4fDzc0N5ubmCAoKwoULFzTKZGdn45133oGjoyMsLS3Rs2dP3Lx5sxK3goiIiKhi6DVRy8zMROPGjfHll18WuXz+/PlYtGgRvvzyS5w8eRJKpRKdOnVCRkaGVGbChAnYtm0bNm3ahKNHj+Lhw4fo3r07VCpVZW0GERERUYUw0efKQ0JCEBISUuQyIQSWLFmCjz76CH379gUArFmzBi4uLtiwYQPefPNNpKWlYdWqVfj+++/RsWNHAMC6devg6emJ/fv3Izg4uNK2hYiIiKi8Gew1avHx8UhKSkLnzp2leQqFAoGBgTh+/DgAIDY2Frm5uRpl3Nzc0LBhQ6lMUbKzs5Genq4xERERERkag03UkpKSAAAuLi4a811cXKRlSUlJkMvlsLOzK7ZMUebMmQNbW1tp8vT0LOfoiYiIiJ6dwSZq+WQymcZnIUSheQWVVmbatGlIS0uTphs3bpRLrERERETlyWATNaVSCQCFesaSk5OlXjalUomcnBykpKQUW6YoCoUCNjY2GhMRERGRoTHYRM3HxwdKpRJRUVHSvJycHBw5cgStWrUCALz00kswNTXVKJOYmIi//vpLKkNERET0vNLrXZ8PHz7ElStXpM/x8fE4c+YM7O3t4eXlhQkTJmD27NmoXbs2ateujdmzZ8PCwgKDBw8GANja2mLUqFGYNGkSHBwcYG9vj8mTJ8PPz0+6C5SIiIjoeaXXRC0mJgbt2rWTPk+cOBEAMHz4cERGRmLKlCl49OgR3nrrLaSkpKB58+b49ddfYW1tLdVZvHgxTExMMGDAADx69AgdOnRAZGQkjI2NK317iIiIiMqTTAghdK1Uo0YNnDx5Eg4ODhrzU1NT0bRpU1y7dq3cAqwM6enpsLW1RVpaWoVdr+bh4YFbt27B3d1d6zcnyG0ckJvxAKbW9shJv18hcREREVHl0iXvKNM1agkJCUU++T87Oxu3bt0qS5NEREREVIBOQ587duyQ/r9v3z7Y2tpKn1UqFQ4cOIDq1auXW3BEREREVZlOiVrv3r0BPHm22fDhwzWWmZqaonr16li4cGG5BUdERERUlemUqKnVagBPHp1x8uRJODo6VkhQRERERFTGuz7j4+PLOw4iIiIiKqDMj+c4cOAADhw4gOTkZKmnLd/q1aufOTAiIiKiqq5MidqMGTMwc+ZMBAQEwNXVtdR3bxIRERGR7sqUqK1YsQKRkZEYOnRoecdDRERERP8p03PUcnJy+C5NIiIiogpWpkRt9OjR2LBhQ3nHQkRERERPKdPQ5+PHj/HNN99g//79aNSoEUxNTTWWL1q0qFyCIyIiIqrKypSonTt3Dk2aNAEA/PXXXxrLeGMBERERUfkoU6J26NCh8o6DiIiIiAoo0zVqRERERFTxytSj1q5duxKHOA8ePFjmgIiIiIjoiTIlavnXp+XLzc3FmTNn8NdffxV6WTsRERERlU2ZErXFixcXOT88PBwPHz58poCIiIiI6IlyvUbt9ddf53s+iYiIiMpJuSZqJ06cgJmZWXk2SURERFRllWnos2/fvhqfhRBITExETEwMpk+fXi6BEREREVV1ZUrUbG1tNT4bGRnB19cXM2fOROfOncslMCIiIqKqrkyJWkRERHnHQUREREQFlClRyxcbG4tLly5BJpOhfv368Pf3L6+4iIiIiKq8MiVqycnJGDRoEA4fPoxq1apBCIG0tDS0a9cOmzZtgpOTU3nHSURERFTllOmuz3feeQfp6em4cOECHjx4gJSUFPz1119IT0/H+PHjyzXA6tWrQyaTFZrGjRsHAAgNDS20rEWLFuUaAxEREZE+lKlHbe/evdi/fz/q1asnzatfvz6++uqrcr+Z4OTJk1CpVNLnv/76C506dUL//v2leV26dNG4bk4ul5drDERERET6UKZETa1Ww9TUtNB8U1NTqNXqZw7qaQWHUefOnYuaNWsiMDBQmqdQKKBUKst1vURERET6Vqahz/bt2+Pdd9/F7du3pXm3bt3Ce++9hw4dOpRbcAXl5ORg3bp1GDlypMZL4Q8fPgxnZ2fUqVMHY8aMQXJycontZGdnIz09XWMiIiIiMjRlStS+/PJLZGRkoHr16qhZsyZq1aoFHx8fZGRkYNmyZeUdo2T79u1ITU1FaGioNC8kJATr16/HwYMHsXDhQpw8eRLt27dHdnZ2se3MmTMHtra20uTp6VlhMRMRERGVlUwIIcpaOSoqCn///TeEEKhfvz46duxYnrEVEhwcDLlcjp07dxZbJjExEd7e3ti0aVOhNyjky87O1kjk0tPT4enpibS0NNjY2JR73ADg4eGBW7duwd3dHTdv3tSqjtzGAbkZD2BqbY+c9PsVEhcRERFVrvT0dNja2mqVd+h0jdrBgwfx9ttvIzo6GjY2NujUqRM6deoEAEhLS0ODBg2wYsUKtGnTpuzRF+Pff//F/v37sXXr1hLLubq6wtvbG3FxccWWUSgUUCgU5R0iERERUbnSaehzyZIlGDNmTJHZn62tLd58800sWrSo3IJ7WkREBJydndGtW7cSy92/fx83btyAq6trhcRBREREVFl0StTOnj2LLl26FLu8c+fOiI2NfeagClKr1YiIiMDw4cNhYvL/nYAPHz7E5MmTceLECSQkJODw4cPo0aMHHB0d0adPn3KPg4iIiKgy6TT0eefOnSIfyyE1ZmKCu3fvPnNQBe3fvx/Xr1/HyJEjNeYbGxvj/PnzWLt2LVJTU+Hq6op27dph8+bNsLa2Lvc4iIiIiCqTTomau7s7zp8/j1q1ahW5/Ny5cxUy5Ni5c2cUdc+Dubk59u3bV+7rIyIiIjIEOg19du3aFZ988gkeP35caNmjR48QFhaG7t27l1twRERERFWZTj1qH3/8MbZu3Yo6derg7bffhq+vL2QyGS5duoSvvvoKKpUKH330UUXFSkRERFSl6JSoubi44Pjx4xg7diymTZsmDUfKZDIEBwdj+fLlcHFxqZBAiYiIiKoand/16e3tjT179iAlJQVXrlyBEAK1a9eGnZ1dRcRHREREVGWV6aXsAGBnZ4dmzZqVZyxERERE9JQyveuTiIiIiCoeEzUiIiIiA8VEjYiIiMhAMVEjIiIiMlBM1IiIiIgMFBM1IiIiIgPFRI2IiIjIQDFRIyIiIjJQTNSIiIiIDBQTNSIiIiIDxUSNiIiIyEAxUSMiIiIyUEzUiIiIiAwUEzUiIiIiA8VEjYiIiMhAMVEjIiIiMlBM1IiIiIgMFBM1IiIiIgPFRI2IiIjIQBl0ohYeHg6ZTKYxKZVKabkQAuHh4XBzc4O5uTmCgoJw4cIFPUZMREREVH4MOlEDgAYNGiAxMVGazp8/Ly2bP38+Fi1ahC+//BInT56EUqlEp06dkJGRoceIiYiIiMqHwSdqJiYmUCqV0uTk5ATgSW/akiVL8NFHH6Fv375o2LAh1qxZg6ysLGzYsEHPURMRERE9O4NP1OLi4uDm5gYfHx8MGjQI165dAwDEx8cjKSkJnTt3lsoqFAoEBgbi+PHjJbaZnZ2N9PR0jYmIiIjI0Bh0ota8eXOsXbsW+/btw7fffoukpCS0atUK9+/fR1JSEgDAxcVFo46Li4u0rDhz5syBra2tNHl6elbYNhARERGVlUEnaiEhIejXrx/8/PzQsWNH7N69GwCwZs0aqYxMJtOoI4QoNK+gadOmIS0tTZpu3LhR/sETERERPSODTtQKsrS0hJ+fH+Li4qS7Pwv2niUnJxfqZStIoVDAxsZGYyIiIiIyNM9VopadnY1Lly7B1dUVPj4+UCqViIqKkpbn5OTgyJEjaNWqlR6jJCIiIiofJvoOoCSTJ09Gjx494OXlheTkZMyaNQvp6ekYPnw4ZDIZJkyYgNmzZ6N27dqoXbs2Zs+eDQsLCwwePFjfoRMRERE9M4NO1G7evInXXnsN9+7dg5OTE1q0aIHo6Gh4e3sDAKZMmYJHjx7hrbfeQkpKCpo3b45ff/0V1tbWeo6ciIiI6NnJhBBC30HoW3p6OmxtbZGWllZh16t5eHjg1q1bcHd3x82bN7WqI7dxQG7GA5ha2yMn/X6FxEVERESVS5e847m6Ro2IiIioKmGiRkRERGSgmKgRERERGSgmakREREQGiokaERERkYFiokZERERkoJioERERERkoJmpEREREBoqJGhEREZGBYqJGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSgmKgRERERGSgmakREREQGiokaERERkYFiokZERERkoEz0HQCVLvdhKjw8PHSqo1QqERMTU0ERERERUWVgovY8EGrcunVL31EQERFRJWOiZsBMLatBrRYwMpLB2cZcqzqJiYlQq9UVHBkRERFVBiZqBqz+qPlISs2CspoFTs7qp1UdDw8P9r4RERG9IHgzAREREZGBYqJGREREZKAMOlGbM2cOmjVrBmtrazg7O6N37964fPmyRpnQ0FDIZDKNqUWLFnqKmIiIiKj8GHSiduTIEYwbNw7R0dGIiopCXl4eOnfujMzMTI1yXbp0QWJiojTt2bNHTxETERERlR+Dvplg7969Gp8jIiLg7OyM2NhYtG3bVpqvUCigVCorOzwiIiKiCmXQiVpBaWlpAAB7e3uN+YcPH4azszOqVauGwMBAfPbZZ3B2di62nezsbGRnZ0uf09PTKybgcqJWCyQ/zNOurKjgYIiIiKjSPDeJmhACEydOxCuvvIKGDRtK80NCQtC/f394e3sjPj4e06dPR/v27REbGwuFQlFkW3PmzMGMGTMqK/QyU4snWVdWrsDG82la1cnKVf9Xt8LCIiIiokry3CRqb7/9Ns6dO4ejR49qzB84cKD0/4YNGyIgIADe3t7YvXs3+vbtW2Rb06ZNw8SJE6XP6enp8PT0rJjAn8UzJFtqAa174UyNZbAzNy77yoiIiKhCPBeJ2jvvvIMdO3bgt99+K/Wdl66urvD29kZcXFyxZRQKRbG9bS+Kx3lqrXvhAGBYk2pM1oiIiAyMQSdqQgi888472LZtGw4fPgwfH59S69y/fx83btyAq6trJUT44shVcayUiIjI0Bh0ojZu3Dhs2LABP//8M6ytrZGUlAQAsLW1hbm5OR4+fIjw8HD069cPrq6uSEhIwIcffghHR0f06dNHz9GXHwGBx3navb+zrOnWg0cqncpzuJSIiKjiGXSi9vXXXwMAgoKCNOZHREQgNDQUxsbGOH/+PNauXYvU1FS4urqiXbt22Lx5M6ytrfUQcfnKvyFApQZupmt3vZmqjO9j33floc51OFxKRERUsQw6UROi5P4hc3Nz7Nu3r5KiqXziqX+171F7Uiv9/h180stPqzoyADYOzpi0+oBO8XG4lIiIqGIZdKJW1eU/nkOlFriZlqtVnfweNaFWI/1uYkWFRkRERJWAiZoBe7pDMVvLHjW5jaNO68hOTQaEGmqhfa8dABjJZDqth4iIiHTHRM2A5V+jlqcWuJmuXY+acsKPAABPW1PIjUt/leuhCS2RnZIElRBaXweX735WHpyteAoRERFVFP6WNWDPcgVYdp6AEGW8s0BL97JUWj9UF+CdokRERLpiovY8UOXiUfxpnar8q2W5vJycJ6tQqXUc+gSO38jCqcTHOsXFO0WJiIi0x0TNgMlNn0poVNoNferuSb9dXl6e1jcs5FNamcDMpPTh1afxTlEiIiLtMVEzYEFN6mDr8UsQat0eRltW2t6wAAAyGfA4T/sH8QK8AYGIiEhXTNQMmH9NN+y5ZVrBa/kveRICcWf/1L6WkTGMH9WAr7ebTmu7lpKjU3le10ZERFUZEzUD5mRpAk9bU5Ty3F8NuSqBO5k63L35dCeXDsOrQpWLhPgEnRO1IwmZ+OPmI53q8Lo2IiKqqpioGThtHrHxNIUJIDeRaZ3cJRgb48nAqgww1rL37r+ELk+Vp/MNCGXB69qIiKiqYqJmwBTGZctsdEnujIye9FSpslKRtGaCVnVEXi4AAWNLO1xtGKX1umQywMHcGDDTugqMZDK+MJ6IiKosJmoGzM3GFF7VTKUH32pLpRYw1rL7Siom1MhLu6PbigCdr2tDZg3U8FRqXcdIBuy8DMh1TFo5XEpERC8CJmoGzMHCBLXsFdI7P7WlUgPadqrZOjjrnAhmp975//db6XhdW3x8POQ2DjqtT2llAntz3U5VDpcSEdGLgImagXvSk1Rxj7WYsGo/rqXk6JSsrQ1tipzUZOhyXdudjdOgzkoDZDLcNpXrFONpR2e8t2q/1uU5XEpERC8KJmpVnJFMpvMNC8ZGT8rLTExh7uOvVR11VjpUmSkAAF2fCpcq1LjyQPvHenC4lIiIXhRM1AyYaRlvJtCF3FgGL1tTnYZXTf67sM3YSAYPG+161K7lb4pMBmOLalrVUWWlAkKU+a0JHC4lIqLnHRM1A2ZnboxhTarpnEA8ylPDXMtXOz14pMK+Kw+hy/Bq/gsGjI2Amg4KreocMzGBCoCxhR1cR32lVZ3EVW9JvXCV8dYEDpcSEZGhYaJm4Co6EShLr53UOQaZ1u/6LMtw6bO8NaEsd5f+dFFAl1eXGslk6FPPGjYK7Y8RkzsiItIFE7Uqriy9dnNMjJAGICvlDtaOeEmrOo9TkwGUcbgU0Pnu0n/+vohrV69oXcfI2Bi+tWrA3dVF+zoyYPNfTO6IiKjiMFEjnZOA/GevCbUa6XcTdaqry3Dp8f+GS8vy1gQAyMvV4b2iucDlK9cgLOy1r/MfXW/G2HYpgzc6EBGRVpiokc7cXLUfUsynFsDjPDWs7J1Ry167x3OYmhgjG4CJXI7ajV/Wqk7K/bu4f/s6hFqH683+S+5UKlWZroVTC91eo/U4Tw210D5RM5LJcOdhnk69nrpcp5iPPXdERIaHiRrpLCYmRuc6yQ/zsPF8mk518lOZ7NRkHJ/cWut6KrWAsbUjvCb9pFX5R/GnAVUuVLk5Ol0LBwBXjWQ6PeVOZmSM6j7V4ezsrHUdU2MZclS6DbHq8tDjfGUZlmVCSERUsZioUaUoy00LT7/eKjslSae6ulwLl2Bigtz8IVMdroUDAJWuD4UDcOVqPG7mWetcr5pZxf+4lmVYtiy61bHidXpERFpgokaVoiw3LXzr5goA0OXhJBn370Co1chJS8YfU7TrhVOp1MjLy4OxRTW4DZ6tVR2BJz13OvkvCRS5j5/04mlJZmSMa6gOTzftb3TIzlNDoWNPlwyAhakMpjpUk0EGK4Vu61GpgZ8uputUp7J6+9hDSESGRiaEji+SNFDLly/H559/jsTERDRo0ABLlixBmzZttKqbnp4OW1tbpKWlwcbGpkLi8/DwwK1bt+Du7o6bN29WyDpeNCmPVFh7JlWnOmG9/JCm4w0OT1PYaX/9na6JmlDlAkLAyMIWLgNm6hqa9jdUPAPjCh7K/XVadzxKuSs9i09bQgBW9s4YsHiP1nXUQsDBQre/RcuaeAb5WMBShwxXAHCz1v54dm7bHHfu3CnTy+TcXJVlulyBXgwBAQFIStJtRCKfUslzp6Lokne8ED1qmzdvxoQJE7B8+XK0bt0aK1euREhICC5evAgvLy99h0dlVJZeuO/K0Av39J2rug6xloUqMwWJkRO0LF32v6N0SQjv/PDJk3exlsF1ANo+MFmV+aBM6wCAxylJWPlaI53qGFtq30sKPNnbuo78CgCrdKsCI2Nj1K9dEx6u2iW4V67fRub9sp2bibdvwVHprnV5AUDp4oINe4/pVEeXxBN4sXo8nyUZqmi3bt3Sdwh697wnqy9EorZo0SKMGjUKo0ePBgAsWbIE+/btw9dff405c+boOTp6Frp+wZ4/E4uURyqdkrsOrzTHjduJOqdEuvZFZ9z7/4TwWRIWrclkMDHV7g5b9aP/fxdrZTG2tNOq3NNx6b7fhG6PaYHu76Itq9OXruBSloVWZbPz/jvZZEZQVNMuuXv6j477d27rFFt2nhrfnUrVqY6XrWmlXN9YFhX9eJukpKTnIiFyd9cuYU9MTIRarf3d7IbueTk+xXnuE7WcnBzExsZi6tSpGvM7d+6M48ePF1knOzsb2dnZ0ue0tCc9Cenpul03o4v8k16tVlfoeggw/m/S1rHfDiHlkQp5FfiqLgDoHdIeSXfu6LQOIZ76Ja2lhynJgBBQZabg3tp3tarz/8mQDGZ2TlrVUavVyMsrW1pjbG4L9wGfaFX21g8zoXqkW2+f+r/tUWWm4HakdvsAwLN0YOrg6ZVol9ios55sj5GFLVwGaddDmLil7Pst834Slg9soFNdQzapgtt/+o8Jbf8AqWwmFraw7BeuVVnZqveAzBTcunULJla6P1vS0Dz9/WbroN0fOmkPnnyPVtTv7Pw2tbr6TDznbt26JQCIY8eOacz/7LPPRJ06dYqsExYWJvDk25ITJ06cOHHixEkv040bN0rNc577HrV8sgJXJwshCs3LN23aNEycOFH6rFar8eDBAzg4OBRb51mlp6fD09MTN27cqLAbFgxZVd9+gPsA4D4AuA8A7gOA+wCo2vtACIGMjAy4ubmVWva5T9QcHR1hbGxc6ELB5ORkuLgU/TgDhUIBhULzNUbVqlWrqBA12NjYVLkT8mlVffsB7gOA+wDgPgC4DwDuA6Dq7gNbW1utyun47HLDI5fL8dJLLyEqKkpjflRUFFq1aqWnqIiIiIie3XPfowYAEydOxNChQxEQEICWLVvim2++wfXr1/G///1P36ERERERldkLkagNHDgQ9+/fx8yZM5GYmIiGDRtiz5498Pb21ndoEoVCgbCwsEJDrlVFVd9+gPsA4D4AuA8A7gOA+wDgPtDWC/NmAiIiIqIXzXN/jRoRERHRi4qJGhEREZGBYqJGREREZKCYqBEREREZKCZqlWD58uXw8fGBmZkZXnrpJfz+++/6DqnShIeHQyaTaUxKpVLfYVWo3377DT169ICbmxtkMhm2b9+usVwIgfDwcLi5ucHc3BxBQUG4cOGCfoKtIKXtg9DQ0ELnRYsWLfQTbAWYM2cOmjVrBmtrazg7O6N37964fPmyRpkX/TzQZh+86OfB119/jUaNGkkPdG3ZsiV++eUXafmLfg4Ape+DF/0cKA9M1CrY5s2bMWHCBHz00Uc4ffo02rRpg5CQEFy/fl3foVWaBg0aIDExUZrOnz+v75AqVGZmJho3bowvv/yyyOXz58/HokWL8OWXX+LkyZNQKpXo1KkTMjIyKjnSilPaPgCALl26aJwXe/bsqcQIK9aRI0cwbtw4REdHIyoqCnl5eejcuTMyMzOlMi/6eaDNPgBe7PPAw8MDc+fORUxMDGJiYtC+fXv06tVLSsZe9HMAKH0fAC/2OVAunu2V6FSal19+Wfzvf//TmFe3bl0xdepUPUVUucLCwkTjxo31HYbeABDbtm2TPqvVaqFUKsXcuXOleY8fPxa2trZixYoVeoiw4hXcB0IIMXz4cNGrVy+9xKMPycnJAoA4cuSIEKJqngcF94EQVe88EEIIOzs78d1331XJcyBf/j4QomqeA7pij1oFysnJQWxsLDp37qwxv3Pnzjh+/Lieoqp8cXFxcHNzg4+PDwYNGoRr167pOyS9iY+PR1JSksY5oVAoEBgYWKXOCQA4fPgwnJ2dUadOHYwZMwbJycn6DqnCpKWlAQDs7e0BVM3zoOA+yFdVzgOVSoVNmzYhMzMTLVu2rJLnQMF9kK+qnANl9UK8mcBQ3bt3DyqVqtDL4V1cXAq9RP5F1bx5c6xduxZ16tTBnTt3MGvWLLRq1QoXLlyAg4ODvsOrdPnHvahz4t9//9VHSHoREhKC/v37w9vbG/Hx8Zg+fTrat2+P2NjYF+4p5UIITJw4Ea+88goaNmwIoOqdB0XtA6BqnAfnz59Hy5Yt8fjxY1hZWWHbtm2oX7++lIxVhXOguH0AVI1z4FkxUasEMplM47MQotC8F1VISIj0fz8/P7Rs2RI1a9bEmjVrMHHiRD1Gpl9V+ZwAnrz2LV/Dhg0REBAAb29v7N69G3379tVjZOXv7bffxrlz53D06NFCy6rKeVDcPqgK54Gvry/OnDmD1NRU/PTTTxg+fDiOHDkiLa8K50Bx+6B+/fpV4hx4Vhz6rECOjo4wNjYu1HuWnJxc6K+oqsLS0hJ+fn6Ii4vTdyh6kX/HK88JTa6urvD29n7hzot33nkHO3bswKFDh+Dh4SHNr0rnQXH7oCgv4nkgl8tRq1YtBAQEYM6cOWjcuDGWLl1apc6B4vZBUV7Ec+BZMVGrQHK5HC+99BKioqI05kdFRaFVq1Z6ikq/srOzcenSJbi6uuo7FL3w8fGBUqnUOCdycnJw5MiRKntOAMD9+/dx48aNF+a8EELg7bffxtatW3Hw4EH4+PhoLK8K50Fp+6AoL9p5UBQhBLKzs6vEOVCc/H1QlKpwDuhMX3cxVBWbNm0SpqamYtWqVeLixYtiwoQJwtLSUiQkJOg7tEoxadIkcfjwYXHt2jURHR0tunfvLqytrV/o7c/IyBCnT58Wp0+fFgDEokWLxOnTp8W///4rhBBi7ty5wtbWVmzdulWcP39evPbaa8LV1VWkp6frOfLyU9I+yMjIEJMmTRLHjx8X8fHx4tChQ6Jly5bC3d39hdkHY8eOFba2tuLw4cMiMTFRmrKysqQyL/p5UNo+qArnwbRp08Rvv/0m4uPjxblz58SHH34ojIyMxK+//iqEePHPASFK3gdV4RwoD0zUKsFXX30lvL29hVwuF02bNtW4Pf1FN3DgQOHq6ipMTU2Fm5ub6Nu3r7hw4YK+w6pQhw4dEgAKTcOHDxdCPHk0Q1hYmFAqlUKhUIi2bduK8+fP6zfoclbSPsjKyhKdO3cWTk5OwtTUVHh5eYnhw4eL69ev6zvsclPUtgMQERERUpkX/TwobR9UhfNg5MiR0ne/k5OT6NChg5SkCfHinwNClLwPqsI5UB5kQghRef13RERERKQtXqNGREREZKCYqBEREREZKCZqRERERAaKiRoRERGRgWKiRkRERGSgmKgRERERGSgmakREREQGiokaERERkYFiokZEepeQkACZTIYzZ87oOxTJ33//jRYtWsDMzAxNmjTRuX5QUBAmTJhQ7mUNVWhoKHr37q3vMIheOEzUiAihoaGQyWSYO3euxvzt27dDJpPpKSr9CgsLg6WlJS5fvowDBw4UWSZ/vxWcrly5gq1bt+LTTz+t0BjT09Px0UcfoW7dujAzM4NSqUTHjh2xdetWGOJLZ6pXr44lS5boOwyi54qJvgMgIsNgZmaGefPm4c0334SdnZ2+wykXOTk5kMvlZap79epVdOvWDd7e3iWW69KlCyIiIjTmOTk5wdjYuEzr1VZqaipeeeUVpKWlYdasWWjWrBlMTExw5MgRTJkyBe3bt0e1atUqNAYiqnjsUSMiAEDHjh2hVCoxZ86cYsuEh4cXGgZcsmQJqlevLn3OHwKbPXs2XFxcUK1aNcyYMQN5eXl4//33YW9vDw8PD6xevbpQ+3///TdatWoFMzMzNGjQAIcPH9ZYfvHiRXTt2hVWVlZwcXHB0KFDce/ePWl5UFAQ3n77bUycOBGOjo7o1KlTkduhVqsxc+ZMeHh4QKFQoEmTJti7d6+0XCaTITY2FjNnzoRMJkN4eHix+0ShUECpVGpMxsbGhYYzly9fjtq1a8PMzAwuLi549dVXC8U0ZcoU2NvbQ6lUlrhOAPjwww+RkJCAP/74A8OHD0f9+vVRp04djBkzBmfOnIGVlRUAYN26dQgICIC1tTWUSiUGDx6M5ORkqZ3IyMhCCV1RPamzZs2Cs7MzrK2tMXr0aEydOrXIIeEFCxbA1dUVDg4OGDduHHJzcwE8OTb//vsv3nvvPannkYhKx0SNiAAAxsbGmD17NpYtW4abN28+U1sHDx7E7du38dtvv2HRokUIDw9H9+7dYWdnhz/++AP/+9//8L///Q83btzQqPf+++9j0qRJOH36NFq1aoWePXvi/v37AIDExEQEBgaiSZMmiImJwd69e3Hnzh0MGDBAo401a9bAxMQEx44dw8qVK4uMb+nSpVi4cCEWLFiAc+fOITg4GD179kRcXJy0rgYNGmDSpElITEzE5MmTn2l/xMTEYPz48Zg5cyYuX76MvXv3om3btoXitrS0xB9//IH58+dj5syZiIqKKrI9tVqNTZs2YciQIXBzcyu03MrKCiYmTwZMcnJy8Omnn+Ls2bPYvn074uPjERoaqlP869evx2effYZ58+YhNjYWXl5e+PrrrwuVO3ToEK5evYpDhw5hzZo1iIyMRGRkJABg69at8PDwwMyZM5GYmIjExESdYiCqsgQRVXnDhw8XvXr1EkII0aJFCzFy5EghhBDbtm0TT39NhIWFicaNG2vUXbx4sfD29tZoy9vbW6hUKmmer6+vaNOmjfQ5Ly9PWFpaio0bNwohhIiPjxcAxNy5c6Uyubm5wsPDQ8ybN08IIcT06dNF586dNdZ948YNAUBcvnxZCCFEYGCgaNKkSanb6+bmJj777DONec2aNRNvvfWW9Llx48YiLCysxHaGDx8ujI2NhaWlpTS9+uqrUizvvvuuEEKIn376SdjY2Ij09PQi2wkMDBSvvPJKoXg++OCDIsvfuXNHABCLFi0qMb6i/PnnnwKAyMjIEEIIERERIWxtbTXKFDzuzZs3F+PGjdMo07p1a41zIf+45+XlSfP69+8vBg4cKH329vYWixcv1jlmoqqMPWpEpGHevHlYs2YNLl68WOY2GjRoACOj//96cXFxgZ+fn/TZ2NgYDg4OGkNwANCyZUvp/yYmJggICMClS5cAALGxsTh06BCsrKykqW7dugCeXE+WLyAgoMTY0tPTcfv2bbRu3VpjfuvWraV16aJdu3Y4c+aMNH3xxReFynTq1Ane3t6oUaMGhg4divXr1yMrK0ujTKNGjTQ+u7q6Fto/+cR/NwpoM3x4+vRp9OrVC97e3rC2tkZQUBAA4Pr169psHgDg8uXLePnllzXmFfwMPDnuT1+bV9I2EJF2mKgRkYa2bdsiODgYH374YaFlRkZGhe4mzL8G6WmmpqYan2UyWZHz1Gp1qfHkJyNqtRo9evTQSIrOnDmDuLg4jWFES0vLUtt8ut18QogyXTdlaWmJWrVqSZOrq2uhMtbW1jh16hQ2btwIV1dXfPLJJ2jcuDFSU1OlMrrsHycnJ9jZ2ZWaWGZmZqJz586wsrLCunXrcPLkSWzbtg3AkyFRQPtjWtT+Kqisx5iIisdEjYgKmTt3Lnbu3Injx49rzHdyckJSUpLGL+nyfPZZdHS09P+8vDzExsZKvWZNmzbFhQsXUL16dY3EqFatWlonZwBgY2MDNzc3HD16VGP+8ePHUa9evfLZkCKYmJigY8eOmD9/Ps6dO4eEhAQcPHiwTG0ZGRlh4MCBWL9+PW7fvl1oeWZmJvLy8vD333/j3r17mDt3Ltq0aYO6desW6uFycnJCRkYGMjMzpXkFj6mvry/+/PNPjXkxMTE6xy2Xy6FSqXSuR1SVMVEjokL8/PwwZMgQLFu2TGN+UFAQ7t69i/nz5+Pq1av46quv8Msvv5Tber/66its27YNf//9N8aNG4eUlBSMHDkSADBu3Dg8ePAAr732Gv78809cu3YNv/76K0aOHKnzL//3338f8+bNw+bNm3H58mVMnToVZ86cwbvvvltu2/K0Xbt24YsvvsCZM2fw77//Yu3atVCr1fD19S1zm7Nnz4anpyeaN2+OtWvX4uLFi4iLi8Pq1avRpEkTPHz4EF5eXpDL5Vi2bBmuXbuGHTt2FHq2W/PmzWFhYYEPP/wQV65cwYYNG6QbAPK98847WLVqFdasWYO4uDjMmjUL586d07kHsnr16vjtt99w69Ytjbt1iah4TNSIqEiffvppoeGtevXqYfny5fjqq6/QuHFj/Pnnn898R+TT5s6di3nz5qFx48b4/fff8fPPP8PR0REA4ObmhmPHjkGlUiE4OBgNGzbEu+++C1tbW43r4bQxfvx4TJo0CZMmTYKfnx/27t2LHTt2oHbt2uW2LU+rVq0atm7divbt26NevXpYsWIFNm7ciAYNGpS5TTs7O0RHR+P111/HrFmz4O/vjzZt2mDjxo34/PPPYWtrCycnJ0RGRmLLli2oX78+5s6diwULFmi0Y29vj3Xr1mHPnj3w8/PDxo0bCz0aZMiQIZg2bRomT56Mpk2bSneOmpmZ6RTzzJkzkZCQgJo1a8LJyanM205UlchEURcaEBERlaBTp05QKpX4/vvv9R0K0QuNbyYgIqISZWVlYcWKFQgODoaxsTE2btyI/fv3F/ucNyIqP+xRIyKiEj169Ag9evTAqVOnkJ2dDV9fX3z88cfo27evvkMjeuExUSMiIiIyULyZgIiIiMhAMVEjIiIiMlBM1IiIiIgMFBM1IiIiIgPFRI2IiIjIQDFRIyIiIjJQTNSIiIiIDBQTNSIiIiID9X+LWIMFUyQdWwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "hurdle_pps = hurdle_model.predict(idata=hurdle_idata, kind=\"pps\", inplace=False)\n", + "\n", + "bins = np.arange(39)\n", + "fig, ax = plt.subplots(figsize=(7, 3))\n", + "ax = plot_ppc_discrete(hurdle_pps, bins, ax)\n", + "ax.set_xlabel(\"Number of Fish Caught\")\n", + "ax.set_ylabel(\"Count\")\n", + "ax.set_title(\"Hurdle Model - Posterior Predictive Distribution\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot looks similar to the ZIP model above. Nonetheless, the plot shows that the model captures the overall distribution of counts reasonably well." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this notebook, two classes of models (ZIP and hurdle Poisson) for modeling zero-inflated data were presented and implemented in Bambi. The difference of the data generating process between the two models differ in how zeros are generated. The ZIP model uses a distribution that mixes two data generating processes. The first process generates zeros, and the second process uses a Poisson distribution to generate counts (of which some may be zero). The hurdle Poisson also uses two data generating processes, but doesn't \"mix\" them. A process is used for generating zeros such as a binary model for modeling whether the response variable is zero or not, and a second process for modeling the counts. These two proceses are independent of each other.\n", + "\n", + "The datset used to demonstrate the two models had a large number of zeros. These zeros appeared because the group doesn't fish, or because they fished, but caught zero fish. Because zeros could be generated due to two different reasons, the ZIP model, which allows zeros to be generated from a mixture of processes, seems to be more appropriate for this datset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Last updated: Mon Sep 25 2023\n", + "\n", + "Python implementation: CPython\n", + "Python version : 3.11.0\n", + "IPython version : 8.13.2\n", + "\n", + "seaborn : 0.12.2\n", + "numpy : 1.24.2\n", + "scipy : 1.11.2\n", + "bambi : 0.13.0.dev0\n", + "matplotlib: 3.7.1\n", + "arviz : 0.16.1\n", + "pandas : 2.1.0\n", + "\n", + "Watermark: 2.3.1\n", + "\n" + ] + } + ], + "source": [ + "%load_ext watermark\n", + "%watermark -n -u -v -iv -w" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "bambinos", + "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.11.0" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}