{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Oregon Curriculum Network](http://4dsolutions.net/ocn/)\n", "\n", "[School of Tomorrow (Home)](School_of_Tomorrow.ipynb)\n", "\n", "[PyCampNextLevel Outline](PyCampNextLevel.ipynb)\n", "\n", "![animated](anim.gif)\n", "\n", "![casino math](https://wikieducator.org/images/9/9a/Casino_math.jpg)\n", "\n", "# Casino Math\n", "\n", "Welcome to this Casino Math worksheet. At the School of Tomorrow (an allusion to a certain movie and book), we follow [a Silicon Forest proposal](https://wikieducator.org/Digital_Math) from my Oregon Curriculum Network, to look at maths in four dimensions: [Casino](https://wikieducator.org/Casino_Math), Supermarket, Neolithic and Futuristic (also known as Martian).\n", "\n", "In Casino Math we work with randomness, permutations, combintatorics, statistics, predictive models, ways of managing risk. \n", "\n", "In some subcultures (\"cults\") the Chief Risk Officer (CRO) has high hopes of joining the C-suite (CEO, CFO...).\n", "\n", "
\n", "The chief risk officer or chief risk management officer of a firm or corporation is the executive accountable for enabling the efficient and effective governance of significant risks, and related opportunities, to a business and its various segments. Risks are commonly categorized as strategic, reputational, operational, financial, or compliance-related. CROs are accountable to the Executive Committee and The Board for enabling the business to balance risk and reward. In more complex organizations, they are generally responsible for coordinating the organization's Enterprise Risk Management approach. \n", "
\n", "\n", "Every culture has ways of anticipating chaos (noise and uncertainty, disruption -- see VUCA) and coping with risks, however formalized with job titles and legal frameworks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Workbench Tools\n", "\n", "Every craft has its workbench tools, which may be heavy (hard to move) or as light as a feather. In Casino Math, with may think in terms of games of chance, expectations of winnings, possible outcomes and so on. We inherit from the culture of statisticians, which includes actuarial sciences and their somewhat morbid concerns (causes of death, likelihood of death by cause). \n", "\n", "Games have always included their life and death themes, amidst which we move our avatars, which have their lifetimes and levels.\n", "\n", "As of 2020, the Python toolkit has acheived widespread acceptance in many walks of life. At the School of Tomorrow, we assume these tools as a part of our Calculator of Tomorrow. The handheld calculator is still a useful tool, however our mission here (a form of prostelytizing), our bias, is towards using Jupyter Notebooks as a front end.\n", "\n", "\n", "\n", "On the backend, you will attach to (import) various tools, and not necessarily investigate their internals at every turn, given the work at hand.\n", "\n", "We're starting over with the basics in some sense, and yet availing ourselves of state of the art tools in another. Lets combine assumed naivte with state of the art sophistication." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integration\n", "\n", "Integration is a way of accumulating, as the MIT lecture linked below well explains. The integration-differentiation trip is a round trip. The first accumulates sums whereas the second dissects an accumulation into successive growth rates (change rates), so-called \"slopes\". The slope of something is a measure of steepness or rate of change.\n", "\n", "* [Big Picture of Calculus](https://youtu.be/UcWsDwg1XwM)\n", "* [Big Picture Derivatives](https://youtu.be/T_I-CUOc_bk)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![math dream](https://media.giphy.com/media/26gR0YFZxWbnUPtMA/giphy.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The salient feature of our high school level approach is we assume people of any age, with lots of experience, have reason to go through high school again, not because they've \"forgotten everything\" but because the content changes, or should. We have stopped picturing the high school curriculum as static, with \"future shock\" always postponed. The future is shocking mostly if you've had some expectation of a static condition, a status quo. That's an unrealistic expectation in many subcultures.\n", "\n", "### Connecting Calculus with Statistics\n", "The high school calculus I went through was quite divorced from statistics. The statisticians refer to probability density functions, and associated cumulative density functions, where the latter is the integral of the former, but the high school delta calc teachers rarely did much in the other direction, to connect their textbooks with the ones used in statistics.\n", "\n", "![derivative](https://media.giphy.com/media/3o7WIxxI7tLStjR2p2/giphy.gif)\n", "\n", "The fracturing of disciplines into too many subdisciplines is what led Buckminster Fuller (critical to our School of Tomorrow curriculum) to sound the alarm in *Operating Manual for Spaceship Earth* wherein he circled \"overspecialization\" as a leading cause of species and/or cultural extinction." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def integrate(f, dx=1e-08):\n", " \n", " def sumup(a, b):\n", " accum = 0\n", " summing = True\n", "\n", " while summing:\n", " accum += dx * f(a) # slice of area\n", " a += dx # increment a by dx\n", " if a >= b: # are we there yet?\n", " summing = False # stop summing\n", " \n", " return accum\n", " \n", " return sumup # return the callable function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking for [Symbolic Integration](http://www.learningaboutelectronics.com/Articles/How-to-find-the-integral-of-a-function-in-Python.php)?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What's important to our approach above is \"to integrate\" (the verb) is applied to a function, and returns a function. Ditto for differentiation. \n", "\n", "Both the integrate and differentiate functions eat functions and return functions. Notice the keyword ```def``` inside an outer ```def```: that's a function being defined and then returned as the end product. What the returned function will \"eat\" (in terms of x) is left for later.\n", "\n", "The internal ```sumup``` function has a single responsibibility, to accumulate ```dx * f(a)``` rectangles per the standard textbook intro. Trek across a curve accumulating all the areas. That's purposely rather simple-minded.\n", "\n", "![Riemann Sum](https://media.giphy.com/media/prqer53bXBopG/giphy.gif)\n", "\n", "[Riemann_Sum on Wikipedia](https://media.giphy.com/media/prqer53bXBopG/giphy.gif)\n", "\n", "Clearly dx is not *infinitely* small so this is still digital more than continuous mathematics. That's not unusual as \"the continuous\" is associated with the \"theoretical limit\" which we only approximate with our assumed values for delta x. \n", "\n", "We'll be allowing it to be larger that 0.00000001 in examples below." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1.000000e-08'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"{:e}\".format(0.00000001)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def differentiate(f, dx=1e-8):\n", " def differ(x):\n", " return ((f(x+dx) - f(x))/dx)\n", " return differ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, the default dx is a token \"very small\" value. The returned function will have taken whatever value \"to heart\" i.e. the time to set it is when asking to differentiate. \n", "\n", "The differ function is a \"wiggler\" in that it slightly wiggles x to get a corresponding wiggle in y, which it then ratios. A good mnenomic for \"slope\" is: wiggle in y divided by wiggle in x, with y considered the \"dependent\" variable thanks to the function connecting them. We usually say \"delta\" in place of \"wiggle\" which also means \"change\".\n", "\n", "![slope at a point](https://media.giphy.com/media/rDaWuLJZxAp6o/giphy.gif)\n", "\n", "The reason we call ordinary calculus \"delta calc\" is because it's about studying rates of change, and how those rates affect accumulation. A sloping upward line adds larger area slices." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def line_maker(slope, intercept):\n", " m, b = slope, intercept\n", " def line(x):\n", " y = m * x + b\n", " return y\n", " return line" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, the focus is on functions that make functions, which we call factory functions. ```line_maker``` is designed to spit out any linear function, with any slope and y-intercept we desire. Such lines become the focus of \"linear regression\" problems later, wherein we're looking for a \"best fit\" predictor, some function that does the best job of predicting y, given x, and assuming some quasi-linear relationship.\n", "\n", "We do not expect linear functions to precisely predict outcomes, but to do so within some interval of confidance. Computing that interval, based on actual sample data, is the topic of another worksheet." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "domain = np.arange(0,5,.01)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "pretty_steep = line_maker(4, 2)\n", "output = [pretty_steep(x) for x in domain]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2.0, 2.04, 2.08, 2.12, 2.16, 2.2, 2.24, 2.2800000000000002, 2.32, 2.36]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output[:10] # first 10 points" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "integral_pretty_steep = integrate(pretty_steep, dx=0.01) # return a function" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "output = [integral_pretty_steep(min(domain), x) for x in domain]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "domain = np.arange(0,5,.01)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our integral functions approximates the area under a curve from some starting value to some x value. In order to fix the starting value, we might use ```functools.partial```. It gives us a new function with a first value already filled in. That's for the benefit of the differentiator, which returns a function that expects one argument only, the area from some fixed ```a``` to our current ```x```.\n", "```python\n", " def differentiate(f, dx=1e-8):\n", " def differ(x):\n", " return ((f(x+dx) - f(x))/dx)\n", " return differ\n", "```" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from functools import partial\n", "definite_integral = partial(integral_pretty_steep, min(domain)) # bind a\n", "Df = differentiate(definite_integral, 0.01)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "output = [Df(x) for x in domain]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Normal Distribution\n", "\n", "So far, this presentation has not deviated too much from the usual / average presentation of delta calculus, but for calling it \"delta calc\" and introducing triangles and tetrahedrons as paradigm area and volume shapes.\n", "\n", "For the most part, we'll keep going back to XY and XYZ grid computations and leave the futuristic stuff to Martian Math.\n", "\n", "However, another departure from normal is to feature the Normal Distribution early and often, with other Probably Distribution Functions to follow. We will adhere to a statistics intensive presentation in other words. The bridge from pdf to cdf is one of integration, and vice versa." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$ pdf(x,\\mu,\\sigma) = \\frac{1}{ \\sigma\\sqrt{2 \\pi}} e^{\\left(-\\frac{{\\left(\\mu - x\\right)}^{2}}{2 \\, \\sigma^{2}}\\right)} $" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import display, Latex\n", "\n", "ltx = '$ pdf(x,\\\\mu,\\\\sigma) = \\\\frac{1}{ \\\\sigma' + \\\n", " '\\\\sqrt{2 \\\\pi}} e^{\\\\left(-\\\\frac{{\\\\left(\\\\mu - ' + \\\n", " 'x\\\\right)}^{2}}{2 \\\\, \\\\sigma^{2}}\\\\right)} $'\n", "display(Latex(ltx))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "import math\n", "def g(x):\n", " return (1/(sigma * math.sqrt(2 * np.pi))) * math.exp(-0.5 * ((mu - x)/sigma)**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By adjusting sigma and mu below, you're free to describe any \"bell curve\" under the sun. A typical procedure is to \"alter perspective\" by mapping any and every bell curve to the standard bell curve, checking the Z-Score, and learning what constitutes a \"standard deviation\" in terms of original units." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "sigma = 1; mu = 0" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "vg = np.vectorize(g)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "domain = np.arange(-5,5,.01)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "output = vg(domain) # thanks to vectorize, we can dispense with the looping structure" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "cdf = integrate(vg, 0.01)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "output = [cdf(min(domain), b) for b in domain] # this could take a long time...." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111') # 1 row, 1 column, subplot 1\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "import scipy.integrate as integral" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "result = [integral.quad(vg, min(domain), b)[0] for b in domain]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111') # 1 row, 1 column, subplot 1\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, result);" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "domain = np.arange(-5,5,.01)\n", "definite_integral = partial(cdf, min(domain))\n", "Df = differentiate(definite_integral, 0.01)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the idea of a definite integral. How much have we accumulated between start point ```a``` and end point ```b```?\n", "\n", "![matplotlib integral](https://matplotlib.org/3.2.1/_images/sphx_glr_integral_001.png)\n", "\n", "[Original Gallery](https://matplotlib.org/3.2.1/gallery/showcase/integral.html)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "output = [Df(x) for x in domain] # this could take a long time...." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111') # 1 row, 1 column, subplot 1\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output);" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib.patches import Polygon\n", "\n", "fig = plt.figure() # fresh and new\n", "ax = plt.subplot('111') # 1 row, 1 column, subplot 1\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "ax.plot(domain, output)\n", "ix = np.arange(-1,1,.01)\n", "iy = vg(ix)\n", "output = vg(domain) # thanks to vectorize, we can dispense with the looping structure\n", "verts = [(-1, 0), *zip(ix, iy), (1, 0)]\n", "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", "ax.add_patch(poly)\n", "plt.show();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Now that we've seen all that...\n", "\n", "scipy.stats has ```norm``` so we *don't have to* hand-code integration" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import norm" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(10,4)) # fresh and new\n", "\n", "ax = plt.subplot('121') # 1 row, 1 column, subplot 1\n", "# Plot between -10 and 10 with .001 steps.\n", "x_axis = np.arange(-10, 10, 0.001)\n", "# Mean = 0, SD = 2.\n", "plt.plot(x_axis, norm.pdf(x_axis,0,2))\n", "\n", "ax = plt.subplot('122') # 1 row, 1 column, subplot 1\n", "# Plot between -10 and 10 with .001 steps.\n", "x_axis = np.arange(-10, 10, 0.001)\n", "# Mean = 0, SD = 2.\n", "plt.plot(x_axis, norm.cdf(x_axis,0,2))\n", "\n", "plt.show();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# APPENDIX: ABOUT AREA AND VOLUME\n", "\n", "\"2\n", "\n", "Area of lower triangle = 4 in equilateral triangular units (etus).\n", "\n", "\"4\n", "\n", "Area of lower triangle = A times B (the two edge lengths from any angle) in etus.\n", "\n", "Picture an equilateral triangle, with a 60 degree apex. As the apex gradually rises above the base, all angles remain 60 degrees, however the total area is increasing as a 2nd power of the linear rate of change, measured by altitude or any edge. A second power curve would start a 0 and show the increasing area as a curve, the right half of a parabola.\n", "\n", "A regular tetrahedron's volume would likewise increase at the 3rd power rate, as all the edges increased at a linear rate. Such is the ```edge:area:volume``` relationship for any shape." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![clustering data points](https://media.giphy.com/media/wZ04FZrdMqCDC/giphy.gif)" ] } ], "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.4" } }, "nbformat": 4, "nbformat_minor": 4 }