Skip to content

Instantly share code, notes, and snippets.

@wrgoldstein
Last active January 23, 2022 22:09
Show Gist options
  • Select an option

  • Save wrgoldstein/bd6a945179c17784ac33d80b9cd3085c to your computer and use it in GitHub Desktop.

Select an option

Save wrgoldstein/bd6a945179c17784ac33d80b9cd3085c to your computer and use it in GitHub Desktop.
A cheat sheet explaining how to perform simple Bayesian modeling in python.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [],
"source": [
"import emcee\n",
"import corner\n",
"import math\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.optimize import minimize, basinhopping\n",
"from scipy import stats\n",
"from scipy.special import factorial\n",
"\n",
"plt.rcParams['figure.figsize'] = 14,3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bayesian modeling cheat sheet\n",
"\n",
"_Please pick up Statistical Rethinking by Richard McElreath for a full introduction to this topic_\n",
"\n",
"Bayesian modeling consists of specifying models in terms of distributions of priors and likelihoods in order to calculate (or approximate) a posterior distribution of some set of data.\n",
"\n",
"That sound like gibberish? Here's an example, straight out of Statistical Rethinking:\n",
"\n",
"#### What percent of the earth's surface is water?\n",
"\n",
"Say you want to know how much of the earth's surface is water. You have a globe handy, and you decide to toss it up and down (chaotically) and keep track of how often your right index finger lands on water. In this way, you're getting a random sample of whether or not specific points on the globe are surface water.\n",
"\n",
"Say you get: \n",
"<span style='background-color: khaki; border-radius: 3px; padding: 5px;'>land</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"<span style='background-color: khaki; border-radius: 3px; padding: 5px;'>land</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"<span style='background-color: khaki; border-radius: 3px; padding: 5px;'>land</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"<span style='background-color: aliceblue; border-radius: 3px; padding: 5px;'>water</span>\n",
"\n",
"Given a hypothesis about the percent of the earth's surface that is water, and the appropriate likelihood function for your data generation process, you can calculate the likelihood of obtaining the data you did under the hypothesis you have.\n",
"\n",
"The appropriate likelihood for our bernoulli process is the binomial, calculated here the long way as well as using the indispensible `scipy` library. The likelihood calculations assume the world is half land, half water, which seems like a safe initial guess:"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.1640625, 0.16406250000000006)"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"def binomial_likelihood(w, n, p):\n",
" f = factorial\n",
" return (f(n) / (f(w)*f(n-w))) \\\n",
" * p**w * (1 - p)**(n-w)\n",
"\n",
"# Probability of six times on water out of nine tosses, assuming 50% \n",
"# of the surface is water.\n",
"dbinom(6, 9, .5), stats.binom.pmf(6, 9, .5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### The posterior\n",
"\n",
"The posterior tells us how likely each of a range of possible values is. To calculate the posterior given a prior and a likelihood, we have a few options which basically boil down to different ways to optimize our likelihood function. Here's the brute force \"grid approximation\" way; we just calculate the likelihood of seeing our data for each possible value of p.\n",
"\n",
"You can see the likelihood peaks at around .7, which makes sense given our data of 6/9 observations being water. We would conclude that a world that is 70% water is most consistent with our data."
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Grid approximation\n",
"\n",
"p = np.linspace(0, 1, 50)\n",
"plt.plot(p, dbinom(6, 9, p))\n",
"plt.title('Computing posterior distribution by grid approximation')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To do more complicated models, we'll have to encode our uncertainty about the true proportion of water on earth as a distribution all its own. Above we're assuming each p between 0 and 1 is equally likely. As code, that might look like:\n",
"\n",
"```python\n",
"def log_prior(p, w):\n",
" if 0 < p < 1: return 1.0\n",
" return -np.inf\n",
"```\n",
"\n",
"We could also return 1.0 here; it doesn't really matter, because we're just seeing a function which is proportional to the true probability.\n",
"\n",
"Note that we're using the *logarithm* of the likelihood here. Likelihoods multiply, so that the likelihood of seeing two independent events each with likelihood .5 is .25. By using logs, we can do addition instead of multiplication, which is easier on the computer.\n",
"\n",
"In the below code we have separate functions representing our uncertainty about our prior (our existing information of what portion of the earth is water) and our likelihood function (binomial, as above). We combine them as mentioned in the last paragraph: by adding the log prior and log likelihood, we obtain the overall probability.\n",
"\n",
"This is a Bayesian model! The only thing left to do is optimize it to discover which unknown parameters maximize the likelihood of our data, given our prior."
]
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p: 0.707\n"
]
}
],
"source": [
"## Model:\n",
"# w ~ binomial(9, p)\n",
"# p ~ uniform(0, 1)\n",
"# data = [[6,7,5,6,5]\n",
"\n",
"def log_prior(p, w):\n",
" if 0 < p < 1: return 1.0\n",
" return -np.inf\n",
"\n",
"def log_likelihood(p, w):\n",
" if (0 < p < 1): \n",
" return sum(stats.binom.logpmf(w, 9, p))\n",
" return -np.inf\n",
" \n",
"\n",
"def log_probability(p, w):\n",
" lp = log_prior(p, w)\n",
" if not np.isfinite(lp):\n",
" return -np.inf\n",
" return lp + log_likelihood(p, w)\n",
"\n",
"nll = lambda *args: -log_likelihood(*args)\n",
"w = np.array([*map(int, np.random.normal(7, 2, 700))]).clip(0, 9)\n",
"\n",
"# Note we minimize the negative log likelihood here\n",
"soln = minimize(nll, .5, args=(w), method = 'Nelder-Mead')\n",
"print('p: {0:.3f}'.format(soln.x[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Above, we obtain a point estimate for the most likely value of `p`, the proportion of water on earth. As we saw above visually, it's very close to 70%.\n",
"\n",
"The true power of Bayesian modeling is in our ability to quantify our uncertainty. Sure, the most likely proportion of water is 70%, but how unlikely is 80%? Or 50%? In other words, how sure are we?\n",
"\n",
"To explore this question, we take advantage of a class of algorithms designed to sample from the posterior distribution of our model. Once we have a large enough sample, we can rely upon the law of large numbers to answer questions about our posterior, such as generating credible intervals for individual parameters like `p`.\n",
"\n",
"Here, we use the fantastic `emcee` library, which provides a fast sampling algorithm in pure python. \n",
"\n",
"> Note: _Statistical Rethinking_ relies on R bindings to Stan, which can be a pain to install and familiarize yourself with, while the popular `pymc3` relies on somewhat slow symbolic logic libraries, so I recommend `emcee`. It may not scale as well as `pymc3` to more complicated models.\n",
"\n",
"As you'll see if you're following along, this sampling can take some time, particularly if you're analyzing over a lot of data. Fortunately `emcee` ships with a progress bar."
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 5000/5000 [00:52<00:00, 95.23it/s]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pos = soln.x + 1e-4 * np.random.randn(32, 1)\n",
"nwalkers, ndim = pos.shape\n",
"sampler = emcee.EnsembleSampler(nwalkers, ndim, log_probability, args=(w,))\n",
"sampler.run_mcmc(pos, 5000, progress=True);\n",
"\n",
"flat_samples = sampler.get_chain(discard=100, thin=15, flat=True)\n",
"\n",
"plt.hist(flat_samples, bins=100)\n",
"plt.title(\"Posterior distribution of $p$\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the samples generated by `emcee`, we generate a histogram of values, showing the distribution of our posterior. We could answer our earlier question of how unlikely a proportion of 80% or more might be by simply calculating the proportion of samples that exceed .8:\n",
"\n",
"```python\n",
"(flat_samples > .8).mean()\n",
"```\n",
"\n",
"#### Regression\n",
"\n",
"Above we explore a toy example of a Bayesian model with very simple data. A more common statistical need is to regress one value onto another. This is extremely intuitive as a Bayesian model. We write\n",
"\n",
"```\n",
"y ~ Normal(mu, sigma)\n",
"mu ~ m + b * x\n",
"m ~ Normal(0, 20)\n",
"b ~ Normal(0, 10)\n",
"sigma ~ Uniform(0, 50)\n",
"```\n",
"\n",
"to represent our regression. Here the tildas mean that a variable on the left is distributed according to a distribution on the right. Note that some distributions can rely on other parameters!\n",
"\n",
"The above model says that a variable y will be distributed normally with mean `mu` and variance `sigma`, where `sigma` is itself uniformly distributed between 0 and 50. `mu` is a deterministic combination of `m` and `b`, each distributed normally around 0 with a large variance. Together, these distributions fully specify a univariate regression."
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m: 1.06, b: 2.03, s: 15.20\n"
]
}
],
"source": [
"# Regression time!\n",
"\n",
"# y ~ Normal(mu, sigma)\n",
"# mu ~ m + b * x\n",
"# m ~ Normal(0, 20)\n",
"# b ~ Normal(0, 10)\n",
"# sigma ~ Uniform(0, 50)\n",
"\n",
"# Generate some fake data\n",
"x = np.linspace(0, 100, 50)\n",
"m = 1.05\n",
"b = 3\n",
"y = m*x + b + np.random.normal(0,15,len(x))\n",
"\n",
"def log_likelihood(theta, x, y):\n",
" # Unpack array-like\n",
" m, b, s = theta\n",
" \n",
" # Priors\n",
" ll_m = stats.norm.logpdf(m, 0, 20)\n",
" ll_b = stats.norm.logpdf(b, 0, 10)\n",
" \n",
" if not 0 < s < 50: return -np.inf\n",
" ll_s = 1.0\n",
"\n",
" # Likelihood\n",
" mu = m * x + b\n",
" ll_y = sum(stats.norm.logpdf(y, mu, s))\n",
" ll = sum([ll_m, ll_b, ll_s, ll_y])\n",
" return ll\n",
"\n",
"nll = lambda *args: -log_likelihood(*args)\n",
"\n",
"soln = minimize(nll, (1, 1, 1), args=(x, y), method = 'Nelder-Mead', )\n",
"print(\"m: {:.2f}, b: {:.2f}, s: {:.2f}\".format(*soln.x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that above we've condensed our likelihood function down into one function, but it still contains the same logic. We calculate log likelihoods for each of our priors and our main likelihood given the data we've observed, and add them together to get a single joint likelihood. When we optimize over this, we've performed a regression!"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1008x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y, lw=0, marker='.')\n",
"\n",
"mhat, bhat, shat = soln.x\n",
"fit = mhat*x + bhat\n",
"plt.plot(x, fit)\n",
"plt.fill_between(x, fit - 2*13.132, fit + 2*13.132, alpha=.1)\n",
"plt.title(\"Linear regression fit with credible intervals\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Above, because we've got an estimate for `sigma`, we've generated a confidence interval for our data. However, we don't have any insight into our uncertainty around individual parameters. For that matter, we don't have any insight into our our parameters covary. What is the relationship between `m` and `b`, for example?\n",
"\n",
"A _corner plot_, generated with ease from the handy `corner` library, gives us an easy way to visualize answers to these questions. For example, we can see that `m` and `b` are negatively correlated."
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 5000/5000 [00:21<00:00, 231.29it/s]\n"
]
}
],
"source": [
"pos = soln.x + 1e-4 * np.random.randn(10, 3)\n",
"nwalkers, ndim = pos.shape\n",
"sampler = emcee.EnsembleSampler(nwalkers, ndim, log_likelihood, args=(x,y))\n",
"sampler.run_mcmc(pos, 5000, progress=True);\n",
"\n",
"flat_samples = sampler.get_chain(discard=100, thin=15, flat=True)"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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8wz//Oc/uffee/nqq6847LDDePHFF9u8/qijjuK1116joaGB6dOn8+GHH5Kenk5hYSE5OTm9GhZwsibar3AoIiLJKSmGBowxuwPXAsdba983xswA9u7p6621i4HFAJMmTeqXS9lYV8hOBoFzxW2MIT8/n9mzZ3Pbbbfx0UcfuV31saxdu5b6+npeeuklDj30UNavX8/69esB+PLLLzu87oILLmDJkiWcccYZrFy5kgsvvJDs7GwAcnNzeeihhzjjjDM48sgjWbhwIccdd1zM3gDnNbF0NjdCRESSU7L0CHiBO62172/+/z+BfYwxo80A5cL1dGXC6JuzXHBzc7O7hDDAKaecgtfr5bbbbiM/P5/c3NyYN7/fz+uvv044HObYY49lyJAh7m3dunWEQqE2N6/Xy7x58zjggAP44x//yKxZs/jiiy/cpYe33XZbHn74YXbbbTfOOeccbrvtNvf3i6410L6ccjSncqLH4+nw+4qISPJJ6EDAGDMBwFr7FvDM5vvSgO+AcuB7a601xmwXv1Z2zufzkZub69YccKoNjh07llNOOYXHHnvMXSMglubmZp5//nn22msvRo0a1aNtpqWlcfjhh3PnnXdSVVXFzJkzeeGFF9zHc3Nzueuuuzj22GP53e9+x/z586mtrSUYDGqlQhGRFJSwgcDmOQHvGWOeALDWVhpjPNbaVqCRzcMaxpjjgRuNMQlXR9fJLEhLS+tQyOfcc88lEolw9913d/r6lStXUlNTw/Tp03u97X333Zc//vGP7Lzzzlx22WXccMMNtLS0AJCZmcn999/PpZdeykMPPcRxxx3nDmE4wxmAGyCIiMjglZCBgDHGD5wJnAs0GmMeBbDWRjb3CKQB9cBNwDnAxdbajfFqb3ec2fmBQMAtQzx8+HB++ctf8uCDD/LVV1/FfN37779PIBDo0TLFsQwfPpx7772XWbNm8cgjjzB9+nRWrVqFtRZjDJdffjl33303r7/+OocddhhffPEFjY2N1NfXuxMdRURkcEvII721NgicDDwGXABkRwUDrdbaFiCDTRMGZ1trP45bY3sguuZAJBLB7/fj8/m4+uqrMcZw6aWXxnzdD3/4Q+rr6/n666+7fP9169Zx33338emnn3Z4zCk9fOuttxKJRDjjjDOYN28eH374IQAnnngiL7zwAuvXr2fKlCm8+eabBAIBfD4fw4cPV30BEZFBLiEDAQBr7XfW2nprbRVwOuB1goHNcwI+BqZba/8vnu10dJVf7zxWX19PMBh0J9qNGTOG888/n+XLl7NixYoOr9tjjz0A+Pvf/97ltlesWMGnn37KfffdxwMPPOAuO+wwxnDAAQfw7LPPcuGFF/LRRx/x3//935x55pmUl5dz4IEHsnr1akaOHMnPfvYz7rjjDred6hUQERnckuIob62tZlMw0GKM+Qx4Cbg1kXoCusqvd4YDYFM530gk4gYM8+bNY8KECVxyySUdVgksKiqipKSEv/71r51ut6Kigo8++oj999+fww47jM8//5wbbriB22+/vcP7ZWRkcNxxx/HSSy8xb948HnroISZOnMjSpUsZO3YsK1eu5KijjuLSSy/lzDPPpLm5udPsARERGRySoo4AgLW2yhjzL2AqcLC1tjzebYoWnV/fPpXOuc9ZErimpoZQKERhYSHDhg3jxhtv5Mgjj+TOO+/kiiuucF83bNgwpkyZwuOPP05aWlqbbvrXX3+dzMxMPv/8c4wxNDQ0EA6H2XXXXVm7di2LFy9m6dKl7LHHHpSUlHRo05QpU9x0wlNPPZXXXnuNQw45hBkzZjBx4kSuuuoqysrKWLRoEdtvvz1er5fW1lYAsrKyaGpqarOegtfr7bQegoiIJK6k6BEA2JwVcBhwiLX2g3i3p73o/PpYj0XPEfB4PDQ3N7vpeQcffDDTp09n4cKFfP75521eO2XKFMLhcMzhgebmZioqKhg+fDiZmZnAppP09ttvz9SpU8nKymLlypW8/PLLVFRUdHj9iBEjWLBgAf/1X//FE088wXPPPYcxhosuuognn3ySf//73xx++OE88sgjhMNhNm7cyPr166mqqqKurs6tX+D8LCIiySdpAoHNWQFHWmv/Fe+2bCmnwFAgECAzM5NwOExjYyPGGBYuXEh2djYXX3xxm9fsuuuuBAIB3nzzzQ7v991337mFgtrbZpttOPLII9lrr73YuHEjL730EsuXL+fbb79tM48hIyODefPmse+++/LCCy/w0EMPEYlEOPzww1m9ejW77747CxYs4KCDDqK0tJTGxka8Xi9+v59wOOymJDqLHYmISHJJmkAAwFrbGO82bA2v1+tWDCwsLCQvL4/MzEwaGhrYZpttOP3003nppZfaXP1nZGSw11578Ze//IV169a1eb/KykqysrLc3oD2PB4PO+ywAzNmzGDy5MnU1tbyyiuv8Pzzz7Nq1Sr3JJ6WlsacOXM45JBDWLFiBXPmzCEUCjF+/HiWLVvG/fffT1lZGTNnzuT+++/H4/EQCoWoqqri22+/JRQK0dTU1H8fnIiI9JukCgSSnTNE4MzG9/v9NDc3U19fTygU4le/+hVjxozhxBNPdCcXAsyfP59IJMKCBQva3F9cXExTUxOffPKJO34fS0ZGBjvttBPTp09n3333BeCBBx7g17/+NS+88AINDQ14PB5mzpzJsccey7PPPsvhhx9ORUUFxhhmzpzJu+++666RMHnyZN588018Ph9Dhw4lPz/fXWFRRESSiwKBOHHq+WdmZhIIBPB6vRQVFbFw4ULKyspYsGCB+9ySkhKuu+461qxZw/z5891gYPjw4Wy33XbU1NTwySefdHsiTktLY7vttuPoo4/m/PPPp7i4mOeee44rr7ySb7/9FmMMRx11FEuXLuWDDz7ggAMO4JNPPgEgPz+f22+/nZdffpmWlhZmzJjB9ddfjzHGzS7QioQiIslHgcAAil7MJxQKUVtbS3Nzs5tV0NTUxHbbbcdxxx3Hww8/zKuvvuq+dp999mHhwoV89tlnzJ8/n3A4DGxKMXSCgU8//bRHV+XGGHbaaSfOO+88LrnkEpqamrj66qv55z//CcDRRx/Nyy+/TGNjIwcffHCb+QkHHXQQ77//Pqeccgq33347q1atYujQoeTk5GhFwkHEyTSJdSsuLo5380SkD5lYBXAGs0mTJtnS0tIB3aZzcnZqDUQvRBQOh8nOzqa5uZnMzExCoRDl5eXMmTOHTz/9lEcffZSioiL3vVavXs3FF19MZmYmO+ywg7uiYXl5OWVlZRQUFDBu3LiYhY0c22yzDTU1Ne7/neGF+vp69thjD0444QSMMWzYsIE77riD6upqTjrpJA444AAOPfRQAFpaWth///0JBoO89dZb+Hw+8vP7Z7mHRFrZ0BjzjrV2Urv75gJzAcaMGfNfZWVlcWlbXzLGdLkPDbSSkhI6+1yLi4tZu3btwDaon8Tav0T6mwKBAeB8xk5PgNfrxePxEAwGqa2txePxEIlE3ImEkUiEDz/8kH333ZfddtuNl156ibS0NPf9li9fzrHHHsuECRO46667yMnJAWDJkiXcfvvtTJ8+3a0vEMt7773XZXt33nlnZsyYQWZmJsFgkIceeohvvvmGY445ps0iSW+++SZHHHEECxYs4PLLL2fIkCExf8+tleiBQLR47F/9IdECga4kU1u7o0BA4kFDAwMoerIg/CeLoKCggNzcXLdAD8D48eO55pprWL16Nbfcckub95k6dSq///3v3WECZ87AySefzJw5c3j66ac7ZBj01OjRo/noo4+466672LhxI36/n1NPPZUddtiBJ598kmuuucY96O6zzz7MnDmTRYsW8cEHH9Da2kowGHQDHNUWEBFJfAoE4sjj8eDz+UhPT28TIDjzB2bOnMm0adO46qqrePvtt8O90hoAACAASURBVNu8dt9993XnDMybN8/t6j/rrLP4xS9+QUVFRYc1B3pixIgRzJkzh5qaGu644w5qa2vJzMxk9uzZ7L333ixcuJDf/va37vOvvPJKvF4vv/vd76ioqKC2thagQ2AjIiKJSYFAHERPGozF6Snw+Xxcd911jBw5khNOOIENGza0ed6Pf/xjbrzxRtasWcNpp51GMBjEGMPFF1+Mz+ejvLx8i7pMJ0yYwLx582hqauLFF18ENmUczJo1i5NOOonbbruNP//5z8CmzIVf//rX/OUvf+Gf//ynO7wRHdhsyWcgIiIDQ4FAHDhX/J11nXs8HnddgszMTK6//nrWr1/PKaec0qFwz5QpU7jppptYs2YNTz31FLDppD18+HCam5v5/vvvt6iNRUVF7L///nzwwQduCqExhuuuu47dd9+dX/3qV+7krZNPPpmioiL+8Ic/4PP5ejQvoLvPQEREBkaPAgFjTLYxZoEx5lljzDPGmPOMMdn93bjByrni76rrPBQKsWHDBkKhEHvvvTfXXXcdr776Kj/72c86nNz33ntv9t13Xx555BGCwSAAQ4YMITMzc4t7BQD2228/ioqKeO6552hs3FTUMSsriwceeABrLSeffDItLS34fD4WLFjAG2+8wbJly2Je5bfvAXA+g+zs7E6XbxYRkf7X0x6Bh4GdgEXA7cCOwCP91ajBLnrSoLU25i07O5v8/HwKCgrIz8/nuOOO44YbbuCvf/0rhxxyCOvWraOlpcW9nXzyydTU1PD444/T0tJCMBhkyJAhhEIhKisrqa+vd2/deeONN3jjjTd46623GDduHLW1tTzwwAN88sknvP7663zxxRecfvrpvPvuu8yfP5/XX3+d7bbb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+O1vf4u1ltzcXGbPns2zzz7Lhx9+yHnnnUdWVha33HILxxxzDO+//z6wqXbATjvtxMknn8zuu+/OJ598AhDzyt0Yw0UXXURdXR0rVqyI2d7Ro0dz/vnns3z5csrKypQyKCISJwoEBolQKER5eTnl5eVUV1e3ScGLXur37LPPZsaMGSxatIizzjqLcDjsvkdRURHHHHMMjz76KI8++ijGGE499VRWrVrlPsfr9XLggQcyZ84c5syZw4477hizPWPHjgWgpqam0zZPnbppJes333yTmpqaDimDWqK4f5WUlGCMiXlzSkeLyOCnQGCQ8Hq9FBUVUVRUREFBQZtxdqfYkMfjoaCggN/85jfMnz+fxx9/nBNOOCHmEsC77LILS5cuZdy4cZxzzjm8/PLLbR4fNmwYw4YN67QLPy0tDb/fT11dXadt3n777fF6vfzjH/9w5zNES5Ylio0xc40xpcaY0srKyng3p8fKyspiZp1Ya9vMFRGRwU2BwCDh8XjIyckhJyeH9PT0NuPszgQ8v99PYWEhBQUFXHrppVx77bW88sorHH744TEP/EOHDuW+++5j11135aKLLuLjjz/uVZtycnKor6/v9PH09HQmTpzIV199RXZ2dodCRsmyRPFgXcsiWRQXF3fas1FSUhLv5okkPKUPJqnuUgujJ/E5E/AcI0eOxBjDhRdeyA9+8APmzp3LgQceyIMPPshBBx3U4b2WL1/O8ccfz4oVK/jRj37Eqaee2uE5sZYuDgQCbiAQPSEw2i677MJjjz1GXV0dGRkZWGvdthpj8Hq9br2EWLREsXTVe6H9Q6R76hFIYR6Ph6lTp7Js2TJ+8IMfMG3aNC677DJaWlraPM/r9fL444/z05/+lFtuuYWbb765R4V+ogOBzuy66640NDSwZs0a/H6/0gZFRAaYAoFBzFpLMBjs8qSdlZXFiBEjePzxxznttNO49dZbOeKII1i3bl2b52VkZHDVVVcxc+ZM7r//fq688kpaW1u73H4gEOhyjgBsWtIY4F//+pe78mBraysVFRXdvr+IiGw9DQ0MYs7iRNB5lb6mpiaysrJIT0/nrrvuYs899+Sss87iwAMP5NVXX2XUqFHucz0eD5dddhm5ubnce++9PPvss+y9997k5+eTnp7O6NGjycvLIz8/n6qqKj766CPy8/O7bON2222Hz+fj73//O2eeeSYA1dXV7qqGBQUFhEIhvF6vaguIiPQDBQKDmDPJrqvJdk5XvHOiPeaYY5gwYQKHH344Rx99NCtWrGDYsGHu840xnHPOOey4446sXLmSzz//nH//+99s2LChzeJBABMnTuTXv/51l21MS0vjqKOOYtmyZdTW1pKXl0dBQQGwKQhobGx0exX8fj+RSESBgYhIH1IgMIgZY7qt199+IiFs6q5/8sknmTZtGgcccAC//e1vmTZtWpvnHHzwwRx88MHu/7/++mvy8vLYuHEjGzduJBKJsPPOO/dostbJJ5/ME088wZIlS1iwYAFpaWkMHz4cgOzsbHfSIEAwGKS8vJyioiJycnJ69DmIiEjndEklMe2777489dRTBAIB5syZw/77788//vGPLl/j9XoZOXIkO+20ExMnTuzxjO3dd9+dSZMm8cADDxAOh6moqKClpYVgMOi+b/vUQhER6RsKBKSN6ImF++23HytWrODGG2+kqqqK+fPnM3fuXD755BMikUibW2tra5c3ZxniWLfa2lpOO+00Pv74Y55++mnWrVvHN998Q01NDXV1dW5hoVAohN/vZ8SIEe4wQWcFcbp6TEsbi4j8h0m1g+KkSZNsaWlpvJuRsJz9IXosHjZN4Fu8eDE33XQTNTU1zJo1i0suuYQJEybg8Xhobm4mLS2t0/ftqjpgOBwmLS2N8ePHM3nyZG677Ta22WYbvv/+e7xeL3l5eTQ2NuLz+dr0MlhrO+116Oox2PL8cmPMO9baSZ09nkz7V1f1GQaLZPsdu9u/RPqD5ghITM5VOOBWJLz44ouZP38+V199NXfffTdLly4lKyuLcePGMXbsWH7wgx8wfvx4xo8fzw477MDo0aN7vD2fz8fxxx/PnXfeSW1tLQUFBQSDQTZs2EBmZmbM+QDWWhoaGjRxUERkKygQkJicnoCsrCyCwaD7/7y8PH7/+98za9Ys/vznP1NWVsa6dev46quveP3119ssHLT//vtz4403svPOO3e7vUgkwjbbbEM4HOaPf/wjp5xyCtnZ2V2+pn2wIiIivadAQGJysgmCwaB7snVOzE1NTYwcOZKzzjrLrUMQDAYJBAJs3LiRjz/+mLfffpvbb7+dyZMnM2/ePH79618zZMiQmNtatWoVV199Ne+++y677LIL++yzD5WVlYwePZqioiICgUDM10WnPran3gIRkZ7R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Xl4edrudlJSUcBliH/z1118BC2yFV9/1ByH1ekVRngYuB9oAK4H+wDrgvdpolBDCqijK7UAxsASYpSjKguOegTmKouwAEoGuwFAhxK7aaAfUfmzQ4/Hw9NNP07JlS+69994qH//II4/w0UcfAbB582bmzJlDw4YNgx7jcrl44oknyM7OZtasWRiNRpo3b07z5s255JJLSEtLA8rdvPfddx/jx4/nww8/pFu3blx11VVcdNFFfldoJSUl5OXlkZ+fj16vR6fT4XQ6mTx5Mq+//jq9evXio48+Iioqiv/9738MHjyYhx56iAsuuEC9ppZqCZCTk4MQwiunoD6jJvubw+FQdRtiYmL49ddfefbZZ/njjz946623at0IyM3NZdiwYWpOgJQB9oeIiAjeeustoLzewF9//cWzzz4bUB/AH0aPHs3LL7/MpEmT6NWrF5MnT6Z169ZeLn6As846iy+++IIJEybwxhtvkJWVxYsvvujlefEt4BRGGPUZofbwEcAVwFEhxG1AR6B2SOnHIYQ4IoSwCCFygbFApKIoC45vLgZ+F0I8WZtGAPyTSVyTuuTaVZ/T6VTphcEGSn9wu92sWLGCIUOGMGfOHPbu3cuAAQP46aefAh7jcDgYN24cy5cv59FHH+X8888PuG9SUhLz5s3jmWeewWQy8c477zB8+HCaN2/OiBEjeO+997xinuPGjWPNmjXcdNNNbNmyhcmTJ9OqVSveeOMNbr31VtUIgPLnOn78eEpLSykuLiY9PZ2YmBgvZUWz2Uxqairp6emnnMZ1shAo87+qngKpz5CYmIjZbGbixIkMGzaMwsJCPv74Y9UlfqIQQpCTk8OGDRtYtGgRM2bM4IEHHmD48OFceuml5OXl8cknn9CqVatKzyWNgTFjxvD2229z0003qdLGoaBZs2a89957fPHFF3z11Vd07tw56LVkRcOePXuSmprq9cxDYQOFEUZ9Qah+MPtxip5LUZQ4IJvyxL2TAiFEnqIoY4GXFUXZBegp91DUCLSa4L5xJn/Z2dpjjEajOpmHsnLwrVdgNBq58soreemll4JWE/SHvXv3YrVa6dWrF/3796d58+bccccd3HDDDbzwwgvcf//9XvdTXFzMtddeyw8//MBzzz0X0opQr9dzxx13cMcdd3D06FF27drF2rVrWbVqFQ899BC//vorr776KhERETz2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\n",
"text/plain": [
"<Figure size 547.2x547.2 with 9 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"labels = [\"m\", \"b\", \"sigma\"]\n",
"\n",
"fig = corner.corner(flat_samples, labels=labels)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's it for Part 1! In a subsequent post, we'll dig into meatier topics like multilevel modeling that will enable more practical data analysis."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment