{ "cells": [ { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import sys\n", "import os\n", "import math\n", "import importlib\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import random\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def simulate(initialRatio):\n", " rand = random.Random(1337)\n", " nprand = np.random.RandomState(1337)\n", " populationSize = 5000 # small town \n", " # model # of children as Poisson:\n", " # 2.5 avg children, and for Poisson, mean=variance\n", " # note that the 2.5 number is for present day - that's a conservative choice for it\n", " # since in past it's much higher:\n", " # https://ourworldindata.org/fertility-rate#the-number-of-children-per-woman-over-the-very-long-run\n", " numChildrenMeanVariance = 2.5\n", " # initialize the initial generation\n", " initialSeeds = rand.sample(range(populationSize), int(populationSize * initialRatio))\n", " population = [False]*populationSize \n", " for i in initialSeeds:\n", " population[i] = True\n", " \n", " result = [(populationSize, len(initialSeeds))]\n", " \n", " # start simulating\n", " generations = 10\n", " for generation in range(generations):\n", " # shuffle the array\n", " newpopulation = []\n", " rand.shuffle(population)\n", " popWithTrait = 0\n", " # for each (randomly shuffled) pair:\n", " endval = len(population) & ~1\n", " for i in range(0, endval, 2):\n", " # generate number of children\n", " # if any parent has it, child has it\n", " hasIt = population[i] or population[i+1]\n", " numChildren = int(nprand.poisson(numChildrenMeanVariance))\n", " newpopulation = newpopulation + [hasIt]*numChildren\n", " if hasIt:\n", " popWithTrait += numChildren\n", " print(len(newpopulation), popWithTrait)\n", " result.append((len(newpopulation), popWithTrait))\n", " population = newpopulation\n", " return result" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "starting 0.01\n", "6274 122\n", "7931 309\n", "9802 762\n", "12308 1893\n", "15391 4408\n", "19233 9394\n", "24130 17844\n", "30183 28139\n", "37865 37670\n", "47289 47289\n", "starting 0.05\n", "6274 641\n", "7931 1511\n", "9802 3410\n", "12308 7127\n", "15391 12619\n", "19233 18552\n", "24130 24091\n", "30183 30183\n", "37865 37865\n", "47289 47289\n", "starting 0.1\n", "6274 1193\n", "7931 2673\n", "9802 5470\n", "12308 9924\n", "15391 14831\n", "19233 19214\n", "24130 24130\n", "30183 30183\n", "37865 37865\n", "47289 47289\n", "starting 0.15\n", "6274 1768\n", "7931 3907\n", "9802 7301\n", "12308 11511\n", "15391 15294\n", "19233 19233\n", "24130 24130\n", "30183 30183\n", "37865 37865\n", "47289 47289\n", "starting 0.2\n", "6274 2247\n", "7931 4629\n", "9802 8152\n", "12308 11904\n", "15391 15380\n", "19233 19233\n", "24130 24130\n", "30183 30183\n", "37865 37865\n", "47289 47289\n" ] } ], "source": [ "ratios = [0.01, 0.05, 0.10, 0.15, 0.20]\n", "simresults = []\n", "for ratio in ratios:\n", " print(\"starting\", ratio)\n", " simresults.append(simulate(ratio))" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i in range(len(ratios)):\n", " simresult = simresults[i]\n", " ratio = [a[1]/a[0] for a in simresult]\n", " plt.plot(list(range(len(simresult))), ratio, label=str(int(ratios[i]*100)) + \"%\")\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "starting 0.01\n", "2726150 54272\n", "2726150 107456\n", "2726150 210786\n", "2726150 405578\n", "2726150 751090\n", "2726150 1295710\n", "2726150 1974608\n", "2726150 2519108\n", "2726150 2710120\n", "2726150 2726064\n", "starting 0.05\n", "2726150 265734\n", "2726150 505810\n", "2726150 917770\n", "2726150 1526582\n", "2726150 2198516\n", "2726150 2624200\n", "2726150 2722284\n", "2726150 2726144\n", "2726150 2726150\n", "2726150 2726150\n", "starting 0.1\n", "2726150 518422\n", "2726150 937902\n", "2726150 1551782\n", "2726150 2219684\n", "2726150 2631902\n", "2726150 2722808\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "starting 0.15\n", "2726150 756358\n", "2726150 1302388\n", "2726150 1982522\n", "2726150 2523748\n", "2726150 2711010\n", "2726150 2726048\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "starting 0.2\n", "2726150 981700\n", "2726150 1610332\n", "2726150 2269052\n", "2726150 2650148\n", "2726150 2724096\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n", "2726150 2726150\n" ] } ], "source": [ "def simulate_const(initialRatio):\n", " rand = random.Random(1337)\n", " populationSize = 2726150 # matches 1809 pop\n", " # initialize the initial generation\n", " initialSeeds = rand.sample(range(populationSize), int(populationSize * initialRatio))\n", " population = [False]*populationSize \n", " for i in initialSeeds:\n", " population[i] = True\n", " \n", " result = [(populationSize, len(initialSeeds))]\n", " \n", " # start simulating\n", " generations = 10\n", " for generation in range(generations):\n", " # shuffle the array\n", " newpopulation = [False]*len(population)\n", " rand.shuffle(population)\n", " popWithTrait = 0\n", " # for each (randomly shuffled) pair:\n", " endval = len(population) & ~1\n", " for i in range(0, endval, 2):\n", " # generate number of children\n", " # if any parent has it, child has it\n", " hasIt = population[i] or population[i+1]\n", " if hasIt: # changed from above!\n", " newpopulation[i] = newpopulation[i+1] = True\n", " popWithTrait += 2\n", " print(len(newpopulation), popWithTrait)\n", " result.append((len(newpopulation), popWithTrait))\n", " population = newpopulation\n", " return result\n", "simresults_const = []\n", "for ratio in ratios:\n", " print(\"starting\", ratio)\n", " simresults_const.append(simulate_const(ratio))" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i in range(len(ratios)):\n", " simresult = simresults_const[i]\n", " ratio = [a[1]/a[0] for a in simresult]\n", " plt.plot(list(range(len(simresult))), ratio, label=str(int(ratios[i]*100)) + \"%\")\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "starting 0.01\n", "2726150 27136\n", "2726150 27013\n", "2726150 26876\n", "2726150 26748\n", "2726150 26625\n", "2726150 26489\n", "2726150 26364\n", "2726150 26248\n", "2726150 26135\n", "2726150 26004\n", "starting 0.05\n", "2726150 132867\n", "2726150 129619\n", "2726150 126454\n", "2726150 123500\n", "2726150 120655\n", "2726150 118002\n", "2726150 115365\n", "2726150 112795\n", "2726150 110474\n", "2726150 108212\n", "starting 0.1\n", "2726150 259211\n", "2726150 246837\n", "2726150 235726\n", "2726150 225615\n", "2726150 216339\n", "2726150 207610\n", "2726150 199683\n", "2726150 192314\n", "2726150 185603\n", "2726150 179412\n", "starting 0.15\n", "2726150 378179\n", "2726150 351900\n", "2726150 329192\n", "2726150 309259\n", "2726150 291643\n", "2726150 276020\n", "2726150 262162\n", "2726150 249589\n", "2726150 238331\n", "2726150 227706\n", "starting 0.2\n", "2726150 490850\n", "2726150 446612\n", "2726150 410033\n", "2726150 379278\n", "2726150 352864\n", "2726150 330064\n", "2726150 309964\n", "2726150 292434\n", "2726150 276792\n", "2726150 262744\n" ] } ], "source": [ "# Just for fun: what if only one child gets the trait? (matches Guardian)\n", "\n", "def simulate_onlyone(initialRatio):\n", " rand = random.Random(1337)\n", " populationSize = 2726150 # matches 1809 pop\n", " # initialize the initial generation\n", " initialSeeds = rand.sample(range(populationSize), int(populationSize * initialRatio))\n", " population = [False]*populationSize \n", " for i in initialSeeds:\n", " population[i] = True\n", " \n", " result = [(populationSize, len(initialSeeds))]\n", " \n", " # start simulating\n", " generations = 10\n", " for generation in range(generations):\n", " # shuffle the array\n", " newpopulation = [False]*len(population)\n", " rand.shuffle(population)\n", " popWithTrait = 0\n", " # for each (randomly shuffled) pair:\n", " endval = len(population) & ~1\n", " for i in range(0, endval, 2):\n", " # generate number of children\n", " # if any parent has it, child has it\n", " hasIt = population[i] or population[i+1]\n", " if hasIt: # changed from above!\n", " newpopulation[i] = True\n", " popWithTrait += 1\n", " print(len(newpopulation), popWithTrait)\n", " result.append((len(newpopulation), popWithTrait))\n", " population = newpopulation\n", " return result\n", "simresults_onlyone = []\n", "for ratio in ratios:\n", " print(\"starting\", ratio)\n", " simresults_onlyone.append(simulate_onlyone(ratio))" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i in range(len(ratios)):\n", " simresult = simresults_onlyone[i]\n", " ratio = [a[1]/a[0] for a in simresult]\n", " plt.plot(list(range(len(simresult))), ratio, label=str(int(ratios[i]*100)) + \"%\")\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }