{ "metadata": { "name": "", "signature": "sha256:fcc4271853bd8d34b562760802935fec3ce16846ad3fe2db20a2a050637693f7" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Relating Age to Name\n", "\n", "This notebook is inspired by [Nate Silver's](https://twitter.com/FiveThirtyEight) recent article on [How to Tell Someone's Age When All you Know is Her Name](http://fivethirtyeight.com/features/how-to-tell-someones-age-when-all-you-know-is-her-name/). It allows one to (almost) replicate the analysis done in the article, and provides more extensive features. I have done similar work using R, and you can find it [here](https://github.com/ramnathv/agebyname)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data\n", "\n", "We will uses four primary datasets.\n", "\n", "1. [Babynames](http://www.ssa.gov/oact/babynames/names.zip)\n", "2. [Babynames by State](http://www.ssa.gov/oact/babynames/state/namesbystate.zip)\n", "3. [Cohort Life Tables](http://www.ssa.gov/oact/NOTES/as120/LifeTables_Tbl_7.html)\n", "4. [Census Live Births Data](http://www.census.gov/statab/hist/02HS0013.xls)\n", "\n", "We will download each of these datasets and process them to get them analysis ready." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import re\n", "import urllib\n", "from zipfile import ZipFile\n", "from path import path\n", "import numpy as np\n", "import pandas as pd\n", "from scipy.interpolate import interp1d\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from ggplot import *" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/Users/ramnathv/anaconda/lib/python2.7/site-packages/pytz/__init__.py:29: UserWarning: Module argparse was already imported from /Users/ramnathv/anaconda/lib/python2.7/argparse.pyc, but /Users/ramnathv/anaconda/lib/python2.7/site-packages is being added to sys.path\n", " from pkg_resources import resource_stream\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Baby Names\n", "\n", "The first dataset we will be downloading is the [bnames](http://www.ssa.gov/oact/babynames/names.zip) dataset provided by SSA" ] }, { "cell_type": "code", "collapsed": false, "input": [ "urllib.urlretrieve(\"http://www.ssa.gov/oact/babynames/names.zip\", \"names.zip\")\n", "zf = ZipFile(\"names.zip\")\n", "def read_names(f):\n", " data = pd.read_csv(zf.open(f), header = None, names = ['name', 'sex', 'n'])\n", " data['year'] = int(re.findall(r'\\d+', f)[0])\n", " return data\n", " \n", "bnames = pd.concat([read_names(f) for f in zf.namelist() if f.endswith('.txt')])\n", "bnames.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
namesexnyear
0 Mary F 9217 1884
1 Anna F 3860 1884
2 Emma F 2587 1884
3 Elizabeth F 2549 1884
4 Minnie F 2243 1884
\n", "

5 rows \u00d7 4 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ " name sex n year\n", "0 Mary F 9217 1884\n", "1 Anna F 3860 1884\n", "2 Emma F 2587 1884\n", "3 Elizabeth F 2549 1884\n", "4 Minnie F 2243 1884\n", "\n", "[5 rows x 4 columns]" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Baby Names by State\n", "\n", "The second dataset we will be downloading is the [bnames_by_state](http://www.ssa.gov/oact/babynames/namesbystate.zip) dataset, also provided by SSA" ] }, { "cell_type": "code", "collapsed": false, "input": [ "urllib.urlretrieve(\"http://www.ssa.gov/oact/babynames/state/namesbystate.zip\", \"namesbystate.zip\")\n", "zf = ZipFile(\"namesbystate.zip\")\n", "def read_names2(f):\n", " return pd.read_csv(zf.open(f), header = None, names = ['state', 'sex', 'year', 'name', 'n'])\n", " \n", "bnames_by_state = pd.concat([read_names2(f) for f in zf.namelist() if f.endswith('.TXT')])\n", "bnames_by_state.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
statesexyearnamen
0 MA F 1910 Mary 988
1 MA F 1910 Helen 473
2 MA F 1910 Margaret 374
3 MA F 1910 Dorothy 331
4 MA F 1910 Alice 313
\n", "

5 rows \u00d7 5 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " state sex year name n\n", "0 MA F 1910 Mary 988\n", "1 MA F 1910 Helen 473\n", "2 MA F 1910 Margaret 374\n", "3 MA F 1910 Dorothy 331\n", "4 MA F 1910 Alice 313\n", "\n", "[5 rows x 5 columns]" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cohort Life Tables\n", "\n", "The next dataset is actuarial [cohort life tables](http://www.ssa.gov/oact/NOTES/as120/LifeTables_Tbl_7.html) provided by SSA. I was unable to figure out how to scrape this data using `BeautifulSoup`. So I used the R package `XML` to scrape these lifetables and saved it to [lifetables.csv](lifetables.csv). If you are interested in the R code, you can find it [here](https://github.com/ramnathv/agebyname/blob/master/rawdata/lifetables.R)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "lifetables = pd.read_csv('lifetables.csv')\n", "lifetables.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
xqxlxdxLxTxexsexyear
0 0 0.14596 100000 14596 90026 5151511 51.52 M 1900
1 1 0.03282 85404 2803 84003 5061484 59.26 M 1900
2 2 0.01634 82601 1350 81926 4977482 60.26 M 1900
3 3 0.01052 81251 855 80824 4895556 60.25 M 1900
4 4 0.00875 80397 703 80045 4814732 59.89 M 1900
\n", "

5 rows \u00d7 9 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ " x qx lx dx Lx Tx ex sex year\n", "0 0 0.14596 100000 14596 90026 5151511 51.52 M 1900\n", "1 1 0.03282 85404 2803 84003 5061484 59.26 M 1900\n", "2 2 0.01634 82601 1350 81926 4977482 60.26 M 1900\n", "3 3 0.01052 81251 855 80824 4895556 60.25 M 1900\n", "4 4 0.00875 80397 703 80045 4814732 59.89 M 1900\n", "\n", "[5 rows x 9 columns]" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can read the documentation for the lifetables to understand the various parameters. The key column of interest to us is `lx`, which provides the number of people born in the year `year` who live upto the age `x`. Since we are in the year 2014, we are only interested in a subset of the data. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "lifetables_2014 = lifetables[lifetables['year'] + lifetables['x'] == 2014]\n", "lifetables_2014.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
xqxlxdxLxTxexsexyear
114 114 0.76365 0 0 0 0 0.79 M 1900
234 114 0.75783 0 0 0 0 0.80 F 1900
344 104 0.46882 25 12 19 38 1.54 M 1910
464 104 0.42317 191 81 150 328 1.72 F 1910
574 94 0.26858 3122 838 2703 8656 2.77 M 1920
\n", "

5 rows \u00d7 9 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ " x qx lx dx Lx Tx ex sex year\n", "114 114 0.76365 0 0 0 0 0.79 M 1900\n", "234 114 0.75783 0 0 0 0 0.80 F 1900\n", "344 104 0.46882 25 12 19 38 1.54 M 1910\n", "464 104 0.42317 191 81 150 328 1.72 F 1910\n", "574 94 0.26858 3122 838 2703 8656 2.77 M 1920\n", "\n", "[5 rows x 9 columns]" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The cohort life tables are provided only for every decade. Since we need the data by year, we will use spline interpolation to fill out the gaps." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def process(d, kind = 'slinear'):\n", " f = interp1d(d.year, d.lx, kind)\n", " year = np.arange(1900, 2011)\n", " lx = f(year)\n", " return pd.DataFrame({\"year\": year, \"lx\": lx, \"sex\": d.sex.iloc[1]})\n", "lifetable_2014 = lifetables_2014.\\\n", " groupby('sex', as_index = False).\\\n", " apply(process)\n", "lifetable_2014.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
lxsexyear
0 0.0 F 1900
1 19.1 F 1901
2 38.2 F 1902
3 57.3 F 1903
4 76.4 F 1904
\n", "

5 rows \u00d7 3 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ " lx sex year\n", "0 0.0 F 1900\n", "1 19.1 F 1901\n", "2 38.2 F 1902\n", "3 57.3 F 1903\n", "4 76.4 F 1904\n", "\n", "[5 rows x 3 columns]" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Census Live Births Data\n", "\n", "Finally, we need [live births data](http://www.census.gov/statab/hist/02HS0013.xls) from the census to extrapolate the birth data to account for the correct that not all births were recorded by SSA till around 1930, since it wasn't mandatory." ] }, { "cell_type": "code", "collapsed": false, "input": [ "urllib.urlretrieve(\"http://www.census.gov/statab/hist/02HS0013.xls\", \"02HS0013.xls\")\n", "dat = pd.read_excel('02HS0013.xls', sheetname = 'HS-13', skiprows = range(14))\n", "tot_births = dat.ix[9:101,:2].reset_index(drop = True)\n", "tot_births.columns = ['year', 'births']\n", "tot_births = tot_births.convert_objects(convert_numeric = True)\n", "tot_births.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
yearbirths
0 1909 2718
1 1910 2777
2 1911 2809
3 1912 2840
4 1913 2869
\n", "

5 rows \u00d7 2 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ " year births\n", "0 1909 2718\n", "1 1910 2777\n", "2 1911 2809\n", "3 1912 2840\n", "4 1913 2869\n", "\n", "[5 rows x 2 columns]" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now merge this data with the `bnames` aggregated by `year` to compute a set of correction factors, which will be used to scale the number of births. I have taken a very naive approach to do this, and there might be better ways to accomplish the same." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cor_factors = bnames.\\\n", " groupby('year', as_index = False).\\\n", " sum().\\\n", " merge(tot_births)\n", "cor_factors['cor'] = cor_factors['births']*1000/cor_factors['n']\n", "cor_factors = cor_factors[['year', 'cor']]\n", "cor_factors.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
yearcor
0 1909 5.316662
1 1910 4.701138
2 1911 4.360075
3 1912 2.874415
4 1913 2.523176
\n", "

5 rows \u00d7 2 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ " year cor\n", "0 1909 5.316662\n", "1 1910 4.701138\n", "2 1911 4.360075\n", "3 1912 2.874415\n", "4 1913 2.523176\n", "\n", "[5 rows x 2 columns]" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We expand the correction factors data for the years 2002 to 2014 using the correction factor for the year 2001." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cor_new = pd.DataFrame({\n", " 'year': range(2002, 2014),\n", " 'cor': cor_factors.cor.iloc[-1]\n", "})\n", "cor_factors = pd.concat([cor_factors, cor_new])[['year', 'cor']]\n", "cor_factors.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
yearcor
0 1909 5.316662
1 1910 4.701138
2 1911 4.360075
3 1912 2.874415
4 1913 2.523176
\n", "

5 rows \u00d7 2 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " year cor\n", "0 1909 5.316662\n", "1 1910 4.701138\n", "2 1911 4.360075\n", "3 1912 2.874415\n", "4 1913 2.523176\n", "\n", "[5 rows x 2 columns]" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analysis\n", "\n", "Now that we have all the required data, we need a few helper functions to help us with our analysis. The first function we will write is `get_data`, which takes `name`, `sex` and `state` and returns a data frame with the distribution of number of births and number of people alive by year." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def get_data(name, sex, state = None):\n", " if state is None:\n", " dat = bnames\n", " else:\n", " dat = bnames_by_state[(bnames_by_state[\"state\"] == state)]\n", " data = dat[(dat['name'] == name) & (dat['sex'] == sex)].\\\n", " merge(cor_factors).\\\n", " merge(lifetable_2014)\n", " data['n_cor'] = data['n']*data['cor']\n", " data['n_alive'] = data['lx']/(10**5)*data['n_cor']\n", " return data\n", "get_data('Violet', 'F').head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
namesexnyearcorlxn_corn_alive
0 Violet F 945 1909 5.316662 171.9 5024.245779 8.636678
1 Violet F 1037 1910 4.701138 191.0 4875.080412 9.311404
2 Violet F 1183 1911 4.360075 1084.2 5157.968506 55.922695
3 Violet F 1535 1912 2.874415 1977.4 4412.227601 87.247389
4 Violet F 1751 1913 2.523176 2870.6 4418.081208 126.825439
\n", "

5 rows \u00d7 8 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ " name sex n year cor lx n_cor n_alive\n", "0 Violet F 945 1909 5.316662 171.9 5024.245779 8.636678\n", "1 Violet F 1037 1910 4.701138 191.0 4875.080412 9.311404\n", "2 Violet F 1183 1911 4.360075 1084.2 5157.968506 55.922695\n", "3 Violet F 1535 1912 2.874415 1977.4 4412.227601 87.247389\n", "4 Violet F 1751 1913 2.523176 2870.6 4418.081208 126.825439\n", "\n", "[5 rows x 8 columns]" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our next helper function is `plot_name` which accepts the same arguments as `get_data`, but returns a plot of the distribution of number of births and number alive by year." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_name(name, sex, state = None):\n", " data = get_data(name, sex, state)\n", " return ggplot(data, aes('year', 'n_cor')) +\\\n", " geom_line() +\\\n", " geom_area(aes(ymin = 0, ymax = 'n_alive'), alpha = 0.5)\n", "plot_name(\"Joseph\", \"F\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nSUVORK5CYII=\n", "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "plot_name(\"Violet\", \"F\", \"MA\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nX/ziF6e812OPPab8/Hw99thj+s53vqN77rnnut9jtn2Zit/v1/bt27V9+/YJ9fzd3/2dioqKtGXL\nFq1atUrp6enj/5eWljbh1+np6Zo/f77WrFkz5cMNgjGX/76YHb0xp0Tri9Vq1dGjR3X//feb8r8d\nwbDZbLJYLAnTl0iK+79xDodDvb29CbNpw+l0JsSThOx2u9xut/r7+4PuTU9Pjy5dumTKXtrt9inr\n6uzs1OXLl5WVlTXpvaGhIZ06dUqdnZ1qb29XdnZ2UPcqLS3VW2+9NeHPgcfjUXNzs4qLi6/752Pj\nxo360Y9+pMcff1yNjY369Kc/PeX3mG1fpvLGG29owYIFKisrm1TPgw8+qPXr1+vChQvq7e2Vx+OR\nx+NRb2+vOjo6xl/r7e1VU1OTtm3bps9//vMh1TGX/76YHb0xp0Try+HDhzV//nwlJSXFbX/8fr8C\ngUDC9CWS4j6kInH09vbGzVT/mMHBQXV3d08ZUjs7O9XR0aGRkRFdunQp6JBaXl6uf/u3f5vw2rFj\nx7R8+fIZR3IqKiq0c+dOPfLIIzp//rz+/u//PuRRyun88Ic/1OOPP37d95cs+f/t3XtsU+f5B/Cv\n7zGJcyOBhiQQLlFCy2XlUqArlLWFAhurtBStFxiFbh2buhY6pmkXRjWqaRutWrEVjWkrG3QdAaaC\ntg5KO42Qwjo6ArmRGyFxHOdK4thOTHw77++P/HwUJzGNiWM7yfcjRZDX5xy/x0/s8/g972XOsCbK\nLisrw3PPPYdvf/vbY7YVhIgip6ioiJPyj2Psk0pRYSyN6h+osbFx0MIDvlWpfOUmk2nYMwHMmTMH\ndXV1fq0CgfqjDiUzMxOnTp1CeXk51q5di2PHjoX0G3plZSVqa2uxYcOGER9r3rx5yMzMxNmzZ0NQ\nMyKaaIqKijgp/zjGJJWiwlga1T+QxWIZtPqU1WpFU1OT/LvNZkNXV9ewjqfX6zFt2jS/wUf9J/Ef\njsTEROTn52PPnj344IMPsGzZMvzyl7/0q9PdOnz4MDZv3gytVjviYwHA9u3bcfjw4ZAci4gmluGu\nNEVjE5NUigo2m23MzrHpcDgGJamtra1+rZeSJKGhoWHI+U+HMnB5VN9yqMFQKpV4+OGHcfToUZw6\ndQo9PT1YvXo1nnrqKVy+fPmuVonq6urC3//+d2zevDnofQNZt24djEYjysrKQnZMIhr/HA4Hbty4\n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\nYII=\n", "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Estimate Age\n", "\n", "We will now write a function that will help us figure out the probability that a person with a certain name is alive, as well as the quantiles of their age distribution. Since we are dealing with weighted data, I will use some code copied from the [wquantiles](https://github.com/nudomarinero/wquantiles/) module. The `quantile` function accepts a data array and a weights array to return a specific quantile" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# from the module wquantiles https://github.com/nudomarinero/wquantiles/blob/master/weighted.py\n", "import numpy as np\n", "def quantile_1D(data, weights, quantile):\n", " \"\"\"\n", " Compute the weighted quantile of a 1D numpy array.\n", "\n", " Parameters\n", " ----------\n", " data : ndarray\n", " Input array (one dimension).\n", " weights : ndarray\n", " Array with the weights of the same size of `data`.\n", " quantile : float\n", " Quantile to compute. It must have a value between 0 and 1.\n", "\n", " Returns\n", " -------\n", " quantile_1D : float\n", " The output value.\n", " \"\"\"\n", " # Check the data\n", " if not isinstance(data, np.matrix) :\n", " data = np.asarray(data)\n", " if not isinstance(weights, np.matrix) :\n", " weights = np.asarray(weights)\n", " nd = data.ndim\n", " if nd != 1:\n", " raise TypeError(\"data must be a one dimensional array\")\n", " ndw = weights.ndim\n", " if ndw != 1:\n", " raise TypeError(\"weights must be a one dimensional array\")\n", " if data.shape != weights.shape:\n", " raise TypeError(\"the length of data and weights must be the same\")\n", " if ((quantile > 1.) or (quantile < 0.)):\n", " raise ValueError(\"quantile must have a value between 0. and 1.\")\n", " # Sort the data\n", " ind_sorted = np.argsort(data)\n", " sorted_data = data[ind_sorted]\n", " sorted_weights = weights[ind_sorted]\n", " # Compute the auxiliary arrays\n", " Sn = np.cumsum(sorted_weights)\n", " # TODO: Check that the weights do not sum zero\n", " Pn = (Sn-0.5*sorted_weights)/np.sum(sorted_weights)\n", " # Get the value of the weighted median\n", " return np.interp(quantile, Pn, sorted_data)\n", "\n", "\n", "def quantile(data, weights, quantile):\n", " \"\"\"\n", " Weighted quantile of an array with respect to the last axis.\n", "\n", " Parameters\n", " ----------\n", " data : ndarray\n", " Input array.\n", " weights : ndarray\n", " Array with the weights. It must have the same size of the last \n", " axis of `data`.\n", " quantile : float\n", " Quantile to compute. It must have a value between 0 and 1.\n", "\n", " Returns\n", " -------\n", " quantile : float\n", " The output value.\n", " \"\"\"\n", " # TODO: Allow to specify the axis\n", " nd = data.ndim\n", " if nd == 0:\n", " TypeError(\"data must have at least one dimension\")\n", " elif nd == 1:\n", " return quantile_1D(data, weights, quantile)\n", " elif nd > 1:\n", " n = data.shape\n", " imr = data.reshape((np.prod(n[:-1]), n[-1]))\n", " result = np.apply_along_axis(quantile_1D, -1, imr, weights, quantile)\n", " return result.reshape(n[:-1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the `quantile` function to write an `estimate_age` function that will return the living probabilities and quantiles for a given `name`, `sex` and `state`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def estimate_age(name, sex, state = None):\n", " data = get_data(name, sex, state)\n", " qs = [1, 0.75, 0.5, 0.25, 0]\n", " quantiles = [2014 - int(quantile(data.year, data.n_alive, q)) for q in qs]\n", " result = dict(zip(['q0', 'q25', 'q50', 'q75', 'q100'], quantiles))\n", " result['p_alive'] = round(data.n_alive.sum()/data.n_cor.sum()*100, 2)\n", " result['sex'] = sex\n", " result['name'] = name\n", " return pd.Series(result)\n", " \n", "estimate_age('Gertrude', 'F')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "name Gertrude\n", "p_alive 18.17\n", "q0 4\n", "q100 105\n", "q25 71\n", "q50 82\n", "q75 90\n", "sex F\n", "dtype: object" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "estimate_age('Ava', 'F')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "name Ava\n", "p_alive 95.24\n", "q0 4\n", "q100 105\n", "q25 6\n", "q50 8\n", "q75 10\n", "sex F\n", "dtype: object" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now use the `estimate_age` function to compute the quantiles for the most common names and replicate the plots in the Nate Silver article." ] }, { "cell_type": "code", "collapsed": true, "input": [ "top_100_names = bnames.\\\n", " groupby(['name', 'sex'], as_index = False).\\\n", " sum().\\\n", " sort('n', ascending = False)\n", "top_25_females = top_100_names[(top_100_names[\"sex\"] == \"F\")]\n", "estimates = pd.concat([estimate_age(name, 'F') for name in top_25_females[\"name\"].iloc[:25].tolist()], axis = 1)\n", "estimates.T.sort('q50').reset_index()" ], "language": "python", "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexnamep_aliveq0q100q25q50q75sex
0 24 Emily 90.62 4 105 12 19 28 F
1 18 Ashley 98.5 4 97 18 24 28 F
2 10 Jessica 97.9 4 105 22 27 32 F
3 9 Sarah 83.63 4 105 19 28 37 F
4 17 Anna 51.81 4 105 17 34 65 F
5 3 Jennifer 96.63 4 98 29 36 42 F
6 1 Elizabeth 70.05 4 105 23 39 58 F
7 23 Michelle 95.92 4 99 29 40 47 F
8 20 Kimberly 95.87 4 81 30 41 48 F
9 15 Lisa 94.48 4 104 40 47 51 F
10 14 Karen 89.12 4 105 48 55 62 F
11 7 Susan 86.52 4 105 50 57 63 F
12 19 Donna 81.85 4 105 52 58 66 F
13 16 Sandra 85.46 4 105 50 59 67 F
14 12 Nancy 76.02 4 105 53 62 70 F
15 2 Patricia 77.8 4 105 53 62 70 F
16 4 Linda 84.87 4 105 55 62 67 F
17 22 Carol 77.49 4 105 56 64 71 F
18 0 Mary 51.35 4 105 53 64 75 F
19 5 Barbara 71.56 4 105 57 65 73 F
20 6 Margaret 45.63 4 105 51 65 76 F
21 21 Ruth 34.23 4 105 57 70 83 F
22 13 Betty 50.7 4 105 65 74 82 F
23 11 Helen 29.38 4 105 61 74 86 F
24 8 Dorothy 34.24 4 105 64 76 85 F
\n", "

25 rows \u00d7 9 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ " index name p_alive q0 q100 q25 q50 q75 sex\n", "0 24 Emily 90.62 4 105 12 19 28 F\n", "1 18 Ashley 98.5 4 97 18 24 28 F\n", "2 10 Jessica 97.9 4 105 22 27 32 F\n", "3 9 Sarah 83.63 4 105 19 28 37 F\n", "4 17 Anna 51.81 4 105 17 34 65 F\n", "5 3 Jennifer 96.63 4 98 29 36 42 F\n", "6 1 Elizabeth 70.05 4 105 23 39 58 F\n", "7 23 Michelle 95.92 4 99 29 40 47 F\n", "8 20 Kimberly 95.87 4 81 30 41 48 F\n", "9 15 Lisa 94.48 4 104 40 47 51 F\n", "10 14 Karen 89.12 4 105 48 55 62 F\n", "11 7 Susan 86.52 4 105 50 57 63 F\n", "12 19 Donna 81.85 4 105 52 58 66 F\n", "13 16 Sandra 85.46 4 105 50 59 67 F\n", "14 12 Nancy 76.02 4 105 53 62 70 F\n", "15 2 Patricia 77.8 4 105 53 62 70 F\n", "16 4 Linda 84.87 4 105 55 62 67 F\n", "17 22 Carol 77.49 4 105 56 64 71 F\n", "18 0 Mary 51.35 4 105 53 64 75 F\n", "19 5 Barbara 71.56 4 105 57 65 73 F\n", "20 6 Margaret 45.63 4 105 51 65 76 F\n", "21 21 Ruth 34.23 4 105 57 70 83 F\n", "22 13 Betty 50.7 4 105 65 74 82 F\n", "23 11 Helen 29.38 4 105 61 74 86 F\n", "24 8 Dorothy 34.24 4 105 64 76 85 F\n", "\n", "[25 rows x 9 columns]" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can go a step beyond the article and also use the `state` parameter to get more specific quantiles, if we know the place of birth of a person.\n", "\n", "The final step for me is to convert all of this into an interactive webapp. I have done it with R using the [shiny](http://rstudio.com/shiny) package. I am still getting the hang of web frameworks in python, so it will be a while before I get to doing this." ] } ], "metadata": {} } ] }