{ "metadata": { "name": "12 tables" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Taken from [http://blog.wolfram.com/2013/06/26/is-there-any-point-to-the-12-times-table/](http://blog.wolfram.com/2013/06/26/is-there-any-point-to-the-12-times-table/)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "table = zeros((12, 12), dtype=int16)\n", "for i in range(12):\n", " for j in range(12):\n", " table[i, j] = (i + 1) * (j + 1)\n", "print table" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 1 2 3 4 5 6 7 8 9 10 11 12]\n", " [ 2 4 6 8 10 12 14 16 18 20 22 24]\n", " [ 3 6 9 12 15 18 21 24 27 30 33 36]\n", " [ 4 8 12 16 20 24 28 32 36 40 44 48]\n", " [ 5 10 15 20 25 30 35 40 45 50 55 60]\n", " [ 6 12 18 24 30 36 42 48 54 60 66 72]\n", " [ 7 14 21 28 35 42 49 56 63 70 77 84]\n", " [ 8 16 24 32 40 48 56 64 72 80 88 96]\n", " [ 9 18 27 36 45 54 63 72 81 90 99 108]\n", " [ 10 20 30 40 50 60 70 80 90 100 110 120]\n", " [ 11 22 33 44 55 66 77 88 99 110 121 132]\n", " [ 12 24 36 48 60 72 84 96 108 120 132 144]]\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example approximation problem: 7203 * 6892." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 7203 * 6892\n", "print 7000 * 7000\n", "print (7000 * 7000 - 7203 * 6892) / float(7203 * 6892) * 100" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "49643076\n", "49000000\n", "-1.29539918115\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If I knew my 72 times table, I could have made it 7200 * 6900." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 7203 * 6892\n", "print 7200 * 6900\n", "print (7200 * 6900 - 7203 * 6892) / float(7203 * 6892) * 100" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "49643076\n", "49680000\n", "0.074378952666\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's build an approximation function that takes into account the lead digit we want to use. This is just the proof of concept." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def approximate(number, lead):\n", " return lead * 10 ** (round(log10(number / lead)))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "approximate(12345, 9) " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 13, "text": [ "9000.0" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's do the same thing but with a list of lead digits." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def approximate(number, possible_leads):\n", " approx = array([lead * 10 ** (round(log10(number / lead))) for lead in possible_leads])\n", " return approx[abs(number - approx).argmin()]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "approximate(18345, [1, 2, 3, 4])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 32, "text": [ "20000.0" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The approximate product is just the product of approximates." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def approximate_product(a, b, possible_leads):\n", " return approximate(a, possible_leads) * approximate(b, possible_leads)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From there follows the relative error." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def relative_error(a, b, possible_leads):\n", " return abs(approximate_product(a, b, possible_leads) / (a * b) - 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "relative_error(545, 999, range(1, 11))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 53, "text": [ "0.081650457797246778" ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "relative_error(549, 999, range(1, 11))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 55, "text": [ "0.088341529142986319" ] } ], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "source": [ "On to serious things: a random sampling of random numbers and calculating the mean error with 10's table and 12's table." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def mean_error_uniform(max_lead_digit, N=100000):\n", " return mean([relative_error(randint(1, 1e6), randint(1, 1e6), range(1, max_lead_digit + 1)) for i in xrange(N)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 195 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_error_uniform(10)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 196, "text": [ "0.093972687794082327" ] } ], "prompt_number": 196 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_error_uniform(10, 10000)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 197, "text": [ "0.095496434040729439" ] } ], "prompt_number": 197 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_error_uniform(12)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 198, "text": [ "0.081577214232046474" ] } ], "prompt_number": 198 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_errors = [mean_error_uniform(i, 10000) for i in range(2, 21)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 199 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(range(2, 21), mean_errors)\n", "ylim((0, 0.5))\n", "grid(True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n8dhjj3HrrbcGNbCIiLSs1aK+detWUlJSSE5OJj4+nokTJ1JYWNhom/Xr1zNlyhQAhgwZwueff87B\ngweDl7idVFRUeB2hCRMzgZm5lMkZZXLO1FyuWa147rnnrOnTp9evr1y50po5c2ajbUaPHm29+eab\n9etXXXWVtW3btkbbAFq0aNGipQ2LW3G0IiYmprWH6518HuXJ/07nqIuIhEar7ZekpCQqKyvr1ysr\nK/H5fK1us3fvXpKSkto5poiIONFqUc/OzqasrIyKigqqq6tZs2YNY8aMabTNmDFjePrppwEoKSkh\nISGBs88+O3iJRUSkRa22X+Li4liyZAkjRoygrq6OvLw80tPTKSgoAGDGjBmMGjWKDRs2kJKSQufO\nnXnyySdDElxERJrhugvvwieffGLl5uZaGRkZ1oABA6xFixYFczhXamtrraysLGv06NFeR7Esy7KO\nHDlijR8/3kpLS7PS09Ott956y+tIlmVZ1ty5c62MjAxr4MCB1o033mh9++23Ic8wbdo0q2fPntbA\ngQPr7zt06JA1bNgwKzU11Ro+fLh15MgRzzPdc889VlpamnXhhRda1157rfX55597ningoYcesmJi\nYqxDhw4ZkemRRx6x0tLSrAEDBli//OUvQ5qppVylpaVWTk6OlZWVZWVnZ1tbt24NaaaW6qXb13pQ\ni/r+/futHTt2WJZlWV999ZXVr18/a9euXcEc0rEFCxZYkyZNsq655hqvo1iWZVmTJ0+2li9fblmW\nZdXU1IS8IDSnvLzc6tu3b30hv/76660VK1aEPMfmzZut7du3N/oFvPfee638/HzLsixr/vz51uzZ\nsz3P9Oqrr1p1dXWWZVnW7NmzjchkWXaxGDFihJWcnBzyot5cpqKiImvYsGFWdXW1ZVmW9emnn4Y0\nU0u5rrjiCsvv91uWZVkbNmywcnNzQ5qppXrp9rUe1GkCevXqRVZWFgBdunQhPT2dffv2BXNIR/bu\n3cuGDRuYPn26EWfmfPHFF7zxxhvccsstgN326tq1q8ep4Pvf/z7x8fEcO3aM2tpajh075slB8Msv\nv5xu3bo1uq/h5yOmTJnCunXrPM80fPhwYmPtX6khQ4awd+9ezzMB/OIXv+D3v/99SLMENJdp6dKl\nzJkzh/j4eAASExONyHXOOefwxRdfAPanS0P9Wm+uXlZVVbl+rYds7peKigp27NjBkCFDQjVki+66\n6y4efPDB+l9Ar5WXl5OYmMi0adMYPHgwP/3pTzl27JjXsejevTt333035557Lr179yYhIYFhw4Z5\nHQuAgwczrslEAAADd0lEQVQP1h+QP/vss437wNsTTzzBqFGjvI5BYWEhPp+PCy+80Oso9crKyti8\neTOXXHIJubm5bNu2zetIAMyfP7/+9X7vvfcyb948z7I0rJduX+shqWpHjx5lwoQJLFq0iC5duoRi\nyBb9+c9/pmfPngwaNMiIvXSA2tpatm/fzm233cb27dvp3Lkz8+fP9zoWe/bsYeHChVRUVLBv3z6O\nHj3Ks88+63WsJmJiYhx/piIUfve739GhQwcmTZrkaY5jx44xd+5c7r///vr7THjN19bWcuTIEUpK\nSnjwwQe5/vrrvY4EQF5eHo888giffPIJDz/8cP1fzqF29OhRxo8fz6JFizjrrLMaPebktR70ol5T\nU8P48eO5+eabGTt2bLCHO6UtW7awfv16+vbty4033khRURGTJ0/2NJPP58Pn85GTkwPAhAkT2L59\nu6eZALZt28all15Kjx49iIuLY9y4cWzZssXrWIC9x3LgwAEA9u/fT8+ePT1OZFuxYgUbNmww4s1v\nz549VFRUkJmZSd++fdm7dy8XXXQRn376qae5fD4f48aNAyAnJ4fY2FgOHTrkaSawp0W59tprAft3\ncOvWrSHPEKiXP/nJT+rrpdvXelCLumVZ5OXlkZGRwaxZs4I5lGNz586lsrKS8vJyVq9ezZVXXll/\nnr1XevXqRZ8+ffjggw8A2LhxIwMGDPA0E0BaWholJSV88803WJbFxo0bycjI8DoWYH8+4qmnngLg\nqaeeMmKHwe/38+CDD1JYWEjHjh29jsMFF1zAwYMHKS8vp7y8HJ/Px/bt2z1/Axw7dixFRUUAfPDB\nB1RXV9OjRw9PMwGkpKTw+uuvA1BUVES/fv1COn5L9dL1az2IB3OtN954w4qJibEyMzOtrKwsKysr\ny3r55ZeDOaQrxcXFxpz9snPnTis7O9uz0+Fakp+fX39K4+TJk+vPWAiliRMnWuecc44VHx9v+Xw+\n64knnrAOHTpkXXXVVZ6d0nhypuXLl1spKSnWueeeW/9av/XWWz3J1KFDh/rvU0N9+/YN+dkvzWWq\nrq62br75ZmvgwIHW4MGDrU2bNoU0U8NcDV9Tb7/9tnXxxRdbmZmZ1iWXXGJt3749pJlaqpduX+sh\nuUapiIiEhhmnf4iISLtQURcRiSAq6iIiEURFXUQkgqioi4hEEBV1EZEI8v8AXKT0iNoKC2EAAAAA\nSUVORK5CYII=\n" } ], "prompt_number": 200 }, { "cell_type": "markdown", "metadata": {}, "source": [ "I notice that the routine is quite slow. Maybe I could make it faster with some fancy Numpy trick?\n", "\n", "- Does approximate support arrays?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "approximate(ones((10, 1)), range(1, 4))" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "only length-1 arrays can be converted to Python scalars", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mapproximate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mones\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m\u001b[0m in \u001b[0;36mapproximate\u001b[1;34m(number, possible_leads)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mapproximate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpossible_leads\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mapprox\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mlead\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m10\u001b[0m \u001b[1;33m**\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlog10\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mlead\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mlead\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mpossible_leads\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mapprox\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mabs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mapprox\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margmin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mTypeError\u001b[0m: only length-1 arrays can be converted to Python scalars" ] } ], "prompt_number": 75 }, { "cell_type": "markdown", "metadata": {}, "source": [ "No, it doesn't! So let's just use fewer trials in the functions..." ] }, { "cell_type": "code", "collapsed": false, "input": [ "mean_errors = [mean_error_uniform(i, N=10000) for i in range(2, 51)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 201 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(range(2, 51), mean_errors)\n", "ylim((0, 0.5))\n", "grid(True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nvpWn/sSbOAYAAAAASUVORK5CYII=\n" } ], "prompt_number": 202 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's display the relative improvement for each value." ] }, { "cell_type": "code", "collapsed": false, "input": [ "mean_errors = array(mean_errors)\n", "plot(range(2, 50), (mean_errors[:-1] - mean_errors[1:]) / mean_errors[:-1])\n", "ylim((0, 0.6))\n", "grid(True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 203 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Relative improvement in outcome, per extra fact memorized." ] }, { "cell_type": "code", "collapsed": false, "input": [ "rng = arange(2, 50)\n", "denom = map(lambda n: n ** 2 - (n - 1) ** 2, rng)\n", "plot(rng, (mean_errors[:-1] - mean_errors[1:]) / mean_errors[:-1] / (denom))\n", "ylim((0, 0.05))\n", "grid(True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n" } ], "prompt_number": 204 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simulating with Benford's law: $\\forall d \\in \\[1, 9\\] P(d)=\\log_{10}(1 + \\frac{1}{d})$\n", "Steps to follow:\n", "\n", "- Compute cumulative function of probabilities $G$\n", "- for each numbers I want to draw, draw a random number $r$ following $U(0, 1)$, the digit to take is the smallest $a$ such that $G(a) > r$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "probs = log10(1 + 1/arange(1, 10, dtype=float32))\n", "G = cumsum(probs)\n", "G" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 99, "text": [ "array([ 0.30103001, 0.47712126, 0.60206002, 0.69897002, 0.77815127,\n", " 0.84509802, 0.90309 , 0.95424253, 1. ], dtype=float32)" ] } ], "prompt_number": 99 }, { "cell_type": "code", "collapsed": false, "input": [ "r = rand(1)\n", "r" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 120, "text": [ "array([ 0.12225127])" ] } ], "prompt_number": 120 }, { "cell_type": "code", "collapsed": false, "input": [ "(r < G).argmax()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 121, "text": [ "0" ] } ], "prompt_number": 121 }, { "cell_type": "code", "collapsed": false, "input": [ "probs = log10(1 + 1/arange(1, 10, dtype=float32))\n", "G = cumsum(probs)\n", "def random_benford_number():\n", " return (rand(1) < G).argmax() + 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 168 }, { "cell_type": "code", "collapsed": false, "input": [ "random_benford_number()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 169, "text": [ "2" ] } ], "prompt_number": 169 }, { "cell_type": "code", "collapsed": false, "input": [ "benford_numbers = [random_benford_number() for i in range(1000000)]\n", "bar(arange(1, 10), [count_nonzero(benford_numbers == i) for i in arange(1, 10)], label='Empirical')\n", "plot(arange(1, 10) , sum(benford_numbers) * log10(2) * log10(1 + 1/arange(1, 10, dtype=float32)), 'or', label=\"Benford's law\")\n", "legend()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 174, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n8uxZMj+ZQAAAAABJRU5ErkJggg==\n" } ], "prompt_number": 174 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit random_benford_number()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "100000 loops, best of 3: 6.44 us per loop\n" ] } ], "prompt_number": 170 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit randint(1, 1e6)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10000000 loops, best of 3: 114 ns per loop\n" ] } ], "prompt_number": 166 }, { "cell_type": "code", "collapsed": false, "input": [ "6.44 / 0.114" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 171, "text": [ "56.49122807017544" ] } ], "prompt_number": 171 }, { "cell_type": "code", "collapsed": false, "input": [ "def random_integer_benford(n):\n", " r = randint(1, n)\n", " return float(\"\".join([str(random_benford_number()) for digit in str(r)]))\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 175 }, { "cell_type": "code", "collapsed": false, "input": [ "random_integer_benford(1000)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 189, "text": [ "814.0" ] } ], "prompt_number": 189 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can rerun the analysis on the data with \"real numbers\"." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def mean_error_benford(max_lead_digit, N=100000):\n", " return mean([relative_error(random_integer_benford(1e6), random_integer_benford(1e6), range(1, max_lead_digit + 1)) for i in xrange(N)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 205 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_error_benford(10, N=10000)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 206, "text": [ "0.14795717887345317" ] } ], "prompt_number": 206 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_errors_benford = [mean_error_benford(i, N=10000) for i in range(2, 21)]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 207 }, { "cell_type": "code", "collapsed": false, "input": [ "mean_errors_benford = array(mean_errors_benford)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 212 }, { "cell_type": "code", "collapsed": false, "input": [ "rng = arange(2, 20)\n", "plot(rng + 1, (mean_errors_benford[:-1] - mean_errors_benford[1:]) / mean_errors_benford[:-1])\n", "grid(True)\n", "ylim((0, 0.5))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 217, "text": [ "(0, 0.5)" ] }, { "output_type": "display_data", "png": "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\nYMTGxuLAgQNGRwIALF++vPbz/uijj+KFF14wLEvdeqn3s+6Rqnb+/HlMmTIFq1evRrt27TyxySZ9\n+OGH6NSpE/r376/EUToAVFVVoaioCPPnz0dRURGuu+46LF++3OhYOHbsGFatWoWSkhL88MMPOH/+\nPDZt2mR0rAYsFovmayo84fnnn0fr1q1x7733GprjwoULWLZsGZ5++una76nwma+qqsKZM2eQn5+P\nFStWYNq0aUZHAgAkJSXhlVdewYkTJ/Dyyy/X/ubsaefPn8fkyZOxevVqXH/99fWe0/JZd3tRv3Tp\nEiZPnowZM2bgbgUm69i3bx927NiBHj164J577kFubi5mzZplaCar1Qqr1YqYmBgAwJQpU1BUVGRo\nJgA4cOAAhg4dig4dOsDPzw/x8fHYp8g0dp07d8aPP/4IADh58iQ6depkcCIpIyMD2dnZSvzwO3bs\nGEpKShAZGYkePXqgrKwMt9xyC06fPm1oLqvVivj4eABATEwMWrVqhYqKCkMzAXJalEmTJgGQ/wcL\nCws9nqGmXs6cObO2Xur9rLu1qAshkJSUhIiICCxYsMCdm9Js2bJlKC0txfHjx7F582YMHz68dpy9\nUbp06YKgoCAcPXoUAJCTk4PevXsbmgkAwsLCkJ+fj99++w1CCOTk5CAiIsLoWADk9RHr168HAKxf\nv16JAwabzYYVK1YgKysLbdq0MToO+vbti1OnTuH48eM4fvw4rFYrioqKDP8BePfddyP3/ybdP3r0\nKCorK9FBgYl8QkJCsGfPHgBAbm4uevbs6dHtN1UvdX/W3XgyV3z66afCYrGIyMhIERUVJaKiosTO\nnTvduUld7Ha7MqNfDh06JKKjow0bDteUtLS02iGNs2bNqh2x4EkJCQmia9euwt/fX1itVvH222+L\niooKMWLECMOGNF6dad26dSIkJER079699rM+b948QzK1bt26dj/V1aNHD4+PfmksU2VlpZgxY4bo\n06ePGDBggNi9e7dHM9XNVfcztX//fjFw4EARGRkpBg8eLIqKijyaqal6qfez7pHb2RERkWeoMfyD\niIhcgkWdiMiHsKgTEfkQFnUiIh/Cok5E5ENY1ImIfMj/B6PFbDKd5xDkAAAAAElFTkSuQmCC\n" } ], "prompt_number": 217 }, { "cell_type": "code", "collapsed": false, "input": [ "rng = arange(2, 20)\n", "denom = map(lambda n: n ** 2 - (n - 1) ** 2, rng)\n", "plot(rng, (mean_errors_benford[:-1] - mean_errors_benford[1:]) / mean_errors_benford[:-1] / (denom))\n", "ylim((0, 0.05))\n", "grid(True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 218 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last result is quite different from what is shown on the original link but I'd like to finish here.\n", "My conclusions are as follows:\n", "\n", "- Very interesting blog article\n", "- IPython Notebook allows replicating most results\n", "- I learned about (and how to simulate) Benford's law\n", "- the function I wrote are sloooooooow and it would be lovely to learn (in a more general way) how to make my own functions fast by building more easily on Numpy functions\n", "- I often run into confusions because I'm using both Python lists and Numpy arrays. I believe I should try to use only the latter." ] } ], "metadata": {} } ] }