{ "cells": [ { "cell_type": "markdown", "id": "bd4e3309-dc83-4cb6-b944-8596f1007515", "metadata": {}, "source": [ "# Simple Bayesian Inference Examples" ] }, { "cell_type": "code", "execution_count": 10, "id": "aa392e14-90ce-408b-a050-687896821602", "metadata": {}, "outputs": [], "source": [ "import jax.numpy as jnp\n", "from jax import random\n", "from jax.scipy.special import logsumexp\n", "from jax import grad\n", "import pandas as pd\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "72ab27e6-80ac-4eff-80e2-db35562518f8", "metadata": {}, "source": [ "## Linear Regression\n", "\n", "Lets set up a linear regression problem and get samples from the likelihood function. First we produce the data" ] }, { "cell_type": "code", "execution_count": 3, "id": "a6158fdd-7606-4a8f-9fbb-56d1756a7dc1", "metadata": {}, "outputs": [ { "data": { "image/png": "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uHEjNm7cGPA1GhsbI/ocREMRAyGiJNbU1BRRj1BGRkZEmRmNRhPVdd9AwGw248Ybb8ScOXPw3nvvYcaMGbj++uuxe/dupKSkhH1/3wzXO++8g9///vfYvHmz132RZrj6Yvny5X7vd9lll2HZsmW44oor+vSakf78+rJDbvLkyTh06BD+9a9/YdOmTXjllVfw+OOP484778RvfvMbZQbVZZddhiuvvDLga8yYMSPq9yUaKhgIESWxefPmhcwWCOEyKLFy++23o66uDm+88QYyMzPx6KOPYuXKlXjwwQdx6623hn2+b4aruroaALB06dKo1jF27Fg4nU58+eWXmDVrVlTPLSkpQUlJidc1g8GAMWPGRL2OSI0aNQpOpxNHjhzB5MmTlesNDQ1ob2/HqFGjQj4/PT0dF110ES666CJYrVZ861vfwj333IO1a9eioKAAmZmZcDgcA7Z+onji9nmiJPbss89i8+bNYb/6msmIxs6dO/HYY49h9erVmDNnDgDg61//Oi688ELcfffdEQVssXLBBRdArVbjrrvu8pvKHWk5azB97WtfAwA88sgjXtcfeughAMD5558f9LktLS1e3+t0OkyZMgWSJMFms0Gj0eDb3/42XnnlFezfv9/v+U1NTf1cPVF8MSNElMSGSoOrw+HAD3/4QxQXF+O3v/2t12N/+MMfMGXKFPzkJz/Bm2++OSjrGTduHH71q1/h7rvvxplnnolvfetb0Ov12LFjB0pLS/2mX8fbzJkzceWVV2Ljxo1ob2/HkiVLsH37djzzzDO44IILgjZKA8CyZctQXFyMxYsXo6ioCAcOHMCf/vQnnH/++UqD+3333Yf33nsPCxYswLXXXospU6agtbUVu3btwrvvvovW1tbB+qhEMcdAiIji7tFHH8WuXbvw8ssve+0uA+RG61//+tf42c9+htdeew0XXnjhoKzprrvuwujRo/Hoo4/iV7/6FdLS0jBjxgxcfvnlg/L+0frLX/6CMWPG4Omnn8Zrr72G4uJirF27NuxQzR/96Ed49tln8dBDD6GzsxMjR47EjTfeiNtvv125p6ioCNu3b8ddd92FV199FY8//jjy8vIwdepUr1lGRIlIJQ3FPC8RERHRIGCPEBERESUtBkJERESUtBgIERERUdJiIERERERJi4EQERERJS0GQkRERJS0OEcoDKfTidraWmRm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MwbFxcVobGz0um6329Ha2ori4tCBhNlsxnnnnYfMzEy89tprSEkJnYHR6/XQ6/URrb+/5GBvUN6KiIiIAohrIFRQUICCgoKw9y1cuBDt7e3YuXMn5syZAwDYunUrnE4nFixYEPR5JpMJy5cvh16vx5tvvgmDwRCztRMREVHiS4geocmTJ+O8887Dtddei+3bt+N///sfVq9eje9///vKjrGamhpMmjQJ27dvByAHQcuWLUNXVxf++te/wmQyob6+HvX19XA4HPH8OERERDREJMze7WeffRarV6/GOeecA7VajW9/+9v44x//qDxus9lw6NAhdHd3AwB27dql7CgbN26c12udOHECFRUVg7Z2IiIiGppUkiRJ8V7EUGYymWA0GpWt90RERDT0Rfr7OyFKY0REREQDgYEQERERJS0GQkRERJS0GAgRERFR0mIgREREREmLgRARERElLQZCRERElLQYCBEREVHSYiBERERESSthjtiIFzF422QyxXklREREFCnxezvcARoMhMIwm80AgLKysjivhIiIiKJlNpthNBqDPs6zxsJwOp2ora1FZmYmVCpVzF7XZDKhrKwMVVVVPMNsgPFnPTj4cx4c/DkPDv6cB8dA/pwlSYLZbEZpaSnU6uCdQMwIhaFWqzFy5MgBe/2srCz+SzZI+LMeHPw5Dw7+nAcHf86DY6B+zqEyQQKbpYmIiChpMRAiIiKipMVAKE70ej3WrVsHvV4f76UMe/xZDw7+nAcHf86Dgz/nwTEUfs5sliYiIqKkxYwQERERJS0GQkRERJS0GAgRERFR0mIgREREREmLgVCcPPbYY6ioqIDBYMCCBQuwffv2eC9pWFm/fj3mzZuHzMxMFBYW4oILLsChQ4fivaxh77777oNKpcLNN98c76UMOzU1NbjsssuQl5eH1NRUTJ8+HZ999lm8lzXsOBwO3HHHHRg9ejRSU1MxduxY3H333WHPq6LQPvzwQ6xcuRKlpaVQqVR4/fXXvR6XJAl33nknSkpKkJqaiqVLl+LIkSODsjYGQnHwwgsvYM2aNVi3bh127dqFmTNnYvny5WhsbIz30oaNDz74ADfccAM++eQTbN68GTabDcuWLUNXV1e8lzZs7dixA3/+858xY8aMeC9l2Glra8PixYuRkpKCf//73/jyyy/x4IMPIicnJ95LG3buv/9+PPHEE/jTn/6EAwcO4P7778fvfvc7PProo/FeWkLr6urCzJkz8dhjjwV8/He/+x3++Mc/YsOGDfj000+Rnp6O5cuXo7e3d+AXJ9Ggmz9/vnTDDTco3zscDqm0tFRav359HFc1vDU2NkoApA8++CDeSxmWzGazNH78eGnz5s3SkiVLpJtuuineSxpWfvnLX0pnnHFGvJeRFM4//3zpqquu8rr2rW99S7r00kvjtKLhB4D02muvKd87nU6puLhY+v3vf69ca29vl/R6vfSPf/xjwNfDjNAgs1qt2LlzJ5YuXapcU6vVWLp0KbZt2xbHlQ1vHR0dAIDc3Nw4r2R4uuGGG3D++ed7/XNNsfPmm29i7ty5+O53v4vCwkLMnj0bTz75ZLyXNSwtWrQIW7ZsweHDhwEAe/fuxUcffYQVK1bEeWXD14kTJ1BfX+/194fRaMSCBQsG5fciD10dZM3NzXA4HCgqKvK6XlRUhIMHD8ZpVcOb0+nEzTffjMWLF2PatGnxXs6w8/zzz2PXrl3YsWNHvJcybB0/fhxPPPEE1qxZg9tuuw07duzAjTfeCJ1OhyuvvDLeyxtWbr31VphMJkyaNAkajQYOhwP33HMPLr300ngvbdiqr68HgIC/F8VjA4mBEA17N9xwA/bv34+PPvoo3ksZdqqqqnDTTTdh8+bNMBgM8V7OsOV0OjF37lzce++9AIDZs2dj//792LBhAwOhGHvxxRfx7LPP4rnnnsPUqVOxZ88e3HzzzSgtLeXPephiaWyQ5efnQ6PRoKGhwet6Q0MDiouL47Sq4Wv16tX417/+hffeew8jR46M93KGnZ07d6KxsRGnnXYatFottFotPvjgA/zxj3+EVquFw+GI9xKHhZKSEkyZMsXr2uTJk1FZWRmnFQ1fP//5z3Hrrbfi+9//PqZPn47LL78ct9xyC9avXx/vpQ1b4ndfvH4vMhAaZDqdDnPmzMGWLVuUa06nE1u2bMHChQvjuLLhRZIkrF69Gq+99hq2bt2K0aNHx3tJw9I555yDffv2Yc+ePcrX3Llzcemll2LPnj3QaDTxXuKwsHjxYr/xD4cPH8aoUaPitKLhq7u7G2q1969GjUYDp9MZpxUNf6NHj0ZxcbHX70WTyYRPP/10UH4vsjQWB2vWrMGVV16JuXPnYv78+XjkkUfQ1dWFVatWxXtpw8YNN9yA5557Dm+88QYyMzOVOrPRaERqamqcVzd8ZGZm+vVdpaenIy8vj/1YMXTLLbdg0aJFuPfee/G9730P27dvx8aNG7Fx48Z4L23YWblyJe655x6Ul5dj6tSp2L17Nx566CFcddVV8V5aQuvs7MTRo0eV70+cOIE9e/YgNzcX5eXluPnmm/Hb3/4W48ePx+jRo3HHHXegtLQUF1xwwcAvbsD3pVFAjz76qFReXi7pdDpp/vz50ieffBLvJQ0rAAJ+/e1vf4v30oY9bp8fGP/85z+ladOmSXq9Xpo0aZK0cePGeC9pWDKZTNJNN90klZeXSwaDQRozZoz0q1/9SrJYLPFeWkJ77733Av6dfOWVV0qSJG+hv+OOO6SioiJJr9dL55xzjnTo0KFBWZtKkjguk4iIiJITe4SIiIgoaTEQIiIioqTFQIiIiIiSFgMhIiIiSloMhIiIiChpMRAiIiKipMVAiIiIiJIWAyEiIiJKWgyEiIiIKGkxECIiIqKkxUCIiJJKU1MTiouLce+99yrXPv74Y+h0Oq/Tr4koOfCsMSJKOm+//TYuuOACfPzxx5g4cSJmzZqFb37zm3jooYfivTQiGmQMhIgoKd1www149913MXfuXOzbtw87duyAXq+P97KIaJAxECKipNTT04Np06ahqqoKO3fuxPTp0+O9JCKKA/YIEVFSOnbsGGpra+F0OnHy5Ml4L4eI4oQZISJKOlarFfPnz8esWbMwceJEPPLII9i3bx8KCwvjvTQiGmQMhIgo6fz85z/Hyy+/jL179yIjIwNLliyB0WjEv/71r3gvjYgGGUtjRJRU3n//fTzyyCP4+9//jqysLKjVavz973/Hf//7XzzxxBPxXh4RDTJmhIiIiChpMSNERERESYuBEBERESUtBkJERESUtBgIERERUdJiIERERERJi4EQERERJS0GQkRERJS0GAgRERFR0mIgREREREmLgRARERElLQZCRERElLQYCBEREVHS+v+Y2YDLQoTdjQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "key = random.PRNGKey(0)\n", "\n", "m = 0.1\n", "c = 0\n", "X = jnp.linspace(0,10,100)\n", "noise_amount = 0.1\n", "eps = noise_amount*random.normal(key, X.shape)\n", "\n", "Y = m*X + c + eps\n", "\n", "plt.plot(X,Y)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.title(\"Y = mX + c + noise\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "8aa5cab1-4d2b-4d12-bd22-c53a614e9e67", "metadata": {}, "source": [ "### Linear Regressor Model\n", "\n", "Here we create the model. All we need is a class that has a `logpdf` function that takes in a dictionary of data and outputs the logpdf" ] }, { "cell_type": "code", "execution_count": 4, "id": "23c271cc-943c-49e2-86af-746c6d9ee4ae", "metadata": {}, "outputs": [], "source": [ "class LinearRegressor:\n", " def __init__(self, X, Y, noise=1):\n", " self.X = X\n", " self.Y = Y\n", " self.noise = noise\n", "\n", " def logpdf(self, x):\n", " Z = (self.Y - x['m']*self.X - x['c'])/self.noise\n", " return jnp.sum(-(Z**2))/2 " ] }, { "cell_type": "markdown", "id": "cd80128d-7c19-4241-9c1f-bb9c2cb7e393", "metadata": {}, "source": [ "__Instantiate the model__" ] }, { "cell_type": "code", "execution_count": 5, "id": "27ab9430-73c5-4e3f-b797-e29247515649", "metadata": {}, "outputs": [], "source": [ "LR = LinearRegressor(X,Y,noise=noise_amount) # Instantiate the model" ] }, { "cell_type": "markdown", "id": "c1948fac-eeaa-4b73-b75d-0848bd5b8e6d", "metadata": {}, "source": [ "Set starting point of the NUTS sampler to some point specified as a dictionary. Then initialize the NUTS sampler" ] }, { "cell_type": "code", "execution_count": 6, "id": "1e2332dd-937f-4a43-b6d0-8830898240c1", "metadata": {}, "outputs": [], "source": [ "from quicksampler import NUTS\n", "import jax\n", "\n", "initial_position = {'m':0.0, 'c':1.0} # starting point of the NUTS sampler\n", "problem = NUTS(LR, initial_position)" ] }, { "cell_type": "markdown", "id": "b2da8690-635f-44fd-8887-edc96fbc9b72", "metadata": {}, "source": [ "__Run the results__" ] }, { "cell_type": "code", "execution_count": 7, "id": "7f3edc26-5f1b-4b42-b842-a35dc917f2b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running the inference for 1000 samples\n" ] } ], "source": [ "result = problem.run(1000)" ] }, { "cell_type": "code", "execution_count": 12, "id": "d9d720a1-8a69-4940-ad4b-ebe523ad792a", "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", "
mc
00.103061-0.013709
10.103323-0.011630
20.105348-0.018875
30.105896-0.039735
40.108621-0.031321
.........
9950.104327-0.025296
9960.105400-0.005010
9970.105913-0.027444
9980.0996640.005911
9990.1002740.014101
\n", "

1000 rows × 2 columns

\n", "
" ], "text/plain": [ " m c\n", "0 0.103061 -0.013709\n", "1 0.103323 -0.011630\n", "2 0.105348 -0.018875\n", "3 0.105896 -0.039735\n", "4 0.108621 -0.031321\n", ".. ... ...\n", "995 0.104327 -0.025296\n", "996 0.105400 -0.005010\n", "997 0.105913 -0.027444\n", "998 0.099664 0.005911\n", "999 0.100274 0.014101\n", "\n", "[1000 rows x 2 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(result)\n", "df" ] }, { "cell_type": "code", "execution_count": 13, "id": "e3afa892-195d-465c-bc65-b3a1884b3ccf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[, ]],\n", " dtype=object)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.hist()" ] }, { "cell_type": "markdown", "id": "8c8dc49a-35da-4015-95cb-2a2382acd4ad", "metadata": {}, "source": [ "The chain will be returned as a dataframe. We can now create a traceplot and a histogram of the parameters" ] }, { "cell_type": "code", "execution_count": 14, "id": "eb824d0a-2a2b-4b80-9246-4f624f4bb16a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGzCAYAAADHdKgcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADSFklEQVR4nOydd3wURf/HP3epBEhCKAm9S2+CNAsgUbAjqMiDoojl8SdYeGz4WFAfH3ysWFAeuz6KIHZRUQQBhdBBioAgIDWBUJKQkHZ3vz/2dm92dmZ3dm/vLiHzfr3yyt3e7Oxsm/nOt40nEAgEIJFIJBKJRFKD8Ma6ARKJRCKRSCTRRgpAEolEIpFIahxSAJJIJBKJRFLjkAKQRCKRSCSSGocUgCQSiUQikdQ4pAAkkUgkEomkxiEFIIlEIpFIJDUOKQBJJBKJRCKpcUgBSCKRSCQSSY1DCkASiUQSBoMHD8bgwYNj3QyJRGITKQBJJJKI4vF4hP4WL14c66ZGlZKSEkydOrXGnbdEUlWIj3UDJBLJ6c3//vc/3fcPPvgACxYsMGzv1KlTNJsVc0pKSvD4448DgNQgSSQxQApAEokkolx33XW67ytWrMCCBQsM22lKSkqQkpISyaZJJJIajDSBSSSSmDN48GB07doVa9euxXnnnYeUlBQ89NBDAICvvvoKl1xyCZo0aYKkpCS0bdsWTz75JHw+n6GelStX4uKLL0a9evVQu3ZtdO/eHS+99JKuzLZt23DVVVchIyMDycnJ6NOnD77++mtdmffeew8ejwdLly7Fbbfdhvr16yM1NRXjxo3D8ePHLc/n8OHDmDBhAjIzM5GcnIwePXrg/fff137fs2cPGjZsCAB4/PHHNTPg1KlT7V46iUTiEKkBkkgkVYKjR4/ioosuwrXXXovrrrsOmZmZABRhpE6dOpg8eTLq1KmDRYsW4dFHH0VhYSGeffZZbf8FCxbg0ksvRePGjXHXXXchKysLW7duxbx583DXXXcBALZs2YKzzz4bTZs2xYMPPojatWvjk08+wYgRI/DZZ5/hyiuv1LVp4sSJSE9Px9SpU7F9+3a8/vrr+Ouvv7B48WJ4PB7meZw6dQqDBw/Gzp07MXHiRLRu3Rpz587FjTfeiBMnTuCuu+5Cw4YN8frrr+P222/HlVdeiZEjRwIAunfvHolLK5FIWAQkEokkitxxxx0BuusZNGhQAEBg5syZhvIlJSWGbbfddlsgJSUlUFpaGggEAoHKyspA69atAy1btgwcP35cV9bv92ufhw4dGujWrZu2n/r7wIEDA+3bt9e2vfvuuwEAgd69ewfKy8u17c8880wAQOCrr77StX3QoEHa9+nTpwcABD788ENtW3l5eWDAgAGBOnXqBAoLCwOBQCBw5MiRAIDAY489xrpMEokkwkgTmEQiqRIkJSVh/Pjxhu21atXSPhcVFSE/Px/nnnsuSkpKsG3bNgDA+vXrsXv3btx9991IT0/X7a9qao4dO4ZFixbhmmuu0erJz8/H0aNHMWzYMOzYsQMHDhzQ7XvrrbciISFB+3777bcjPj4e3333Hfc8vvvuO2RlZWHMmDHatoSEBNx55504efIklixZIn5RJBJJxJAmMIlEUiVo2rQpEhMTDdu3bNmChx9+GIsWLUJhYaHut4KCAgDAn3/+CQDo2rUrt/6dO3ciEAjgkUcewSOPPMIsc/jwYTRt2lT73r59e93vderUQePGjbFnzx7ucf766y+0b98eXq9+fqlGuf3111/cfSUSSfSQApBEIqkSkJoelRMnTmDQoEFITU3FE088gbZt2yI5ORnr1q3DAw88AL/fL1y/Wvbee+/FsGHDmGXatWvnrPESiaTaIQUgiURSZVm8eDGOHj2Kzz//HOedd562fffu3bpybdu2BQBs3rwZ2dnZzLratGkDQDFH8crQ7NixA0OGDNG+nzx5EocOHcLFF1/M3adly5bYuHEj/H6/TgukmutatmwJAFwnaolEEh2kD5BEIqmyxMXFAQACgYC2rby8HK+99pqu3JlnnonWrVtj+vTpOHHihO43dd9GjRph8ODB+O9//4tDhw4ZjnXkyBHDtjfeeAMVFRXa99dffx2VlZW46KKLuG2++OKLkZubizlz5mjbKisr8corr6BOnToYNGgQAGg5juj2SiSS6CA1QBKJpMoycOBA1KtXDzfccAPuvPNOeDwe/O9//9MJRADg9Xrx+uuv47LLLkPPnj0xfvx4NG7cGNu2bcOWLVvwww8/AABmzJiBc845B926dcMtt9yCNm3aIC8vDzk5Odi/fz9+++03Xb3l5eUYOnQorrnmGmzfvh2vvfYazjnnHFx++eXcNt96663473//ixtvvBFr165Fq1at8Omnn2LZsmWYPn066tat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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot(title=\"Traceplot\");" ] }, { "cell_type": "markdown", "id": "5386a66f-c730-48b8-8e0d-b8620692f6ad", "metadata": {}, "source": [ "## Inferring coin flip bias with the Metropolis Hastings Sampler & numpy\n", "\n", "Same thing again, lets generate some data. We'll do 100 experiments of 10 flips each using a biased coin with parameter $p$" ] }, { "cell_type": "code", "execution_count": 50, "id": "9974e83e-e2c9-4ffe-8a69-786d6b4636d3", "metadata": {}, "outputs": [], "source": [ "import jax\n", "import jax.numpy as jnp\n", "import scipy\n", "\n", "N_experiments = 100\n", "N_flips = 10\n", "p = 0.7\n", "\n", "rv = scipy.stats.binom(N_flips, p)\n", "head_counts = rv.rvs(N_experiments)" ] }, { "cell_type": "markdown", "id": "c29386e0-fada-4e06-be13-e2c029c895ac", "metadata": {}, "source": [ "Now lets define our coin flip model:" ] }, { "cell_type": "code", "execution_count": 51, "id": "37690738-cbf9-4a80-a0cf-bd9a1385a2fa", "metadata": {}, "outputs": [], "source": [ "class CoinFlip:\n", " def __init__(self, N_flips, number_of_heads):\n", " self.head_counts = number_of_heads \n", " self.N_flips = N_flips\n", "\n", " def logpdf(self, x):\n", " p = x['p']\n", " return jnp.sum( jax.scipy.stats.binom.logpmf(self.head_counts, self.N_flips, p) )" ] }, { "cell_type": "code", "execution_count": 52, "id": "6cd32757-9fbd-4f34-9211-969b84625078", "metadata": {}, "outputs": [], "source": [ "from quicksampler import NUTS, MHSampler\n", "\n", "CF = CoinFlip(10, head_counts)\n", "\n", "initial_position = {'p':0.1} # starting point of the NUTS sampler\n", "problem2 = MHSampler(CF, initial_position, limits={'p': [0,1]}, step_size=0.1, backend='numpy');" ] }, { "cell_type": "code", "execution_count": 53, "id": "327f751c-d9fe-469d-bede-31a1119b6988", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Getting 1000 using Metropolis Hastings\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████| 1000/1000 [00:03<00:00, 293.00it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Sampling finished with an acceptance rate of 60.79\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "result2 = problem2.run(1000);" ] }, { "cell_type": "code", "execution_count": 54, "id": "6d188b73-4ea1-4e16-ae1a-1c1e347d6a58", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "result = pd.DataFrame(result2)\n", "\n", "result['p'].hist(bins=100)\n", "plt.xlim((0,1))\n", "plt.axvline(p, c='r')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a800f750-1852-43e5-9c26-98ce5210bf13", "metadata": {}, "source": [ "## Inferring coin flip bias with the Metropolis Hastings sampler and JAX" ] }, { "cell_type": "code", "execution_count": 55, "id": "78924843-3a4f-4ef6-9d01-d0db9d7f2f1c", "metadata": {}, "outputs": [], "source": [ "CF = CoinFlip(10, head_counts)\n", "\n", "initial_position = {'p':0.1} # starting point of the NUTS sampler\n", "problem2 = MHSampler(CF, initial_position, limits={'p': [0,1]}, step_size=0.1, backend='JAX');" ] }, { "cell_type": "code", "execution_count": 56, "id": "7dc608a4-87cb-4879-8e0d-9183e3c1db17", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Getting 1000 using Metropolis Hastings\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████| 1000/1000 [00:03<00:00, 285.28it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Sampling finished with an acceptance rate of 72.15\n" ] } ], "source": [ "result2 = problem2.run(1000);" ] }, { "cell_type": "code", "execution_count": 57, "id": "1e533cc3-628b-4a69-9115-cff5b68eb14f", "metadata": {}, "outputs": [ { "data": { "image/png": "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+umnNWLECKWkpGj06NGqra0doErjXzi9eOyxx/SFL3xBl112mS677DKVlpZ+ZO/Qe+H+vThvy5Ytcjgcmj59emQLTDDh9qOlpUUVFRXKy8uT2+3Wpz71Kf5bZZNwe7FmzRp9+tOfVmpqqgoKCrRgwQK1t7cPULXxa/fu3Zo6dary8/PlcDi0devWjzzm+eef12c/+1m53W598pOf1JNPPhn+Hdv65Qg22bJli5WcnGw98cQT1uuvv27NmTPHyszMtJqbm7ud/8c//tFyOp3W6tWrrTfeeMNatGiR5XK5rFdffXWAK48/4fbiG9/4hlVTU2MdOHDAOnTokPXtb3/bysjIsP76178OcOXxJ9xenNfU1GR9/OMft77whS9Y06ZNG5hiE0C4/fD7/da4ceOsm2++2XrxxRetpqYm6/nnn7cOHjw4wJXHn3B7sWnTJsvtdlubNm2ympqarB07dlh5eXnWggULBrjy+FNbW2vdc8891jPPPGNJsp599tke5x85csQaPHiwVVlZab3xxhvWunXrLKfTadXV1YV1vzEZZsaPH29VVFSEtoPBoJWfn29VV1d3O//WW2+1Jk+e3GmsqKjI+t73vhfROhNBuL242NmzZ620tDTrl7/8ZaRKTBh96cXZs2et6667zvrFL35hlZeXE2ZsFG4/1q9fb1155ZXWmTNnBqrEhBFuLyoqKqwbb7yx01hlZaU1YcKEiNaZaHoTZu666y7rmmuu6TR22223WWVlZWHdV8y9zHTmzBk1NjaqtLQ0NJaUlKTS0lI1NDR0e0xDQ0On+ZJUVlZ2yfnonb704mJtbW0KBAK2f6lYoulrL1asWKGhQ4dq9uzZA1FmwuhLP5577jkVFxeroqJCOTk5GjVqlO6//34Fg8GBKjsu9aUX1113nRobG0MvRR05ckS1tbW6+eabB6Rm/D+7/v2OuW/N/uc//6lgMNjlNwHn5OToz3/+c7fHeL3ebud7vd6I1ZkI+tKLi919993Kz8/v8mRFePrSixdffFGPP/64Dh48OAAVJpa+9OPIkSPauXOnZs2apdraWr399tu64447FAgEtHTp0oEoOy71pRff+MY39M9//lPXX3+9LMvS2bNn9f3vf18/+clPBqJkXOBS/377fD598MEHSk1N7dU6MXdlBvFj1apV2rJli5599lmlpKREu5yE8v777+v222/XY489pssvvzza5UAffpnu0KFD9eijj2rs2LG67bbbdM8992jDhg3RLi3hPP/887r//vv1yCOPaP/+/XrmmWe0fft23XvvvdEuDX0Uc1dmLr/8cjmdTjU3N3cab25uVm5ubrfH5ObmhjUfvdOXXpz34IMPatWqVfrDH/6gz3zmM5EsMyGE24u//OUveueddzR16tTQWEdHhyRp0KBBOnz4sK666qrIFh3H+vJ3Iy8vTy6XS06nMzQ2cuRIeb1enTlzRsnJyRGtOV71pReLFy/W7bffru9+97uSpNGjR6u1tVVz587VPffco6Qk/j9/oFzq3+/09PReX5WRYvDKTHJyssaOHav6+vrQWEdHh+rr61VcXNztMcXFxZ3mS5LH47nkfPROX3ohSatXr9a9996ruro6jRs3biBKjXvh9mLEiBF69dVXdfDgwdDPLbfcopKSEh08eFAFBQUDWX7c6cvfjQkTJujtt98OhUpJevPNN5WXl0eQ6Ye+9KKtra1LYDkfMi2+rnBA2fbvd3jvTR4YW7Zssdxut/Xkk09ab7zxhjV37lwrMzPT8nq9lmVZ1u23324tXLgwNP+Pf/yjNWjQIOvBBx+0Dh06ZC1dupSPZtsk3F6sWrXKSk5Otv77v//b+vvf/x76ef/996N1CnEj3F5cjE8z2Svcfhw9etRKS0uz5s2bZx0+fNjatm2bNXToUGvlypXROoW4EW4vli5daqWlpVm/+tWvrCNHjli///3vrauuusq69dZbo3UKceP999+3Dhw4YB04cMCSZD300EPWgQMHrHfffdeyLMtauHChdfvtt4fmn/9o9p133mkdOnTIqqmpiZ+PZluWZa1bt84aNmyYlZycbI0fP956+eWXQ/u+9KUvWeXl5Z3m/+Y3v7E+9alPWcnJydY111xjbd++fYArjl/h9OKKK66wJHX5Wbp06cAXHofC/XtxIcKM/cLtx0svvWQVFRVZbrfbuvLKK6377rvPOnv27ABXHZ/C6UUgELCWLVtmXXXVVVZKSopVUFBg3XHHHda//vWvgS88zuzatavbfwPOP/7l5eXWl770pS7HjBkzxkpOTrauvPJKa+PGjWHfr8OyuKYGAADMFXPvmQEAAAgHYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARvs/wIiuy6GaWyAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "result = pd.DataFrame(result2)\n", "\n", "result['p'].hist(bins=100)\n", "plt.xlim((0,1))\n", "plt.axvline(p, c='r')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "361dfbba-5835-4df8-90b8-23936032cb4b", "metadata": {}, "source": [ "## Inferring coin flip bias with the NUTS sampler" ] }, { "cell_type": "code", "execution_count": 58, "id": "e6afbb13-7289-472a-96c5-6b888a6ac68b", "metadata": {}, "outputs": [], "source": [ "CF = CoinFlip(10, head_counts)\n", "\n", "initial_position = {'p':0.1} # starting point of the NUTS sampler\n", "problem2 = NUTS(CF, initial_position, limits={'p': [0,1], 'mu': [0.0, 1.0]}, step_size=0.1);" ] }, { "cell_type": "code", "execution_count": 59, "id": "48c945f5-d2be-4c1c-9a89-11a63ed72287", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running the inference for 1000 samples\n" ] } ], "source": [ "result2 = problem2.run(1000);" ] }, { "cell_type": "code", "execution_count": 60, "id": "b63a374d-7a58-4768-aa20-50eb2547fd29", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGdCAYAAAA8F1jjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAh5ElEQVR4nO3de3BU9f3/8VcImw2RJJBgbiVcLeINnaJgvBUwELGiVOYniEPBoVprcEYyrYKiJN6gjF9l6kQcLYKdGtPqCFZAMKDAoKBDJKN4oXKx6JDEGk2CiVkOyfn9UbMlJCAbdrPv7D4fM5nuOXv27GfzDubZzWYT47quKwAAAIN6hHsBAAAAJ0KoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwKye4V7A8VpaWnTo0CElJiYqJiYm3MsBAACnwHVdHT58WFlZWerRI3jPg5gLlUOHDik7OzvcywAAAJ3w5Zdfqn///kE7n7lQSUxMlCQdOHBAKSkpYV4NHMfRm2++qQkTJsjj8YR7OVGNWdgREbNoaJCysv57+dAh6YwzwrueToqIWUSIb7/9VoMHD/Z/Hw8Wc6HS+uOexMREJSUlhXk1cBxHCQkJSkpK4j8CYcYs7IiIWcTG/u9yUlK3DpVuP4sI4TiOJAX9ZRu8mBYAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWQGFyrJlyzRixAglJSUpKSlJOTk5euONN/zXNzU1KT8/X6mpqerdu7emTJmi6urqoC8aAABEh4BCpX///lq8eLHKy8u1c+dOjRs3TjfccIM+/vhjSdLcuXP1+uuv6+WXX9aWLVt06NAh3XjjjSFZOAAAiHw9Azl40qRJbbYfffRRLVu2TDt27FD//v21fPlylZSUaNy4cZKkFStW6JxzztGOHTt06aWXBm/VAAAgKnT6NSrNzc0qLS1VQ0ODcnJyVF5eLsdxlJub6z9m+PDhGjBggLZv3x6UxQIAgOgS0DMqkvTRRx8pJydHTU1N6t27t1atWqVzzz1XFRUViouLU58+fdocn56erqqqqhOez+fzyefz+bfr6+slSY7jyHGcQJeHIGudAbMIP2ZhR0TMwnHk8V90pG76WCJiFhEiVDMIOFTOPvtsVVRUqK6uTq+88opmzpypLVu2dHoBixYtUlFRUbv9b7/9thISEjp9XgRXWVlZuJeAHzELO7rzLGKbmnTdj5c3bNig5vj4sK7ndHXnWUSKxsbGkJw3xnVd93ROkJubq6FDh2rq1Km6+uqr9d1337V5VmXgwIG6++67NXfu3A5v39EzKtnZ2aqsrFRqaurpLA1B4DiOysrKNH78eHk8np++AUKGWdgREbNoaJCnb19JkvPdd9IZZ4R5QZ0TEbOIEDU1NcrMzFRdXZ2SkpKCdt6An1E5XktLi3w+n0aOHCmPx6NNmzZpypQpkqQ9e/bo4MGDysnJOeHtvV6vvF5vu/0ej4cvOkOYhx3Mwo5uPYtj1u3xeNpsd0fdehYRIlSf/4BCZf78+Zo4caIGDBigw4cPq6SkRJs3b9aGDRuUnJys2bNnq6CgQCkpKUpKStJdd92lnJwcfuMHAAB0SkCh8vXXX+s3v/mNKisrlZycrBEjRmjDhg0aP368JOnJJ59Ujx49NGXKFPl8PuXl5enpp58OycIBAEDkCyhUli9fftLr4+PjVVxcrOLi4tNaFAAAgMTf+gEAAIYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAtDNo3tpwLwGQRKgAAADDCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMCugUFm0aJEuueQSJSYmKi0tTZMnT9aePXvaHDNmzBjFxMS0+bjjjjuCumgAABAdAgqVLVu2KD8/Xzt27FBZWZkcx9GECRPU0NDQ5rjbbrtNlZWV/o8lS5YEddEAACA69Azk4PXr17fZXrlypdLS0lReXq6rrrrKvz8hIUEZGRnBWSEAAIhaAYXK8erq6iRJKSkpbfa/+OKL+tvf/qaMjAxNmjRJDzzwgBISEjo8h8/nk8/n82/X19dLkhzHkeM4p7M8BEHrDJhF+DELOyJiFo4jj/+iIx33WLyxbrd4fBExiwgRqhnEuK7rduaGLS0tuv7661VbW6tt27b59z/77LMaOHCgsrKy9OGHH+ree+/VqFGj9Oqrr3Z4nsLCQhUVFbXbX1JScsK4AQCcntimJl03bZokaU1pqZrj48O8InR3jY2Nmj59uurq6pSUlBS083Y6VH7/+9/rjTfe0LZt29S/f/8THvfWW2/p6quv1t69ezV06NB213f0jEp2drYqKyuVmpramaUhiBzHUVlZmcaPHy+Px/PTN0DIMAs7ImIWDQ3y9O0rSXK++04644w2V59fuEG7C/PCsbKARMQsIkRNTY0yMzODHiqd+tHPnDlztGbNGm3duvWkkSJJo0ePlqQThorX65XX62233+Px8EVnCPOwg1nY0a1nccy6PR5Pm21J8jXHdKvH1q1nESFC9fkPKFRc19Vdd92lVatWafPmzRo8ePBP3qaiokKSlJmZ2akFAgCA6BVQqOTn56ukpESvvfaaEhMTVVVVJUlKTk5Wr169tG/fPpWUlOjaa69VamqqPvzwQ82dO1dXXXWVRowYEZIHAAAAIldAobJs2TJJ/31Tt2OtWLFCs2bNUlxcnDZu3KilS5eqoaFB2dnZmjJlihYsWBC0BQMAgOgR8I9+TiY7O1tbtmw5rQUBAAC04m/9AAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEASJIGzVt70m0gHAgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgCANgbNWxvuJQB+hAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQCi0DkPrG+zzd/3gVWECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGBWQKGyaNEiXXLJJUpMTFRaWpomT56sPXv2tDmmqalJ+fn5Sk1NVe/evTVlyhRVV1cHddEAACA6BBQqW7ZsUX5+vnbs2KGysjI5jqMJEyaooaHBf8zcuXP1+uuv6+WXX9aWLVt06NAh3XjjjUFfOAAAiHw9Azl4/fq2bxC0cuVKpaWlqby8XFdddZXq6uq0fPlylZSUaNy4cZKkFStW6JxzztGOHTt06aWXBm/lAAAg4gUUKserq6uTJKWkpEiSysvL5TiOcnNz/ccMHz5cAwYM0Pbt2zsMFZ/PJ5/P59+ur6+XJDmOI8dxTmd5CILWGTCL8GMWdkTCLLyxrv+y4zj+7WMvt25bFgmziBShmkGM67ruTx/WXktLi66//nrV1tZq27ZtkqSSkhLdeuutbcJDkkaNGqWxY8fqT3/6U7vzFBYWqqioqN3+kpISJSQkdGZpAICfENvUpOumTZMkrSktVXN8fJhXhO6usbFR06dPV11dnZKSkoJ23k4/o5Kfn6/du3f7I6Wz5s+fr4KCAv92fX29srOzNXbsWKWmpp7WuXH6HMdRWVmZxo8fL4/HE+7lRDVmYUckzOKS+17TdT9eXrAzVj/ExUqSdhfm6fzCDf7jdhfmhWF1py4SZhEpampqQnLeToXKnDlztGbNGm3dulX9+/f378/IyNCRI0dUW1urPn36+PdXV1crIyOjw3N5vV55vd52+z0eD190hjAPO5iFHd15Fr7mmDaXW7c9Hk+b67rL4+vOs4gUofr8B/RbP67ras6cOVq1apXeeustDR48uM31I0eOlMfj0aZNm/z79uzZo4MHDyonJyc4KwYAAFEjoGdU8vPzVVJSotdee02JiYmqqqqSJCUnJ6tXr15KTk7W7NmzVVBQoJSUFCUlJemuu+5STk4Ov/EDAAACFlCoLFu2TJI0ZsyYNvtXrFihWbNmSZKefPJJ9ejRQ1OmTJHP51NeXp6efvrpoCwWAABEl4BC5VR+QSg+Pl7FxcUqLi7u9KIAAAAk/tYPAAAwjFABAABmESoAAMAsQgUAAJhFqAAAALMIFQDASQ2at7bN/wJdiVABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgA4oUHz1oZ7CYhyhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYFHCpbt27VpEmTlJWVpZiYGK1evbrN9bNmzVJMTEybj2uuuSZY6wUAAFEk4FBpaGjQhRdeqOLi4hMec80116iystL/8dJLL53WIgEAQHTqGegNJk6cqIkTJ570GK/Xq4yMjE4vCgAAQOpEqJyKzZs3Ky0tTX379tW4ceP0yCOPKDU1tcNjfT6ffD6ff7u+vl6S5DiOHMcJxfIQgNYZMIvwYxZ2RMIsvLFum8stP247jtPmulat+6095kiYRaQI1QxiXNdt/xV5qjeOidGqVas0efJk/77S0lIlJCRo8ODB2rdvn+677z717t1b27dvV2xsbLtzFBYWqqioqN3+kpISJSQkdHZpAICTiG1q0nXTpkmS1pSWqjk+PswrQnfX2Nio6dOnq66uTklJSUE7b9BD5Xj79+/X0KFDtXHjRl199dXtru/oGZXs7GxVVlae8FkYdB3HcVRWVqbx48fL4/GEezlRjVnYEQmzuOS+11Tx+P+TJF30h5f1Q9yphcruwrxQLitgkTCLSFFTU6PMzMygh0pIfvRzrCFDhqhfv37au3dvh6Hi9Xrl9Xrb7fd4PHzRGcI87GAWdnTnWfiaY9pcPnb7ZKw+3u48i0gRqs9/yN9H5auvvvJXFgAAQCACfkbl+++/1969e/3bBw4cUEVFhVJSUpSSkqKioiJNmTJFGRkZ2rdvn+655x6dddZZysuz9XQhAACwL+BQ2blzp8aOHevfLigokCTNnDlTy5Yt04cffqgXXnhBtbW1ysrK0oQJE/Twww93+OMdAACAkwk4VMaMGaOTvf52w4YNp7UgAACAVvytHwAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALMIFQCIMoPmrQ33EoBTRqgAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAUYS3z0d3Q6gAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAEer4t8sP1tvn8zb86EqECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwKOFS2bt2qSZMmKSsrSzExMVq9enWb613X1YMPPqjMzEz16tVLubm5+vzzz4O1XgAAEEUCDpWGhgZdeOGFKi4u7vD6JUuW6M9//rOeeeYZvffeezrjjDOUl5enpqam014sAACILj0DvcHEiRM1ceLEDq9zXVdLly7VggULdMMNN0iS/vrXvyo9PV2rV6/WtGnTTm+1AAAgqgQcKidz4MABVVVVKTc3178vOTlZo0eP1vbt2zsMFZ/PJ5/P59+ur6+XJDmOI8dxgrk8dELrDJhF+DELO7rLLLyxbps1emPdE15uOWb7ZBzHaXfecOous4gGoZpBUEOlqqpKkpSent5mf3p6uv+64y1atEhFRUXt9r/99ttKSEgI5vJwGsrKysK9BPyIWdhhfRZLRknr1q1rs90qtqnZf/mRi5vVHN+sU7Fu3bp257XA+iyiQWNjY0jOG9RQ6Yz58+eroKDAv11fX6/s7GyNHTtWqampYVwZpP8WcllZmcaPHy+PxxPu5UQ1ZmFHd5nF+YUbtLswr812q15HYnXdj5cX7IzVD3Gxp3TO3YV5/vMce+5w6S6ziAY1NTUhOW9QQyUjI0OSVF1drczMTP/+6upqXXTRRR3exuv1yuv1ttvv8Xj4ojOEedjBLOywPgtfc0yb9fmaY/yXexxz2dcc0+a6k/F4PP5jLT1267OIBqH6/Af1fVQGDx6sjIwMbdq0yb+vvr5e7733nnJycoJ5VwAAIAoE/IzK999/r7179/q3Dxw4oIqKCqWkpGjAgAG6++679cgjj+jnP/+5Bg8erAceeEBZWVmaPHlyMNcNAACiQMChsnPnTo0dO9a/3fr6kpkzZ2rlypW655571NDQoNtvv121tbW64oortH79esXHxwdv1QAAICoEHCpjxoyR657419hiYmL00EMP6aGHHjqthQEAAPC3fgAAgFmECgAAMItQAQAAZhEqAADArLC/My0AILQGzVsb7iUAncYzKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAABOC2/Rj1AiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAIBO4W/8oCsQKgAAwCxCBQAAmEWoAAAAswgVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwCxCBQAAmEWoAEAEan17e97mHt0doQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYFfRQKSwsVExMTJuP4cOHB/tuAABAFOgZipOed9552rhx4//upGdI7gYAAES4kBREz549lZGREYpTAwCAKBKS16h8/vnnysrK0pAhQ3TLLbfo4MGDobgbAAAQ4YL+jMro0aO1cuVKnX322aqsrFRRUZGuvPJK7d69W4mJie2O9/l88vl8/u36+npJkuM4chwn2MtDgFpnwCzCj1nY0R1m4Y11T/l6b6yrlp84vpXjOG1u27odrs9Fd5hFtAjVDGJc1z21r85Oqq2t1cCBA/XEE09o9uzZ7a4vLCxUUVFRu/0lJSVKSEgI5dIAIGrFNjXpumnTJElrSkvVHB8f5hWhu2tsbNT06dNVV1enpKSkoJ035K9y7dOnj4YNG6a9e/d2eP38+fNVUFDg366vr1d2drbGjh2r1NTUUC8PP8FxHJWVlWn8+PHyeDzhXk5UYxZ2dIdZnF+44aTX9zoSq+t+vLxgZ6x+iIs9pfPuLszr8Ny7C/MCXWJQdIdZRIuampqQnDfkofL9999r3759mjFjRofXe71eeb3edvs9Hg9fdIYwDzuYhR2WZ+Frjjnp9T2Oud7XHPOTx7fyeDwdHhvuz4PlWUSLUH3+g/5i2j/84Q/asmWLvvjiC7377rv69a9/rdjYWN18883BvisAABDhgv6MyldffaWbb75ZNTU1OvPMM3XFFVdox44dOvPMM4N9VwAAIMIFPVRKS0uDfUoAABCl+Fs/AADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZvUM9wIAAMEzaN7abn1+4Hg8owIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAYBubtC8tf6PcK/j2P8FgoFQAQAAZhEqAADALEIFAACYRagAAACzCBUAAGAWoQIAAMwiVAAAgFmECgAAMItQAQAAZhEqAADArJ7hXgAA4NQd+/b0Xyz+VRhX0hZvn49Q4RkVAABgFqECAADMIlQAAIBZhAoAADCLUAEAAGYRKgAAwKyQhUpxcbEGDRqk+Ph4jR49Wu+//36o7goAAESokITK3//+dxUUFGjhwoX64IMPdOGFFyovL09ff/11KO4OAABEqJCEyhNPPKHbbrtNt956q84991w988wzSkhI0PPPPx+KuwMAABEq6O9Me+TIEZWXl2v+/Pn+fT169FBubq62b9/e7nifzyefz+ffrqurkyR9++23wV4aOsFxHDU2NqqmpkYejyfcy4lqzMKOcM6i59EG/+Wampp2+079PE2qP+acPXs0B2N5fq1rCzX+XdjR+n3bdd2gnjfoofLNN9+oublZ6enpbfanp6frs88+a3f8okWLVFRU1G7/sGHDgr00AIgo/f7v9G6f3HrhqZmnu5R2Tndt6L5qamqUnJz80weeorD/rZ/58+eroKDAv11bW6uBAwfq4MGDQX2g6Jz6+nplZ2fryy+/VFJSUriXE9WYhR3Mwg5mYUddXZ0GDBiglJSUoJ436KHSr18/xcbGqrq6us3+6upqZWRktDve6/XK6/W225+cnMwXnSFJSUnMwwhmYQezsINZ2NGjR3Bf/hr0F9PGxcVp5MiR2rRpk39fS0uLNm3apJycnGDfHQAAiGAh+dFPQUGBZs6cqYsvvlijRo3S0qVL1dDQoFtvvTUUdwcAACJUSEJl6tSp+s9//qMHH3xQVVVVuuiii7R+/fp2L7DtiNfr1cKFCzv8cRC6HvOwg1nYwSzsYBZ2hGoWMW6wf48IAAAgSPhbPwAAwCxCBQAAmEWoAAAAswgVAABgVlhCpbi4WIMGDVJ8fLxGjx6t999//6THv/zyyxo+fLji4+N1wQUXaN26dV200sgXyCyee+45XXnllerbt6/69u2r3Nzcn5wdAhPov41WpaWliomJ0eTJk0O7wCgS6Cxqa2uVn5+vzMxMeb1eDRs2jP9WBUmgs1i6dKnOPvts9erVS9nZ2Zo7d66ampq6aLWRa+vWrZo0aZKysrIUExOj1atX/+RtNm/erF/84hfyer0666yztHLlysDv2O1ipaWlblxcnPv888+7H3/8sXvbbbe5ffr0caurqzs8/p133nFjY2PdJUuWuJ988om7YMEC1+PxuB999FEXrzzyBDqL6dOnu8XFxe6uXbvcTz/91J01a5abnJzsfvXVV1288sgU6DxaHThwwP3Zz37mXnnlle4NN9zQNYuNcIHOwufzuRdffLF77bXXutu2bXMPHDjgbt682a2oqOjilUeeQGfx4osvul6v133xxRfdAwcOuBs2bHAzMzPduXPndvHKI8+6devc+++/33311VddSe6qVatOevz+/fvdhIQEt6CgwP3kk0/cp556yo2NjXXXr18f0P12eaiMGjXKzc/P9283Nze7WVlZ7qJFizo8/qabbnJ/9atftdk3evRo93e/+11I1xkNAp3F8Y4ePeomJia6L7zwQqiWGFU6M4+jR4+6l112mfuXv/zFnTlzJqESJIHOYtmyZe6QIUPcI0eOdNUSo0ags8jPz3fHjRvXZl9BQYF7+eWXh3Sd0eZUQuWee+5xzzvvvDb7pk6d6ubl5QV0X136o58jR46ovLxcubm5/n09evRQbm6utm/f3uFttm/f3uZ4ScrLyzvh8Tg1nZnF8RobG+U4TtD/AFU06uw8HnroIaWlpWn27Nldscyo0JlZ/POf/1ROTo7y8/OVnp6u888/X4899piam5u7atkRqTOzuOyyy1ReXu7/8dD+/fu1bt06XXvttV2yZvxPsL5/d+lfT/7mm2/U3Nzc7h1q09PT9dlnn3V4m6qqqg6Pr6qqCtk6o0FnZnG8e++9V1lZWe2+EBG4zsxj27ZtWr58uSoqKrpghdGjM7PYv3+/3nrrLd1yyy1at26d9u7dqzvvvFOO42jhwoVdseyI1JlZTJ8+Xd98842uuOIKua6ro0eP6o477tB9993XFUvGMU70/bu+vl4//PCDevXqdUrn4bd+0CmLFy9WaWmpVq1apfj4+HAvJ+ocPnxYM2bM0HPPPad+/fqFezlRr6WlRWlpaXr22Wc1cuRITZ06Vffff7+eeeaZcC8t6mzevFmPPfaYnn76aX3wwQd69dVXtXbtWj388MPhXho6qUufUenXr59iY2NVXV3dZn91dbUyMjI6vE1GRkZAx+PUdGYWrR5//HEtXrxYGzdu1IgRI0K5zKgR6Dz27dunL774QpMmTfLva2lpkST17NlTe/bs0dChQ0O76AjVmX8bmZmZ8ng8io2N9e8755xzVFVVpSNHjiguLi6ka45UnZnFAw88oBkzZui3v/2tJOmCCy5QQ0ODbr/9dt1///3q0YP/f95VTvT9Oykp6ZSfTZG6+BmVuLg4jRw5Ups2bfLva2lp0aZNm5STk9PhbXJyctocL0llZWUnPB6npjOzkKQlS5bo4Ycf1vr163XxxRd3xVKjQqDzGD58uD766CNVVFT4P66//nqNHTtWFRUVys7O7srlR5TO/Nu4/PLLtXfvXn8sStK//vUvZWZmEimnoTOzaGxsbBcjrQHp8qftulTQvn8H9jrf01daWup6vV535cqV7ieffOLefvvtbp8+fdyqqirXdV13xowZ7rx58/zHv/POO27Pnj3dxx9/3P3000/dhQsX8uvJQRLoLBYvXuzGxcW5r7zyiltZWen/OHz4cLgeQkQJdB7H47d+gifQWRw8eNBNTEx058yZ4+7Zs8dds2aNm5aW5j7yyCPheggRI9BZLFy40E1MTHRfeukld//+/e6bb77pDh061L3pppvC9RAixuHDh91du3a5u3btciW5TzzxhLtr1y733//+t+u6rjtv3jx3xowZ/uNbfz35j3/8o/vpp5+6xcXF3ePXk13XdZ966il3wIABblxcnDtq1Ch3x44d/ut++ctfujNnzmxz/D/+8Q932LBhblxcnHveeee5a9eu7eIVR65AZjFw4EBXUruPhQsXdv3CI1Sg/zaORagEV6CzePfdd93Ro0e7Xq/XHTJkiPvoo4+6R48e7eJVR6ZAZuE4jltYWOgOHTrUjY+Pd7Ozs90777zT/e6777p+4RHm7bff7vB7QOvnf+bMme4vf/nLdre56KKL3Li4OHfIkCHuihUrAr7fGNfluTAAAGATryoCAABmESoAAMAsQgUAAJhFqAAAALMIFQAAYBahAgAAzCJUAACAWYQKAAAwi1ABAABmESoAAMAsQgUAAJhFqAAAALP+P/mcsap/dzdLAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "result = pd.DataFrame(result2)\n", "\n", "result['p'].hist(bins=100)\n", "plt.xlim((0,1))\n", "plt.axvline(p, c='r')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }