{ "cells": [ { "cell_type": "markdown", "id": "ad7d3582-ce0f-4d14-afe5-a8791ba34b66", "metadata": {}, "source": [ "# Binomial Distribution\n", "We will experiment with the distribution:\n", "$$\n", " \\mathrm{Binomial}(X; n, p) = \\binom{n}{p}X^p(1-X)^{(1-p)}\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "id": "7650c7ac-b9a7-414b-bf7f-92febb344717", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean: 2.0, Var: 1.1999999999999997\n" ] } ], "source": [ "import numpy as np\n", "from scipy.stats import binom\n", "import matplotlib.pyplot as plt\n", "\n", "# parameters\n", "n, p = 5, 0.4\n", "\n", "# calculate mean / variance\n", "mean = binom.mean(n, p)\n", "var = binom.var(n, p)\n", "print(f\"Mean: {mean}, Var: {var}\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "4614421f-b22e-4d46-9571-cc0cfa0d26c2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Binomial(n:5, p:0.4)')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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XPrggw88bW+//bZqamrqnf/1VaHmvidJS5cu1aFDh5r9664Ln+3x48eb1R/wVawAAe1QZGSkYmNjPa8nTJigo0eP6uGHH9aUKVN07bXXNnn+13/BY7fbJUlnzpyR9P+vGjT0y6yQkJB6AebCasP/CggIqNceEBAgSTp79myjtdXV1SkpKUknTpzQY489poEDB6pz586qq6vTyJEjPTU25syZM03+Kutic2+pKVOmaMWKFXrvvfc0dOjQSxrjwspTQ20XW8Hp1q1bg30+++wzSQ3/Z3NBaWmpHn/8cS1evFgBAQE6deqUJKmmpkZ1dXU6deqU7Ha7OnXq5DnH4XBIuvTPC/AVrAABV4lBgwbpzJkz+uc//3nZY10ICWVlZfXeO3HihIKCgi77Go358MMPtX//fv3617/WnDlzNGbMGA0fPrzZP7sOCgryfPlfCRceBv767bKWKC8vb7TtYvMeOHCgDh48WG9l6MCBA5JUbz+f//Xxxx/rzJkzmjt3rq677jrP8ec//1kHDx7Uddddp8zMTK9zLny2bfnfAeBKIAABV4mSkhJJUvfu3S97rO985zuSpNdee82rfe/evTp48KBuueWWy75GYy7csrmwMnPBiy++2KzzIyIi9PHHH7d6XY25sNfQ15/LaomPPvpI+/fv92pbu3atunTp4nnmpjHf+973dPr0aa1fv96r/be//a1CQkIUFxfX6LlDhgzRO++8U+8YPHiw+vbtq3feeUcPPfSQ1zkXPtuoqKiWTBHwOdwCA9qhDz/80PNv/CdPntSGDRtUUFCg733vewoPD7/s8W+88UbNnDlTzz//vDp06KDk5GQdOXJEjz32mEJDQzVv3rzLvkZjIiIi1K9fPz3yyCNyu93q2rWr3njjDRUUFDTr/DFjxuiVV17RP//5Tw0YMOCSalizZo1+9KMf6ZVXXvE8B7R27Vpt2LBBEydOVFhYmE6dOqXXX39d69at03333VfvGR6bzaabb75Z77777kWvFxISou9+97tauHChevXqpddee00FBQVasmSJ5wFo6fzu1jt27PBa7UlOTta4ceP0wAMPyOVyqX///srNzdWbb76p1157zeuh6enTp+u3v/2t/v3vfyssLEzXXnutxowZU6+ea6+9VjU1NQ2+99577zX5KzugvSAAAe3Q/fff7/lnp9Op8PBwLV26VA8++GCr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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot PMF\n", "fig, ax = plt.subplots(1, 1)\n", "x = np.arange(n+1)\n", "pmf = binom.pmf(x, n, p)\n", "ax.bar(x, pmf, width=1.0)\n", "\n", "# decorate plot\n", "ax.set_xlabel(\"X\")\n", "ax.set_ylabel(\"P(X)\")\n", "ax.set_title(f\"Binomial(n:{n}, p:{p})\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "ecd17519-b5d3-47d3-a8c0-3640534a2fe6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'CDF: Binomial(n:5, p:0.4)')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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1q2r4cOH66WXXlKdOnUueeyOHTsUHx9f4c8uSR4eHvLw8CipW5K8vb31yCOPKCYmRo0aNVJqaqpef/113X333XrzzTf18MMPX7KmKyksLFRKSop8fHwkSXfddZdatGihSZMmKSUlpVRdxX799VdZlqUbb7yxVJ/FbadPn77suX/66SeNGzdOM2bMUOPGja9Ya8eOHTVnzhz9+9//1h/+8IdyfT6gohi5Aa4Bl/rXbFRUlHbu3Om0Pf7445Kkrl27qqCgwOnL9XJq1apV0se//vUvrVq1Sq1atVLv3r1L/Uu/LA6HQ3379nVqa9++vdNU2oYNG+Tn56d7773Xab9hw4ZJUqkpk+7du5cEG0lq06aNJCkuLs4pIBS3X2nabu/everXr5/q1q0rDw8P1axZU/Hx8SosLNT3339/yeN+++035eXlXTLkleezS9KCBQtUUFDgNNXTqFEjJScna9CgQYqKitKQIUO0efNm3XbbbXruuefKPf1TlgEDBpQEG0mqXbu2+vbtq82bN6uwsLCkvaCgoMzpqt9fY1fek6RRo0bp1ltv1SOPPFKuWouv7U8//VSu/YHKYOQGcFG9evXk6+urY8eOua3P4i/J//wXcGBgoMLDw91yjho1apTq66677lJwcLASExOvGHB8fX2dvkili6MS586dK3l9+vRpNWzYsNQXY4MGDeTp6VlqNOA/Rw68vLwu2/77c/2n1NRURUdHq3Xr1nr11VfVokUL+fj46KuvvtLo0aN19uzZSx5b/N5/fr5i5fnsrqhZs6YGDx6s5557TocOHSoJb65q2LBhmW3nz59XTk5OqbvvitWpU0cOh6PM0ZniRxiUNapT7L333tP69eu1detWZWVlOb13/vx5/fbbb/Lz83MaKSy+fpf77wC4CyM3gIs8PDzUs2dP7d69W8ePH3dLnx9++KEcDoe6dOnilv7Ky9fXVzfffLO+/vprt/RXt25dZWRklBqJyszMVEFBgerVq+eW85RlzZo1ys3N1apVqzR06FBFRUUpPDy8JBhdTt26dSXJ6dlEV1vxNSrvtGJZTp48WWabl5eX/P39L3lcrVq11LJlS+3fv7/Ue/v371etWrV00003XfL4AwcOqKCgQHfeeafq1KlTskkXH5FQp04dffzxx07HFF/bq/m/AaAY4QaogAkTJsiyLD3yyCM6f/58qfcvXLigtWvXlquvRYsW6ZNPPtEDDzygZs2aubvUy8rJydHhw4fLteamPHr27KmcnBytWbPGqX3JkiUl718txaNFv797zbIsvfnmm1c8tviuriNHjly1+n7vwoULWrlyperVq6eWLVtWuJ9Vq1Y5jR6dOXNGa9euVXR0tNMam7Lcc8892rBhg9LS0pyOX7Vqlfr16ydPz0sP7A8bNkxffPFFqU1SyZqpqKgop2OOHj2qGjVquPT8HKCimJYCKiAiIkJz5szR448/rrCwMD322GNq27atLly4oL179yo5OVmhoaFO6zTOnj2rHTt2lPx99OhRrVmzRh999JG6du3q8m2ymzZtUs+ePTVp0qRyrbspKioqOX9RUZF++uknvfbaa/r1119duuPqcuLj4/XGG28oISFBP/zwg9q1a6etW7fqhRdeUO/evdWrVy+3nKcsMTEx8vLy0gMPPKBnn31W586d05w5c/Trr7+W6/jiu3kqY8SIEXrrrbd05MiRknU3iYmJunDhgiIjI9WwYUOlpaXp9ddf1759+7Ro0SKnELJx40Z1795dkydPLtd/Ew8PD8XExCgxMVFFRUWaPn26srOz9fzzzzvt5+npqa5duzqtuxk3bpyWLl2qPn36aOrUqfL29taLL76oc+fOlTp3cQArvh2/RYsWl3w6dJMmTZzuzCq2Y8cOdejQ4bKLugF3IdwAFfTII4+oU6dOJbcEnzx5UjVr1lSrVq00ZMiQUo+hP3r0qCIiIiRJfn5+CgoKUseOHfXuu+9qwIABLk9PWJalwsLCMn+6oSxnz54tOb90cR1MmzZttHr1avXv39+lc1+Kj4+PvvjiC02cOFEzZ87Uzz//rCZNmmjcuHGaPHmyW85xKX/4wx/0/vvv669//asGDBigunXrasiQIUpMTFRcXNwVj3/wwQe1cOFC7dy5U7fffnuFaigsLFRhYaHTtFxoaKjmzZunt99+W9nZ2apdu7Y6deqkTz/9VLGxsU7HF/+sRqNGjcp1vjFjxujcuXN68sknlZmZqbZt2+rjjz9WZGRkmXX9Xv369bVlyxaNGzdOCQkJKigoUEREhDZu3FjqbqbKLHqWLn6uzz//XH//+98r1Q9QXg6Lhw4AgKSLd0BFRkZqzpw5tpz/2Wef1fLly3Xo0KFLLm6WLj7ELyQkRDNnztS4ceOqsMKKWbBggZ566imlpaUxcoMqwZobAPh/ZsyYocWLF7ttobirvvjiC/3tb3+7bLCpbgoKCjR9+nRNmDCBYIMqw7QUAPw/f/zjHzVz5kwdO3ZMTZs2rfLz79y5s8rPebWlpaVp6NCheuaZZ+wuBdcRpqUAAIBRmJYCAABGIdwAAACjEG4AAIBRrrsFxUVFRTpx4oRq1659xR+GAwAA1wbLsnTmzBk1btz4is8Fu+7CzYkTJxQcHGx3GQAAoALS0tKueDfjdRduateuLenixQkICLC5GgAAUB7Z2dkKDg4u+R6/nOsu3BRPRQUEBBBuAACoZsqzpIQFxQAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFFvDzebNm9W3b181btxYDodDa9asueIxmzZtUlhYmHx8fHTTTTdp7ty5V79QAABQbdgabnJzc3Xrrbdq1qxZ5dr/2LFj6t27t6Kjo7V371795S9/0ZNPPqn333//KlcKAACqC1t/ODMuLk5xcXHl3n/u3Llq1qyZXnnlFUlSmzZttGvXLv3jH//QwIEDr1KVAAATWJalvLw8u8u4bvj6+pbrRy6vhmr1q+Dbt29XbGysU9tdd92lBQsW6MKFC6pZs2apY/Lz85Wfn1/yOjs7+6rXCQC4tliWpaioKG3bts3uUq4bOTk58vPzs+Xc1WpB8cmTJxUUFOTUFhQUpIKCAp06darMY5KSkhQYGFiyBQcHV0WpAIBrSF5eHsHmOlKtRm4klRrisiyrzPZiEyZMUGJiYsnr7OxsAg4AXMcyMjJsG1G4nvj6+tp27moVbho2bKiTJ086tWVmZsrT01N169Yt8xhvb295e3tXRXkA4DLWgVSN3Nzckr/9/PwIN4arVuEmIiJCa9eudWr77LPPFB4eXuZ6GwC4lrEOBLg6bF1zk5OTo3379mnfvn2SLt7qvW/fPqWmpkq6OKUUHx9fsv+oUaP0448/KjExUQcPHtTChQu1YMECjRs3zo7yAaBSWAdS9SIjI22dLkHVsHXkZteuXerevXvJ6+K1MQkJCVq8eLHS09NLgo4khYSEaN26dXr66af1xhtvqHHjxnrttde4DRxAtcc6kKph5+3JqDoOq3hF7nUiOztbgYGBysrKUkBAgN3lALiO5ebmyt/fX5K9t80C1YEr39/V6lZwAACAKyHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGMXT7gIAXJssy1JeXp7dZRgtNzfX7hIAIxFuAJRiWZaioqK0bds2u0sBAJcxLQWglLy8PIJNFYqMjJSvr6/dZQDGYOQGwGVlZGTIz8/P7jKM5uvrK4fDYXcZgDEINwAuy8/Pj3ADoFphWgoAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGMX2cDN79myFhITIx8dHYWFh2rJly2X3X7ZsmW699Vb5+vqqUaNGGj58uE6fPl1F1QIAgGudreFm5cqVGjt2rCZOnKi9e/cqOjpacXFxSk1NLXP/rVu3Kj4+XiNGjNC3336rd999Vzt37tTDDz9cxZUDAIBrla3h5uWXX9aIESP08MMPq02bNnrllVcUHBysOXPmlLn/jh071KJFCz355JMKCQlRVFSURo4cqV27dlVx5QAA4FplW7g5f/68du/erdjYWKf22NhYbdu2rcxjOnfurOPHj2vdunWyLEsZGRl677331KdPn6ooGQAAVAO2hZtTp06psLBQQUFBTu1BQUE6efJkmcd07txZy5Yt0+DBg+Xl5aWGDRvqhhtu0Ouvv37J8+Tn5ys7O9tpAwAA5rJ9QbHD4XB6bVlWqbZi3333nZ588klNmjRJu3fv1vr163Xs2DGNGjXqkv0nJSUpMDCwZAsODnZr/QAA4NpiW7ipV6+ePDw8So3SZGZmlhrNKZaUlKTIyEiNHz9e7du311133aXZs2dr4cKFSk9PL/OYCRMmKCsrq2RLS0tz+2cBAADXDtvCjZeXl8LCwpSSkuLUnpKSos6dO5d5TF5enmrUcC7Zw8ND0sURn7J4e3srICDAaQMAAOaydVoqMTFR8+fP18KFC3Xw4EE9/fTTSk1NLZlmmjBhguLj40v279u3r1atWqU5c+bo6NGj+vLLL/Xkk0+qU6dOaty4sV0fAwAAXEM87Tz54MGDdfr0aU2dOlXp6ekKDQ3VunXr1Lx5c0lSenq60zNvhg0bpjNnzmjWrFl65plndMMNN6hHjx6aPn26XR8BAABcYxzWpeZzDJWdna3AwEBlZWUxRQVcQm5urvz9/SVJOTk58vPzs7kiANc7V76/bb9bCgAAwJ0INwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFE+7CwBcZVmW8vLy7C7DaLm5uXaXAAAVRrhBtWJZlqKiorRt2za7SwEAXKOYlkK1kpeXR7CpQpGRkfL19bW7DABwCSM3qLYyMjLk5+dndxlG8/X1lcPhsLsMAHAJ4QbVlp+fH+EGAFAK01IAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGqVS4SUtL05YtW/Tpp59qz549ys/Pd7mP2bNnKyQkRD4+PgoLC9OWLVsuu39+fr4mTpyo5s2by9vbWzfffLMWLlxY0Y8AAAAM4+nqAT/++KPmzp2r5cuXKy0tTZZllbzn5eWl6OhoPfrooxo4cKBq1Lh8dlq5cqXGjh2r2bNnKzIyUvPmzVNcXJy+++47NWvWrMxj7rvvPmVkZGjBggVq2bKlMjMzVVBQ4OrHAAAAhnJYv08nV/DUU09p0aJFio2NVb9+/dSpUyc1adJEtWrV0i+//KIDBw5oy5YtWr58uTw9PbVo0SLdfvvtl+zvjjvuUMeOHTVnzpyStjZt2qh///5KSkoqtf/69et1//336+jRo7rxxhtd/KgXZWdnKzAwUFlZWQoICKhQH7BPbm6u/P39JUk5OTny8/OzuSIAQFVw5fvbpZEbLy8vHTlyRPXr1y/1XoMGDdSjRw/16NFDkydP1rp16/Tjjz9eMtycP39eu3fv1nPPPefUHhsbq23btpV5zIcffqjw8HDNmDFDS5culZ+fn/r166e///3vqlWrlisfBQAAGMqlcDNz5sxy79u7d+/Lvn/q1CkVFhYqKCjIqT0oKEgnT54s85ijR49q69at8vHx0erVq3Xq1Ck9/vjj+uWXXy657iY/P99pLVB2dna5PwMAAKh+Kryg+Ntvv73ke+vXry93Pw6Hw+m1ZVml2ooVFRXJ4XBo2bJl6tSpk3r37q2XX35Zixcv1tmzZ8s8JikpSYGBgSVbcHBwuWsDAADVT4XDTXh4uF5//XWntvz8fI0ZM0b33HPPFY+vV6+ePDw8So3SZGZmlhrNKdaoUSM1adJEgYGBJW1t2rSRZVk6fvx4mcdMmDBBWVlZJVtaWtoVawMAANVXhcPNsmXL9PzzzysuLk4nT57Uvn37dNttt2nDhg368ssvr3i8l5eXwsLClJKS4tSekpKizp07l3lMZGSkTpw4oZycnJK277//XjVq1FDTpk3LPMbb21sBAQFOGwAAMFeFw82AAQP0zTffqKCgQKGhoYqIiFC3bt20e/dudezYsVx9JCYmav78+Vq4cKEOHjyop59+WqmpqRo1apSki6Mu8fHxJfsPGTJEdevW1fDhw/Xdd99p8+bNGj9+vP70pz+xoBgAAEiqwHNufq+wsFDnz59XYWGhCgsL1bBhQ3l7e5f7+MGDB+v06dOaOnWq0tPTFRoaqnXr1ql58+aSpPT0dKWmppbs7+/vr5SUFD3xxBMKDw9X3bp1dd9992natGmV+RgAAMAgLj3n5vdWrFihxx57TNHR0VqwYIH27dun4cOHq3nz5lq6dKluuukmd9fqFjznpnrjOTcAcH1y5fu7wtNSI0aM0AsvvKAPP/xQ9evXV0xMjPbv368mTZqoQ4cOFe0WAACgUio8LbVnzx61bt3aqa1OnTp65513tHTp0koXBgAAUBEVHrn5z2Dzew899FBFuwUAAKiUSv0q+PLly5Wbm1vqbwAAALtUKtyMHDlSGRkZpf4GAACwS6XCze9vtKrgTVcAAABuValwAwAAcK0h3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMEqlws28efMUFBRU6m8AAAC7VPhXwasrfhW8euNXwQHg+lQlvwoOAABwLapQuDl+/LgGDhyorKwsp/azZ89q0KBBOnz4sFuKAwAAcFWFwk3Tpk114MABvfPOO07ta9as0b/+9S+1bNnSLcUBAAC4qsLTUvHx8VqyZIlT29KlSzV06NBKFwUAAFBRlQo327dv17FjxyRJGRkZ+uc//6lhw4a5qzYAAACXVTjcBAcHq3v37lq6dKkkafny5QoLC1OrVq3cVhwAAICrKnW3VHx8fEm4Wbp0qRISEtxSFAAAQEVVKtzce++9ysjIUHJysg4ePKgHHnjAXXUBAABUSKXCTa1atXTvvfcqMTFRffv2VWBgoLvqAgAAqJBKP8QvISFBeXl5TEkBAIBrgmdlO+jatauKiorcUQsAAECl8fMLAADAKC6Hm0mTJqmgoOCS76empiomJqZSRQEAAFSUy+Fm8eLFuv3227V///5S7yUnJys0NFSenpWe7QIAAKgQl8PNgQMH1K5dO91+++1KSkpSUVGRUlNT1atXLz377LN6+eWX9cknn1yNWgEAAK7I5SGWgIAALVmyRAMHDtTIkSO1cuVKHTt2TBEREdq/f7+Cg4OvRp0AAADlUuEFxXfccYfatWunb775RkVFRXr22WcJNgAAwHYVCjfLly9X27ZtVVRUpIMHD+qxxx5TXFycnnrqKZ09e9bdNQIAAJSby+Hm3nvv1aOPPqopU6bo888/V+vWrTVjxgxt3LhR69ev16233qrt27dfjVoBAACuyOU1N+np6dq7d69atmzp1B4REaGvv/5af/7zn9W1a1edP3/ebUUCAACUl8vhZsuWLapRo+wBHx8fH7366qsaOHBgpQsDAACoCJenpS4VbH6vS5cuFSoGAACgslwKN6NGjVJaWlq59l25cqWWLVtWoaIAAAAqyqVpqfr16ys0NFSdO3dWv379FB4ersaNG8vHx0e//vqrvvvuO23dulUrVqxQkyZNlJycfLXqBgAAKJPDsizLlQMyMzM1f/58rVy5UgcOHHB6r3bt2urVq5ceffRRxcbGurVQd8nOzlZgYKCysrIUEBBgdzlwUW5urvz9/SVJOTk58vPzs7kiAEBVcOX72+Vw83u//fabfvzxR509e1b16tXTzTffLIfDUdHuqgThpnoj3ADA9cmV72+XFxTn5eVp9OjRatKkiVq1aqXp06erZcuWatmy5TUfbAAAgPlcDjeTJ0/W4sWL1adPH91///1KSUnRY489djVqAwAAcJnLz7lZtWqVFixYoPvvv1+SNHToUEVGRqqwsFAeHh5uLxAAAMAVLo/cpKWlKTo6uuR1p06d5OnpqRMnTri1MAAAgIpwOdwUFhbKy8vLqc3T01MFBQVuKwoAAKCiXJ6WsixLw4YNk7e3d0nbuXPnNGrUKKc7V1atWuWeCgEAAFzgcrhJSEgo1TZ06FC3FAMAAFBZLoebRYsWXY06AAAA3MLlNTcAAADXMsINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKPYHm5mz56tkJAQ+fj4KCwsTFu2bCnXcV9++aU8PT3VoUOHq1sgAACoVmwNNytXrtTYsWM1ceJE7d27V9HR0YqLi1Nqauplj8vKylJ8fLx69uxZRZUCAIDqwtZw8/LLL2vEiBF6+OGH1aZNG73yyisKDg7WnDlzLnvcyJEjNWTIEEVERFRRpQAAoLqwLdycP39eu3fvVmxsrFN7bGystm3bdsnjFi1apCNHjmjy5MlXu0QAAFANedp14lOnTqmwsFBBQUFO7UFBQTp58mSZxxw6dEjPPfectmzZIk/P8pWen5+v/Pz8ktfZ2dkVLxoAAFzzbF9Q7HA4nF5bllWqTZIKCws1ZMgQPf/882rVqlW5+09KSlJgYGDJFhwcXOmaAQDAtcu2cFOvXj15eHiUGqXJzMwsNZojSWfOnNGuXbs0ZswYeXp6ytPTU1OnTtXXX38tT09PbdiwoczzTJgwQVlZWSVbWlraVfk8AADg2mDbtJSXl5fCwsKUkpKie+65p6Q9JSVFd999d6n9AwICtH//fqe22bNna8OGDXrvvfcUEhJS5nm8vb3l7e3t3uIBAMA1y7ZwI0mJiYl66KGHFB4eroiICCUnJys1NVWjRo2SdHHU5aefftKSJUtUo0YNhYaGOh3foEED+fj4lGoHAADXL1vDzeDBg3X69GlNnTpV6enpCg0N1bp169S8eXNJUnp6+hWfeQMAAPB7DsuyLLuLqErZ2dkKDAxUVlaWAgIC7C4HLsrNzZW/v78kKScnR35+fjZXBACoCq58f9t+txQAAIA7EW4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGMXT7gJMYlmW8vLy7C7DaLm5uXaXAAC4xhFu3MSyLEVFRWnbtm12lwIAwHWNaSk3ycvLI9hUocjISPn6+tpdBgDgGsTIzVWQkZEhPz8/u8swmq+vrxwOh91lAACuQYSbq8DPz49wAwCATZiWAgAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFFsDzezZ89WSEiIfHx8FBYWpi1btlxy31WrVikmJkb169dXQECAIiIi9Omnn1ZhtQAA4Fpna7hZuXKlxo4dq4kTJ2rv3r2Kjo5WXFycUlNTy9x/8+bNiomJ0bp167R79251795dffv21d69e6u4cgAAcK1yWJZl2XXyO+64Qx07dtScOXNK2tq0aaP+/fsrKSmpXH20bdtWgwcP1qRJk8q1f3Z2tgIDA5WVlaWAgIAK1V2W3Nxc+fv7S5JycnLk5+fntr4BALjeufL9bdvIzfnz57V7927FxsY6tcfGxmrbtm3l6qOoqEhnzpzRjTfeeMl98vPzlZ2d7bQBAABz2RZuTp06pcLCQgUFBTm1BwUF6eTJk+Xq46WXXlJubq7uu+++S+6TlJSkwMDAki04OLhSdQMAgGub7QuKHQ6H02vLskq1lWX58uWaMmWKVq5cqQYNGlxyvwkTJigrK6tkS0tLq3TNAADg2uVp14nr1asnDw+PUqM0mZmZpUZz/tPKlSs1YsQIvfvuu+rVq9dl9/X29pa3t3el6wUAANWDbSM3Xl5eCgsLU0pKilN7SkqKOnfufMnjli9frmHDhuntt99Wnz59rnaZAACgmrFt5EaSEhMT9dBDDyk8PFwRERFKTk5WamqqRo0aJenilNJPP/2kJUuWSLoYbOLj4/Xqq6/qzjvvLBn1qVWrlgIDA237HAAA4Npha7gZPHiwTp8+ralTpyo9PV2hoaFat26dmjdvLklKT093eubNvHnzVFBQoNGjR2v06NEl7QkJCVq8eHFVlw8AAK5Btj7nxg485wYAgOqnWjznBgAA4Gog3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYxdPuAkzh6+urnJyckr8BAIA9CDdu4nA45OfnZ3cZAABc95iWAgAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGCU6+5XwS3LkiRlZ2fbXAkAACiv4u/t4u/xy7nuws2ZM2ckScHBwTZXAgAAXHXmzBkFBgZedh+HVZ4IZJCioiKdOHFCtWvXlsPhcGvf2dnZCg4OVlpamgICAtzaN/4/rnPV4DpXDa5z1eFaV42rdZ0ty9KZM2fUuHFj1ahx+VU1193ITY0aNdS0adOreo6AgAD+j1MFuM5Vg+tcNbjOVYdrXTWuxnW+0ohNMRYUAwAAoxBuAACAUQg3buTt7a3JkyfL29vb7lKMxnWuGlznqsF1rjpc66pxLVzn625BMQAAMBsjNwAAwCiEGwAAYBTCDQAAMArhBgAAGIVw4yazZ89WSEiIfHx8FBYWpi1btthdknE2b96svn37qnHjxnI4HFqzZo3dJRkpKSlJt99+u2rXrq0GDRqof//++ve//213WcaZM2eO2rdvX/Kgs4iICH3yySd2l2W8pKQkORwOjR071u5SjDJlyhQ5HA6nrWHDhrbVQ7hxg5UrV2rs2LGaOHGi9u7dq+joaMXFxSk1NdXu0oySm5urW2+9VbNmzbK7FKNt2rRJo0eP1o4dO5SSkqKCggLFxsYqNzfX7tKM0rRpU7344ovatWuXdu3apR49eujuu+/Wt99+a3dpxtq5c6eSk5PVvn17u0sxUtu2bZWenl6y7d+/37ZauBXcDe644w517NhRc+bMKWlr06aN+vfvr6SkJBsrM5fD4dDq1avVv39/u0sx3s8//6wGDRpo06ZN6tKli93lGO3GG2/UzJkzNWLECLtLMU5OTo46duyo2bNna9q0aerQoYNeeeUVu8syxpQpU7RmzRrt27fP7lIkMXJTaefPn9fu3bsVGxvr1B4bG6tt27bZVBXgPllZWZIufvHi6igsLNSKFSuUm5uriIgIu8sx0ujRo9WnTx/16tXL7lKMdejQITVu3FghISG6//77dfToUdtque5+ONPdTp06pcLCQgUFBTm1BwUF6eTJkzZVBbiHZVlKTExUVFSUQkND7S7HOPv371dERITOnTsnf39/rV69WrfccovdZRlnxYoV2rNnj3bu3Gl3Kca64447tGTJErVq1UoZGRmaNm2aOnfurG+//VZ169at8noIN27icDicXluWVaoNqG7GjBmjb775Rlu3brW7FCO1bt1a+/bt02+//ab3339fCQkJ2rRpEwHHjdLS0vTUU0/ps88+k4+Pj93lGCsuLq7k73bt2ikiIkI333yz3nrrLSUmJlZ5PYSbSqpXr548PDxKjdJkZmaWGs0BqpMnnnhCH374oTZv3qymTZvaXY6RvLy81LJlS0lSeHi4du7cqVdffVXz5s2zuTJz7N69W5mZmQoLCytpKyws1ObNmzVr1izl5+fLw8PDxgrN5Ofnp3bt2unQoUO2nJ81N5Xk5eWlsLAwpaSkOLWnpKSoc+fONlUFVJxlWRozZoxWrVqlDRs2KCQkxO6SrhuWZSk/P9/uMozSs2dP7d+/X/v27SvZwsPD9eCDD2rfvn0Em6skPz9fBw8eVKNGjWw5PyM3bpCYmKiHHnpI4eHhioiIUHJyslJTUzVq1Ci7SzNKTk6ODh8+XPL62LFj2rdvn2688UY1a9bMxsrMMnr0aL399tv64IMPVLt27ZJRycDAQNWqVcvm6szxl7/8RXFxcQoODtaZM2e0YsUKbdy4UevXr7e7NKPUrl271HoxPz8/1a1bl3VkbjRu3Dj17dtXzZo1U2ZmpqZNm6bs7GwlJCTYUg/hxg0GDx6s06dPa+rUqUpPT1doaKjWrVun5s2b212aUXbt2qXu3buXvC6ex01ISNDixYttqso8xY806Natm1P7okWLNGzYsKovyFAZGRl66KGHlJ6ersDAQLVv317r169XTEyM3aUBLjt+/LgeeOABnTp1SvXr19edd96pHTt22PY9yHNuAACAUVhzAwAAjEK4AQAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADoForLCxU586dNXDgQKf2rKwsBQcH669//atNlQGwC08oBlDtHTp0SB06dFBycrIefPBBSVJ8fLy+/vpr7dy5U15eXjZXCKAqEW4AGOG1117TlClTdODAAe3cuVODBg3SV199pQ4dOthdGoAqRrgBYATLstSjRw95eHho//79euKJJ5iSAq5ThBsAxvg//+f/qE2bNmrXrp327NkjT09Pu0sCYAMWFAMwxsKFC+Xr66tjx47p+PHjdpcDwCaM3AAwwvbt29WlSxd98sknmjFjhgoLC/XPf/5TDofD7tIAVDFGbgBUe2fPnlVCQoJGjhypXr16af78+dq5c6fmzZtnd2kAbEC4AVDtPffccyoqKtL06dMlSc2aNdNLL72k8ePH64cffrC3OABVjmkpANXapk2b1LNnT23cuFFRUVFO7911110qKChgegq4zhBuAACAUZiWAgAARiHcAAAAoxBuAACAUQg3AADAKIQbAABgFMINAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAo/xeB8Gf8kKSLXQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot CDF\n", "fig, ax = plt.subplots(1, 1)\n", "cdf = binom.cdf(x, n, p)\n", "ax.step(x, cdf, '-k')\n", "\n", "# decorate plot\n", "ax.set_xlabel(\"X\")\n", "ax.set_ylabel(\"P(X<=x)\")\n", "ax.set_title(f\"CDF: Binomial(n:{n}, p:{p})\")" ] }, { "cell_type": "code", "execution_count": 14, "id": "b391bc00-9089-4a94-8c10-449b99f6ad0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Sample: [2 0 1 4 2 3 4 2 1 2]\n" ] } ], "source": [ "# sample 10 Binomial values\n", "s = binom.rvs(n, p, size=10)\n", "print(f\"Sample: {s}\")" ] }, { "cell_type": "markdown", "id": "c55f232e-b971-45a3-998f-813aaa462221", "metadata": {}, "source": [ "----\n", "# Multinomial Distribution\n", "We will experiment with the distribution:\n", "$$\n", " \\mathrm{Multinomial}(X;n,p) = \\frac{n!}{X_1!X_2!\\ldots X_k!}p_1^{X_1}p_2^{X_2}\\ldots p_k^{X_k}\n", "$$" ] }, { "cell_type": "code", "execution_count": 46, "id": "8ecce711-1c39-4291-809f-e1ed75a9c1d0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean: [0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666]\n", "Cov:\n", "['1.4', '-0.3', '-0.3', '-0.3', '-0.3', '-0.3']\n", "['-0.3', '1.4', '-0.3', '-0.3', '-0.3', '-0.3']\n", "['-0.3', '-0.3', '1.4', '-0.3', '-0.3', '-0.3']\n", "['-0.3', '-0.3', '-0.3', '1.4', '-0.3', '-0.3']\n", "['-0.3', '-0.3', '-0.3', '-0.3', '1.4', '-0.3']\n", "['-0.3', '-0.3', '-0.3', '-0.3', '-0.3', '1.4']\n" ] } ], "source": [ "from scipy.stats import multinomial\n", "\n", "# parameters\n", "n = 10 # 10 rolls\n", "p = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6] # fair 6-sided die\n", "\n", "# calculate mean and covariance\n", "mean = p\n", "cov = multinomial.cov(n, p)\n", "print(f\"Mean: {mean}\")\n", "\n", "# plot covariance matrix\n", "cell_text = []\n", "print(f\"Cov:\")\n", "for row in cov:\n", " print(['%1.1f' % v for v in row])\n" ] }, { "cell_type": "code", "execution_count": 47, "id": "3fbd4f88-1f26-4f38-b1b1-10d3a932d14a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rolled x: [2 2 3 3 0 0]\n", "P(X=x) = 0.00042\n" ] } ], "source": [ "# simulate 10 rolls\n", "x = multinomial.rvs(n, p)\n", "print(f\"Rolled x: {x}\")\n", "\n", "# compute probability of roll\n", "pmf = multinomial.pmf(x, n, p)\n", "print(f\"P(X=x) = {pmf:0.5f}\")" ] }, { "cell_type": "markdown", "id": "d0ad5dc7-0fef-48ca-a4e8-08f1432609ac", "metadata": {}, "source": [ "----\n", "# Negative Binomial Distribution\n", "We will experiment with the distribution:\n", "$$\n", " \\mathrm{NB}(X;k,p) = \\binom{X-1}{k-1}p^k(1-p)^{X-k}\n", "$$" ] }, { "cell_type": "code", "execution_count": 99, "id": "31d0b194-0d16-4899-b9f7-fdc22f42dd94", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Negative Binomial PMF')" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "84b072b6ec10428f84da3bb002b66765", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOudJREFUeJzt3X1c1fX9//HnkUuvwGuQAsRWimnqYCUo2ZZhalYrUzPRTFeEWwKziWGzbIKaObQE0lBrpbFNu1ixksr8WtI0RGvNWX1DIYWZVl4uEPj8/vDH+XY8aF6dC3o/7rfb53bzvHl/3u/X+6Oj596fcz7HZlmWJQAAABijhacLAAAAgHsRAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQMDLrVq1SjabTYGBgdqzZ4/Tz6+77jr17t3bA5U1LSsrSy+//LJT+7vvviubzaZ3333XrfXs3r1bNpvN4QgKClLfvn2Vk5Oj+vp6h/7XXXedrrvuOrfWeK4a17Rq1SqXnXvqdWvRooU6duyo4cOHq6SkxKFvY5+77767ybHmzJlj77N79257+9133+30d9N4vPbaa+e8NgBnz9fTBQA4OzU1NZo1a5b+9Kc/ebqUM8rKytKoUaN06623OrT/9Kc/VUlJiXr16uWRun7zm99o3LhxkqRvv/1Wr776qtLS0lRZWaknnnjC3i83N9cj9Z2Lrl27qqSkRJdddpnL52q8bvX19frkk0/06KOP6uc//7lKSkrUv39/e7+2bdvqL3/5i5588km1bdvW3m5ZllatWqWgoCAdPnzYafyWLVvqnXfecWrv2bOnaxYEQBI7gECzceONN2r16tXasWOHp0s5L0FBQRowYICCgoI8Mn9ERIQGDBigAQMG6MYbb1Rubq4SEhK0Zs0ah369evXyWEg9WwEBARowYIA6d+7s8rkar9vAgQN177336k9/+pNqamqcgvItt9wiy7L04osvOrS/8847Ki8v15gxY5ocv0WLFva/l+8f7dq1c9WSAIgACDQbv/vd79SxY0fNmDHjB/talqXc3Fz169dPLVu2VPv27TVq1Ch98cUXTv2ysrIUGRmpwMBAxcbGqri42Ok26Hfffaff/va36tevn4KDg9WhQwfFxcXplVdecRjPZrPp2LFjevbZZ+238hrHOfUWcE5Ojmw2mz7//HOn+mfMmCF/f38dOHDA3vbWW2/p+uuvV1BQkFq1aqWBAwfq7bffPsur17Tg4GD5+fk5tJ269sZboQsXLtSiRYsUFRWlNm3aKC4uTh988IHTmK+++qri4uLUqlUrtW3bVjfccIPTLdNHHnlENptNH330ke644w77NU1PT1ddXZ127dqlG2+8UW3btlW3bt20YMECh/Obuo37+eefa9KkSbr88svVqlUrXXLJJRo5cqQ+/vjjC7pGpxowYIAkOb0dITg4WL/85S+1YsUKh/YVK1Zo4MCBuuKKKy5qHQAuDAEQaCbatm2rWbNm6c0332zyltn33XfffUpNTdWQIUP08ssvKzc3V5988oni4+P1n//8x94vMzNTmZmZuvHGG/XKK68oOTlZU6ZM0aeffuowXk1Njb7++mtNnz5dL7/8stasWaNBgwbptttu03PPPWfvV1JSopYtW9rfJ1ZSUnLaW6rjx4+Xv7+/03vR6uvr9fzzz2vkyJHq1KmTJOn5559XYmKigoKC9Oyzz+rPf/6zOnTooKFDh551CGxoaFBdXZ3q6up08OBBrVixQm+88YaSkpLO6vylS5equLhYOTk5euGFF3Ts2DENHz5chw4dsvdZvXq1brnlFgUFBWnNmjUqKCjQN998o+uuu07vvfee05ijR49W3759tXbtWv3qV7/SH//4R6WlpenWW2/ViBEj9NJLL+kXv/iFZsyYoXXr1p2xvn379qljx46aN2+e3njjDS1dulS+vr665pprtGvXrrNa49loDOxN7T5OnjxZH3zwgXbu3Cnp5K32devWafLkyWccs/HvpfE49X2ZAFzAAuDVVq5caUmytm7datXU1Fjdu3e3YmNjrYaGBsuyLGvw4MHWlVdeae9fUlJiSbKeeOIJh3EqKyutli1bWr/73e8sy7Ksr7/+2goICLDGjBnj0K/x/MGDB5+2prq6OuvE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dO+996ply5ZNPjB4/PjxioiI0IIFC3TffffpyJEj6tKli/r163farx871ZNPPml/P1pgYKAiIiJ07733asaMGRft4dTjxo1T69atlZ2drTFjxsjHx0cDBgzQhg0bXH4rdPHixfLz81N2draOHj2qn/70p1q3bp1mzZrl0nkBNE82y7IsTxcBwHuUl5erZ8+emj17th566CFPlwMAcAECIGCwHTt2aM2aNYqPj1dQUJB27dqlBQsW6PDhw/rnP/953h+uAAB4N24BAwZr3bq1PvzwQxUUFOjbb79VcHCwrrvuOs2dO5fwBwA/YuwAAgAAGIZvAgEAADAMARAAAMAwBEAAAADDEAABAAAMw6eAL0BDQ4P27duntm3bnvHL0QEAgPewLEtHjhxRWFiYw7cemYQAeAH27dvn9D2sAACgeaisrPTI1yV6AwLgBWjbtq2kk/+ALtZXSQEAANc6fPiwwsPD7f8dNxEB8AI03vYNCgoiAAIA0MyY/PYtM298AwAAGKzZBMDc3FxFRUUpMDBQMTEx2rRp02n7VlVVady4cerRo4datGih1NTUM4794osvymaz6dZbb724RQMAAHihZhEACwsLlZqaqszMTJWVlSkhIUHDhg1TRUVFk/1ramrUuXNnZWZmqm/fvmcce8+ePZo+fboSEhJcUToAAIDXaRYBcNGiRZo8ebKmTJmi6Oho5eTkKDw8XHl5eU3279atmxYvXqwJEyYoODj4tOPW19frrrvu0qOPPqru3bu7qnwAAACv4vUBsLa2VqWlpUpMTHRoT0xM1ObNmy9o7Dlz5qhz586aPHnyBY0DAADQnHj9p4APHDig+vp6hYSEOLSHhISourr6vMd9//33VVBQoO3bt5/1OTU1NaqpqbG/Pnz48HnPDwAA4ClevwPY6NSPaluWdd4f3z5y5IjGjx+v5cuXq1OnTmd9XnZ2toKDg+0HD4EGAADNkdfvAHbq1Ek+Pj5Ou3379+932hU8W//7v/+r3bt3a+TIkfa2hoYGSZKvr6927dqlyy67zOm8mTNnKj093f668UGSAAAAzYnXB0B/f3/FxMSouLhYv/zlL+3txcXFuuWWW85rzJ49e+rjjz92aJs1a5aOHDmixYsXnzbUBQQEKCAg4LzmBAAA8BZeHwAlKT09XUlJSYqNjVVcXJyWLVumiooKJScnSzq5M7d37149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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from scipy.stats import nbinom\n", "import matplotlib.pyplot as plt\n", "fig, ax = plt.subplots(1, 1)\n", "\n", "# initialize parameters\n", "n, p = 5, 0.5\n", "\n", "# plot PMF\n", "x = np.arange(nbinom.ppf(0.01, n, p),\n", " nbinom.ppf(0.99, n, p))\n", "ax.bar(x, nbinom.pmf(x, n, p))\n", "ax.set_xlabel('X')\n", "ax.set_ylabel('PMF')\n", "ax.set_title('Negative Binomial PMF')" ] }, { "cell_type": "code", "execution_count": 103, "id": "09bccdd2-ff04-44f6-8497-aea18f5e9f8b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Negative Binomial CDF')" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4726a93e08b34b158dfb3b625ce43478", "version_major": 2, "version_minor": 0 }, "image/png": "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AQEBVlJSkle/6vGDBg2qs6bKykrr1KlT1sSJE60rrrjC67WQkBBr3LhxNca8//77liTr/fff97TdcsstVufOna2qqipP27p16yxJ1ttvv21ZlmUdP37catOmjTVy5Eiv41VVVVl9+/a1rr766jrrtCzLOnDggCWp1m38+PFWZWWlV/9BgwZ5nXv1+N69e3v13bFjhyXJWrlypaeeTp06Wb179/Y6n2PHjlnt27e34uLiPG2PPvporX+jfv36WZKsNWvWeNpOnTpl/eQnP7FuueWWGjUtWbKkzvOurKy0KioqrMsvv9yaOnXqWY21LMvq1q2b1aFDhzP2+b7qc/ryyy9rff3kyZOWJCsxMdHTNm7cuFr/LvHx8fV+XwDnhhlA4CLidDr1+OOPKy8vT6+//nqtff7617/K4XDozjvv9JpV6dChg/r27etZgt2+fbvKy8s1ZswYr/EDBgxQly5dahz3z3/+s+Lj49WiRQv5+/urefPmWrRokT7++ONzPp8JEyboiy++0N///ndP25IlS9ShQwclJiZKknJzc/XVV19p3LhxXudz+vRpDR8+XDt37tTx48d/9L3uv/9+7dy5Uzt37tT777+vWbNm6fXXX9ftt99er1pvuukm+fn5efb79OkjSZ47s/ft26dDhw4pOTlZzZr9339aW7RooV/+8pfavn27Tpw44XXMESNGeO13795dDofDc+6S5O/vr5/+9Ke13gH+fZWVlZo1a5Z69Oghp9Mpf39/OZ1O7d+//7z+Rg3Fsqxa24OCgjx/l+pt0aJFTVwdYB5uAgEuMrfddpueeuopTZ8+XbfcckuN1w8fPizLshQWFlbr+EsvvVSSdOTIEUmqtd8P29asWaMxY8bo1ltv1YMPPqgOHTrI399f2dnZWrx48TmfS2Jiojp27KglS5YoISFBR48e1dq1a3X//fd7wlb1kvWZvm/21VdfKSQk5Izv1blzZ8XExHj2Bw8eLIfDobS0NG3YsEHDhg074/i2bdt67VffyHDy5ElJ/3c9O3bsWGNsp06ddPr0aR09elTBwcGe9jZt2nj1czqdCg4OVmBgYI12t9t9xvpSU1M1b948Pfzwwxo0aJBat26tZs2aadKkSZ4az0ZERIT279+v48eP/+i1rY/qANupUyev9mbNmnn9XQA0DQIgcJFxOByaPXu2brjhBi1cuLDG6+3atZPD4dCWLVu87rasVt1WHWi+/53AasXFxV6zgMuXL1dUVJRWrVolh8PhaS8vLz+vc/Hz81NycrKee+45ff3111qxYoXKy8s1YcIEr/ORpOeff77Ou0XrCrs/pnoWb/fu3T8aAH9M9fUsKiqq8dqhQ4fUrFkztW7d+rze40yWL1+usWPHatasWV7tpaWlatWq1Vkfb9iwYXr33Xf19ttv67bbbjvv+tauXStJF/wzFgFTsAQMXISGDh2qG264Qenp6frmm2+8Xqt+btvBgwcVExNTY+vdu7ckqX///goICKhxV+b27dtrLDc6HA45nU6v8FdcXFzjLmDpu4B5NjNOEyZM0LfffquVK1dq6dKlio2N9XoGXHx8vFq1aqW9e/fWej4xMTFyOp31fr/v++CDDyRJ7du3P6fx39e1a1ddcsklWrFihddy5/Hjx7V69WrPncGNxeFw1Aj8f/vb33Tw4MFzOt7EiRPVoUMHPfTQQ3Ue48duTKm2e/duzZo1S126dKnxlQMA9mAGELhIzZ49W9HR0SopKVHPnj097fHx8brrrrs0YcIE5eXl6dprr1VISIiKioq0detW9e7dW7/97W89jx3JyMhQ69at9Ytf/EJffPGFHnvsMXXs2NHre2wjRozQmjVr9Lvf/U6jR49WYWGh/vjHP6pjx45evwYhSb1799bGjRv19ttvq2PHjmrZsqW6du1a53l069ZNsbGxysjIUGFhYY1ZzRYtWuj555/XuHHj9NVXX2n06NFq3769vvzyS+3evVtffvmlsrOzf/R6FRQUeB7bcvz4cW3btk0ZGRmKjIysdSn9bDVr1kxz5szRr371K40YMUKTJ09WeXm5nnzySX399dd64oknzvs9zmTEiBFaunSpunXrpj59+ig/P19PPvlknY9w+TEul0tvvfWWRowYoSuuuMLrQdD79+/X8uXLtXv37hrXLj8/Xy6XS6dOnfI8CPqVV15R+/bt9fbbb59zWAfQsAiAwEXqiiuu0O23364VK1bUeG3BggUaMGCAFixYoKysLJ0+fVqdOnVSfHy8rr76ak+/P/3pTwoJCdH8+fO1ZMkSdevWTdnZ2Zo+fbrXsuGECRNUUlKi+fPna/Hixbr00ks1bdo0T2D8vmeffVZ33323brvtNp04cUKDBg360Z9/mzBhgu666y4FBQUpKSmpxut33nmnIiIiNGfOHE2ePFnHjh1T+/bt1a9fP40fP75e1+v555/X888/L0kKDAxURESE7rrrLj388MMKDQ2t1zF+zB133KGQkBBlZGQoKSlJfn5+GjBggN5//33FxcU1yHvU5dlnn1Xz5s2VkZGhb775RldeeaXWrFmjGTNmnPMxr776au3Zs0fPPPOMXn/9dc2ePVtVVVUKDw/XkCFD9MILL9QYM3z4cEnfzQS3adNGvXv31uzZszVhwgS1bNnynGsB0LAcVl23ZgEw0oEDB9StWzc9+uij+sMf/mB3OQCARkAABAy2e/durVy5UnFxcQoNDdW+ffs0Z84cud1uffTRR+d8cwUA4MLGEjBgsJCQEOXl5WnRokX6+uuv5XK5NHjwYP3pT38i/AGAD2MGEAAAwDA8BgYAAMAwBEAAAADDEAABAAAMQwAEAAAwDHcBn4fTp0/r0KFDatmypddPZAEAgAuXZVk6duyYOnXq5PWrRyYhAJ6HQ4cOKTw83O4yAADAOSgsLDznn0u82BEAz0P1zxoVFhY22E9JAQCAxuV2uxUeHm70zxMSAM9D9bJvaGgoARAAgIuMyV/fMnPhGwAAwGAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMD4TADdv3qyRI0eqU6dOcjgcevPNN390zKZNmxQdHa3AwEBdeumlmj9/fuMXCgAAYDOfCYDHjx9X37599cILL9Sr/4EDB3TjjTdq4MCB2rVrl/7whz/ovvvu0+rVqxu5UgAAAHv5zG8BJyYmKjExsd7958+fr4iICGVmZkqSunfvrry8PD311FP65S9/2UhVAkDjsSxLJ09V2V0G0KCCmvsZ/Zu9jcVnAuDZ2rZtmxISErzahg0bpkWLFunUqVNq3rx5jTHl5eUqLy/37Lvd7kavEwDqw7IsjZ6/Tfn/PWp3KUCD2ps+TMFOY+NKo/GZJeCzVVxcrLCwMK+2sLAwVVZWqrS0tNYxGRkZcrlcni08PLwpSgWAH3XyVBXhD0C9GR2pfzilbFlWre3V0tLSlJqa6tl3u92EQAAXnLwZQxXs9LO7DKBBBDXnn+XGYGwA7NChg4qLi73aSkpK5O/vr7Zt29Y6JiAgQAEBAU1RHgCcs2CnH0tmAM7I2CXg2NhY5eTkeLW9++67iomJqfX7fwAAAL7CZwLgN998ow8++EAffPCBpO8e8/LBBx+ooKBA0nfLt2PHjvX0T0lJ0X//+1+lpqbq448/1uLFi7Vo0SI98MADdpQPAADQZHxmjSAvL0/XXXedZ7/6u3rjxo3T0qVLVVRU5AmDkhQVFaV169Zp6tSpmjdvnjp16qTnnnuOR8AAAACf5zMBcPDgwZ6bOGqzdOnSGm2DBg3Sv/71r0asCgAA4MLjM0vAAAAAqB8CIAAAgGEIgAAAAIYhAAIAABjGZ24CAXDhsixLJ09V2V2GTztRwfUFUH8EQACNyrIsjZ6/jd+pBYALCEvAABrVyVNVhL8mFBPZmt9OBfCjmAEE0GTyZgxVsJNw0piCmvvJ4XDYXQaACxwBEECTCXb6KdjJf3YAwG4sAQMAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGManAmBWVpaioqIUGBio6Ohobdmy5Yz9582bp+7duysoKEhdu3bVsmXLmqhSAAAA+/jbXUBDWbVqlaZMmaKsrCzFx8drwYIFSkxM1N69exUREVGjf3Z2ttLS0vTiiy/qqquu0o4dO/Sb3/xGrVu31siRI204AwAAgKbhsCzLsruIhtC/f39deeWVys7O9rR1795do0aNUkZGRo3+cXFxio+P15NPPulpmzJlivLy8rR169Z6vafb7ZbL5VJZWZlCQ0PP/yQAH3SiolI9HtkgSdqbPkzBTp/5/04AFyk+v31kCbiiokL5+flKSEjwak9ISFBubm6tY8rLyxUYGOjVFhQUpB07dujUqVONVisAAIDdfCIAlpaWqqqqSmFhYV7tYWFhKi4urnXMsGHD9NJLLyk/P1+WZSkvL0+LFy/WqVOnVFpaWuuY8vJyud1urw0AAOBi4xMBsJrD4fDatyyrRlu1//mf/1FiYqIGDBig5s2b6+abb9b48eMlSX5+frWOycjIkMvl8mzh4eENWj8AAEBT8IkA2K5dO/n5+dWY7SspKakxK1gtKChIixcv1okTJ/T555+roKBAXbp0UcuWLdWuXbtax6SlpamsrMyzFRYWNvi5AAAANDafCIBOp1PR0dHKycnxas/JyVFcXNwZxzZv3lydO3eWn5+fXnvtNY0YMULNmtV+WQICAhQaGuq1AQAAXGx85na81NRUJScnKyYmRrGxsVq4cKEKCgqUkpIi6bvZu4MHD3qe9ffJJ59ox44d6t+/v44ePaq5c+fqo48+0ssvv2znaQAAADQ6nwmASUlJOnLkiNLT01VUVKRevXpp3bp1ioyMlCQVFRWpoKDA07+qqkpPP/209u3bp+bNm+u6665Tbm6uunTpYtMZAAAANA2feQ6gHXiOEPDjeA4ggAsNn98+8h1AAAAA1B8BEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAzjb3cBgJ0sy9LJU1V2l+HTTlRwfQHgQkMAhLEsy9Lo+duU/9+jdpcCAECTYgkYxjp5qorw14RiIlsrqLmf3WUAAORjM4BZWVl68sknVVRUpJ49eyozM1MDBw6ss/+rr76qOXPmaP/+/XK5XBo+fLieeuoptW3btgmrxoUgb8ZQBTsJJ40pqLmfHA6H3WUAAORDAXDVqlWaMmWKsrKyFB8frwULFigxMVF79+5VREREjf5bt27V2LFj9cwzz2jkyJE6ePCgUlJSNGnSJL3xxhs2nAHsFOz0U7DTZ/51AADgjHxmCXju3LmaOHGiJk2apO7duyszM1Ph4eHKzs6utf/27dvVpUsX3XfffYqKitI111yjyZMnKy8vr4krBwAAaFo+EQArKiqUn5+vhIQEr/aEhATl5ubWOiYuLk5ffPGF1q1bJ8uydPjwYf3lL3/RTTfdVOf7lJeXy+12e20AAAAXG58IgKWlpaqqqlJYWJhXe1hYmIqLi2sdExcXp1dffVVJSUlyOp3q0KGDWrVqpeeff77O98nIyJDL5fJs4eHhDXoeAAAATcEnAmC1H37B3LKsOr90vnfvXt1333165JFHlJ+fr/Xr1+vAgQNKSUmp8/hpaWkqKyvzbIWFhQ1aPwAAQFPwiW+9t2vXTn5+fjVm+0pKSmrMClbLyMhQfHy8HnzwQUlSnz59FBISooEDB+rxxx9Xx44da4wJCAhQQEBAw58AAABAE/KJGUCn06no6Gjl5OR4tefk5CguLq7WMSdOnFCzZt6n7+f33WNALMtqnEIBAAAuAD4RACUpNTVVL730khYvXqyPP/5YU6dOVUFBgWdJNy0tTWPHjvX0HzlypNasWaPs7Gx99tln+uc//6n77rtPV199tTp16mTXaQAAADQ6n1gClqSkpCQdOXJE6enpKioqUq9evbRu3TpFRkZKkoqKilRQUODpP378eB07dkwvvPCCfv/736tVq1a6/vrrNXv2bLtOAQAAoEk4LNY7z5nb7ZbL5VJZWZlCQ0PtLgdn6URFpXo8skGStDd9GA+CBgBD8PntQ0vAAAAAqB8CIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhfCoAZmVlKSoqSoGBgYqOjtaWLVvq7Dt+/Hg5HI4aW8+ePZuwYgAAgKbnMwFw1apVmjJliqZPn65du3Zp4MCBSkxMVEFBQa39n332WRUVFXm2wsJCtWnTRrfeemsTVw4AANC0fCYAzp07VxMnTtSkSZPUvXt3ZWZmKjw8XNnZ2bX2d7lc6tChg2fLy8vT0aNHNWHChCauHAAAoGn5RACsqKhQfn6+EhISvNoTEhKUm5tbr2MsWrRIQ4cOVWRkZJ19ysvL5Xa7vTYAAICLjU8EwNLSUlVVVSksLMyrPSwsTMXFxT86vqioSO+8844mTZp0xn4ZGRlyuVyeLTw8/LzqBgAAsINPBMBqDofDa9+yrBpttVm6dKlatWqlUaNGnbFfWlqaysrKPFthYeH5lAsAAGALf7sLaAjt2rWTn59fjdm+kpKSGrOCP2RZlhYvXqzk5GQ5nc4z9g0ICFBAQMB51wsAAGAnn5gBdDqdio6OVk5Ojld7Tk6O4uLizjh206ZN+vTTTzVx4sTGLBEAAOCC4RMzgJKUmpqq5ORkxcTEKDY2VgsXLlRBQYFSUlIkfbd8e/DgQS1btsxr3KJFi9S/f3/16tXLjrIBAACanM8EwKSkJB05ckTp6ekqKipSr169tG7dOs9dvUVFRTWeCVhWVqbVq1fr2WeftaNkAAAAWzgsy7LsLuJi5Xa75XK5VFZWptDQULvLwVk6UVGpHo9skCTtTR+mYKfP/P8QAOAM+Pz2ke8AAgAAoP4IgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIaxJQCOHTtWx44d8+zv3r1bp06dsqMUAAAA49gSAF999VWdPHnSsz9w4EAVFhbaUQoAAIBxbAmAlmWdcR8AAACNh+8AAgAAGMa2ALh37159+OGH+vDDD2VZlv7zn/949qu3s5WVlaWoqCgFBgYqOjpaW7ZsOWP/8vJyTZ8+XZGRkQoICNBll12mxYsXn+spAQAAXBT87XrjIUOGeC39jhgxQpLkcDhkWZYcDoeqqqrqfbxVq1ZpypQpysrKUnx8vBYsWKDExETt3btXERERtY4ZM2aMDh8+rEWLFumnP/2pSkpKVFlZeX4nBgAAcIGzJQAeOHCgwY85d+5cTZw4UZMmTZIkZWZmasOGDcrOzlZGRkaN/uvXr9emTZv02WefqU2bNpKkLl26NHhdAAAAFxpbAmBkZGSDHq+iokL5+fmaNm2aV3tCQoJyc3NrHbN27VrFxMRozpw5euWVVxQSEqKf//zn+uMf/6igoKAGrQ8AAOBCYtsSsCTt379fb731lj7//HM5HA5FRUVp1KhRuvTSS8/qOKWlpaqqqlJYWJhXe1hYmIqLi2sd89lnn2nr1q0KDAzUG2+8odLSUv3ud7/TV199Vef3AMvLy1VeXu7Zd7vdZ1UnAADAhcC2AJiRkaFHHnlEp0+fVvv27WVZlr788ktNmzZNs2bN0gMPPHDWx3Q4HF771d8lrM3p06flcDj06quvyuVySfpuGXn06NGaN29erbOAGRkZeuyxx866LgAAgAuJLXcBv//++5oxY4amT5+u0tJSFRUVqbi42BMAp02bps2bN9f7eO3atZOfn1+N2b6SkpIas4LVOnbsqEsuucQT/iSpe/fusixLX3zxRa1j0tLSVFZW5tl4eDUAALgY2RIA58+fr0mTJmnmzJlq3bq1p71NmzZKT0/Xr3/9a2VnZ9f7eE6nU9HR0crJyfFqz8nJUVxcXK1j4uPjdejQIX3zzTeetk8++UTNmjVT586dax0TEBCg0NBQrw0AAOBiY0sA3LFjh5KTk+t8PTk5Wdu3bz+rY6ampuqll17S4sWL9fHHH2vq1KkqKChQSkqKpO9m78aOHevpf8cdd6ht27aaMGGC9u7dq82bN+vBBx/Ur3/9a24CAQAAPs2W7wAePnz4jI9ciYqKqvPmjbokJSXpyJEjSk9PV1FRkXr16qV169Z57jguKipSQUGBp3+LFi2Uk5Oje++9VzExMWrbtq3GjBmjxx9//JzOCQAA4GLhsGz4Id5mzZqpuLhY7du3r/X1w4cPq1OnTmf1IGg7uN1uuVwulZWVsRx8ETpRUakej2yQJO1NH6Zgp603xQMAmgif3zbeBfzSSy+pRYsWtb527NixJq4GAADAHLYEwIiICL344os/2gcAAAANz5YA+Pnnn9vxtgAAAJBNdwG/99576tGjR62/pFFWVqaePXtqy5YtNlQGAADg+2wJgJmZmfrNb35T6xcvXS6XJk+erLlz59pQGQAAgO+zJQDu3r1bw4cPr/P1hIQE5efnN2FFAAAA5rAlAB4+fFjNmzev83V/f399+eWXTVgRAACAOWwJgJdccon27NlT5+sffvihOnbs2IQVAQAAmMOWAHjjjTfqkUce0bffflvjtZMnT+rRRx/ViBEjbKgMAADA99nyGJgZM2ZozZo1+tnPfqZ77rlHXbt2lcPh0Mcff6x58+apqqpK06dPt6M0AAAAn2dLAAwLC1Nubq5++9vfKi0tTdW/RudwODRs2DBlZWUpLCzMjtIAAAB8nm0/BRcZGal169bp6NGj+vTTT2VZli6//HK1bt3arpIAAACMYFsArNa6dWtdddVVdpcBAABgDFtuAgEAAIB9CIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhvGpAJiVlaWoqCgFBgYqOjpaW7ZsqbPvxo0b5XA4amz/+c9/mrBiAACApuczAXDVqlWaMmWKpk+frl27dmngwIFKTExUQUHBGcft27dPRUVFnu3yyy9voooBAADs4W93AQ1l7ty5mjhxoiZNmiRJyszM1IYNG5Sdna2MjIw6x7Vv316tWrVqoirrz7IsnTxVZXcZPu1EBdcXAGAmnwiAFRUVys/P17Rp07zaExISlJube8axV1xxhb799lv16NFDM2bM0HXXXVdn3/LycpWXl3v23W73+RVeB8uyNHr+NuX/92ijHB8AAJjNJ5aAS0tLVVVVpbCwMK/2sLAwFRcX1zqmY8eOWrhwoVavXq01a9aoa9euGjJkiDZv3lzn+2RkZMjlcnm28PDwBj2PaidPVRH+mlBMZGsFNfezuwwAAJqMT8wAVnM4HF77lmXVaKvWtWtXde3a1bMfGxurwsJCPfXUU7r22mtrHZOWlqbU1FTPvtvtbrQQWC1vxlAFOwknjSmouV+d/5wAAOCLfCIAtmvXTn5+fjVm+0pKSmrMCp7JgAEDtHz58jpfDwgIUEBAwDnXeS6CnX4KdvrEnwkAAFwgfGIJ2Ol0Kjo6Wjk5OV7tOTk5iouLq/dxdu3apY4dOzZ0eQAAABcUn5laSk1NVXJysmJiYhQbG6uFCxeqoKBAKSkpkr5bvj148KCWLVsm6bu7hLt06aKePXuqoqJCy5cv1+rVq7V69Wo7TwMAAKDR+UwATEpK0pEjR5Senq6ioiL16tVL69atU2RkpCSpqKjI65mAFRUVeuCBB3Tw4EEFBQWpZ8+e+tvf/qYbb7zRrlMAAABoEg7Lsiy7i7hYud1uuVwulZWVKTQ0tMGOe6KiUj0e2SBJ2ps+jO8AAgDQgBrr8/ti4hPfAQQAAED9EQABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADONTATArK0tRUVEKDAxUdHS0tmzZUq9x//znP+Xv769+/fo1boEAAAAXAJ8JgKtWrdKUKVM0ffp07dq1SwMHDlRiYqIKCgrOOK6srExjx47VkCFDmqhSAAAAe/lMAJw7d64mTpyoSZMmqXv37srMzFR4eLiys7PPOG7y5Mm64447FBsb20SVAgAA2MsnAmBFRYXy8/OVkJDg1Z6QkKDc3Nw6xy1ZskT/+7//q0cffbSxSwQAALhg+NtdQEMoLS1VVVWVwsLCvNrDwsJUXFxc65j9+/dr2rRp2rJli/z963cZysvLVV5e7tl3u93nXjQAAIBNfGIGsJrD4fDatyyrRpskVVVV6Y477tBjjz2mn/3sZ/U+fkZGhlwul2cLDw8/75oBAACamk8EwHbt2snPz6/GbF9JSUmNWUFJOnbsmPLy8nTPPffI399f/v7+Sk9P1+7du+Xv76/33nuv1vdJS0tTWVmZZyssLGyU8wEAAGhMPrEE7HQ6FR0drZycHP3iF7/wtOfk5Ojmm2+u0T80NFR79uzxasvKytJ7772nv/zlL4qKiqr1fQICAhQQENCwxQMAADQxnwiAkpSamqrk5GTFxMQoNjZWCxcuVEFBgVJSUiR9N3t38OBBLVu2TM2aNVOvXr28xrdv316BgYE12gEAAHyNzwTApKQkHTlyROnp6SoqKlKvXr20bt06RUZGSpKKiop+9JmAAAAAJnBYlmXZXcTFyu12y+VyqaysTKGhoQ123BMVlerxyAZJ0t70YQp2+kxOBwDAdo31+X0x8YmbQAAAAFB/BEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAw/hUAMzKylJUVJQCAwMVHR2tLVu21Nl369atio+PV9u2bRUUFKRu3brpmWeeacJqAQAA7OFvdwENZdWqVZoyZYqysrIUHx+vBQsWKDExUXv37lVERESN/iEhIbrnnnvUp08fhYSEaOvWrZo8ebJCQkJ011132XAGAAAATcNhWZZldxENoX///rryyiuVnZ3taevevbtGjRqljIyMeh3jlltuUUhIiF555ZV69Xe73XK5XCorK1NoaOg51V2bExWV6vHIBknS3vRhCnb6TE4HAMB2jfX5fTHxiSXgiooK5efnKyEhwas9ISFBubm59TrGrl27lJubq0GDBjVGiQAAABcMn5haKi0tVVVVlcLCwrzaw8LCVFxcfMaxnTt31pdffqnKykrNnDlTkyZNqrNveXm5ysvLPftut/v8CgcAALCBT8wAVnM4HF77lmXVaPuhLVu2KC8vT/Pnz1dmZqZWrlxZZ9+MjAy5XC7PFh4e3iB1AwAANCWfmAFs166d/Pz8asz2lZSU1JgV/KGoqChJUu/evXX48GHNnDlTt99+e61909LSlJqa6tl3u92EQAAAcNHxiRlAp9Op6Oho5eTkeLXn5OQoLi6u3sexLMtrifeHAgICFBoa6rUBAABcbHxiBlCSUlNTlZycrJiYGMXGxmrhwoUqKChQSkqKpO9m7w4ePKhly5ZJkubNm6eIiAh169ZN0nfPBXzqqad077332nYOAAAATcFnAmBSUpKOHDmi9PR0FRUVqVevXlq3bp0iIyMlSUVFRSooKPD0P336tNLS0nTgwAH5+/vrsssu0xNPPKHJkyfbdQoAAABNwmeeA2gHngMIAMDFh+cA+sh3AAEAAFB/BEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAAAAwxAAAQAADONTATArK0tRUVEKDAxUdHS0tmzZUmffNWvW6IYbbtBPfvIThYaGKjY2Vhs2bGjCagEAAOzhMwFw1apVmjJliqZPn65du3Zp4MCBSkxMVEFBQa39N2/erBtuuEHr1q1Tfn6+rrvuOo0cOVK7du1q4soBAACalsOyLMvuIhpC//79deWVVyo7O9vT1r17d40aNUoZGRn1OkbPnj2VlJSkRx55pF793W63XC6XysrKFBoaek511+ZERaV6PPLdbOTe9GEKdvo32LEBADBdY31+X0x8YgawoqJC+fn5SkhI8GpPSEhQbm5uvY5x+vRpHTt2TG3atKmzT3l5udxut9cGAABwsfGJAFhaWqqqqiqFhYV5tYeFham4uLhex3j66ad1/PhxjRkzps4+GRkZcrlcni08PPy86gYAALCDTwTAag6Hw2vfsqwabbVZuXKlZs6cqVWrVql9+/Z19ktLS1NZWZlnKywsPO+aAQAAmppPfLmsXbt28vPzqzHbV1JSUmNW8IdWrVqliRMn6s9//rOGDh16xr4BAQEKCAg473oBAADs5BMzgE6nU9HR0crJyfFqz8nJUVxcXJ3jVq5cqfHjx2vFihW66aabGrtMAACAC4JPzABKUmpqqpKTkxUTE6PY2FgtXLhQBQUFSklJkfTd8u3Bgwe1bNkySd+Fv7Fjx+rZZ5/VgAEDPLOHQUFBcrlctp0HAABAY/OZAJiUlKQjR44oPT1dRUVF6tWrl9atW6fIyEhJUlFRkdczARcsWKDKykrdfffduvvuuz3t48aN09KlS5u6fAAAgCbjM88BtENjPUfIsiydPFUlSQpq7levG1kAAED98BxAH5oB9CUOh4OHPwMAgEbjEzeBAAAAoP4IgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGH87S7gYmZZliTJ7XbbXAkAAKiv6s/t6s9xExEAz8OxY8ckSeHh4TZXAgAAztaxY8fkcrnsLsMWDsvk+HueTp8+rUOHDqlly5ZyOBwNemy3263w8HAVFhYqNDS0QY+N/8N1bhpc56bBdW4aXOem0ZjX2bIsHTt2TJ06dVKzZmZ+G44ZwPPQrFkzde7cuVHfIzQ0lP/ANAGuc9PgOjcNrnPT4Do3jca6zqbO/FUzM/YCAAAYjAAIAABgGALgBSogIECPPvqoAgIC7C7Fp3GdmwbXuWlwnZsG17lpcJ0bFzeBAAAAGIYZQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBMALzObNmzVy5Eh16tRJDodDb775pt0l+ZyMjAxdddVVatmypdq3b69Ro0Zp3759dpflk7Kzs9WnTx/Pg1xjY2P1zjvv2F2WT8vIyJDD4dCUKVPsLsXnzJw5Uw6Hw2vr0KGD3WX5pIMHD+rOO+9U27ZtFRwcrH79+ik/P9/usnwKAfACc/z4cfXt21cvvPCC3aX4rE2bNunuu+/W9u3blZOTo8rKSiUkJOj48eN2l+ZzOnfurCeeeEJ5eXnKy8vT9ddfr5tvvln//ve/7S7NJ+3cuVMLFy5Unz597C7FZ/Xs2VNFRUWebc+ePXaX5HOOHj2q+Ph4NW/eXO+884727t2rp59+Wq1atbK7NJ/CT8FdYBITE5WYmGh3GT5t/fr1XvtLlixR+/btlZ+fr2uvvdamqnzTyJEjvfb/9Kc/KTs7W9u3b1fPnj1tqso3ffPNN/rVr36lF198UY8//rjd5fgsf39/Zv0a2ezZsxUeHq4lS5Z42rp06WJfQT6KGUAYr6ysTJLUpk0bmyvxbVVVVXrttdd0/PhxxcbG2l2Oz7n77rt10003aejQoXaX4tP279+vTp06KSoqSrfddps+++wzu0vyOWvXrlVMTIxuvfVWtW/fXldccYVefPFFu8vyOQRAGM2yLKWmpuqaa65Rr1697C7HJ+3Zs0ctWrRQQECAUlJS9MYbb6hHjx52l+VTXnvtNf3rX/9SRkaG3aX4tP79+2vZsmXasGGDXnzxRRUXFysuLk5HjhyxuzSf8tlnnyk7O1uXX365NmzYoJSUFN13331atmyZ3aX5FJaAYbR77rlHH374obZu3Wp3KT6ra9eu+uCDD/T1119r9erVGjdunDZt2kQIbCCFhYW6//779e677yowMNDucnza97+e07t3b8XGxuqyyy7Tyy+/rNTUVBsr8y2nT59WTEyMZs2aJUm64oor9O9//1vZ2dkaO3aszdX5DmYAYax7771Xa9eu1fvvv6/OnTvbXY7Pcjqd+ulPf6qYmBhlZGSob9++evbZZ+0uy2fk5+erpKRE0dHR8vf3l7+/vzZt2qTnnntO/v7+qqqqsrtEnxUSEqLevXtr//79dpfiUzp27FjjfxC7d++ugoICmyryTcwAwjiWZenee+/VG2+8oY0bNyoqKsrukoxiWZbKy8vtLsNnDBkypMadqBMmTFC3bt308MMPy8/Pz6bKfF95ebk+/vhjDRw40O5SfEp8fHyNR3N98sknioyMtKki30QAvMB88803+vTTTz37Bw4c0AcffKA2bdooIiLCxsp8x913360VK1borbfeUsuWLVVcXCxJcrlcCgoKsrk63/KHP/xBiYmJCg8P17Fjx/Taa69p48aNNe7Exrlr2bJlje+vhoSEqG3btnyvtYE98MADGjlypCIiIlRSUqLHH39cbrdb48aNs7s0nzJ16lTFxcVp1qxZGjNmjHbs2KGFCxdq4cKFdpfmUwiAF5i8vDxdd911nv3q75WMGzdOS5cutakq35KdnS1JGjx4sFf7kiVLNH78+KYvyIcdPnxYycnJKioqksvlUp8+fbR+/XrdcMMNdpcGnLUvvvhCt99+u0pLS/WTn/xEAwYM0Pbt25mZamBXXXWV3njjDaWlpSk9PV1RUVHKzMzUr371K7tL8ykOy7Isu4sAAABA0+EmEAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwDAEQAADAMARAAPj/qqqqFBcXp1/+8pde7WVlZQoPD9eMGTNsqgwAGha/BAIA37N//37169dPCxcu9Pz01NixY7V7927t3LlTTqfT5goB4PwRAAHgB5577jnNnDlTH330kXbu3Klbb71VO3bsUL9+/ewuDQAaBAEQAH7Asixdf/318vPz0549e3Tvvfey/AvApxAAAaAW//nPf9S9e3f17t1b//rXv+Tv7293SQDQYLgJBABqsXjxYgUHB+vAgQP64osv7C4HABoUM4AA8APbtm3Ttddeq3feeUdz5sxRVVWV/v73v8vhcNhdGgA0CGYAAeB7Tp48qXHjxmny5MkaOnSoXnrpJe3cuVMLFiywuzQAaDAEQAD4nmnTpun06dOaPXu2JCkiIkJPP/20HnzwQX3++ef2FgcADYQlYAD4/zZt2qQhQ4Zo48aNuuaaa7xeGzZsmCorK1kKBuATCIAAAACGYQkYAADAMARAAAAAwxAAAQAADEMABAAAMAwBEAAAwDAEQAAAAMMQAAEAAAxDAAQAADAMARAAAMAwBEAAAADDEAABAAAMQwAEAAAwzP8DG16mTXAjgDEAAAAASUVORK5CYII=", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot CDF\n", "fig, ax = plt.subplots(1, 1)\n", "ax.step(x, binom.cdf(x, n, p))\n", "ax.set_xlabel('X')\n", "ax.set_ylabel('CDF')\n", "ax.set_title('Negative Binomial CDF')" ] }, { "cell_type": "code", "execution_count": 102, "id": "8fcb8048-a4b3-4744-8af3-e6abf56ea88b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 3 1 1 2 4 5 2 3 3]\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Geometric PMF')" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0bba8d52141e44d79d954aa3985481e3", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKnNJREFUeJzt3X9U1HW+x/HXCDKgCa2iiCsia63ib4NWQa38ER0iq7uVWvmr9CRpFnHdTfSeNE6F20kjzwqC6y/a1bymte2qFXtTs8VOSmZm2rXSIB3kSgZaLejwvX90mdsEGurIF+bzfJwz5+x8+M533vO9567P/X7nh8OyLEsAAAAwRiu7BwAAAEDTIgABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCKDRPvroI02dOlU9evRQSEiIQkJCdO2112r69Onas2eP3eP5zNq1a5WdnX1Rjzl69KgcDodWr17tkxkcDofXLSwsTDfddJM2b97stV337t3lcDh00003NbifgoICzz62b9/uWV+wYEG956i7/fGPf/TJawDQfAXaPQCAliEvL0+PPPKIevbsqccee0x9+vSRw+HQwYMHtW7dOl1//fX67LPP1KNHD7tHvWxr167Vxx9/rLS0tEY/JjIyUrt27fLp67/77rv17//+76qtrdUXX3yhp59+WmPGjNHf/vY3paSkeLZr166d3nnnHX3++ef1nn/lypUKDQ1VVVVVg8/xxhtvKCwszGstJibGZ68BQPNEAAL4Wf/85z81Y8YMpaSk6JVXXlFQUJDnbyNHjtTMmTO1YcMGhYSE2DilPdxut86dOyen06khQ4b4dN8RERGefSYmJiohIUHXXHONsrOzvQJw2LBh2r9/v1auXKlnnnnGs/7555/rnXfe0bRp07R8+fIGnyMuLk7h4eE+nRtA88clYAA/69lnn1VAQIDy8vK84u/H7rnnHnXp0sVrbc+ePbr99tvVvn17BQcHa9CgQfrP//zPeo/9+OOPdccdd+gXv/iFgoODNXDgQK1Zs8Zrm+3bt8vhcGjt2rV64oknFBkZqauuukpjxozRiRMndPr0aT300EMKDw9XeHi4HnjgAZ05c8ZrH5ZlKScnRwMHDlRISIh+8Ytf6O6779YXX3zh2abuMuuXX37pdVlU+v/LvM8995yefvppxcTEyOl0atu2bee9BHzo0CHde++9ioiIkNPpVLdu3TRp0iRVV1c3+vjX6dGjhzp27Kgvv/zSa71Vq1aaNGmS1qxZo9raWs/6ypUrFRUVpdGjR1/0cwHwbwQggAtyu93atm2b4uPjFRkZ2ejHbdu2TUOHDtU333yjZcuW6a9//asGDhyocePGeUXSp59+qsTERB04cEBLlizRpk2b1Lt3b02ZMkXPPfdcvf3OnTtX5eXlWr16tRYtWqTt27fr3nvv1V133aWwsDCtW7dOv//97/XSSy9p7ty5Xo+dPn260tLSNHr0aL322mvKycnRgQMHlJiYqBMnTkiScnJyNHToUHXu3Fm7du3y3H5syZIlevvtt/X8889r69at6tWrV4PHYN++fbr++uv13nvvKTMzU1u3blVWVpaqq6tVU1PT6GNZ59SpU6qoqFDHjh3r/e3BBx/U8ePH9eabb0r64f9ua9as0ZQpU9Sq1fn/q77uDGbdze12X/RcAFogCwAuoKyszJJkjR8/vt7fzp07Z509e9Zzq62t9fytV69e1qBBg6yzZ896Pea2226zIiMjLbfbbVmWZY0fP95yOp1WSUmJ13bJyclWmzZtrG+++cayLMvatm2bJckaM2aM13ZpaWmWJOvRRx/1Wr/zzjut9u3be+7v2rXLkmQtWrTIa7vS0lIrJCTE+v3vf+9ZS0lJsaKjo+u93iNHjliSrB49elg1NTUN/m3VqlWetZEjR1pXX321VV5eXm9fP0eSNWPGDOvs2bNWTU2NdfDgQSs5OdmSZC1dutSzXXR0tJWSkmJZlmXdeOON1t13321ZlmVt3rzZcjgc1pEjR6wNGzZYkqxt27Z5Hjd//nxLUr3bL3/5y4ueFUDLwxlAAJcsLi5OrVu39twWLVokSfrss8906NAh3X///ZLkdYbp1ltvlcvl0qeffipJevvttzVq1ChFRUV57XvKlCn67rvv6p19u+2227zux8bGSpLXe+Lq1r/++mvPZeC///3vcjgcmjBhgtc8nTt31oABA7w+Iftzbr/9drVu3fqC23z33XfasWOHxo4d2+AZu8bIyclR69atFRQUpNjYWBUVFSkzM1MzZsxocPsHH3xQr7/+uioqKrRixQqNGDFC3bt3v+Bz/OMf/9Du3bs9ty1btlzSrABaFj4EAuCCwsPDFRISUu99Z9IPn5b97rvv5HK5dPvtt3vW6y6nzp49W7Nnz25wvydPnpQkVVRUNHhpue79hBUVFV7r7du397pf957E863/61//0lVXXaUTJ07IsixFREQ0OM+vfvWrBtcb0phL4adOnZLb7VbXrl0bvd+fGjt2rH73u9/J4XCoXbt26tGjhwICAs67/d13361Zs2bphRde0N/+9rdGfSXNgAED+BAIYCACEMAFBQQEaOTIkXrrrbfkcrm84qd3796SfvhwxI/VBUVGRoZ++9vfNrjfnj17SpI6dOggl8tV7+/Hjx/32tflCg8Pl8Ph0M6dO+V0Ouv9vaG186n7UMiFtG/fXgEBAfrqq68uas4f69ixo+Lj4xu9fZs2bTR+/HhlZWUpNDT0vMceAAhAAD8rIyNDW7duVWpqql555ZWfvfzZs2dPXXvttdq3b5+effbZC247atQovfrqqzp+/LjXp4gLCgrUpk0bn321ym233aaFCxfq2LFjGjt27AW3dTqd+v777y/r+UJCQnTjjTdqw4YNeuaZZ5rsLNvDDz+sEydO6MYbb1RwcHCTPCeAlocABPCzhg4dqqVLl2rWrFm67rrr9NBDD6lPnz5q1aqVXC6XNm7cKEkKDQ31PCYvL0/Jycm65ZZbNGXKFP3yl7/U119/rYMHD+qDDz7Qhg0bJEnz58/X3//+d40YMUJPPvmk2rdvr7/85S/avHmznnvuuXpfUnw5r+Ghhx7SAw88oD179uiGG25Q27Zt5XK59O6776pfv356+OGHJUn9+vXTpk2blJubq7i4OLVq1eqizsTVWbx4sYYNG6bBgwdrzpw5uuaaa3TixAm9/vrrysvLU7t27Xzy2n5s4MCBeu2113y+XwD+hQAE0CipqalKSEjQiy++qBdeeEHHjx+Xw+FQ165dlZiYqP/6r//SyJEjPduPGDFC77//vp555hmlpaXp1KlT6tChg3r37u11Bq5nz54qKirS3LlzNXPmTH3//feKjY3VqlWrNGXKFJ++hry8PA0ZMkR5eXnKyclRbW2tunTpoqFDh+o3v/mNZ7vHHntMBw4c0Ny5c1VZWSnLsmRZ1kU/34ABA/T+++9r/vz5ysjI0OnTp9W5c2eNHDnyvN+nCABNwWFdyn+rAQAAoMXia2AAAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAw/BF0JehtrZWx48fV7t27Rr126AAAMB+lmXp9OnT6tKli1q1MvNcGAF4GY4fP66oqCi7xwAAAJegtLRUXbt2tXsMWxCAl6HudzxLS0u9fgMVAAA0X1VVVYqKiroiv8fdUhCAl6Husm9oaCgBCABAC2Py27fMvPANAABgMAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDB+FYA5OTmKiYlRcHCw4uLitHPnzvNuu337djkcjnq3Q4cONeHEAAAATc9vAnD9+vVKS0vTvHnztHfvXg0fPlzJyckqKSm54OM+/fRTuVwuz+3aa69tookBAADs4TcBuHjxYk2dOlXTpk1TbGyssrOzFRUVpdzc3As+rlOnTurcubPnFhAQ0EQTAwAA2MMvArCmpkbFxcVKSkryWk9KSlJRUdEFHzto0CBFRkZq1KhR2rZt2wW3ra6uVlVVldcNAACgpQm0ewBfOHnypNxutyIiIrzWIyIiVFZW1uBjIiMjlZ+fr7i4OFVXV+ull17SqFGjtH37dt1www0NPiYrK0tPPfWUz+c/n+5zNjfZczUnRxem2D0CAAB+zS8CsI7D4fC6b1lWvbU6PXv2VM+ePT33ExISVFpaqueff/68AZiRkaH09HTP/aqqKkVFRflgcgAAgKbjF5eAw8PDFRAQUO9sX3l5eb2zghcyZMgQHT58+Lx/dzqdCg0N9boBAAC0NH4RgEFBQYqLi1NhYaHXemFhoRITExu9n7179yoyMtLX4wEAADQrfnMJOD09XRMnTlR8fLwSEhKUn5+vkpISpaamSvrh8u2xY8dUUFAgScrOzlb37t3Vp08f1dTU6M9//rM2btyojRs32vkyAAAArji/CcBx48apoqJCmZmZcrlc6tu3r7Zs2aLo6GhJksvl8vpOwJqaGs2ePVvHjh1TSEiI+vTpo82bN+vWW2+16yUAAAA0CYdlWZbdQ7RUVVVVCgsLU2Vl5RV5PyCfAgYAwPeu9L/fLYFfvAcQAAAAjUcAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADCMXwVgTk6OYmJiFBwcrLi4OO3cubNRj/vnP/+pwMBADRw48MoOCAAA0Az4TQCuX79eaWlpmjdvnvbu3avhw4crOTlZJSUlF3xcZWWlJk2apFGjRjXRpAAAAPbymwBcvHixpk6dqmnTpik2NlbZ2dmKiopSbm7uBR83ffp03XfffUpISGiiSQEAAOzlFwFYU1Oj4uJiJSUlea0nJSWpqKjovI9btWqVPv/8c82fP/9KjwgAANBsBNo9gC+cPHlSbrdbERERXusREREqKytr8DGHDx/WnDlztHPnTgUGNu4wVFdXq7q62nO/qqrq0ocGAACwiV+cAazjcDi87luWVW9Nktxut+677z499dRT+vWvf93o/WdlZSksLMxzi4qKuuyZAQAAmppfBGB4eLgCAgLqne0rLy+vd1ZQkk6fPq09e/bokUceUWBgoAIDA5WZmal9+/YpMDBQb7/9doPPk5GRocrKSs+ttLT0irweAACAK8kvLgEHBQUpLi5OhYWF+rd/+zfPemFhoe64445624eGhmr//v1eazk5OXr77bf1yiuvKCYmpsHncTqdcjqdvh0eAACgiflFAEpSenq6Jk6cqPj4eCUkJCg/P18lJSVKTU2V9MPZu2PHjqmgoECtWrVS3759vR7fqVMnBQcH11sHAADwN34TgOPGjVNFRYUyMzPlcrnUt29fbdmyRdHR0ZIkl8v1s98JCAAAYAKHZVmW3UO0VFVVVQoLC1NlZaVCQ0N9vv/uczb7fJ8twdGFKXaPAADwY1f63++WwC8+BAIAAIDGIwABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMIxfBWBOTo5iYmIUHBysuLg47dy587zbvvvuuxo6dKg6dOigkJAQ9erVSy+88EITTgsAAGCPQLsH8JX169crLS1NOTk5Gjp0qPLy8pScnKxPPvlE3bp1q7d927Zt9cgjj6h///5q27at3n33XU2fPl1t27bVQw89ZMMrAAAAaBoOy7Isu4fwhcGDB+u6665Tbm6uZy02NlZ33nmnsrKyGrWP3/72t2rbtq1eeumlRm1fVVWlsLAwVVZWKjQ09JLmvpDuczb7fJ8twdGFKXaPAADwY1f63++WwC8uAdfU1Ki4uFhJSUle60lJSSoqKmrUPvbu3auioiLdeOON592murpaVVVVXjcAAICWxi8C8OTJk3K73YqIiPBaj4iIUFlZ2QUf27VrVzmdTsXHx2vmzJmaNm3aebfNyspSWFiY5xYVFeWT+QEAAJqSXwRgHYfD4XXfsqx6az+1c+dO7dmzR8uWLVN2drbWrVt33m0zMjJUWVnpuZWWlvpkbgAAgKbkFx8CCQ8PV0BAQL2zfeXl5fXOCv5UTEyMJKlfv346ceKEFixYoHvvvbfBbZ1Op5xOp2+GBgAAsIlfnAEMCgpSXFycCgsLvdYLCwuVmJjY6P1YlqXq6mpfjwcAANCs+MUZQElKT0/XxIkTFR8fr4SEBOXn56ukpESpqamSfrh8e+zYMRUUFEiSli5dqm7duqlXr16SfvhewOeff16zZs2y7TUAAAA0Bb8JwHHjxqmiokKZmZlyuVzq27evtmzZoujoaEmSy+VSSUmJZ/va2lplZGToyJEjCgwMVI8ePbRw4UJNnz7drpcAAADQJPzmewDtwPcAXhl8DyAA4EriewD95D2AAAAAaDwCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAY2wJw0qRJOn36tOf+vn37dPbsWbvGAQAAMIZtAfiXv/xF33//vef+8OHDVVpaatc4AAAAxrAtAH/6E8T8JDEAAEDT4D2AAAAAhgm088k/+eQTlZWVSfrhDOChQ4d05swZr2369+9vx2gAAAB+y9YAHDVqlNel39tuu02S5HA4ZFmWHA6H3G63XeMBAAD4JdsC8MiRI3Y9NQAAgNFsC8Do6Gi7nhoAAMBotgVgSUlJo7br1q3bFZ4EAADALLYFYExMjOc/170P0OFweK3xHkAAAADfsy0AHQ6HunbtqilTpmjMmDEKDLT18ygAAADGsK26vvrqK61Zs0arV6/WsmXLNGHCBE2dOlWxsbF2jQQAAGAE274IunPnznriiSd08OBBvfLKKzp16pQGDx6sIUOGaPny5aqtrbVrNAAAAL/WLH4JZNiwYVqxYoUOHz6sNm3aKDU1Vd98843dYwEAAPilZhGARUVFmjZtmn7961/rzJkzWrp0qa6++mq7xwIAAPBLtr0H0OVyqaCgQKtWrdKpU6d0//33q6ioSH369LFrJAAAACPY+kXQXbp00eTJk3X77berdevWcrvd+uijj7y247eAAQAAfMth/fjHeJtQq1b/f/W57rd/f6q5fw9gVVWVwsLCVFlZqdDQUJ/vv/uczT7fZ0twdGGK3SMAAPzYlf73uyXgt4ABAAAMY1sAdurUSbNnz9Zrr72ms2fPavTo0VqyZInCw8PtGgl+gLOmAAD8PNs+Bfzkk09q9erVSklJ0fjx41VYWKiHH37YrnEAAACMYdsZwE2bNmnFihUaP368JGnChAkaOnSo3G63AgIC7BoLAADA79l2BrC0tFTDhw/33P/Nb36jwMBAHT9+3K6RAAAAjGBbALrdbgUFBXmtBQYG6ty5czZNBAAAYAbbLgFblqUpU6bI6XR61v71r38pNTVVbdu29axt2rTJjvEAAAD8lm0BOHny5HprEyZMsGESAAAAs9gWgKtWrbLrqQEAAIxm23sAAQAAYA8CEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGMavAjAnJ0cxMTEKDg5WXFycdu7ced5tN23apJtvvlkdO3ZUaGioEhIS9OabbzbhtAAAAPbwmwBcv3690tLSNG/ePO3du1fDhw9XcnKySkpKGtz+nXfe0c0336wtW7aouLhYI0aM0JgxY7R3794mnhwAAKBpOSzLsuwewhcGDx6s6667Trm5uZ612NhY3XnnncrKymrUPvr06aNx48bpySefbNT2VVVVCgsLU2VlpUJDQy9p7gvpPmezz/fZEhxdmHLJj+WYAQB+zpX+97sl8IszgDU1NSouLlZSUpLXelJSkoqKihq1j9raWp0+fVrt27c/7zbV1dWqqqryugEAALQ0fhGAJ0+elNvtVkREhNd6RESEysrKGrWPRYsW6dtvv9XYsWPPu01WVpbCwsI8t6ioqMuaGwAAwA5+EYB1HA6H133LsuqtNWTdunVasGCB1q9fr06dOp13u4yMDFVWVnpupaWllz0zAABAUwu0ewBfCA8PV0BAQL2zfeXl5fXOCv7U+vXrNXXqVG3YsEGjR4++4LZOp1NOp/Oy5wUAALCTX5wBDAoKUlxcnAoLC73WCwsLlZiYeN7HrVu3TlOmTNHatWuVksKb6AEAgBn84gygJKWnp2vixImKj49XQkKC8vPzVVJSotTUVEk/XL49duyYCgoKJP0Qf5MmTdKLL76oIUOGeM4ehoSEKCwszLbXAQAAcKX5TQCOGzdOFRUVyszMlMvlUt++fbVlyxZFR0dLklwul9d3Aubl5encuXOaOXOmZs6c6VmfPHmyVq9e3dTjAwAANBm/CUBJmjFjhmbMmNHg334addu3b7/yAwEAADRDfvEeQAAAADQeAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYJtHsAAPbrPmez3SPY4ujCFLtHAABbcAYQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIbxqwDMyclRTEyMgoODFRcXp507d553W5fLpfvuu089e/ZUq1atlJaW1nSDAgAA2MhvAnD9+vVKS0vTvHnztHfvXg0fPlzJyckqKSlpcPvq6mp17NhR8+bN04ABA5p4WgAAAPv4TQAuXrxYU6dO1bRp0xQbG6vs7GxFRUUpNze3we27d++uF198UZMmTVJYWFgTTwsAAGAfvwjAmpoaFRcXKykpyWs9KSlJRUVFNk0FAADQPAXaPYAvnDx5Um63WxEREV7rERERKisr89nzVFdXq7q62nO/qqrKZ/sGAABoKn5xBrCOw+Hwum9ZVr21y5GVlaWwsDDPLSoqymf7BgAAaCp+EYDh4eEKCAiod7avvLy83lnBy5GRkaHKykrPrbS01Gf7BgAAaCp+EYBBQUGKi4tTYWGh13phYaESExN99jxOp1OhoaFeNwAAgJbGL94DKEnp6emaOHGi4uPjlZCQoPz8fJWUlCg1NVXSD2fvjh07poKCAs9jPvzwQ0nSmTNn9D//8z/68MMPFRQUpN69e9vxEgAAAJqE3wTguHHjVFFRoczMTLlcLvXt21dbtmxRdHS0pB+++Pmn3wk4aNAgz38uLi7W2rVrFR0draNHjzbl6AAAAE3KbwJQkmbMmKEZM2Y0+LfVq1fXW7Ms6wpPBAAA0Pz4xXsAAQAA0HgEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhgm0ewAAaKm6z9ls9wi2OLowxe4RAFwmzgACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAACAYQhAAAAAwxCAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhAu0eAABglu5zNts9gi2OLkyxewTAgzOAAAAAhiEAAQAADEMAAgAAGIYABAAAMAwBCAAAYBgCEAAAwDAEIAAAgGEIQAAAAMMQgAAAAIYhAAEAAAzDT8EBANDM8fN58DXOAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADD+FUA5uTkKCYmRsHBwYqLi9POnTsvuP2OHTsUFxen4OBg/epXv9KyZcuaaFIAAAD7+E0Arl+/XmlpaZo3b5727t2r4cOHKzk5WSUlJQ1uf+TIEd16660aPny49u7dq7lz5+rRRx/Vxo0bm3hyAACApuU3Abh48WJNnTpV06ZNU2xsrLKzsxUVFaXc3NwGt1+2bJm6deum7OxsxcbGatq0aXrwwQf1/PPPN/HkAAAATcsvfgmkpqZGxcXFmjNnjtd6UlKSioqKGnzMrl27lJSU5LV2yy23aMWKFTp79qxat25d7zHV1dWqrq723K+srJQkVVVVXe5LaFBt9XdXZL/N3eUcT47ZpeG4XRqO26XhuF08jtmV2a9lWVdk/y2BXwTgyZMn5Xa7FRER4bUeERGhsrKyBh9TVlbW4Pbnzp3TyZMnFRkZWe8xWVlZeuqpp+qtR0VFXcb0+KmwbLsnaHk4ZpeG43ZpOG6XhuN28a70MTt9+rTCwsKu7JM0U34RgHUcDofXfcuy6q393PYNrdfJyMhQenq6535tba2+/vprdejQ4YLP09JUVVUpKipKpaWlCg0NtXucFoFjdmk4bpeG43ZpOG4Xz1+PmWVZOn36tLp06WL3KLbxiwAMDw9XQEBAvbN95eXl9c7y1encuXOD2wcGBqpDhw4NPsbpdMrpdHqtXX311Zc+eDMXGhrqV/8P3xQ4ZpeG43ZpOG6XhuN28fzxmJl65q+OX3wIJCgoSHFxcSosLPRaLywsVGJiYoOPSUhIqLf9W2+9pfj4+Abf/wcAAOAv/CIAJSk9PV1/+tOftHLlSh08eFCPP/64SkpKlJqaKumHy7eTJk3ybJ+amqovv/xS6enpOnjwoFauXKkVK1Zo9uzZdr0EAACAJuEXl4Alady4caqoqFBmZqZcLpf69u2rLVu2KDo6WpLkcrm8vhMwJiZGW7Zs0eOPP66lS5eqS5cuWrJkie666y67XkKz4XQ6NX/+/HqXu3F+HLNLw3G7NBy3S8Nxu3gcM//lsEz+DDQAAICB/OYSMAAAABqHAAQAADAMAQgAAGAYAhAAAMAwBCA83nnnHY0ZM0ZdunSRw+HQa6+9ZvdIzV5WVpauv/56tWvXTp06ddKdd96pTz/91O6xmr3c3Fz179/f8+WyCQkJ2rp1q91jtShZWVlyOBxKS0uze5RmbcGCBXI4HF63zp072z1Wi3Ds2DFNmDBBHTp0UJs2bTRw4EAVFxfbPRZ8hACEx7fffqsBAwboj3/8o92jtBg7duzQzJkz9d5776mwsFDnzp1TUlKSvv32W7tHa9a6du2qhQsXas+ePdqzZ49GjhypO+64QwcOHLB7tBZh9+7dys/PV//+/e0epUXo06ePXC6X57Z//367R2r2Tp06paFDh6p169baunWrPvnkEy1atMivf/3KNH7zPYC4fMnJyUpOTrZ7jBbljTfe8Lq/atUqderUScXFxbrhhhtsmqr5GzNmjNf9Z555Rrm5uXrvvffUp08fm6ZqGc6cOaP7779fy5cv19NPP233OC1CYGAgZ/0u0h/+8AdFRUVp1apVnrXu3bvbNxB8jjOAgA9VVlZKktq3b2/zJC2H2+3Wyy+/rG+//VYJCQl2j9PszZw5UykpKRo9erTdo7QYhw8fVpcuXRQTE6Px48friy++sHukZu/1119XfHy87rnnHnXq1EmDBg3S8uXL7R4LPkQAAj5iWZbS09M1bNgw9e3b1+5xmr39+/frqquuktPpVGpqql599VX17t3b7rGatZdfflkffPCBsrKy7B6lxRg8eLAKCgr05ptvavny5SorK1NiYqIqKirsHq1Z++KLL5Sbm6trr71Wb775plJTU/Xoo4+qoKDA7tHgI1wCBnzkkUce0UcffaR3333X7lFahJ49e+rDDz/UN998o40bN2ry5MnasWMHEXgepaWleuyxx/TWW28pODjY7nFajB+/raVfv35KSEhQjx49tGbNGqWnp9s4WfNWW1ur+Ph4Pfvss5KkQYMG6cCBA8rNzdWkSZNsng6+wBlAwAdmzZql119/Xdu2bVPXrl3tHqdFCAoK0jXXXKP4+HhlZWVpwIABevHFF+0eq9kqLi5WeXm54uLiFBgYqMDAQO3YsUNLlixRYGCg3G633SO2CG3btlW/fv10+PBhu0dp1iIjI+v9j7HY2FiVlJTYNBF8jTOAwGWwLEuzZs3Sq6++qu3btysmJsbukVosy7JUXV1t9xjN1qhRo+p9evWBBx5Qr1699MQTTyggIMCmyVqW6upqHTx4UMOHD7d7lGZt6NCh9b7S6r//+78VHR1t00TwNQIQHmfOnNFnn33muX/kyBF9+OGHat++vbp162bjZM3XzJkztXbtWv31r39Vu3btVFZWJkkKCwtTSEiIzdM1X3PnzlVycrKioqJ0+vRpvfzyy9q+fXu9T1Xj/7Vr167ee0vbtm2rDh068J7TC5g9e7bGjBmjbt26qby8XE8//bSqqqo0efJku0dr1h5//HElJibq2Wef1dixY/X+++8rPz9f+fn5do8GHyEA4bFnzx6NGDHCc7/u/TGTJ0/W6tWrbZqqecvNzZUk3XTTTV7rq1at0pQpU5p+oBbixIkTmjhxolwul8LCwtS/f3+98cYbuvnmm+0eDX7mq6++0r333quTJ0+qY8eOGjJkiN577z3OZP2M66+/Xq+++qoyMjKUmZmpmJgYZWdn6/7777d7NPiIw7Isy+4hAAAA0HT4EAgAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwDAEIAABgGAIQAADAMAQgAPwft9utxMRE3XXXXV7rlZWVioqK0n/8x3/YNBkA+Ba/BAIAP3L48GENHDhQ+fn5np+9mjRpkvbt26fdu3crKCjI5gkB4PIRgADwE0uWLNGCBQv08ccfa/fu3brnnnv0/vvva+DAgXaPBgA+QQACwE9YlqWRI0cqICBA+/fv16xZs7j8C8CvEIAA0IBDhw4pNjZW/fr10wcffKDAwEC7RwIAn+FDIADQgJUrV6pNmzY6cuSIvvrqK7vHAQCf4gwgAPzErl27dMMNN2jr1q167rnn5Ha79Y9//EMOh8Pu0QDAJzgDCAA/8v3332vy5MmaPn26Ro8erT/96U/avXu38vLy7B4NAHyGAASAH5kzZ45qa2v1hz/8QZLUrVs3LVq0SL/73e909OhRe4cDAB/hEjAA/J8dO3Zo1KhR2r59u4YNG+b1t1tuuUXnzp3jUjAAv0AAAgAAGIZLwAAAAIYhAAEAAAxDAAIAABiGAAQAADAMAQgAAGAYAhAAAMAwBCAAAIBhCEAAAADDEIAAAACGIQABAAAMQwACAAAYhgAEAAAwzP8CRvYyi5GFzGIAAAAASUVORK5CYII=", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.stats import geom\n", "\n", "# we can also work with the closely-related Geometric distribution\n", "\n", "# sample 10 Geometric random variables\n", "X = geom.rvs(p, size=10)\n", "print(f\"{X}\")\n", "\n", "# plot PMF\n", "fig, ax = plt.subplots(1, 1)\n", "x = np.arange(geom.ppf(0.01, p),\n", " geom.ppf(0.99, p))\n", "ax.bar(x, geom.pmf(x, p))\n", "ax.set_xlabel('X')\n", "ax.set_ylabel('PMF')\n", "ax.set_title('Geometric PMF')" ] }, { "cell_type": "markdown", "id": "716e4b3f-ee45-4625-be59-3162311b78a9", "metadata": {}, "source": [ "----\n", "# Poisson Distribution\n", "We will experiment with the distribution:\n", "$$\n", " \\mathrm{Pois}(X;\\lambda) = \\frac{\\lambda^X e^{-\\lambda}}{X!}, \\qquad \\textrm{for}\\, X = 0, 1, 2, \\ldots\n", "$$" ] }, { "cell_type": "code", "execution_count": 104, "id": "c9739fba-ae86-4a60-8314-96e440d65831", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "30c0fe9fec13428ca1328abeef7b6f59", "version_major": 2, "version_minor": 0 }, "image/png": "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kPq0Dz74QA888IASEhIUFBSk//zP//TZb1mWFi1apISEBF1zzTW6++67tXfvXnsG24cVFhbq9ttv16BBg3TttdfqoYce0p///GefGua6e6xevVq33HKL98W46enp+p//+R/vfub56igsLFRQUJByc3O9bcx191i0aJGCgoJ8tri4OO9+5rnrCIC9XFlZmXJzc1VQUKC6ujplZmYqKyvL59U4uDzffPONxo0bp9deey3g/pdeeknLly/Xa6+9pk8++URxcXG69957dfLkyR4ead9WVVWlJ554QjU1NaqsrNTZs2flcrn0zTffeGuY6+4xbNgwLV26VLt27dKuXbv0j//4j3rwwQe9PxCZ5+73ySefaO3atbrlllt82pnr7jN27Fi53W7vtnv3bu8+5rkbWOjV7rjjDisnJ8en7eabb7YWLlxo04j6F0nWW2+95f38/fffW3FxcdbSpUu9bd99950VFRVlrVmzxoYR9h/Nzc2WJKuqqsqyLOb6ahs8eLD1+uuvM89XwcmTJ62bbrrJqqystCZNmmQ99dRTlmXxd7o7Pffcc9a4ceMC7mOeuwcrgL1Ye3u7amtr5XK5fNpdLpd27txp06j6twMHDqipqclnzsPDwzVp0iTmvItaW1slSUOGDJHEXF8tHR0dKi0t1TfffKP09HTm+Sp44oknNHXqVE2ePNmnnbnuXg0NDUpISFBycrJmzJih/fv3S2Keu4vt3wSCzrW0tKijo0OxsbE+7bGxsWpqarJpVP3b+XkNNOdffvmlHUPqFyzLUl5env7+7/9eKSkpkpjr7rZ7926lp6fru+++08CBA/XWW29pzJgx3h+IzHP3KC0t1aeffqpPPvnEbx9/p7vPhAkTVFJSopEjR+ro0aNasmSJMjIytHfvXua5mxAA+4CgoCCfz5Zl+bWhezHn3evnP/+5/vSnP/l8H/d5zHX3GDVqlOrr6/X1119r8+bNmj17tqqqqrz7meeuO3TokJ566ilVVFTI4XB0Wsdcd11WVpb3z6mpqUpPT9cNN9ygjRs3auLEiZKY567iFnAvFh0dreDgYL/VvubmZr//80H3OP+UGXPeff71X/9Vb7/9trZv365hw4Z525nr7hUWFqYbb7xRaWlpKiws1Lhx4/Tqq68yz92otrZWzc3NcjqdCgkJUUhIiKqqqrRixQqFhIR455O57n4RERFK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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.widgets import Slider\n", "from scipy.stats import poisson\n", "%matplotlib ipympl\n", "\n", "# callback function to update plot\n", "def update(val):\n", "\n", " # recomput PMF\n", " lam = val\n", " pmf = poisson.pmf(x,lam)\n", "\n", " # update values one bar at a time\n", " for i, b in enumerate(bar_container):\n", " # Update the height of each bar based on the slider value\n", " b.set_height(pmf[i])\n", " \n", " # Redraw the figure to show changes\n", " fig.canvas.draw_idle()\n", " \n", "# Show initial plot with lambda=5\n", "x = np.arange(50)\n", "fig, ax = plt.subplots()\n", "bar_container = ax.bar(x, poisson.pmf(x,5), lw=2)\n", "fig.subplots_adjust(bottom=0.25)\n", "\n", "# Add slider\n", "ax_freq = fig.add_axes([0.25, 0.1, 0.65, 0.03])\n", "freq_slider = Slider(ax_freq, 'Freq', 0.1, 30.0, valinit=5)\n", "\n", "# Update plot\n", "freq_slider.on_changed(update)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "id": "b4bfceab-a9fc-4cff-bb97-c8c853bf1b5a", "metadata": {}, "source": [ "# Poisson limit of the Binomial distribution\n", "The binomial distribution converges towards the Poisson distribution as the number of trials goes to infinity while the product $np$ converges to a finite limit. Consider the distribution $\\textrm{Binomial}(X;n,p)$. As $n\\rightarrow \\infty$ and $p \\rightarrow 0$ it converges to a Poisson distribution with rate parameter $np \\overset{n\\rightarrow \\infty}{\\rightarrow} \\lambda$. Formally, we have that:\n", "$$\\textrm{Binomial}(x;,n,p) \\overset{n \\rightarrow \\infty}{\\rightarrow} \\textrm{Poisson}(X;np).$$ " ] }, { "cell_type": "code", "execution_count": 105, "id": "b65a87ed-50df-4e84-b7f5-16253bf4be96", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "16a54bcc4ded45e79dc7dbe22c66a44a", "version_major": 2, "version_minor": 0 }, "image/png": "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2nT+dduy2viZfKmzvNzhw4ctSda///1vt/bf//731tChQ1s8ZsiQIdbvf/97t7Z///vfliTr66+/tizLsgIDA60333zTrc+bb75pBQUFtVrLM888Y0liY2NjY2NjuwS2Q4cOXUw0uSR4/QrgeTabze2xZVnN2i7U/7vtHR0zNzdXOTk5rsdNTU06duyYBgwY0OZxnVVbW6uoqCgdOnRIISEh3fY8YK57CvPcc5jrnsE895yumGvLsnTixAkNGjSoi6vzHV4fAENDQ+Xv76/Kykq39qqqKoWHh7d4TERERIv9AwICNGDAgDb7tDamJAUHBys4ONit7fLLL2/vqXRaSEgIP1h6CHPdM5jnnsNc9wzmued0dq4dDkcXVuN7vP5TwEFBQUpISFBRUZFbe1FRkVJSUlo8Jjk5uVn/999/X4mJiQoMDGyzT2tjAgAAXCq8fgVQknJycpSZmanExEQlJydr2bJlKi8vV1ZWlqRzl2YPHz6slStXSpKysrK0aNEi5eTk6MEHH9S2bdv0+uuvu326d/bs2brxxhv1/PPP6+6779a7776rDz74QB999JFHzhEAAKCn+EQAzMjI0NGjRzVv3jxVVFRoxIgRWr9+vaKjoyVJFRUVbvcEjImJ0fr16/X444/rlVde0aBBg/TSSy+5bgEjSSkpKVq9erV+/etf6+mnn9Y111yjwsJCjRs3rsfP70KCg4P1zDPPNLv8jK7HXPcM5rnnMNc9g3nuOcx117BZlsmfgQYAADCP178HEAAAAF2LAAgAAGAYAiAAAIBhCIAAAACGIQD6gMWLFysmJkZ2u10JCQnasmWLp0vyaZs3b9akSZM0aNAg2Ww2vfPOO277LcvS3LlzNWjQIPXq1Us333yzdu/e7ZlifVheXp6uv/56XXbZZRo4cKAmT56szz//3K0Pc901lixZolGjRrlujJucnKy///3vrv3Mc/fIy8uTzWZTdna2q4257hpz586VzWZz2yIiIlz7mefOIwB6ucLCQmVnZ2vOnDkqLS1Vamqq0tPT3W57g445deqURo8erUWLFrW4/4UXXtD8+fO1aNEi7dixQxEREZo4caJOnDjRw5X6tk2bNmnWrFkqLi5WUVGRGhoalJaWplOnTrn6MNddY/DgwXruuee0c+dO7dy5U9///vd19913u14Qmeeut2PHDi1btkyjRo1ya2euu058fLwqKipc265du1z7mOcu4KHvIEY73XDDDVZWVpZb2/Dhw62nnnrKQxVdWiRZ69atcz1uamqyIiIirOeee87VdvbsWcvhcFivvvqqByq8dFRVVVmSrE2bNlmWxVx3t379+lmvvfYa89wNTpw4YQ0ZMsQqKiqybrrpJmv27NmWZfFvuis988wz1ujRo1vcxzx3DVYAvVhdXZ1KSkqUlpbm1p6WlqatW7d6qKpL2/79+1VZWek258HBwbrpppuY806qqamRJPXv318Sc91dGhsbtXr1ap06dUrJycnMczeYNWuW7rzzTt16661u7cx119q7d68GDRqkmJgY/fCHP9SXX34piXnuKj7xTSCmqq6uVmNjo8LDw93aw8PDVVlZ6aGqLm3n57WlOT948KAnSrokWJalnJwcfe9739OIESMkMdddbdeuXUpOTtbZs2fVt29frVu3TnFxca4XROa5a6xevVoff/yxduzY0Wwf/6a7zrhx47Ry5UoNHTpU33zzjX73u98pJSVFu3fvZp67CAHQB9hsNrfHlmU1a0PXYs671iOPPKL//Oc/LX7XNnPdNYYNG6aysjJ9++23WrNmjaZOnapNmza59jPPnXfo0CHNnj1b77//vux2e6v9mOvOS09Pd/155MiRSk5O1jXXXKMVK1YoKSlJEvPcWVwC9mKhoaHy9/dvttpXVVXV7DcfdI3znzJjzrvOo48+qr/+9a/68MMPNXjwYFc7c921goKCdO211yoxMVF5eXkaPXq0Fi5cyDx3oZKSElVVVSkhIUEBAQEKCAjQpk2b9NJLLykgIMA1n8x11+vTp49GjhypvXv38m+6ixAAvVhQUJASEhJUVFTk1l5UVKSUlBQPVXVpi4mJUUREhNuc19XVadOmTcx5B1mWpUceeURr167Vv/71L8XExLjtZ667l2VZcjqdzHMXuuWWW7Rr1y6VlZW5tsTERD3wwAMqKyvT1VdfzVx3E6fTqT179igyMpJ/013FYx8/QbusXr3aCgwMtF5//XXrs88+s7Kzs60+ffpYBw4c8HRpPuvEiRNWaWmpVVpaakmy5s+fb5WWlloHDx60LMuynnvuOcvhcFhr1661du3aZf3oRz+yIiMjrdraWg9X7lsefvhhy+FwWBs3brQqKipc2+nTp119mOuukZuba23evNnav3+/9Z///Mf61a9+Zfn5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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.widgets import Slider\n", "from scipy.stats import poisson, binom\n", "%matplotlib ipympl\n", "\n", "# callback function to update plot\n", "def update_n(val):\n", "\n", " # recompute PMF\n", " global n \n", " n = val\n", " pmf_binom = binom.pmf(x,n,p)\n", " pmf_pois = poisson.pmf(x,n*p)\n", "\n", " # update binomial values one bar at a time\n", " for i, b in enumerate(bar_container_binom):\n", " # Update the height of each bar based on the slider value\n", " b.set_height(pmf_binom[i])\n", "\n", " # update poisson values one bar at a time\n", " for i, b in enumerate(bar_container_pois):\n", " # Update the height of each bar\n", " b.set_height(pmf_pois[i]) \n", " \n", " # Redraw the figure to show changes\n", " fig.canvas.draw_idle()\n", "\n", "# callback function to update plot\n", "def update_p(val):\n", "\n", " # recompute PMF\n", " global p \n", " p = val\n", " pmf_binom = binom.pmf(x,n,p)\n", " pmf_pois = poisson.pmf(x,n*p)\n", "\n", " # update binomial values one bar at a time\n", " for i, b in enumerate(bar_container_binom):\n", " # Update the height of each bar based on the slider value\n", " b.set_height(pmf_binom[i])\n", "\n", " # update poisson values one bar at a time\n", " for i, b in enumerate(bar_container_pois):\n", " # Update the height of each bar\n", " b.set_height(pmf_pois[i]) \n", " \n", " # Redraw the figure to show changes\n", " fig.canvas.draw_idle()\n", "\n", "# initial n,p values\n", "n = 10\n", "p = 0.5\n", " \n", "# Show initial plot with lambda=5\n", "x = np.arange(50)\n", "fig, ax = plt.subplots()\n", "bar_container_binom = ax.bar(x, binom.pmf(x,n,p), lw=2, label=\"Binomial\")\n", "bar_container_pois = ax.bar(x, poisson.pmf(x,n*p), lw=2, label=\"Poisson\")\n", "ax.legend()\n", "fig.subplots_adjust(bottom=0.25)\n", "\n", "# Add slider\n", "ax_n = fig.add_axes([0.25, 0.1, 0.65, 0.03])\n", "ax_p = fig.add_axes([0.25, 0.05, 0.65, 0.03])\n", "n_slider = Slider(ax_n, 'n', 1.0, 100.0, valinit=n, valstep=1.0)\n", "p_slider = Slider(ax_p, 'p', 0.0, 1.0, valinit=p)\n", "\n", "# Update plot\n", "n_slider.on_changed(update_n)\n", "p_slider.on_changed(update_p)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "7542bc39-8b15-4d82-8bb6-5d8cffb52178", "metadata": {}, "outputs": [], "source": [] } ], "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.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }