{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Logistic regression" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "Think Bayes, Second Edition\n", "\n", "Copyright 2020 Allen B. Downey\n", "\n", "License: [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# If we're running on Colab, install empiricaldist\n", "# https://pypi.org/project/empiricaldist/\n", "\n", "import sys\n", "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Get utils.py\n", "\n", "import os\n", "\n", "if not os.path.exists('utils.py'):\n", " !wget https://github.com/AllenDowney/ThinkBayes2/raw/master/code/soln/utils.py" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generational Changes\n", "\n", "As a second example of logistic regression, we'll use data from the [General Social Survey](https://gss.norc.org/) (GSS) to describe generational changes in support for legalization of marijuana.\n", "\n", "Since 1972 the GSS has surveyed a representative sample of adults in the U.S., asking about issues like \"national spending priorities, crime and punishment, intergroup relations, and confidence in institutions\".\n", "\n", "I have selected a subset of the GSS data, resampled it to correct for stratified sampling, and made the results available in an HDF file." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "The following cell downloads the data." ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Load the data file\n", "\n", "import os\n", "\n", "datafile = 'gss_eda.hdf5'\n", "if not os.path.exists(datafile):\n", " !wget https://github.com/AllenDowney/ThinkBayes2/raw/master/data/gss_eda.hdf5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use Pandas to load the data." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(64814, 169)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss = pd.read_hdf(datafile, 'gss')\n", "gss.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `DataFrame` with one row for each respondent and one column for each variable.\n", "\n", "The primary variable we'll explore is `grass`, which encodes each respondent's answer to this question ([details here](https://gssdataexplorer.norc.org/variables/285/vshow)):\n", "\n", "> \"Do you think the use of marijuana should be made legal or not?\"\n", "\n", "This question was asked during most years of the survey starting in 1973, so it provides a useful view of changes in attitudes over almost 50 years.\n", "\n", "Here are is the distributions of responses:" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NaN 27268\n", "2.0 25662\n", "1.0 11884\n", "Name: grass, dtype: int64" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['grass'].value_counts(dropna=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The value 1.0 represents \"yes\"; 2.0 represents \"no\"; `NaN` represents peope who were not asked the question and a small number of respondents who did not respond or said \"I don't know\".\n", "\n", "To explore generational changes in the responses, we will look at the level of support for legalization as a function of birth year, which is encoded in a variable called `cohort`. Here's a summary of this variable." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 64586.000000\n", "mean 1948.846069\n", "std 21.262659\n", "min 1883.000000\n", "25% 1934.000000\n", "50% 1951.000000\n", "75% 1964.000000\n", "max 2000.000000\n", "Name: cohort, dtype: float64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['cohort'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The oldest GSS respondent was born in 1883; the youngest was born in 2000.\n", "\n", "Before we analyze this data, I will select the subset of respondents with valid data for `grass` and `cohort`:" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(37427, 169)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid = gss.dropna(subset=['grass', 'cohort']).copy()\n", "valid.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are about 37,000 respondents with the data we need.\n", "\n", "I'll recode the values of `grass` so `1` means yes and `0` means no." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0 25572\n", "1.0 11855\n", "Name: y, dtype: int64" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid['y'] = valid['grass'].replace(2, 0)\n", "valid['y'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, for this problem, I'm going to represent the data in a different format. Rather than one row for each respondent, I am going to group the respondents by birth year and record the number of respondents in each group, `count`, and the number who support legalization, `sum`." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sumcount
cohort
1884.00.01
1886.00.03
1887.01.09
1888.00.03
1889.01.014
.........
1996.040.047
1997.028.041
1998.011.017
1999.013.017
2000.09.013
\n", "

116 rows × 2 columns

\n", "
" ], "text/plain": [ " sum count\n", "cohort \n", "1884.0 0.0 1\n", "1886.0 0.0 3\n", "1887.0 1.0 9\n", "1888.0 0.0 3\n", "1889.0 1.0 14\n", "... ... ...\n", "1996.0 40.0 47\n", "1997.0 28.0 41\n", "1998.0 11.0 17\n", "1999.0 13.0 17\n", "2000.0 9.0 13\n", "\n", "[116 rows x 2 columns]" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = valid.groupby('cohort')['y'].agg(['sum', 'count'])\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the results look like:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "def plot_data(data):\n", " \"\"\"Plot the fraction of yes responses.\n", " \n", " data: DataFrame with columns `sum` and `count`\n", " \"\"\"\n", " fraction = data['sum'] / data['count']\n", " plt.plot(data.index, fraction, 'o', \n", " label='GSS data', color='C0', alpha=0.4)\n", " \n", " decorate(xlabel='Year of birth',\n", " ylabel='Percent in favor',\n", " title='Support for legal marijuana vs cohort')" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_data(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is a strong relationship between birth year and support for legalization. People born before 1920 are the least likely to say \"yes\"; people born after 1990 are the most likely. \n", "\n", "There are substantial departures from the long-term trend for people born in the 1950s and late 1960s. If you want to conjecture about the causes, it might help to think about what was happening when each group turned 18. People born in 1950 turned 18 during [the counterculture of the 1960s](https://en.wikipedia.org/wiki/Counterculture_of_the_1960s). People born in the late 1960s turned 18 during the \"[Just Say No](https://en.wikipedia.org/wiki/Just_Say_No)\" era of the War on Drugs and the peak in the AIDS epidemic in the U.S." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Point estimates\n", "\n", "I'll use StatsModels again to generate point estimates for the slope and intercept of a logistic model.\n", "\n", "As we did with the previous problem, I'll center the values of the explanatory variable so the mean is 0." ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "offset = valid['cohort'].mean()\n", "valid['x'] = valid['cohort'] - offset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results from StatsModels." ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Intercept -0.849094\n", "x 0.031691\n", "dtype: float64" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'y ~ x'\n", "results = smf.logit(formula, data=valid).fit(disp=0)\n", "results.params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To visualize the results, I'll use these parameters to estimate the probability of support in each cohort." ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "inter = results.params['Intercept']\n", "slope = results.params['x']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll shift the birth years in `data` by `offset`." ] }, { "cell_type": "code", "execution_count": 73, "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", "
sumcountx
cohort
1884.00.01-64.724243
1886.00.03-62.724243
1887.01.09-61.724243
1888.00.03-60.724243
1889.01.014-59.724243
\n", "
" ], "text/plain": [ " sum count x\n", "cohort \n", "1884.0 0.0 1 -64.724243\n", "1886.0 0.0 3 -62.724243\n", "1887.0 1.0 9 -61.724243\n", "1888.0 0.0 3 -60.724243\n", "1889.0 1.0 14 -59.724243" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['x'] = data.index - offset\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And use `expit` to compute the probabilities." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "cohort\n", "1884.0 0.052141\n", "1886.0 0.055364\n", "1887.0 0.057045\n", "1888.0 0.058774\n", "1889.0 0.060552\n", "Name: x, dtype: float64" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "probs = expit(inter + slope * data['x'])\n", "probs.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the model looks like with the data." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABQSUlEQVR4nO3deXyb1ZXw8d+RZMubvCRe4i2bs68OGErYEgKUpVAKLaWFAoGZtky36TKdLtOZ0uk789JO35Z22ikwXaBAgZZSCpRCaRZWA1nJvji7YyeO41W2ZVvSff94HimyI9vyolh2zvfz8SfSs+leWdHxvc+594oxBqWUUirROEa7AEoppVQ0GqCUUkolJA1QSimlEpIGKKWUUglJA5RSSqmEpAFKKaVUQtIApcYEEUkVkedFpFlEfj8C11suItUjUbYBXmeliLwR79fp5/W3i8hy+/E3ReQXo1WWRCQiB0XkitEuh4pOA9Q4JiIXi8hb9pd6g4i8KSLnjXa5eosxWHwEKAAmGmNuPgPFGheMMfONMWvtx/9pjPn7US7SuCYiRkRmjHY5xgvXaBdAxYeIZAIvAP8A/A5IBi4BOkezXL2JSKyfwSnAHmOMfyivMZTzxrKzsc6jSd/v+NAW1Pg1C8AY84QxJmCM6TDG/NUYswVARO4VkcdCB4vIVPuvP5f9fK2I/F8Reddugf1JRCb0OvZTIlIjIrUi8pWIa7lF5H57X4392G3vWy4i1SLyNRE5BjwB/AUoEhGv/VMUWRER+Q7wb8At9v6/ExGHiHxLRA6JSJ2I/EZEsnqV7+9E5DCweqA3S0SKROQPInJCRA6IyBci9qWKyCMi0igiO0XknyNbfCLydRHZJyKtIrJDRG6M5RcUUc67ROSIff17ROQ8EdkiIk0i8tOI48tEZLWInBSRehF5XESyI/YftN/XLUCbiLgiu7Aif+fRWq29jj1fRCrtMtSKyE9FJDniWGOXda9d7p+JiMRSzl6v+YCI/KDXtj+JyJftx18TkaP2e7tbRC7v4zqpIvL/7M9Ds4i8ISKp9r4PitXV2WR/ruf2Or3cfr+bReQpEUmJuO4nRaRKrB6I5yI/m/Z78FkR2QvsFZHX7F3v2Z/TW6KVVQ2CMUZ/xuEPkAmcBB4BrgFyeu2/F3gs4vlUwAAu+/la4CiwAEgH/hA6PuLYJ+x9C4ETwBX2/n8H3gbygTzgLeC79r7lgB/4HuAGUu1t1QPUp3d57waqgOlABvAM8Giv8v3GLl9qlOuFXxPrD7UNWEEw2b7mfuAqe/99wKtADlACbIksL3AzUGRf5xagDSi0960E3uijTqFyPgCkAO8HfMCz9ntXDNQBy+zjZwBX2u9bHvAacH/E9Q4Cm4HSUJ3tbVf0fg+jvee9jj0XuACrl2UqsBP4YsSxBquFng1Mtn//V8dSzl6veSlwBBD7eQ7QYb+fs+19RRHvV1kf1/kZ1me2GHACF9qvP8v+fVwJJAH/jPW5SY6o87v2602w63mPvW8FUA+cY1/rv4HXer0Hr9jnpUZsmzHa///Hy8+oF0B/4vjLhbnAw0A1VlB4Diiw94W/rOznUzk9QN0XsX8e0GX/5w8dOydi//eBX9qP9wHXRuy7CjhoP15uXyclYv9pX5ZR6tK7vKuAz0Q8nw10c+oL1QDT+7le+DWB9wGHe+3/BvBr+3E4WNnP/76/8mIFiRvsxysZOEAVR2w7CdwS8fwPRASGXud/CNgU8fwgcHevYw4yhAAV5bW+CPwx4rkBLo54/jvg67GUs9c+AQ4Dl9rPPwmsth/PwArQVwBJ/bzfDqygtjjKvn8Fftfr2KPA8og6f6LX5/gB+/Evge9H7MuwP2NTI96DFb1eTwPUCP5oF984ZozZaYxZaYwpwWoJFQH3D+ISRyIeH8L6CzS3n/2h7o8i+3m0fQAnjDG+QZQjmmiv4cJKpIhWvv5MwepibAr9AN+MuFZRr2v1uK6I3CEimyPOXUDP92kgxyMed0R5nmG/Tr6IPGl3ebUAj0V5nVjr3C8RmSUiL4jIMfu1/jPKax2LeNw+yHICYKxv9SeBj9ubbgUet/dVYQXGe4E6+5pFUS6Ti9UC3RdlX4/PiTEmiPUeFQ9UjyjnerH+gIg8d0TebxWdBqizhDFmF1ZraoG9qQ1IizhkUpTTSiMeT8b667G+n/019uMarC/9aPvA+iuTfp7HItpr+On55R7rdY8AB4wx2RE/HmPMtfb+WqyuvZBwvUVkCvC/wOewMgyzgW1YLYOR9n+x6rTIGJMJfCLK68Ra5x6/fxFxYnXHhfwc2AXMtF/rm1FeazjljPQE8BH7vXwfVqsRAGPMb40xF2P9rg1W13Bv9Vhdo2VR9vX4nNj3yUqxWlED6X1uOjCx17m6HEQcaYAap0Rkjoh8RURK7OelWH+lvm0fshm4VEQmi5Vc8I0ol/mEiMwTkTSs+0pPG2MCEfv/VUTSRGQ+cBfwlL39CeBbIpInIrlY93Yeo2/HgYl2OWL1BPAlEZkmIhlYf+E/ZYaWSfUu0GLfkE8VEaeILJBTKfm/A74hIjkiUowVjELSsb6kTgCIyF2c+iNgpHkAL9Bkl+Orw7jWHiBFRD4gIknAt7Dus0S+VgvgFZE5WNmgcSmnMWYT1vv3C+BlY0wTgIjMFpEVYiXY+LBak4Eo5weBXwE/FCvZxSkiS+3zfgd8QEQut+v5FaxM1rdiqMdvgbtEpNy+1n8C7xhjDvZzznGse5hqBGiAGr9asf4afUdE2rAC0zas/6AYY17BCihbsBIEXohyjUexWl3HsLpQvtBr/6tYN5xXAT8wxvzV3v5/gPX2tbcCG+1tUdmtuyeA/XY3WbRunN5+ZZfvNeAA1hfY52M4L9rrB4DrgXL7WvVYX5ahgPnvWPfxDgB/A57GTtc3xuwA/h9QifXltBB4cyjliMF3sG7YNwN/xkoMGRJjTDPwGax6HsVqUUVm9f0TVndbK1YL8ane1xjhcj6Bda/ptxHb3FgJKvVYn8F8rJZcNP+E9VlbBzRgtbQcxpjdWC24/7avcz1wvTGma6ACGWNWYd3D+gNWK7oM+NgAp90LPGJ/jj860Guo/oUyZ5TqQUTWYt1QP23mARGZivVlnTTEFsuYJiL/AHzMGLNstMsyGCLy70CJMebu0S6LUrHQFpRSAxCRQhG5SKyxV7OxWqF/HO1yDYZ972Ue1h8WSo0JOpOEUgNLBh4EpgFNWFln/zOaBRqCjVjdkp8b6EClEoV28SmllEpI2sWnlFIqIY25Lr7c3FwzderU0S6GUkqpEbJhw4Z6Y0xe7+1jLkBNnTqV9evXj3YxlFJKjRARORRtu3bxKaWUSkgaoJRSSiUkDVBKKaUS0pi7BxVNd3c31dXV+HzDnSBbxVtKSgolJSUkJSWNdlGUUgluXASo6upqPB4PU6dOxRowrxKRMYaTJ09SXV3NtGnTRrs4SqkENy4ClM/n0+A0BogIEydO5MSJE6NdFKVUL1XVDazadIja+lYKcz1cvmQKM0omjGqZxs09KA1OY4P+npRKPFXVDTz80ha87Z0U53nwtnfy8EtbqKpuGNVyjZsApZRSamhWbTpEjieF7IwUHCJkZ6SQ40lh1aaow5POGA1QIyQjI2Pggwawfv16vvCF3ksunXLw4EF++9vfxnx8PK1cuZKnn3562McopUZfbX0rmenuHtsy090cO+kdpRJZxsU9qPGioqKCioqKPveHAtStt94a0/FKKRWLwlwPLW2dZGekhLe1tHUyaeLw//AeDm1BxdHmzZu54IILWLRoETfeeCONjY0ArFu3jkWLFrF06VK++tWvsmCBtUL42rVrue666wB49dVXKS8vp7y8nCVLltDa2srXv/51Xn/9dcrLy/nRj37U43iv18tdd93FwoULWbRoEX/4wx9OK8/UqVP55je/ydKlS6moqGDjxo1cddVVlJWV8cADDwBWpl2oTAsXLuSpp54Kb//c5z7HvHnz+MAHPkBdXV34uhs2bGDZsmWce+65XHXVVdTW1sbvTVVKjbjLl0yhsdVHk9dH0BiavD4aW31cvmTKqJZr3LWgOn/z6bhd233Hg4M6/o477uC///u/WbZsGf/2b//Gd77zHe6//37uuusuHnroIS688EK+/vWvRz33Bz/4AT/72c+46KKL8Hq9pKSkcN999/GDH/yAF16wVmdfu3Zt+Pjvfve7ZGVlsXXrVoBwMOyttLSUyspKvvSlL7Fy5UrefPNNfD4f8+fP55577uGZZ55h8+bNvPfee9TX13Peeedx6aWXUllZye7du9m6dSvHjx9n3rx53H333XR3d/P5z3+eP/3pT+Tl5fHUU0/xL//yL/zqV78a1HullBo9M0omsPLqRazadIiaei+TJmZww0WzRj2Lb9wFqETR3NxMU1MTy5ZZq4Lfeeed3HzzzTQ1NdHa2sqFF14IwK233hoOOJEuuugivvzlL3Pbbbdx0003UVJS0u/r/e1vf+PJJ58MP8/JyYl63Ac/+EEAFi5ciNfrxePx4PF4SElJoampiTfeeIOPf/zjOJ1OCgoKWLZsGevWreO1114Lby8qKmLFihUA7N69m23btnHllVcCEAgEKCwsHOS7pZQabTNKJox6QOpNA9QZFusCkV//+tf5wAc+wIsvvsgFF1zA3/72twGvG0sKt9tt3Qh1OBzhx6Hnfr+/3/JFu74xhvnz51NZWTngayul1GCMuwA12G64eMnKyiInJ4fXX3+dSy65hEcffZRly5aRk5ODx+Ph7bff5oILLujR6om0b98+Fi5cyMKFC6msrGTXrl2UlpbS2toa9fj3v//9/PSnP+X+++8HrC6+vlpR/bn00kt58MEHufPOO2loaOC1117jv/7rv/D7/Tz44IPccccd1NXVsWbNGm699VZmz57NiRMnqKysZOnSpXR3d7Nnzx7mz58/6NdWSqlI4y5AjZb29vYe3XBf/vKXeeSRR7jnnntob29n+vTp/PrXvwbgl7/8JZ/85CdJT09n+fLlZGVlnXa9+++/nzVr1uB0Opk3bx7XXHMNDocDl8vF4sWLWblyJUuWLAkf/61vfYvPfvazLFiwAKfTybe//W1uuummQdfjxhtvpLKyksWLFyMifP/732fSpEnceOONrF69moULFzJr1qxw12VycjJPP/00X/jCF2hubsbv9/PFL35RA5RSatgk1i6nRFFRUWF6L1i4c+dO5s6dO0olGjyv1xseN3XfffdRW1vLj3/841Eu1Zkz1n5fSqn4EpENxpjTxszENc1cRK4Wkd0iUiUip6WriUiWiDwvIu+JyHYRuSue5UkUf/7znykvL2fBggW8/vrrfOtb3xrtIimlVMKJWxefiDiBnwFXAtXAOhF5zhizI+KwzwI7jDHXi0gesFtEHjfGdMWrXInglltu4ZZbbhntYiilVEKLZwvqfKDKGLPfDjhPAjf0OsYAHrHSwzKABsAfxzIppZQaI+IZoIqBIxHPq+1tkX4KzAVqgK3APxpjgr0vJCKfEpH1IrJel2pQSqmzQzwDVLRBOb0zMq4CNgNFQDnwUxHJPO0kYx4yxlQYYyry8vJGupxKKaUSUDwDVDVQGvG8BKulFOku4BljqQIOAHPiWCallFJjRDwD1DpgpohME5Fk4GPAc72OOQxcDiAiBcBsYH8cyxQ3x48f59Zbb2X69Omce+65LF26lD/+8Y+ANUbqtttuY+HChSxYsICLL74Yr9eaxv4//uM/mD9/PosWLaK8vJx33nmn39c5ePBgeHLZ/o6JXJZDKaXGorhl8Rlj/CLyOeBlwAn8yhizXUTusfc/AHwXeFhEtmJ1CX7NGFMfrzKFjPTSxsYYPvShD3HnnXeGA8OhQ4d47jkrHv/4xz+moKAgPJHr7t27SUpKorKykhdeeIGNGzfidrupr6+nq2v4CYy9l+VQSqmxKK4zSRhjXgRe7LXtgYjHNcD741mG3kJLG+d4UijOs9ZAefilLay8etGQg9Tq1atJTk7mnnvuCW+bMmUKn//85wGora1lypRT09bPnj07vD03Nzc8J15ubm7U62/YsIG7776btLQ0Lr744vD2gwcPcvvtt9PW1gbAT3/60/AM6Tt37qS8vJw777yTG2+8MepxSimVyM669aDisbTx9u3bOeecc/rcf/fdd/O9732PpUuX8q1vfYu9e/cC1vx5R44cYdasWXzmM5/h1VdfjXr+XXfdxU9+8pPTJmTNz8/nlVdeYePGjTz11FPh1XXvu+8+LrnkEjZv3syXvvSlPo9TSqnBqKpu4MHnN3Hvr1/jwec3UVXdENfXO+sC1JlY2vizn/0sixcv5rzzzgOgvLyc/fv389WvfpWGhgbOO+88du7cSUZGBhs2bOChhx4iLy+PW265hYcffrjHtXov23H77beH93V3d/PJT36ShQsXcvPNN7Njxw6iifU4pZTqS6j3ydveSXGeB2+71fsUzyB11k0WG4+ljefPn99jBduf/exn1NfX91iOPSMjg5tuuombbroJh8PBiy++yNy5c3E6nSxfvpzly5ezcOFCHnnkEVauXBk+r79lNH70ox9RUFDAe++9RzAYJCUlZVjHKaVUXyJ7n4Dwv6s2HYrbOlJnXQsqHksbr1ixAp/Px89//vPwtvb29vDjN998M7zCbVdXFzt27GDKlCns3r073N0H1hLxkfeqALKzs8nKyuKNN94A4PHHHw/va25uprCwEIfDwaOPPkogEADA4/H0WJajr+OUUipWZ6L3qbezLkCFljbOSHNTU+8lI809rAQJsBbye/bZZ3n11VeZNm0a559/PnfeeSff+973AGttp2XLlrFw4UKWLFlCRUUFH/7wh/F6vdx5553MmzePRYsWsWPHDu69997Trv/rX/+az372syxdupTU1NTw9s985jM88sgjXHDBBezZs4f09HQAFi1aFF6W40c/+lGfxymlVKxCvU+Rhtv7NBBdbkOdcfr7UmrsicyAzkx309LWSWOrb9h/4MMoLbehlFJqfIhH79NAzrokCaWUUkMzo2RCXANSb+MmQPWX7aYSx1jrUlZqrBrpGXNGw7gIUCkpKZw8eZKJEydqkEpgxhhOnjypae5KxVnvGXP21zTyxTf2UFaUzbzp+WMmWI2LAFVSUkJ1dTW6VlTiS0lJoaSkZLSLodS4Fjlmqa6xje0H6nE6hca2zvAA23jfPxoJ4yJA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "probs.plot(label='Logistic model', color='C1')\n", "\n", "plot_data(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With these parameters, the model captures the long term trend in the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing likelihoods\n", "\n", "Before we do the Bayesian update, let's compute the probability of the data with the estimated parameters.\n", "\n", "From the data, we know how many people there are in each group and how many of them support legalization. From the model, we have an estimate for the probability of support in each group.\n", "\n", "So we can use the binomial distribution to compute the probability of the data given the estimated probabilities." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(116,)" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import binom\n", "\n", "ks = data['sum']\n", "ns = data['count']\n", "likes = binom.pmf(ks, ns, probs)\n", "likes.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each group `likes` contains the probability of the outcome, `k`, given the group size, `n`, and the estimated probability, `p`.\n", "\n", "The likelihood of the data is the product of these likelihoods:" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.5665006815705933e-209" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likes.prod()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This likelihood is very small, for two reasons:\n", "\n", "* The dataset is large, which means that there are many possible outcomes, so the probability of *any* particular outcome is small.\n", "\n", "* The data deviate substantially from the model, so the probability of *this* particular outcome is small.\n", "\n", "In theory, it's not a problem if the likelihood of the data is small. We might not get a model that fits the data perfectly, but we'll get the parameters that come as close as possible.\n", "\n", "However, in practice small likelihoods can be problematic. With floating-point numbers, the smallest positive number we can represent is about `1e-1021`." ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1021" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sys\n", "sys.float_info.min_exp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Any number smaller than that \"underflows\"; that is, it gets rounded down to 0. When that happens, we lose the ability to distinguish between parameters that make the model fit the data or not. In the worst case, if all likelihoods underflow, all probabilities in the posterior distribution would be 0.\n", "\n", "In this example, the likelihoods are big enough that we can still do a Bayesian update, so we'll do that next.\n", "Then I will demonstrate a trick we can use to avoid underflow: computing likelihoods under a log transformation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The update\n", "\n", "I'll use uniform priors for the parameters, with locations centered around the point estimates." ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "qs = np.linspace(-0.95, -0.75, num=51)\n", "prior_inter = make_uniform(qs, 'Intercept')" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "qs = np.linspace(0.025, 0.035, num=51)\n", "prior_slope = make_uniform(qs, 'Slope')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll make a joint prior." ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Intercept-0.950-0.946-0.942-0.938-0.934-0.930-0.926-0.922-0.918-0.914...-0.786-0.782-0.778-0.774-0.770-0.766-0.762-0.758-0.754-0.750
Slope
0.02500.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384...0.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384
0.02520.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384...0.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384
0.02540.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384...0.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384
0.02560.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384...0.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384
0.02580.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384...0.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.0003840.000384
\n", "

5 rows × 51 columns

\n", "
" ], "text/plain": [ "Intercept -0.950 -0.946 -0.942 -0.938 -0.934 -0.930 \\\n", "Slope \n", "0.0250 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0252 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0254 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0256 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0258 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "\n", "Intercept -0.926 -0.922 -0.918 -0.914 ... -0.786 -0.782 \\\n", "Slope ... \n", "0.0250 0.000384 0.000384 0.000384 0.000384 ... 0.000384 0.000384 \n", "0.0252 0.000384 0.000384 0.000384 0.000384 ... 0.000384 0.000384 \n", "0.0254 0.000384 0.000384 0.000384 0.000384 ... 0.000384 0.000384 \n", "0.0256 0.000384 0.000384 0.000384 0.000384 ... 0.000384 0.000384 \n", "0.0258 0.000384 0.000384 0.000384 0.000384 ... 0.000384 0.000384 \n", "\n", "Intercept -0.778 -0.774 -0.770 -0.766 -0.762 -0.758 \\\n", "Slope \n", "0.0250 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0252 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0254 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0256 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "0.0258 0.000384 0.000384 0.000384 0.000384 0.000384 0.000384 \n", "\n", "Intercept -0.754 -0.750 \n", "Slope \n", "0.0250 0.000384 0.000384 \n", "0.0252 0.000384 0.000384 \n", "0.0254 0.000384 0.000384 \n", "0.0256 0.000384 0.000384 \n", "0.0258 0.000384 0.000384 \n", "\n", "[5 rows x 51 columns]" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint = make_joint(prior_inter, prior_slope)\n", "joint.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And stack it into a `Pmf` with a two-column index." ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Slope Intercept\n", "0.025 -0.950 0.000384\n", " -0.946 0.000384\n", " -0.942 0.000384\n", " -0.938 0.000384\n", " -0.934 0.000384\n", "dtype: float64" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint_pmf = Pmf(joint.stack())\n", "joint_pmf.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update, using the binomial distribution to compute the likelihood of the data in each group." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [], "source": [ "likelihood = joint_pmf.copy()\n", "\n", "xs = data['x']\n", "ks = data['sum']\n", "ns = data['count']\n", "\n", "for slope, inter in joint_pmf.index:\n", " ps = expit(inter + slope * xs)\n", " likes = binom.pmf(ks, ns, ps)\n", " likelihood[slope, inter] = likes.prod()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, the likelihoods are small." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8.656375286337876e-208" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likelihood.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But we can do the update in the usual way." ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "3.328095073563197e-211" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_pmf = joint_pmf * likelihood\n", "posterior_pmf.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And there are enough non-zero elements to get a useful posterior distribution.\n", "\n", "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "joint_posterior = posterior_pmf.unstack()\n", "\n", "plot_contour(joint_posterior)\n", "decorate(title='Joint posterior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can confirm that the parameters with maximum posterior probability are consistent with the point estimates." ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.0318, -0.85)\n", "[ 0.0316906 -0.84909407]\n" ] } ], "source": [ "print(posterior_pmf.max_prob())\n", "print(results.params.values[::-1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the means of the marginal distributions." ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.8491556076374563, 0.03169425569628929)" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "marginal_inter = marginal(joint_posterior, 0)\n", "marginal_slope = marginal(joint_posterior, 1)\n", "\n", "marginal_inter.mean(), marginal_slope.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the intercept indicates the log odds of the hypothesis at `x=0`.\n", "To make the distribution of intercepts easier to interpret, I'll use `expit` to transform the values to probabilities." ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "marginal_probs = transform(marginal_inter, expit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "marginal_probs.plot(color='C4')\n", "decorate(xlabel='Probability at x=0',\n", " ylabel='PDF',\n", " title='Posterior distribution of intercept in terms of probability')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean of this distribution is about 24%, which is the predicted probability of supporting legalization for someone born around 1949." ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.29961602953948796, 1948.7242)" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "marginal_probs.mean(), offset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimated slope is the log of the likelihood ratio for each additional year of birth. To interpret slopes as likelihood ratios, we can use `np.exp` to transform the values in the posterior distribution." ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "marginal_lr = transform(marginal_inter, np.exp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "marginal_lr.plot(color='C2')\n", "\n", "decorate(xlabel='Likelihood ratio of each additional year',\n", " ylabel='PDF',\n", " title='Posterior distribution of slope in terms of likelihood ratio')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean of this distribution is about 0.43, which indicates that each additional year is evidence that the respondent will say \"yes\", with a a likelihood ratio (or Bayes factor) of 0.43." ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.42780656870625144" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "marginal_lr.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Later we will use the joint posterior distribution to generate predictions, but first I'll show how to compute likelihoods under a log transform." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Log Likelihood\n", "\n", "Because of the problem of underflow, many likelihood computations are done under a log transform. That's why the distributions in SciPy, including `binom`, provide functions to compute logarithms of PMFs and PDFs.\n", "\n", "Here's a loop that uses `binom.logpmf` to compute the log likelihood of the data for each pair of parameters in `joint_pmf`: " ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "log_likelihood = joint_pmf.copy()\n", "\n", "for slope, inter in joint_pmf.index:\n", " ps = expit(inter + slope * xs)\n", " log_likes = binom.logpmf(ks, ns, ps)\n", " log_likelihood[slope, inter] = log_likes.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`log_likes` is an array that contains the logarithms of the binomial PMFs for each group.\n", "The sum of these logarithms is the log of their product, which is the log-likelihood of the data.\n", "\n", "Since the likelihoods are small, their logarithms are negative. The smallest (most negative) is about -610; the largest (least negative) is about -480." ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-607.8199099184933, -480.8081879180253)" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_likelihood.min(), log_likelihood.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So the log likelihoods are comfortably with the range we can represent with floating-point numbers.\n", "\n", "However, before we can do the update, we have to convert the logarithms back to a linear scale. To do that while minimizing underflow, I am going to shift the logs up toward zero.\n", "\n", "Adding a constant to the `log_likelihood` is the same as multiplying a constant by `likelihood`. \n", "We can do that without affecting the results because we have to normalize the posterior probabilities, so the multiplicative constant gets normalized away." ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "shifted = log_likelihood - log_likelihood.max()\n", "likelihood2 = np.exp(shifted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After subtracting away the largest element in `log_likelihood`, the range of values in the result is from -127 to 0." ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-127.01172200046801, 0.0)" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shifted.min(), shifted.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So the range of likelihoods is from near 0 to 1." ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6.910508383385572e-56, 1.0)" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likelihood2.min(), likelihood2.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use them as likelihoods in a Bayesian update." ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.021604219991658798" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_pmf2 = joint_pmf * likelihood2\n", "posterior_pmf2.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "To confirm that we get the same results using likelihoods or log-likelihoods, I'll compute the mean of the marginal posterior distributions:" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.8491556076374563 0.031694255696289274\n" ] } ], "source": [ "joint_posterior2 = posterior_pmf2.unstack()\n", "\n", "marginal2_inter = marginal(joint_posterior2, 0)\n", "marginal2_slope = marginal(joint_posterior2, 1)\n", "\n", "print(marginal2_inter.mean(), marginal2_slope.mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare them to what we got using (non-log) likelihoods." ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.8491556076374563 0.03169425569628929\n" ] } ], "source": [ "print(marginal_inter.mean(), marginal_slope.mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are the same except for small differences due to floating-point approximation.\n", "\n", "In this example, we can compute the posterior distribution either way, using likelihoods or log likelihoods.\n", "But if there were more data, the likelihoods would underflow and it would be necessary to use log likelihoods." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Making predictions\n", "\n", "As we did with the previous example, we can use the posterior distribution of the parameters to generate predictions, which we can use to see whether the model fits the data and to extrapolate beyond the data.\n", "\n", "I'll start with a sample from the posterior distribution." ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(42)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "sample = posterior_pmf.sample(101)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a range of `xs` that extends 20 years past the observed data." ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [], "source": [ "xs = np.arange(1880, 2021) - offset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the sampled parameters to predict probabilities for each group." ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(101, 141)" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps = np.empty((len(sample), len(xs)))\n", "\n", "for i, (slope, inter) in enumerate(sample):\n", " ps[i] = expit(inter + slope * xs)\n", " \n", "ps.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that only accounts for uncertainty about the parameters.\n", "\n", "We also have to account for variability in the size of the groups. Here's the distribution of group size, dropping the groups smaller than 20." ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 104.000000\n", "mean 358.567308\n", "std 232.895275\n", "min 29.000000\n", "25% 162.500000\n", "50% 336.500000\n", "75% 492.750000\n", "max 846.000000\n", "Name: count, dtype: float64" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "not_small = (data['count'] >= 20)\n", "counts = data.loc[not_small, 'count']\n", "counts.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To simulate variation in group size, I'll use `np.random.choice` to resample the group sizes; that is, I'll draw from `counts` a sample with the same length as `xs`, sampling with replacement." ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([718, 330, 842, 31, 31, 197, 782, 260, 78, 155])" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ns = np.random.choice(counts, len(xs), replace=True)\n", "ns[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even if we know how many people are in each group and their probability of saying \"yes\", there is still uncertainty in the outcome. We can use the binomial distribution to simulate this (final) source of uncertainty.\n", "\n", "Putting it all together, the following loop combines these sources of uncertainty to generate predictive distributions for each group." ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(101, 141)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred = np.empty((len(sample), len(xs)))\n", "\n", "for i, (slope, inter) in enumerate(sample):\n", " ps = expit(inter + slope * xs)\n", " ns = np.random.choice(counts, len(xs), replace=True)\n", " ks = binom(ns, ps).rvs(len(xs))\n", " pred[i] = ks / ns\n", " \n", "pred.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an array with one row for each pair of parameters in the sample and one column for each value in `xs`.\n", "\n", "Now we can use `np.percentile` to compute percentiles in each column." ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(141,)" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low, median, high = np.percentile(pred, [5, 50, 95], axis=0)\n", "median.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And use them to plot a 90% credible interval for the predictions." ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "scrolled": true, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.fill_between(xs+offset, low, high, \n", " color='C1', alpha=0.2)\n", "\n", "plt.plot(xs+offset, median, label='Logistic model', \n", " color='C1')\n", "\n", "plot_data(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model fits the long-term trend of the data, with most data points falling within the 90% credible interval despite the apparent deviations from the trend.\n", "\n", "The model predicts that people born between 2000 and 2020 will be more likely to support legalizing marijuana (when they are old enough to be respondents in the General Social Survey)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** The GSS dataset we used to explore generational changes contains more than 100 other variables related to the attitudes and beliefs of the respondents. You can [read about these variables here](https://gssdataexplorer.norc.org/projects/52787). Choose one and run an analysis similar to what we did with `grass`.\n", "\n", "How well does the logistic model describe the long-term trend for the variable you chose?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 1 }