{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# [George McNinch](http://gmcninch.math.tufts.edu) Math 87 - Spring 2024\n", "\n", "# Week 09\n", "\n", "# Statistics & the Central Limit Theorem\n", "--------------" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Why statistics?\n", "================\n", "\n", "From the point-of-view of modeling, one often needs information about average values and expected values.\n", "\n", "To reason precisely in this setting, we need the language of statistics.\n", "\n", "Here are some examples to keep in mind for our discussion:\n", "\n", "- Consider a *lottery* in which 4 million tickets are sold each week, for \\\\$1 each. Of these, one ticket wins \\\\$1.5 million, 500 tickets win \\\\$ 800, \\\\$10,000 tickets win \\\\$10. If you buy a ticket, how much should you *expect* to win??\n", "\n", "- At a certain grocery store between the hours of 10 AM and noon, one expects a customer needs to check out every two minutes, and the average check-out time is 3 minutes. How many registers should be staffed?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Mean, variance, and standard deviation\n", "======================================\n", "\n", "Let $X = \\{x_i\\}_{i=1,\\dots,n}$ be a data set of $n$ values (real numbers!).\n", "\n", "The **mean** (or average) of $X$ is $$\\mu = \\mu(X) = \\dfrac{1}{n} \\sum_{i=1}^n x_i.$$\n", "\n", "The **median** of $X$ is the number $\\overline{x}$ with the following properties:\n", "\n", "$x_i \\le \\overline{x}$ for $\\dfrac{n}{2}$ values of $i \\in \\{1,2,\\dots,n\\} \\quad \\text{and} \\quad \n", "x_j \\ge \\overline{x}$ for $\\dfrac{n}{2}$ values of $j \\in \\{1,2,\\dots,n\\}.$\n", "\n", "Suppose we re-arrange the numbers $x_i$ so that\n", "\n", "$$x_1 \\le x_2 \\le \\cdots \\le x_{n-1} \\le x_n;$$\n", "\n", "if $n$ is odd, then $\\overline{x} = x_{(n+1)/2}$.\n", "\n", "if $n$ is even, a common convention is take $\\overline{x}$ to be the average of\n", "$x_{n/2}$ and $x_{1+n/2}$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# `Pandas`\n", "\n", "We will sometimes (try to) use the `pandas` library since it provides a bunch of statistical functions. \n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
01234
0123.045.0
1123.06NaN
\n", "
" ], "text/plain": [ " 0 1 2 3 4\n", "0 1 2 3.0 4 5.0\n", "1 1 2 3.0 6 NaN" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = [[1,2,3.0,4,5],\n", " [1,2,3,6]]\n", "X = pd.DataFrame(d)\n", "X\n" ] }, { "cell_type": "code", "execution_count": 3, "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", "
meanmedian
03.03.0
13.02.5
\n", "
" ], "text/plain": [ " mean median\n", "0 3.0 3.0\n", "1 3.0 2.5" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame({\"mean\":X.mean(axis=1),\n", " \"median\":X.median(axis=1)})" ] }, { "cell_type": "code", "execution_count": 4, "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", "
meanmedian
01.01.0
12.02.0
23.03.0
35.05.0
45.05.0
\n", "
" ], "text/plain": [ " mean median\n", "0 1.0 1.0\n", "1 2.0 2.0\n", "2 3.0 3.0\n", "3 5.0 5.0\n", "4 5.0 5.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame({\"mean\":X.mean(axis=0),\n", " \"median\":X.median(axis=0)})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "As an aside, this [blog post](https://www.sharpsightlabs.com/blog/numpy-axes-explained/) (I don't know anything about the author...!) has some - I think - useful discussion of *axes* in `numpy` and `Python`." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Let's generate some *random* data use the ``python`` module ``pandas``, and compute means and medians.\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
0123456789
0914972175121311
151713171916124512
291818997719112
31417111917111492
4101510141716318313
.................................
9521110121115601816
96101416191818158144
978612919133111
9817111314176147128
9915614187196479
\n", "

100 rows × 10 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9\n", "0 9 14 9 7 2 17 5 12 13 11\n", "1 5 17 13 17 19 16 12 4 5 12\n", "2 9 18 18 9 9 7 7 19 11 2\n", "3 14 17 1 1 19 17 11 14 9 2\n", "4 10 15 10 14 17 16 3 18 3 13\n", ".. .. .. .. .. .. .. .. .. .. ..\n", "95 2 11 10 12 11 15 6 0 18 16\n", "96 10 14 16 19 18 18 15 8 14 4\n", "97 8 6 12 9 1 9 13 3 11 1\n", "98 17 11 13 14 17 6 14 7 12 8\n", "99 15 6 14 18 7 19 6 4 7 9\n", "\n", "[100 rows x 10 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from numpy.random import default_rng\n", "\n", "# make a random-number generator\n", "rng = default_rng()\n", "\n", "# generate an array of random integers\n", "X = pd.DataFrame(rng.integers(0,20,size=(100,10)))\n", "X\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 9\n", "1 5\n", "2 9\n", "3 14\n", "4 10\n", " ..\n", "95 2\n", "96 10\n", "97 8\n", "98 17\n", "99 15\n", "Name: 0, Length: 100, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[0]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(9)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[0][0]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
medianmean
09.09.01
111.010.11
210.09.28
39.59.30
410.09.81
59.09.10
69.09.36
78.08.98
811.09.78
910.09.79
\n", "
" ], "text/plain": [ " median mean\n", "0 9.0 9.01\n", "1 11.0 10.11\n", "2 10.0 9.28\n", "3 9.5 9.30\n", "4 10.0 9.81\n", "5 9.0 9.10\n", "6 9.0 9.36\n", "7 8.0 8.98\n", "8 11.0 9.78\n", "9 10.0 9.79" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame({\"median\":X.median(),\n", " \"mean\":X.mean()})" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "What do you lose by only knowing mean/median?\n", "==============================================\n", "\n", "Suppose that $X = \\{x_i\\}$ represents wait times in minutes at a certain bus-stop at 7:00 AM each day.\n", "Over $n$ days, you collect the wait time values $x_1,x_2,\\dots,x_n$. The mean wait time \n", "\n", "$$\\mu(X) = \\dfrac{1}{n} \\sum_{i=1}^n x_i$$\n", "\n", "is surely a relevant statistic! \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Let's consider a number of different possible outcomes,\n", "and compute the mean/median for the alternative outcomes.\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
week1week2week3week4week5
011311
121322
251333
377553
437565
56757010
\n", "
" ], "text/plain": [ " week1 week2 week3 week4 week5\n", "0 1 1 3 1 1\n", "1 2 1 3 2 2\n", "2 5 1 3 3 3\n", "3 7 7 5 5 3\n", "4 3 7 5 6 5\n", "5 6 7 5 70 10" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = pd.DataFrame({\"week1\":[1,2,5,7,3,6],\n", " \"week2\":[1,1,1,7,7,7],\n", " \"week3\":[3,3,3,5,5,5],\n", " \"week4\":[1,2,3,5,6,70],\n", " \"week5\":[1,2,3,3,5,10]})\n", "X\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
meanmedian
week14.04.0
week24.04.0
week34.04.0
week414.54.0
week54.03.0
\n", "
" ], "text/plain": [ " mean median\n", "week1 4.0 4.0\n", "week2 4.0 4.0\n", "week3 4.0 4.0\n", "week4 14.5 4.0\n", "week5 4.0 3.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame({\"mean\":X.mean(),\n", " \"median\":X.median()})" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Observe:\n", "\n", "The crucial observation is that a number of different outcomes produce the same or similar medians and means!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Variance\n", "========\n", "\n", "The preceding data was supposed to persuade you that by themselves, the mean and median hide information -- e.g. the \"range\" of the values taken.\n", "\n", "The **variance** of $X$, written $\\operatorname{var}(X)$, is the mean of the following values:\n", "\n", "$$\\{(x_i - \\mu)^2 \\mid i = 1,2,\\dots,n\\};$$\n", "\n", "thus\n", "$$\\operatorname{var}(X) = \\dfrac{1}{n} \\sum_{i=1}^n (x_i - \\mu)^2.$$\n", "\n", "The variance amounts to the average distance (really: squared distance) of the data values from the average value.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Unfortunately the *units* of the variance are the square of those of $X$. E.g. if the values in $X$ measure\n", "minutes (waiting for the bus, say) then the units of $\\operatorname{var}(X)$ are $\\operatorname{min}^2$.\n", "\n", "So rather than the variance, one often consider the **standard deviation** $\\sigma = \\sigma(X)$ which by definition is the *square root* of the variance:\n", "\n", "$$\\sigma(X) = \\left(\\operatorname{var}(X)\\right)^{1/2} = \\left(\\dfrac{1}{n} \\sum_{i=1}^n (x_i - \\mu)^2\\right)^{1/2}.$$\n", "\n", "The units of $\\sigma(X)$ match those of $X$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "subslide" } }, "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", "
week1week2week3week4week5
011311
121322
251333
377553
437565
56757010
\n", "
" ], "text/plain": [ " week1 week2 week3 week4 week5\n", "0 1 1 3 1 1\n", "1 2 1 3 2 2\n", "2 5 1 3 3 3\n", "3 7 7 5 5 3\n", "4 3 7 5 6 5\n", "5 6 7 5 70 10" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "fragment" } }, "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", "
variancestandard deviation
week15.62.366432
week210.83.286335
week31.21.095445
week4742.727.252523
week510.43.224903
\n", "
" ], "text/plain": [ " variance standard deviation\n", "week1 5.6 2.366432\n", "week2 10.8 3.286335\n", "week3 1.2 1.095445\n", "week4 742.7 27.252523\n", "week5 10.4 3.224903" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame({\"variance\": X.var(),\n", " \"standard deviation\":X.std()})" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Random Variables & probability density functions\n", "================================================\n", "\n", "Now view the data set $X$ as arising from some *process*. \n", "\n", "For example, $X$ may be generated by rolling a 6-sided dice.\n", "Or $X$ may be generated by finding the wait-time at a certain bus stop at 7:00 AM.\n", "\n", "We want to be able to study or speak about the process that controls the generation of this data.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "For this, we want to define the notion of a *random variable*. If you look e.g. at the discussion on the\n", "[wikipedia page](https://en.wikipedia.org/wiki/Random_variable) you'll see the following:\n", "\n", "> In probability and statistics, a random variable [...] is described informally as a variable whose values depend on outcomes of a random phenomenon\n", "\n", "> A random variable's possible values might represent the possible outcomes of a yet-to-be-performed experiment, or the possible outcomes of a past experiment whose already-existing value is uncertain (for example, because of imprecise measurements or quantum uncertainty). They may also conceptually represent either the results of an \"objectively\" random process (such as rolling a die) or the \"subjective\" randomness that results from incomplete knowledge of a quantity. The meaning of the probabilities assigned to the potential values of a random variable is not part of probability theory itself\n", "\n", "So we'll just say that a random variable $X$ is a variable that assumes a value each time a particular random process is realized.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Examples of random variables:\n", "-----------------------------\n", "\n", "- The value $Y$ representing the outcome of rolling a 6-sided dice.\n", "\n", " $Y$ is a *discrete* random variable, because $Y$ can only take the values $\\{1,2,3,4,5,6\\}$.\n", " \n", "- The value $T$ representing wait-time at the bus, in minutes.\n", "\n", " $T$ is a *continuous* random variable, since the wait time is described by a non-negative *real number*." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Probability distribution\n", "========================\n", "\n", "A probability distribution describes the probabilities with which a random variable assume its possible values.\n", "\n", "For example, if $Y$ is the random variable as before which describes a roll of a *fair* 6-sided dice, there\n", "are 6 outcomes: $r = 1,2,3,4,5,6$. The probability that $Y$ assumes any of these values is\n", "$$P(Y=r) = \\dfrac{1}{6}.$$\n", "\n", "Let $Y2$ be the random variable that describes the result of adding the values for a simultaneous roll of 2 fair 6-sided dice. Here the outcomes are the values $r=2,3,4,\\dots,12$.\n", "\n", "Let's compute the probabilities. The main thing we need is to count the number of times that a number $k$ can be written\n", "as a sum $k=i+j$ where $1 \\le i,j \\le 6$.\n", "\n", "We use the ``value_counts`` method for this:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "0 \n", "7 0.166667\n", "6 0.138889\n", "8 0.138889\n", "9 0.111111\n", "5 0.111111\n", "4 0.083333\n", "10 0.083333\n", "11 0.055556\n", "3 0.055556\n", "2 0.027778\n", "12 0.027778\n", "Name: count, dtype: float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from itertools import product\n", "I = [1,2,3,4,5,6]\n", "\n", "results_2 = pd.DataFrame([i+j for i,j in product(I,I)])\n", "Y2_prob = results_2.value_counts()/len(I)**2\n", "\n", "Y2_prob" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 \n", "7 6\n", "6 5\n", "8 5\n", "9 4\n", "5 4\n", "4 3\n", "10 3\n", "11 2\n", "3 2\n", "2 1\n", "12 1\n", "Name: count, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_2.value_counts()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The indices ``r`` in the dataframe ``Y2_prob`` represent the possible dice-roll values, and the values represent the corresponding probabilities.\n", "\n", "Continuing this point of view, consider the random variable Y3 determined by the sum of 3 simultaneous rolls of a 6-sided dice." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "0 \n", "10 0.125000\n", "11 0.125000\n", "12 0.115741\n", "9 0.115741\n", "8 0.097222\n", "13 0.097222\n", "14 0.069444\n", "7 0.069444\n", "15 0.046296\n", "6 0.046296\n", "5 0.027778\n", "16 0.027778\n", "17 0.013889\n", "4 0.013889\n", "3 0.004630\n", "18 0.004630\n", "Name: count, dtype: float64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_3 = pd.DataFrame([i+j+k for i,j,k in product(I,I,I)])\n", "Y3_prob = results_3.value_counts()/len(I)**3\n", "\n", "Y3_prob" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "0\n", "1 0.166667\n", "2 0.166667\n", "3 0.166667\n", "4 0.166667\n", "5 0.166667\n", "6 0.166667\n", "Name: count, dtype: float64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "## \n", "results_1 = pd.DataFrame([i for i in I])\n", "Y1_prob = results_1.value_counts()/len(I)\n", "Y1_prob" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Probability distributions -- case of a continuous random variable\n", "==================================================================\n", "\n", "For a continuous random variable $X$ and a real number $r$, usually the probability $P(X=r)$ is **zero**;\n", "this reflects the fact that there are *a lot* of real numbers!\n", "\n", "Instead, in this setting one considers the *probability density function* $f(x)$ with the following property:\n", "\n", "the probability that $X$ is in the interval $[a,b]$ is \n", "\n", "$$P(a\\le X \\le b) = \\int_a^b f(x)dx$$\n", "\n", "Note that the value of the random variable $X$ has to be *somewhere*, so in particular we require that\n", "\n", "$$P(-\\infty < X < \\infty) = \\int_{-\\infty}^\\infty f(x) dx = 1.$$\n", "\n", "On the other hand, as is well-known from integral calculus, we have:\n", "\n", "$$P(X=a) = \\int_a^a f(x) dx = 0$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Statistics for a discrete random variable\n", "\n", "For a discrete random variable $Y$, the expected value $E(Y)$ is the weighted average of the possible values\n", "that $Y$ can take. More precisely, if the values that $Y$ can take are $I =\\{y_1,y_2,\\dots,y_N\\}$, then\n", "write_json('week09--data-market.json',list(map(lambda x: str(x),data)))\n", "\n", "$$E(Y) = \\sum_{i=1}^N y_iP(y_i)= \\sum_{i=1}^N y_iP(Y=y_i).$$\n", "\n", "and the *variance* of $Y$ is \n", "\n", "$$\\operatorname{var}(Y) = E\\left((Y-\\mu)^2\\right) \\quad \\text{if $\\mu = E(Y)$}$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Example:\n", "\n", "- one roll of 6-sided dice\n", "\n", " If $Y$ represents rolling a fair 6-sided dice, $P(r) = P(Y=r) = \\dfrac{1}{6}$, and so\n", "\n", " $$E(Y) = \\sum_{i=1}^6 \\dfrac{1}{6}\\cdot i = \\dfrac{1+2+3+4+5+6}{6} = \\dfrac{21}{6} = 3.5$$\n", "\n", " and the variance is\n", " \n", " $$\\operatorname{var}(Y) = E\\left( (Y-3.5)^2 \\right) = \\sum_{i=1}^6 \\dfrac{(3.5-i)^2}{6}$$\n", " \n", "\n", "Let's confirm this using ``python``:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[3.5, 2.9166666666666665]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y_expected = sum([value*prob for (value,),prob in Y1_prob.items()],0)\n", "\n", "Y_var = sum([(Y_expected - value)**2 * prob for (value,),prob in Y1_prob.items()],0)\n", "\n", "[Y_expected, Y_var]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- two or three 6-sided dice\n", "\n", " If $Y2$, $Y3$ represent the simultaneously rolling of two, resp. three, 6-sided dice and adding the results, we computed above\n", " the values $P(Y2 = r)$ for $2 \\le r \\le 12$ and $P(Y3=r)$ for $3 \\le r \\le 18$.\n", " \n", " Let's compute the expected values. Recall that the probabilities are stored in the variables\n", " ``Y2_prob`` and ``Y3_prob``." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[6.999999999999998, 5.833333333333333]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y2_expected = sum([value*prob for (value,),prob in Y2_prob.items()],0)\n", "Y2_var = sum([(Y2_expected - value)**2 * prob for (value,),prob in Y2_prob.items()],0)\n", "\n", "[Y2_expected, Y2_var]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[10.500000000000004, 8.75]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y3_expected = sum([value*prob for (value,),prob in Y3_prob.items()],0)\n", "Y3_var = sum([(Y3_expected - value)**2 * prob for (value,),prob in Y3_prob.items()],0)\n", "\n", "\n", "[Y3_expected, Y3_var]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Statistics for a continuous random variable (definitions)\n", "===========================================\n", "\n", "Suppose the continuous random variable $Y$ is determined by the probability distribution function $f(x)$.\n", "The expected value $E(Y)$ is given by\n", "\n", "$$\\mu = E(Y) = \\int_{-\\infty}^\\infty x\\cdot f(x) dx$$\n", "\n", "The *variance* of $Y$ is defined to be\n", "\n", "$$\\sigma^2 = \\operatorname{var}(Y) = \\int_{-\\infty}^\\infty (x - \\mu)^2\\cdot f(x) dx$$\n", "\n", "and the standard deviation is\n", "\n", "$$\\sigma = \\sqrt{\\operatorname{var}(Y)}$$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Normal distribution\n", "===================\n", "\n", "Perhaps the most important probability distribution function is known as the *Gaussian* or *normal* distribution. For mean $\\mu$ and standard deviation $\\sigma$, the probability density function is determined by\n", "\n", "$$f(x) = \\dfrac{1}{\\sqrt{2\\pi \\sigma^2}} \\exp\\left({\\dfrac{-(x-\\mu)^2}{2\\sigma^2}}\\right)$$\n", "\n", "This probability distribution function determines a continuous random variable \n", "$Y_{\\operatorname{normal}}$ with expected value $\\mu$ and standard deviation $\\sigma$; these latter conditions mean:\n", "\n", "$$\\mu = E(Y_{\\operatorname{normal}}) = \\int_{-\\infty}^\\infty x \\cdot \\dfrac{1}{\\sqrt{2\\pi \\sigma^2}} \\exp\\left({\\dfrac{-(x-\\mu)^2}{2\\sigma^2}}\\right) dx$$\n", "\n", "and\n", "\n", "$$\\sigma^2 = \\operatorname{var}(Y_{\\operatorname{normal}}) = \\int_{-\\infty}^\\infty (x-\\mu)^2 \\cdot \\dfrac{1}{\\sqrt{2\\pi \\sigma^2}} \\exp\\left({\\dfrac{-(x-\\mu)^2}{2\\sigma^2}}\\right) dx $$\n", "\n", "-------" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAHDCAYAAADm78EeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZjRJREFUeJzt3Xl4lNXh9vF7ZrKvQEISEgJh30kQSAQXUKOx4oIrUiuI1rYW11hb8NeCvrbFVqSoUKm0ilYt1A0VEItR3EARQmRfIltIyMaSlWwz8/6RZCASIANJnlm+n+uai8mTMzP3yEjmzjlzHpPdbrcLAAAAALyM2egAAAAAAGAEyhAAAAAAr0QZAgAAAOCVKEMAAAAAvBJlCAAAAIBXogwBAAAA8EqUIQAAAABeiTIEAAAAwCtRhgAAAAB4JcoQAKBdjR07VmPHjj3n25tMJj3xxBOOrxctWiSTyaR9+/add7azueuuu5SQkOD4et++fTKZTJo9e3abP7YkPfHEEzKZTO3yWADgDShDAACvU1lZqSeeeEKrV682OsopXDkbAHgayhAAwK3deeedOn78uLp3797i21RWVurJJ590unAsXLhQO3fudDKhc86U7fe//72OHz/epo8PAN6EMgQAXsxut7v9m2uLxaKAgIA2XT5WUVEhSfL19ZW/v3+bPc7Z+Pj4KCAgwLDHBwBPQxkCABfV+PmQ7Oxs3XXXXerQoYPCw8M1ZcoUVVZWNhlbV1enp556Sr169ZK/v78SEhL0+OOPq7q6usm4hIQEXXvttfr44481YsQIBQYG6h//+IdWr14tk8mk//73v3ryyScVFxen0NBQ3XLLLSopKVF1dbUefvhhRUVFKSQkRFOmTDnlvl955RVdfvnlioqKkr+/vwYOHKgXX3zxnJ9/dXW1HnnkEXXu3FmhoaG6/vrrdfDgwVPGNfeZofXr1ystLU2RkZEKDAxUjx49dPfdd0uq/5xP586dJUlPPvmkTCZTk88h3XXXXQoJCdEPP/yga665RqGhobrjjjsc3zv5M0Mn+9vf/qbu3bsrMDBQY8aM0ZYtW5p8/3SflTr5Ps+WrbnPDDn7d//VV18pOTlZAQEB6tmzp1577bVmnw8AeAMfowMAAM7stttuU48ePTRr1ixlZmbqn//8p6KiovSXv/zFMebnP/+5Xn31Vd1yyy169NFH9e2332rWrFnavn273nvvvSb3t3PnTk2cOFG//OUvde+996pfv36O782aNUuBgYGaNm2asrOz9cILL8jX11dms1lHjx7VE088oW+++UaLFi1Sjx49NGPGDMdtX3zxRQ0aNEjXX3+9fHx89OGHH+rXv/61bDabpk6d6vTz/vnPf67XX39dP/3pTzV69Gh9+umnGjdu3FlvV1hYqKuuukqdO3fWtGnT1KFDB+3bt0/vvvuuJKlz58568cUXdd999+nGG2/UTTfdJEkaOnSo4z7q6uqUlpamiy++WLNnz1ZQUNAZH/O1115TWVmZpk6dqqqqKj333HO6/PLLtXnzZkVHR7f4Obck248583efnZ2tW265Rffcc48mT56sl19+WXfddZeGDx+uQYMGtTgnAHgMOwDAJc2cOdMuyX733Xc3OX7jjTfaIyIiHF9nZWXZJdl//vOfNxn3m9/8xi7J/umnnzqOde/e3S7JvnLlyiZjP/vsM7sk++DBg+01NTWO4xMnTrSbTCb7T37ykybjR40aZe/evXuTY5WVlac8h7S0NHvPnj2bHBszZox9zJgxp3/iJz2nX//6102O//SnP7VLss+cOdNx7JVXXrFLsu/du9dut9vt7733nl2S/bvvvjvt/RcVFZ1yP40mT55sl2SfNm1as987+Xnv3bvXLskeGBhoP3jwoOP4t99+a5dkf+SRR876vH98n2fK1viaaHQuf/dffPGF41hhYaHd39/f/uijj57yWADgDVgmBwAu7le/+lWTry+55BIdPnxYpaWlkqQVK1ZIktLT05uMe/TRRyVJy5cvb3K8R48eSktLa/axJk2aJF9fX8fXKSkpstvtjiVmJx/PyclRXV2d41hgYKDjeklJiYqLizVmzBjt2bNHJSUlLXqujRqf04MPPtjk+MMPP3zW23bo0EGStGzZMtXW1jr1uCe77777Wjx2/PjxiouLc3ydnJyslJQUx/NoK87+3Q8cOFCXXHKJ4+vOnTurX79+2rNnT5vmBABXRRkCABfXrVu3Jl937NhRknT06FFJ0v79+2U2m9W7d+8m42JiYtShQwft37+/yfEePXq0+LHCw8MlSfHx8acct9lsTUrO119/rdTUVAUHB6tDhw7q3LmzHn/8cUlyugw1PqdevXo1OX7ykr7TGTNmjG6++WY9+eSTioyM1A033KBXXnnllM/QnImPj4+6du3a4vF9+vQ55Vjfvn3b/NxHzv7d//jvV6p/PTW+lgDA21CGAMDFWSyWZo/b7fYmX7d0N7WTZ3Ba+lhny/DDDz/oiiuuUHFxsebMmaPly5dr1apVeuSRRyRJNputRdlag8lk0ttvv621a9fq/vvvV25uru6++24NHz5c5eXlLboPf39/mc2t+yPydH8/Vqu1ze77x1r6WgIAb0EZAgA31717d9lsNu3evbvJ8YKCAh07dsyp8++cqw8//FDV1dX64IMP9Mtf/lLXXHONUlNTz1i8zqTxOf3www9Njjtzjp8LL7xQf/rTn7R+/Xq98cYb2rp1qxYvXiyp5eWhpX78316Sdu3a1WTnuY4dO+rYsWOnjPvx7I0z2Vzh7x4A3BllCADc3DXXXCNJmjt3bpPjc+bMkaQW7cB2vhpnHE6eYSgpKdErr7xyTvf3k5/8RJL0/PPPNzn+4+fYnKNHj54y05GUlCRJjqVyjbvDNVdOzsXSpUuVm5vr+HrdunX69ttvHc9Dknr16qUdO3aoqKjIcez777/X119/3eS+nMnmCn/3AODO2FobANxcYmKiJk+erJdeeknHjh3TmDFjtG7dOr366qsaP368LrvssjbPcNVVV8nPz0/XXXedfvnLX6q8vFwLFy5UVFSUDh065PT9JSUlaeLEifr73/+ukpISjR49WhkZGcrOzj7rbV999VX9/e9/14033qhevXqprKxMCxcuVFhYmKM8BAYGauDAgVqyZIn69u2rTp06afDgwRo8eLDTWSWpd+/euvjii3Xfffepurpac+fOVUREhH772986xtx9992aM2eO0tLSdM8996iwsFALFizQoEGDHJthOJvNFf7uAcCdUYYAwAP885//VM+ePbVo0SK99957iomJ0fTp0zVz5sx2efx+/frp7bff1u9//3v95je/UUxMjO677z517tz5lJ3oWurll19W586d9cYbb2jp0qW6/PLLtXz58lM2c/ixxkKwePFiFRQUKDw8XMnJyXrjjTeabB7xz3/+Uw888IAeeeQR1dTUaObMmedchiZNmiSz2ay5c+eqsLBQycnJmjdvnrp06eIYM2DAAL322muaMWOG0tPTNXDgQP373//Wm2++qdWrVze5P2eyGf13DwDuzGTnU5MAAAAAvBCfGQIAAADglShDAAAAALwSZQgAAACAV6IMAQAA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tmPHDtlsNv3jH//Q1q1b9be//U0LFizQ448/bnQ0uJAlS5YoPT1dM2fOVGZmphITE5WWlqbCwkKjo8EFff7555o6daq++eYbrVq1SrW1tbrqqqtUUVFhdDS4uO+++07/+Mc/NHToUKOjoBWwtTYM9dFHHyk9PV3vvPOOBg0apI0bNyopKcnoWHADzzzzjF588UXt2bPH6ChwESkpKRo5cqTmzZsnSbLZbIqPj9cDDzygadOmGZwOrq6oqEhRUVH6/PPPdemllxodBy6qvLxcF1xwgf7+97/rj3/8o5KSkjR37lyjY+E8MDMEwxQUFOjee+/Vv//9bwUFBRkdB26mpKREnTp1MjoGXERNTY02bNig1NRUxzGz2azU1FStXbvWwGRwFyUlJZLEvys4o6lTp2rcuHFN/q2Be/MxOgC8k91u11133aVf/epXGjFihPbt22d0JLiR7OxsvfDCC5o9e7bRUeAiiouLZbVaFR0d3eR4dHS0duzYYVAquAubzaaHH35YF110kQYPHmx0HLioxYsXKzMzU999953RUdCKmBlCq5o2bZpMJtMZLzt27NALL7ygsrIyTZ8+3ejIMFBLXy8ny83N1dVXX61bb71V9957r0HJAXiSqVOnasuWLVq8eLHRUeCicnJy9NBDD+mNN95QQECA0XHQivjMEFpVUVGRDh8+fMYxPXv21G233aYPP/xQJpPJcdxqtcpiseiOO+7Qq6++2tZR4QJa+nrx8/OTJOXl5Wns2LG68MILtWjRIpnN/D4H9WpqahQUFKS3335b48ePdxyfPHmyjh07pvfff9+4cHBp999/v95//3198cUX6tGjh9Fx4KKWLl2qG2+8URaLxXHMarXKZDLJbDarurq6yffgPihDMMSBAwdUWlrq+DovL09paWl6++23lZKSoq5duxqYDq4oNzdXl112mYYPH67XX3+dHzo4RUpKipKTk/XCCy9Iql/61K1bN91///1soIBT2O12PfDAA3rvvfe0evVq9enTx+hIcGFlZWXav39/k2NTpkxR//799bvf/Y7llW6MzwzBEN26dWvydUhIiCSpV69eFCGcIjc3V2PHjlX37t01e/ZsFRUVOb4XExNjYDK4kvT0dE2ePFkjRoxQcnKy5s6dq4qKCk2ZMsXoaHBBU6dO1Ztvvqn3339foaGhys/PlySFh4crMDDQ4HRwNaGhoacUnuDgYEVERFCE3BxlCIDLW7VqlbKzs5WdnX1KWWZyG40mTJigoqIizZgxQ/n5+UpKStLKlStP2VQBkKQXX3xRkjR27Ngmx1955RXddddd7R8IgCFYJgcAAADAK/HpYwAAAABeiTIEAAAAwCtRhgAAAAB4JcoQAAAAAK9EGQIAAADglShDAAAAALwSZQgAAACAV6IMAQAAAPBKlCEAAAAAXokyBAAAAMArUYYAAAAAeCXKEAAAAACv9P8BqoNMK7GOdPUAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x=np.linspace(-5,5,200)\n", "## density function with mu = 0 and sigma = 1\n", "def f(x):\n", " return np.exp(-x**2/2)/(2*np.pi)\n", "\n", "fig, ax = plt.subplots(figsize=(10, 5))\n", "ax.plot(x, f(x))\n", "ax.set_title(\"normal distribution\")\n", "ax.axvline(x=1,color=\"red\")\n", "ax.axvline(x=-1,color=\"red\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Law of Large Numbers\n", "====================\n", "\n", "Suppose that $Y$ is a random variable (discrete or continuous), and consider a sample $X_1,\\dots,X_n$ of $n$ events drawn from the random variable, for $n \\ge 1$. We write $\\overline{X}_n$ for the mean of this sample:\n", "\n", "$$\\overline{X}_n = \\dfrac{1}{n} \\sum_{i=1}^n X_i$$\n", "\n", "We can view the sample mean $\\overline{X}_n$ as a random variable (depending on the choices made)!\n", "\n", "**Law of Large Numbers:** The sample means $\\overline{X}_n$ converges to the expected value $E(Y)$ as $n \\to \\infty$.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "This formulation hides a bit of complexity; namely, what does precisely is meant by convergence in this context? We'd like to write something like\n", "\n", "$$\\overline{X}_n \\xrightarrow{\\operatorname{prob}} E(Y) \\quad \\text{as $n \\to \\infty$}$$\n", "\n", "to indicate \"converges in probability\" (which we haven't defined...). Here is more a precise form, which is known as the *weak* law of large numbers. This weak law says that\n", "\n", "$$\\lim_{n \\to \\infty} P(|\\overline{X}_n - E(Y)| > \\epsilon) = 0 \\quad \\text{for any $\\epsilon > 0$}.$$\n", "\n", "Roughly speaking, this formulation means that the probability that the sample mean is even \"slightly\" different from the expected value goes to 0 as the number of trials goes to infinity.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "We aren't going to try to be completely precise here -- this is a course about modeling, not the full details of probability! -- but it is perhaps worth mention that we need to be more precise about what is meant by the probability $P(|\\overline{X}_n - E(Y)| > \\epsilon)$; this depends on viewing the sample mean $\\overline{X}_n$ as a random variable.\n", "\n", "Very roughly speaking, the idea is that as the sample sizes grow, you can expect the sample mean to behave like the expected value of the random variable.\n", "\n", "If you'd like to know a bit more, the [wikipedia article on the Law of Large Numbers](https://en.wikipedia.org/wiki/Law_of_large_numbers) is worth scanning." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The Central Limit Theorem\n", "======================\n", "\n", "Let's keep the notation and terminology from the preceding discussion. Thus the $X_1,\\dots,X_n$ represent random samples of $n$ events drawn from the random variable $Y$, for $n \\ge 1$.\n", "\n", "We view the choice of each sample as $X_i$ as a random variable; we want to suppose that these random variables are [independent from one-another and identically distributed](https://en.wikipedia.org/wiki/Independent_and_identically_distributed_random_variables) -- abbreviated i.i.d. In particular,\n", "$E(X_i) = E(Y) = \\mu$ and $\\operatorname{var}(X_i) = \\operatorname{var}(Y) = \\sigma^2$.\n", "\n", "Recall that we view the sample mean $\\overline{X}_n$ as a random variable. Thus, we can view\n", "$\\sqrt{n} \\cdot (\\overline{X}_n - \\mu)$ as a random variable, which is thus given by its distribution -- i.e. by its probability density function.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "**Theorem:** ([Central Limit Theorem](https://en.wikipedia.org/wiki/Central_limit_theorem)) If $\\{X_1,\\dots,X_n\\}$ are i.i.d., then as $n \\to\\infty$, the distribution of $\\sqrt{n} \\cdot (\\overline{X}_n - \\mu)$ converges to the normal distribution with expected value $0$ and variance $\\sigma^2$.\n", "\n", "---------------\n", "\n", "Note that if $f_n$ is the probability distribution function for the random variable $\\overline{X}_n$, then for real numbers $a" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 3000 trials, each consisting of 100 coin tosses\n", "cd_100=distribution(3000,100,results=[0,1])\n", "\n", "cd_100.hist(bins=300)\n", "print(report(cd_100))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Of course, this confirms that the mean is tending to ``0.5``. \n", "\n", "Recall that each of the \"coin toss\" random variables $X_i$ has mean ``1/2`` and variance\n", "$$\\operatorname{var}(X_i) = \\left(\\left(0 - \\dfrac{1}{2}\\right)^2 + \\left(1 - \\dfrac{1}{2}\\right)^2 \\cdot \\right)\\dfrac{1}{2} = \\dfrac{1}{4}.$$\n", "\n", "Thus the central limit theorem predicts that the variance $\\operatorname{var}(\\overline{X}_n)$ should \n", "be $\\dfrac{1}{4n}$ and $\\sigma = \\sqrt{\\dfrac{1}{4n}}$.\n", "\n", "For $n=100$, this amounts to $\\operatorname{var}(\\overline{X}_{100}) = \\dfrac{1}{400} = 0.0025$ and $\\sigma = \\sqrt{\\dfrac{1}{400}} = .05$\n", "\n", "For $n=200$, this amounts to $\\operatorname{var}(\\overline{X}_{100}) = \\dfrac{1}{800} = 0.00125$ and $\\sigma = \\sqrt{\\dfrac{1}{800}} = .035355$" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std: [0.01545485]\n", "variance: [0.00023885]\n", "mean: [0.500376]\n" ] }, { "data": { "image/png": "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3n33XX311VeyLEsffvihPvvsM+Xn50d9Ds0t0pqdO3dOOTk5ys7O1rhx43TgwIHgumPHjqmqqipkn8nJycrNzb3uPk1iR90ac/bsWTkcjmb/YWC72FW31vyaYEfNovl60GYCzZ///GfV19c3+GmF9PR0VVVVNbrN9u3btWLFCv32t7+95n5/+ctfql27dvrxj38c1fG2FHbU7fTp0zp37pwWL16skSNHatOmTXrggQc0fvx4bd26NepziAW7jreXXnpJPXv2VJcuXZSQkKCRI0dq6dKluvfee6M6/liIpGZ33nmnXn31Va1du1avv/66AoGA7rnnHn355ZeSFNwunH2axo66fdulS5c0Z84cPfTQQ63mV6btqltrfk2wo2bRfD2I2W85tXTffPONJk+erN/+9rfq3Llzo20qKir04osv6o9//KMcDkczj7Blupm6BQIBSdK4ceM0a9YsSVLfvn21Y8cOLV++XD/4wQ+abbwtxc3UTfproNm5c6feffdd5eTkaNu2bSoqKlJWVlbI/zW1FR6PRx6PJ3j/nnvuUY8ePfSb3/xGCxcujOHIWrZw6ub3+/Uv//IvsixLy5Yta+6htig3qhuvCQ3dqGbRfD1oM4Gmc+fOio+PV3V1dcjy6upqZWRkNGh/9OhRHT9+XGPGjAkuu1L4du3a6dChQ/r44491+vRpde3aNdimvr5eP/3pT/XCCy/o+PHj9kymGdlRt+zsbLVr1049e/YM2bZHjx7avn27DbNofnbULSsrS0899ZTeeecdFRYWSpL69OmjyspKPfvss8YHmnBr1hin06l+/frpyJEjkhTcrrq6WpmZmSH77Nu3b3QGHmN21O2KK2Hm888/15YtW1rN2RnJnrq19tcEO2rWuXPnqL0etJm3nBISEtS/f39t3rw5uCwQCGjz5s0h6fGK7t27a9++faqsrAzexo4dq/vuu0+VlZXKzs7W5MmTtXfv3pA2WVlZmj17tjZu3Nic07ONHXVLSEjQwIEDdejQoZBtP/vsM+Xk5Ng+p+ZgR938fr/8fr/i4kIftvHx8cHwY7Jwa9aY+vp67du3LxheunXrpoyMjJB91tbWateuXTe9z5bOjrpJfwszhw8f1gcffKBOnTpFfeyxZEfdWvtrgh01i+rrQZMvKzbI6tWrLZfLZa1atco6ePCgNX36dCslJSX4EbLJkydbTz755DW3v9annK7W2q5otyx76vb2229bTqfTeuWVV6zDhw9bL730khUfH299/PHHdk6lWdlRtx/84AfWXXfdZX344YfW//3f/1krV660EhMTrZdfftnOqTSbcGs2f/58a+PGjdbRo0etiooKa+LEiVZiYqJ14MCBYJvFixdbKSkp1tq1a629e/da48aNa5Uf245m3S5fvmyNHTvW6tKli1VZWRnykVufzxeTOdrBjuPt21rba4IdNYvW60GbectJkh588EH96U9/0rx581RVVaW+fftqw4YNwQucTpw40eD/fmFP3R544AEtX75cixYt0o9//GPdeeed+q//+i8NGTLEjinEhB11W716tUpKSjRp0iSdOXNGOTk5+sUvfqHHHnvMjik0u3Br9pe//EXTpk1TVVWVvvOd76h///7asWNHyOnrJ554QufPn9f06dNVU1OjIUOGaMOGDdf9QjTTRLtuX331ld59911JavDW3IcffqihQ4c2y7zsZsfx1trZUbNovR44LMuyojNNAACA2OB0BAAAMB6BBgAAGI9AAwAAjEegAQAAxiPQAAAA4xFoAACA8Qg0AADAeAQaAABgPAINAAAwHoEGAAAYj0ADAACM9/8BXfblTvbxlFkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 3000 trials, each consisting of 200 coin tosses\n", "cd_200=distribution(3000,1000,results=[0,1])\n", "\n", "cd_200.hist(bins=30)\n", "print(report(cd_200))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std: [0.16925305]\n", "variance: [0.0286466]\n", "mean: [2.50050333]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGzCAYAAACPa3XZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIxBJREFUeJzt3XtwVOX9x/HPEsImaBIBC0lklWhFVESmIDGA/hRCMiNWGKlUoQ4iI7YEK2S8JI6QcNMALaYqQkFKtW0EpYNVQTCDJQ5NuEihhdYJMkhlQEK9kFDSLEtyfn/YrGxu7PXZS96vmQzss885+91vzm4+c87ZPTbLsiwBAAAY0iXcBQAAgM6F8AEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwACDmn06mnn35a6enpSkxMVGZmpsrLy8NdFoAwIXwACLmHHnpIy5Yt0+TJk/WrX/1KcXFxuuuuu7Rjx45wlwYgDGxcWA5AKO3evVuZmZlaunSpnnjiCUlSQ0ODBg4cqN69e6uysjLMFQIwjT0fAEJqw4YNiouL0/Tp091jCQkJmjZtmqqqqnTs2LEwVgcgHAgfAEJq37596t+/v5KTkz3Ghw0bJknav39/GKoCEE6EDwAh9cUXXygtLa3VePPYiRMnTJcEIMwIHwBC6r///a/sdnur8YSEBPf9ADoXwgeAkEpMTJTT6Ww13tDQ4L4fQOdC+AAQUmlpafriiy9ajTePpaenmy4JQJgRPgCE1ODBg3Xo0CHV1dV5jO/atct9P4DOhfABIKR+9KMfqbGxUatWrXKPOZ1OrV27VpmZmXI4HGGsDkA4dA13AQBiW2Zmpu677z4VFhbq1KlT+v73v6/XXntNR48e1Zo1a8JdHoAw4BtOAYRcQ0OD5syZo9///vf65ptvNGjQIC1YsEC5ubnhLg1AGBA+AACAUZzzAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjIu5LxpqamnTixAklJSXJZrOFuxwAAOAFy7J05swZpaenq0uXjvdtRFz4OHHiBF+3DABAlDp27Jj69u3b4ZyICx9JSUmSvi0+OTk5zNV4crlc+uCDD5STk6P4+PhwlxOV6GFw0MfA0cPA0cPAxVIP6+rq5HA43H/HOxJx4aP5UEtycnJEho/u3bsrOTk56jeScKGHwUEfA0cPA0cPAxeLPfTmlAlOOAUAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARhE+AACAUYQPAABgFOEDAAAYRfgAAABGET4AAIBRhA8AAGAU4QMAABhF+AAAAEYRPgAAgFFdw10AgPDrV7DJ/f+jJWPDWAmAzoA9HwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCK8AEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCK8AEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCK8AEgYP0KNqlfwaZwlwEgShA+AACAUYQPAABgFOEDAAAY5VP4aGxs1Jw5c5SRkaHExERdc801WrBggSzLcs+xLEtz585VWlqaEhMTlZ2drU8//TTohQMAgOjkU/hYvHixVqxYoZdfflmffPKJFi9erCVLluill15yz1myZIlefPFFrVy5Urt27dIll1yi3NxcNTQ0BL14AAAQfbr6MrmyslLjxo3T2LFjJUn9+vXTG2+8od27d0v6dq9HaWmpnn32WY0bN06S9Prrr6tPnz56++23df/99we5fAAAEG18Ch/Dhw/XqlWrdOjQIfXv319/+9vftGPHDi1btkyS9Nlnn+nkyZPKzs52L5OSkqLMzExVVVW1GT6cTqecTqf7dl1dnSTJ5XLJ5XL59aRCpbmeSKsrmtDD4Ah2H+1x3x069WedzctH0++VbTFw9DBwsdRDX56DzbrwhI2LaGpq0jPPPKMlS5YoLi5OjY2NWrRokQoLCyV9u2dkxIgROnHihNLS0tzLTZw4UTabTevXr2+1zuLiYs2bN6/VeFlZmbp37+71EwEAAOFTX1+vSZMmqba2VsnJyR3O9WnPx5tvvqk//OEPKisr04033qj9+/dr1qxZSk9P15QpU/wqtrCwUPn5+e7bdXV1cjgcysnJuWjxprlcLpWXl2vMmDGKj48PdzlRiR4GR7D7OLB4q/v/B4tz/V7en2XDhW0xcPQwcLHUw+YjF97wKXw8+eSTKigocB8+uemmm/Svf/1Lzz//vKZMmaLU1FRJUk1Njceej5qaGg0ePLjNddrtdtnt9lbj8fHxEfuLiOTaogU9DI5g9dHZaPNYp7/LR+PvlG0xcPQwcLHQQ1/q9+nTLvX19erSxXORuLg4NTU1SZIyMjKUmpqqbdu2ue+vq6vTrl27lJWV5ctDAQCAGOXTno8f/vCHWrRoka688krdeOON2rdvn5YtW6aHH35YkmSz2TRr1iwtXLhQ1157rTIyMjRnzhylp6dr/PjxoagfQIg0X6vlaMnYMFcCINb4FD5eeuklzZkzRzNmzNCpU6eUnp6uRx99VHPnznXPeeqpp3T27FlNnz5dp0+f1siRI7VlyxYlJCQEvXgAABB9fAofSUlJKi0tVWlpabtzbDab5s+fr/nz5wdaGwAAiEFc2wUAABhF+AAAAEYRPgAAgFGEDwAAYBThA0BU6Fewyf3xXwDRjfABAACMInwAAACjCB8AAMAowgcAADCK8AEAAIwifAAAAKMIHwAAwCifLiwHACZc+H0eR0vGhrESAKHAng8AAGAU4QMAABhF+AAAAEYRPgCEBNdiAdAewgcAADCK8AEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfADpk4vs6An0MvlMEiC6EDwAAYBThAwAAGEX4AAAARhE+AACAUYQPAABgFOEDAAAYRfgAAABGET4AAIBRhA8AAGAU4QMAABhF+AAAAEYRPgAAgFGEDwAAYBThAwAAGNU13AUACI6Wl5Q/WjI2TJUAQMfY8wEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHEIUGFm8NdwkA4DfCBwAAMIrwAQAAjCJ8AAAAo7i2C4Co1PJaNgCiB3s+AACAUYQPAABgFOEDAAAYRfgA4LN+BZs45wKA3wgfAADAKMIHAAAwivABAACMInwAQAuc0wKEFuEDAAAYRfgAAABGET4AAIBRhA8AAGAU4QMAABhF+AAAAEb5HD6OHz+un/zkJ+rVq5cSExN100036eOPP3bfb1mW5s6dq7S0NCUmJio7O1uffvppUIsGEH34+CqAZj6Fj2+++UYjRoxQfHy83n//ff3zn//UL3/5S/Xo0cM9Z8mSJXrxxRe1cuVK7dq1S5dccolyc3PV0NAQ9OIBAED06erL5MWLF8vhcGjt2rXusYyMDPf/LctSaWmpnn32WY0bN06S9Prrr6tPnz56++23df/99wepbAAAEK18Ch/vvPOOcnNzdd9996miokJXXHGFZsyYoUceeUSS9Nlnn+nkyZPKzs52L5OSkqLMzExVVVW1GT6cTqecTqf7dl1dnSTJ5XLJ5XL59aRCpbmeSKsrmtDD4LB3sSR59tEeZ3nM8aXHFy7bvFxH62u+r+VcX+dcbG5Hy7esr711t6ejbbGjWvEdXs+Bi6Ue+vIcbJZltX4FtyMhIUGSlJ+fr/vuu0979uzR448/rpUrV2rKlCmqrKzUiBEjdOLECaWlpbmXmzhxomw2m9avX99qncXFxZo3b16r8bKyMnXv3t3rJwIAAMKnvr5ekyZNUm1trZKTkzuc61P46Natm4YOHarKykr32M9//nPt2bNHVVVVfoWPtvZ8OBwOffnllxct3jSXy6Xy8nKNGTNG8fHx4S4nKtHD4Bgyf4sWDG3y6OPA4q0ecw4W53q9vguXbV6uo/U139dyrq9zLja3o+Vb1tfeutvT0bbYUa34Dq/nwMVSD+vq6nT55Zd7FT58OuySlpamG264wWPs+uuv1x//+EdJUmpqqiSppqbGI3zU1NRo8ODBba7TbrfLbre3Go+Pj4/YX0Qk1xYt6GFgnE02SZ59dDbaPOb40t8Ll/Vmfc33tZzr65yLze1o+Zb1tbfui2lrW+yoVrTG6zlwsdBDX+r36dMuI0aMUHV1tcfYoUOHdNVVV0n69uTT1NRUbdu2zX1/XV2ddu3apaysLF8eCgAAxCif9nzMnj1bw4cP13PPPaeJEydq9+7dWrVqlVatWiVJstlsmjVrlhYuXKhrr71WGRkZmjNnjtLT0zV+/PhQ1A/EnObvwjhaMjbMlYTGhd/1EavPEUDHfAoft9xyizZu3KjCwkLNnz9fGRkZKi0t1eTJk91znnrqKZ09e1bTp0/X6dOnNXLkSG3ZssV9sioAAOjcfAofknT33Xfr7rvvbvd+m82m+fPna/78+QEVBgAAYhPXdgEAAEb5vOcDgFmhOEci1s8rARDZ2PMBAACMInwAAACjCB8AAMAozvkAwoBzLiLThefXAAgd9nwAAACjCB8AAMAowgcAADCKcz4A4CK4Hg0QXOz5AAAARhE+AACAUYQPAABgFOEDAAAYRfgAAABGET4AAIBRfNQWiHF8TBRApGHPBwAAMIrwAQAAjCJ8AAAAowgfAGJOv4JNHue6AIgshA8AAGAU4QMAABhF+AAAAEbxPR9AGPEdHNGr+XfH7w3wHXs+AACAUYQPAABgFOEDAAAYRfgA0Cnw3R9A5CB8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCK8AEAAIwifAAAAKMIHwAAwCjCBwAAMIrwAQAAjCJ8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgdgQL+CTepXsCncZQBARCB8AAAAowgfAADAKMIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCqa7gLAIBYcOH3uBwtGRvGSoDIx54PAABgFOEDAAAYRfgAAABGET6AAHHdFrSHbQNoG+EDAAAYRfgAAABGET4AAIBRhA90ehyX75wGFm8Ndwke2A7RmRA+AACAUYQPAABgFOEDAAAYFVD4KCkpkc1m06xZs9xjDQ0NysvLU69evXTppZdqwoQJqqmpCbROAMAFOEcE0czv8LFnzx79+te/1qBBgzzGZ8+erXfffVdvvfWWKioqdOLECd17770BFwoAAGKDX+HjP//5jyZPnqzVq1erR48e7vHa2lqtWbNGy5Yt06hRozRkyBCtXbtWlZWV2rlzZ9CKBgAA0aurPwvl5eVp7Nixys7O1sKFC93je/fulcvlUnZ2tntswIABuvLKK1VVVaVbb7211bqcTqecTqf7dl1dnSTJ5XLJ5XL5U17INNcTaXVFk0jsoT3OkuR/Td4s33JO8+0LtbyvrbnusS6tH7PlOjtc3pvHaGd9HS3vzRy/n3MA62tzeYM99Gbb8nU7DHS7DYZIfD1Hm1jqoS/PwWZZVutXcAfWrVunRYsWac+ePUpISNAdd9yhwYMHq7S0VGVlZZo6dapHmJCkYcOG6c4779TixYtbra+4uFjz5s1rNV5WVqbu3bv7UhoAAAiT+vp6TZo0SbW1tUpOTu5wrk97Po4dO6bHH39c5eXlSkhICKjIZoWFhcrPz3ffrqurk8PhUE5OzkWLN83lcqm8vFxjxoxRfHx8uMuJSpHYw+YvmzpYnBuy5VvOaesLrlre19bc5rEh87dowdAmjz62XGdHy3vzGO2tr6PlvZnj73MOZH1tjZnsoTfblq/bYaDbbTBE4us52sRSD5uPXHjDp/Cxd+9enTp1Sj/4wQ/cY42Njfroo4/08ssva+vWrTp37pxOnz6tyy67zD2npqZGqampba7TbrfLbre3Go+Pj4/YX0Qk1xYtIqmHzkabJPldjzfLt5zTfPtCLe9ra657rOm7Oe2ts8PlvXmMdtbX0fLezPH7OQewvjaXN9hDb7YtX7fDQLfbYIqk13O0ioUe+lK/T+Fj9OjROnDggMfY1KlTNWDAAD399NNyOByKj4/Xtm3bNGHCBElSdXW1Pv/8c2VlZfnyUEBEav5o49GSsQHNAYDOzKfwkZSUpIEDB3qMXXLJJerVq5d7fNq0acrPz1fPnj2VnJysxx57TFlZWW2ebAoAADofvz7t0pEXXnhBXbp00YQJE+R0OpWbm6tXXnkl2A8DAACiVMDhY/v27R63ExIStHz5ci1fvjzQVQMAgBjEtV0AAIBRhA8AAGAU4QMAABhF+AAAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARhE+ACDE+hVscl/zBwDhAwAAGEb4AAAARhE+AACAUUG/qi0Qizhej0jAdohYwZ4PAABgFOEDAAAYRfgAAABGET4AAIBRhA8AAGAU4QMAABhF+AAAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARhE+AACAUYQPAABgFOEDAAAY1TXcBQCR5sLLlh8tGRvGSgAgNrHnAwAAGEX4AAAARhE+AACAUYQPAIgB/Qo2eZyvBEQywgcAADCK8AEAAIwifAAAAKMIH4hJHP8GgMhF+AAAAEYRPgAAgFGEDwAAYBTXdkFMaz7vo/kaLVy3BZGi5bYJdCbs+QAAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARhE+AACAUYQPAABgFOEDAGIU1zhCpCJ8AAAAowgfAADAKMIHAAAwivCBqMdxbcQqtm3EKsIHAAAwivABAACMInwAAACjCB8AAMAowgcAADCK8AEAAIwifABAJ8bHeREOhA8AAGAU4QMAABhF+AAAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARvkUPp5//nndcsstSkpKUu/evTV+/HhVV1d7zGloaFBeXp569eqlSy+9VBMmTFBNTU1QiwYAhFbz93/wHSAIBZ/CR0VFhfLy8rRz506Vl5fL5XIpJydHZ8+edc+ZPXu23n33Xb311luqqKjQiRMndO+99wa9cAAAEJ26+jJ5y5YtHrd/+9vfqnfv3tq7d69uv/121dbWas2aNSorK9OoUaMkSWvXrtX111+vnTt36tZbbw1e5QAAICr5FD5aqq2tlST17NlTkrR37165XC5lZ2e75wwYMEBXXnmlqqqq2gwfTqdTTqfTfbuurk6S5HK55HK5Aikv6JrribS6okkoemiPs1qts3ms5eNeON5yzJs5Lcc7Wt6bOR3V2GE9XTrhcw5gfW0uH+M9bG+spfbmtPV82nts3hP9F0s99OU52CzLar01e6GpqUn33HOPTp8+rR07dkiSysrKNHXqVI8wIUnDhg3TnXfeqcWLF7daT3FxsebNm9dqvKysTN27d/enNAAAYFh9fb0mTZqk2tpaJScndzjX7z0feXl5OnjwoDt4+KuwsFD5+fnu23V1dXI4HMrJyblo8aa5XC6Vl5drzJgxio+PD3c5USkUPRxYvFWSdLA4t9VYs+b7LhxvOebNnJbjHS3vzZyOauyoniHzt2jB0CaPPsb6cw5kfW2NxXoP/X2MluNt3deM98TAxVIPm49ceMOv8DFz5ky99957+uijj9S3b1/3eGpqqs6dO6fTp0/rsssuc4/X1NQoNTW1zXXZ7XbZ7fZW4/Hx8RH7i4jk2qJFMHvobLS519ly7MLHaznecsybOS3HO1remzkd1dhhPU3fzblYjTHznANYX5vLx3gP/X2MluNt3ddWDbwnBiYWeuhL/T592sWyLM2cOVMbN27Uhx9+qIyMDI/7hwwZovj4eG3bts09Vl1drc8//1xZWVm+PBQAAIhRPu35yMvLU1lZmf70pz8pKSlJJ0+elCSlpKQoMTFRKSkpmjZtmvLz89WzZ08lJyfrscceU1ZWFp90gYeBxVtVvejucJcBAAgDn8LHihUrJEl33HGHx/jatWv10EMPSZJeeOEFdenSRRMmTJDT6VRubq5eeeWVoBQLAACin0/hw5sPxiQkJGj58uVavny530UBAIDYxbVdAACAUYQPAABgFOEDAAAYRfgAAABGET4AAIBRAV1YDgiGfgWb3P8/WjI2jJUAAExgzwcAADCK8AEAAIwifCCi9CvY5HEYpuVtAKHBaw0mET4AAIBRhA8AAGAU4QMAABhF+EDU4dg0EBt4LXdehA8AAGAU4QMAABhF+AAAAEYRPgAAfhlYvNXjX4nzOOAdwgcAADCK8AEAAIwifAAAAKMIHwAAr3A+B4KF8AEAAIwifAAAAKMIHwAAwKiu4S4AsaX5ePDRkrEety8cAwB0buz5AAAARhE+AACAUYQPAABgFOGjE+Ez+gCASED4AAAARhE+AACAUYQPAABgFOEDPuPcEQAXE6z3Cd5vYhPhAwAAGEX4AAAARvH16vAbX50OAPAHez4AAIBRhA8AAGAU4QMAABjFOR+dAB9TAxAtmt+vgnUeWbDXFymPFe3Y8wEAAIwifAAAAKMIHwAAwCjO+YgxfPcGgFjEe1tsYc8HAAAwivABAACMInwAAACjCB+4KC5pDQAIJsIHAAAwivABAACMInwAAACj+J4PAEBM8PW7QFpei4Vrs5jDng8AAGAU4QMAABhF+AAAAEYRPuCB7/QAgO/wnhgahA8AAGAU4QMAABhF+AAAAEYRPiJYy2ONbR175HgkgGgR7PerWH3/i9XndSHCBwAAMIrwAQAAjCJ8AAAAo7i2S4Ci/VoA0V4/APgi0HMp2nrP9GWdvOd+iz0fAADAKMIHAAAwKmSHXZYvX66lS5fq5MmTuvnmm/XSSy9p2LBhoXo4r7XcPebPrq+BxVtVvejudtfb3uWZfZ0DAIhebb3nh1ukHPYJyZ6P9evXKz8/X0VFRfrrX/+qm2++Wbm5uTp16lQoHg4AAESRkISPZcuW6ZFHHtHUqVN1ww03aOXKlerevbt+85vfhOLhAABAFAn6YZdz585p7969KiwsdI916dJF2dnZqqqqajXf6XTK6XS6b9fW1kqSvv76a7lcrmCXp67nz3rc/uqrr7xe1uVyqb6+Xl1dXdzLtVzfhetsvq+tud7MudhcXx+j5XhHy3v7GL4+50B76GvN7a3Pl5o7Wp+v9QRtu3GdVX19k7766ivFx8d3jucc7NdKjPfQ18fw6zn/r4cdvZ5jbrsJcg+b3xPb2g59+fvkrVCu+8yZM5Iky7IuPtkKsuPHj1uSrMrKSo/xJ5980ho2bFir+UVFRZYkfvjhhx9++OEnBn6OHTt20awQ9u/5KCwsVH5+vvt2U1OTvv76a/Xq1Us2my2MlbVWV1cnh8OhY8eOKTk5OdzlRCV6GBz0MXD0MHD0MHCx1EPLsnTmzBmlp6dfdG7Qw8fll1+uuLg41dTUeIzX1NQoNTW11Xy73S673e4xdtlllwW7rKBKTk6O+o0k3OhhcNDHwNHDwNHDwMVKD1NSUryaF/QTTrt166YhQ4Zo27Zt7rGmpiZt27ZNWVlZwX44AAAQZUJy2CU/P19TpkzR0KFDNWzYMJWWlurs2bOaOnVqKB4OAABEkZCEjx//+Mf697//rblz5+rkyZMaPHiwtmzZoj59+oTi4Yyx2+0qKipqdZgI3qOHwUEfA0cPA0cPA9dZe2izLG8+EwMAABAcXNsFAAAYRfgAAABGET4AAIBRhA8AAGAU4QMAABhF+Pif559/XrfccouSkpLUu3dvjR8/XtXV1Rdd7q233tKAAQOUkJCgm266SZs3bzZQbWTyp4erV6/Wbbfdph49eqhHjx7Kzs7W7t27DVUcmfzdFputW7dONptN48ePD12REc7fHp4+fVp5eXlKS0uT3W5X//79O+1r2t8elpaW6rrrrlNiYqIcDodmz56thoYGAxVHnhUrVmjQoEHuby/NysrS+++/3+EyneVvCuHjfyoqKpSXl6edO3eqvLxcLpdLOTk5Onu29RUQm1VWVuqBBx7QtGnTtG/fPo0fP17jx4/XwYMHDVYeOfzp4fbt2/XAAw/oz3/+s6qqquRwOJSTk6Pjx48brDyy+NPHZkePHtUTTzyh2267zUClkcufHp47d05jxozR0aNHtWHDBlVXV2v16tW64oorDFYeOfzpYVlZmQoKClRUVKRPPvlEa9as0fr16/XMM88YrDxy9O3bVyUlJdq7d68+/vhjjRo1SuPGjdM//vGPNud3qr8pwbmWbew5deqUJcmqqKhod87EiROtsWPHeoxlZmZajz76aKjLiwre9LCl8+fPW0lJSdZrr70Wwsqii7d9PH/+vDV8+HDr1VdftaZMmWKNGzfOTIFRwJserlixwrr66qutc+fOGawsenjTw7y8PGvUqFEeY/n5+daIESNCXV7U6NGjh/Xqq6+2eV9n+pvCno921NbWSpJ69uzZ7pyqqiplZ2d7jOXm5qqqqiqktUULb3rYUn19vVwul0/LxDpv+zh//nz17t1b06ZNM1FWVPGmh++8846ysrKUl5enPn36aODAgXruuefU2NhoqsyI5k0Phw8frr1797oPnR45ckSbN2/WXXfdZaTGSNbY2Kh169bp7Nmz7V7nrDP9TQnJ16tHu6amJs2aNUsjRozQwIED25138uTJVl8Z36dPH508eTLUJUY8b3vY0tNPP6309PRWL8DOyts+7tixQ2vWrNH+/fvNFRclvO3hkSNH9OGHH2ry5MnavHmzDh8+rBkzZsjlcqmoqMhgxZHH2x5OmjRJX375pUaOHCnLsnT+/Hn99Kc/7bSHXSTpwIEDysrKUkNDgy699FJt3LhRN9xwQ5tzO9PfFMJHG/Ly8nTw4EHt2LEj3KVELX96WFJSonXr1mn79u1KSEgIYXXRw5s+njlzRg8++KBWr16tyy+/3GB10cHbbbGpqUm9e/fWqlWrFBcXpyFDhuj48eNaunRppw8f3vZw+/bteu655/TKK68oMzNThw8f1uOPP64FCxZozpw5hqqNLNddd53279+v2tpabdiwQVOmTFFFRUW7AaTTCPdxn0iTl5dn9e3b1zpy5MhF5zocDuuFF17wGJs7d641aNCgEFUXHXzpYbOlS5daKSkp1p49e0JYWXTxto/79u2zJFlxcXHuH5vNZtlsNisuLs46fPiwoYojjy/b4u23326NHj3aY2zz5s2WJMvpdIaqxIjnSw9HjhxpPfHEEx5jv/vd76zExESrsbExVCVGldGjR1vTp09v877O9DeFcz7+x7IszZw5Uxs3btSHH36ojIyMiy6TlZWlbdu2eYyVl5e3ezwv1vnTQ0lasmSJFixYoC1btmjo0KEhrjLy+drHAQMG6MCBA9q/f7/755577tGdd96p/fv3y+FwGKo8cvizLY4YMUKHDx9WU1OTe+zQoUNKS0tTt27dQlluRPKnh/X19erSxfPPSlxcnHt9+HYPm9PpbPO+TvU3JZzJJ5L87Gc/s1JSUqzt27dbX3zxhfunvr7ePefBBx+0CgoK3Lf/8pe/WF27drV+8YtfWJ988olVVFRkxcfHWwcOHAjHUwg7f3pYUlJidevWzdqwYYPHMmfOnAnHU4gI/vSxpc7+aRd/evj5559bSUlJ1syZM63q6mrrvffes3r37m0tXLgwHE8h7PzpYVFRkZWUlGS98cYb1pEjR6wPPvjAuuaaa6yJEyeG4ymEXUFBgVVRUWF99tln1t///neroKDAstls1gcffGBZVuf+m0L4+B9Jbf6sXbvWPef//u//rClTpngs9+abb1r9+/e3unXrZt14443Wpk2bzBYeQfzp4VVXXdXmMkVFRcbrjxT+bosX6uzhw98eVlZWWpmZmZbdbreuvvpqa9GiRdb58+fNFh8h/Omhy+WyiouLrWuuucZKSEiwHA6HNWPGDOubb74xXn8kePjhh62rrrrK6tatm/W9733PGj16tDt4WFbn/ptisyz2hQEAAHM45wMAABhF+AAAAEYRPgAAgFGEDwAAYBThAwAAGEX4AAAARhE+AACAUYQPAABgFOEDAAAYRfgAAABGET4AAIBR/w9ZjkHeZ9w1oQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 3000 trials, each consisting of 100 dice rolls\n", "cd_100=distribution(3000,100,results=range(6))\n", "\n", "cd_100.hist(bins=200)\n", "print(report(cd_100))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std: [0.01545485]\n", "variance: [0.00023885]\n", "mean: [0.500376]\n" ] }, { "data": { "image/png": "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3n33XX311VeyLEsffvihPvvsM+Xn50d9Ds0t0pqdO3dOOTk5ys7O1rhx43TgwIHgumPHjqmqqipkn8nJycrNzb3uPk1iR90ac/bsWTkcjmb/YWC72FW31vyaYEfNovl60GYCzZ///GfV19c3+GmF9PR0VVVVNbrN9u3btWLFCv32t7+95n5/+ctfql27dvrxj38c1fG2FHbU7fTp0zp37pwWL16skSNHatOmTXrggQc0fvx4bd26NepziAW7jreXXnpJPXv2VJcuXZSQkKCRI0dq6dKluvfee6M6/liIpGZ33nmnXn31Va1du1avv/66AoGA7rnnHn355ZeSFNwunH2axo66fdulS5c0Z84cPfTQQ63mV6btqltrfk2wo2bRfD2I2W85tXTffPONJk+erN/+9rfq3Llzo20qKir04osv6o9//KMcDkczj7Blupm6BQIBSdK4ceM0a9YsSVLfvn21Y8cOLV++XD/4wQ+abbwtxc3UTfproNm5c6feffdd5eTkaNu2bSoqKlJWVlbI/zW1FR6PRx6PJ3j/nnvuUY8ePfSb3/xGCxcujOHIWrZw6ub3+/Uv//IvsixLy5Yta+6htig3qhuvCQ3dqGbRfD1oM4Gmc+fOio+PV3V1dcjy6upqZWRkNGh/9OhRHT9+XGPGjAkuu1L4du3a6dChQ/r44491+vRpde3aNdimvr5eP/3pT/XCCy/o+PHj9kymGdlRt+zsbLVr1049e/YM2bZHjx7avn27DbNofnbULSsrS0899ZTeeecdFRYWSpL69OmjyspKPfvss8YHmnBr1hin06l+/frpyJEjkhTcrrq6WpmZmSH77Nu3b3QGHmN21O2KK2Hm888/15YtW1rN2RnJnrq19tcEO2rWuXPnqL0etJm3nBISEtS/f39t3rw5uCwQCGjz5s0h6fGK7t27a9++faqsrAzexo4dq/vuu0+VlZXKzs7W5MmTtXfv3pA2WVlZmj17tjZu3Nic07ONHXVLSEjQwIEDdejQoZBtP/vsM+Xk5Ng+p+ZgR938fr/8fr/i4kIftvHx8cHwY7Jwa9aY+vp67du3LxheunXrpoyMjJB91tbWateuXTe9z5bOjrpJfwszhw8f1gcffKBOnTpFfeyxZEfdWvtrgh01i+rrQZMvKzbI6tWrLZfLZa1atco6ePCgNX36dCslJSX4EbLJkydbTz755DW3v9annK7W2q5otyx76vb2229bTqfTeuWVV6zDhw9bL730khUfH299/PHHdk6lWdlRtx/84AfWXXfdZX344YfW//3f/1krV660EhMTrZdfftnOqTSbcGs2f/58a+PGjdbRo0etiooKa+LEiVZiYqJ14MCBYJvFixdbKSkp1tq1a629e/da48aNa5Uf245m3S5fvmyNHTvW6tKli1VZWRnykVufzxeTOdrBjuPt21rba4IdNYvW60GbectJkh588EH96U9/0rx581RVVaW+fftqw4YNwQucTpw40eD/fmFP3R544AEtX75cixYt0o9//GPdeeed+q//+i8NGTLEjinEhB11W716tUpKSjRp0iSdOXNGOTk5+sUvfqHHHnvMjik0u3Br9pe//EXTpk1TVVWVvvOd76h///7asWNHyOnrJ554QufPn9f06dNVU1OjIUOGaMOGDdf9QjTTRLtuX331ld59911JavDW3IcffqihQ4c2y7zsZsfx1trZUbNovR44LMuyojNNAACA2OB0BAAAMB6BBgAAGI9AAwAAjEegAQAAxiPQAAAA4xFoAACA8Qg0AADAeAQaAABgPAINAAAwHoEGAAAYj0ADAACM9/8BXfblTvbxlFkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cd_200.hist(bins=30)\n", "print(report(cd_200))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Dice Rolling\n", "------------\n", "\n", "We consider an ordinary 6-sided dice. We'll look at two scenarios: a *fair* die where all rolls occurs with equal probability, and a *broken* die.\n", "\n", "We view the random variable $X_i$ as the outcome of a die-roll. We consider a sample $X_1,X_2,\\dots,X_n$ and we compute the sample mean $\\overline{X}_n$. \n", "\n", "Our goal is to describe the distribution of the sample mean $\\overline{X}_n$.\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "six_sided_dice = [1,2,3,4,5,6]\n", "\n", "fair_prob = np.array(6*[1/6])\n", "broken_prob = (1./9)*np.array([3,2,1,1,1,1])\n", "\n", "## rng.choice(six_sided_dice,n) = rng.choice(six_sided_dice,n,p=fair_prob) returns a list of \n", "## n random of a fair six-sided dice\n", "## rng.choice(six_sided_dice,n,p=broken_prob) again rolls the dice n times, but with \n", "## the indicated probabilities for the rolls\n", "\n", "def dice_trial(pr=fair_prob):\n", " ## dice_trial() returns a function, suitable for passing to map(...)\n", " ## if f = dice_trial(), then f(n) returns a DataFrame with the results \n", " ## of n dice roll results\n", " return lambda n: pd.DataFrame(rng.choice(six_sided_dice,n,p=pr)).mean()\n", "\n", "\n", "def dice_distribution(num_trials,sample_size,pr=fair_prob):\n", " return pd.DataFrame(map(dice_trial(pr),num_trials*[sample_size]))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "Recall for a fair die, each random variable has expected value\n", "\n", "$$E(X_i) = \\dfrac{1+2+3+4+5+6}{6} = 3.5$$\n", "\n", "and variance\n", "\n", "$$\\operatorname{var}(X_i) = \\dfrac{1}{6}\\sum_{j=1}^6 (j - 3.5)^2 \\approx 2.9167$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Our \"broken die\" probabilities are ``[1/3,2/9,1/9,1/9,1/9,1/9]``\n", "\n", "So our expected value for the broken dice rolls can be determined using the following code:\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "[np.float64(2.7777777777777772), np.float64(3.0617283950617282)]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "broken_prob = (1./9)*np.array([3,2,1,1,1,1])\n", "E=sum([(j+1)*broken_prob[j] for j in range(6)],0)\n", "\n", "V=sum([(E-j-1)**2*broken_prob[j] for j in range(6)],0)\n", "\n", "[E,V]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Thus in this case $E(X_i) \\approx 2.778$ and $\\operatorname{var}(X_i) \\approx 3.062$.\n", "\n", "Lets simulate some trials for both sorts of diceand various sample sizes." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "\n", "\n", "dd_fair_50 = dice_distribution(num_trials=3000,sample_size = 50)\n", "dd_fair_100 = dice_distribution(num_trials=3000,sample_size = 100)\n", "\n", "dd_broken_50 = dice_distribution(num_trials=3000,sample_size=50,pr=broken_prob)\n", "dd_broken_100 = dice_distribution(num_trials=3000,sample_size=100,pr=broken_prob)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "For a fair die, and $n$ trials, the central limit theorem predicts\n", "\n", "$\\operatorname{var}(\\overline{X}_n) = \\dfrac{2.9167}{n}$.\n", "\n", "|$n$ | var |\n", "|--: | -------------------------:|\n", "| 50 | 0.05833 | \n", "| 100 | 0.029167 |\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std: [0.24448632]\n", "variance: [0.05977356]\n", "mean: [3.48952]\n", "\n", "std: [0.16508267]\n", "variance: [0.02725229]\n", "mean: [3.50127667]\n" ] } ], "source": [ "print(report(dd_fair_50))\n", "print()\n", "print(report(dd_fair_100))" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([[]], dtype=object)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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VVtbq7S0tJBqOP6IS1lZmerq6jRw4EAlJibq+vXrWr58uYqLiyVJ586dkyT169fP73r9+vXzXdbS/PnzVVpa6jtfV1ennJwcjR07NuTB2+L1elVVVaUxY8YoKSnJ0drRJF7mlOyYdVD5Dt+fj5YXdXh/095B5TvkTjB6cmhjqzlb7r1Rnbb6CFSnrdpO1WmLDfepE+JlTolZY1GgOZueMekMx4PLv/3bv2nz5s2qqKjQl770JR05ckRz5sxRdna2pk2bFlJNt9stt9vdaj0pKSlsd3o4a0eTeJlTiu5ZPdddvj93pMem/U17W16/eY2We4Op097e9mo7VedGovk+dVK8zCkxayxqPqcT8zoeXH70ox+prKzM91qVO++8U59++qlWrFihadOmKTMzU5JUU1OjrKws3/Vqamr8njoCbND8+3U+WTm+w/ud3htPcssq5U40Wj0s0p0AiATH31VUX1+vhAT/somJiWpsbJQk5eXlKTMzUzt37vRdXldXp3379qmgoMDpdgAAQAxx/BGX+++/X8uXL1f//v31pS99SYcPH9aaNWv03e9+V5Lkcrk0Z84cLVu2TAMGDFBeXp4WLlyo7OxsTZw40el2AABADHE8uDz77LNauHChHn30UZ0/f17Z2dn63ve+p0WLFvn2PP7447py5YpmzpypixcvasSIEdq+fbuSk5OdbgcAAMQQx4NLamqq1q5dq7Vr17a5x+VyaenSpVq6dKnTPx5ADAnna4gA2InvKgIAANYguAAAAGsQXAAAgDUILgAAwBoEFwAAYA3H31UEANGGdycBsYNHXAAAgDUILgAAwBoEFwAAYA2CCwAAsAbBBQAAWIPgAnRAblml3ztTAACRQXABAADWILgAAABrEFwAAIA1CC4AAMAaBBcAAGANggsAALAGwQUAAFiD4AIAAKxBcAEAANYguAAAAGsQXAAAgDUILgAAwBoEFwAAYA2CCwAAsAbBBUBcyi2rVG5ZpeN7nbgegLYRXAAAgDUILgAAwBoEFwAAYA2CCwAAsAbBBQAAWIPgAgAArEFwAQAA1iC4AAAAaxBcAACANQguAADAGgQXAABgDYILAACwBsEFAABYg+ACAACsQXABHJZbVqncsspItwEAMYngAgAArEFwAQAA1iC4AAAAaxBcAACANQguAADAGgQXAABgDYILAACwBsEFAABYIyzB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AABrEFwAAIA1CC4AgJjA00HxgeACAACsQXABAADW6BbpBuIdX9kOAKHpzPGz+VNKHH/twiMuAADAGgQXAABgDYKLhXjlPAAgXhFcAACANQguAADAGryrqJPC9a4gXvEOAEBrPOICAACsQXABAADWILgAAABrEFwAAIA1CC4AAMAavKvIYbwbCADsFs7vkMstq5Q70Wj1MMdLxw0ecQEAANYguAAAAGsQXNowqHyH4zX5jiEAQLD4t8MfwQUAAFgjosFl/fr1ys3NVXJysvLz87V///5ItgMAAKJcxILLK6+8otLSUi1evFjvvfee7rrrLhUVFen8+fORaqlNPEwHAJCC+/cgnP92hKt2U91o/jcvYsFlzZo1euSRRzR9+nTdcccd2rhxo3r06KF//ud/jlRLAAAgykXkc1yuXr2qQ4cOaf78+b61hIQEFRYWqrq6utV+j8cjj8fjO19bWytJunDhgrxer6O9eb1e1dfXq5s3QX/6058kSd2uXZEk3/nmWl7WdD7Q/kB12qodzjrdrl1Rt0aj+vpG/elPf1JSUtIN67Q3azhuF6fqtDVruG/fjs7jVB2n79P2erTx99eJ27eje52q49R92t7+WP397cpjUnuCOSaFUqejfQSjvdslWE3/njaf89KlS5IkY0zohU0EfPbZZ0aS2bt3r9/6j370IzNs2LBW+xcvXmwkceLEiRMnTpxi4HT69OmQM4QVn5w7f/58lZaW+s43NjbqwoUL6tu3r1wul6M/q66uTjk5OTp9+rTS0tIcrR1N4mVOKX5mjZc5pfiZNV7mlJg1FgWa0xijS5cuKTs7O+S6EQkuN998sxITE1VTU+O3XlNTo8zMzFb73W633G6331rv3r3D2aLS0tJi+heqSbzMKcXPrPEypxQ/s8bLnBKzxqKWc/bq1atT9SLy4tzu3bvr7rvv1s6dO31rjY2N2rlzpwoKCiLREgAAsEDEnioqLS3VtGnTNHToUA0bNkxr167VlStXNH369Ei1BAAAolzEgsvf/u3f6n/+53+0aNEinTt3TkOGDNH27dvVr1+/SLUk6c9PSy1evLjVU1OxJl7mlOJn1niZU4qfWeNlTolZY1G45nQZ05n3JAEAAHQdvqsIAABYg+ACAACsQXABAADWILgAAABrEFwAAIA14iq4rFixQvfcc49SU1OVkZGhiRMn6tixYze83tq1a/XXf/3XSklJUU5OjubOnauGhoYu6Dg0GzZs0ODBg32fVlhQUKA33nij3eu8+uqrGjhwoJKTk3XnnXdq27ZtXdRt5wQ76/PPP6+vfOUr6tOnj/r06aPCwkLt37+/CzsOTSj3aZOXX35ZLpdLEydODG+TDgll1osXL6qkpERZWVlyu9267bbbrPgdDmVW245HgaxcuVIul0tz5sxpd5+tx6UmHZnT1mNSSx29T5t06rgU8rccWaioqMhs2rTJHD161Bw5csSMGzfO9O/f31y+fLnN62zevNm43W6zefNmc/LkSbNjxw6TlZVl5s6d24WdB+e1114zlZWV5qOPPjLHjh0zTzzxhElKSjJHjx4NuP+3v/2tSUxMNKtXrzYffPCBWbBggUlKSjLvv/9+F3cevGBnnTp1qlm/fr05fPiw+fDDD83DDz9sevXqZf77v/+7izsPTrBzNjl58qS55ZZbzFe+8hUzYcKErmm2k4Kd1ePxmKFDh5px48aZd955x5w8edK8/fbb5siRI13cefCCndXG41FL+/fvN7m5uWbw4MFm9uzZbe6z+bhkTMfntPWY1FxHZ23S2eNSXAWXls6fP28kmd27d7e5p6SkxNx3331+a6WlpWb48OHhbs9Rffr0Mb/4xS8CXjZ58mQzfvx4v7X8/Hzzve99rytac1x7s7Z07do1k5qaal588cUwd+W8G8157do1c++995pf/OIXZtq0adYEl0Dam3XDhg3mL//yL83Vq1e7uKvwaG9W249Hly5dMgMGDDBVVVXma1/7Wrv/yNl8XApmzpZsOyYFO6sTx6W4eqqopdraWklSenp6m3vuvfdeHTp0yPfQ3YkTJ7Rt2zaNGzeuS3rsrOvXr+vll1/WlStX2vweqOrqahUWFvqtFRUVqbq6uitadExHZm2pvr5eXq+33d+BaNPROZcuXaqMjAzNmDGjC7tzVkdmfe2111RQUKCSkhL169dPgwYN0lNPPaXr1693cbed05FZbT8elZSUaPz48a2ON4HYfFwKZs6WbDsmBTurE8eliH3kf6Q1NjZqzpw5Gj58uAYNGtTmvqlTp+qPf/yjRowYIWOMrl27pu9///t64oknurDb4L3//vsqKChQQ0ODbrrpJm3ZskV33HFHwL3nzp1r9VUL/fr107lz57qi1U4LZtaW5s2bp+zs7JAOMF0tmDnfeecdvfDCCzpy5EjXNumQYGY9ceKEdu3apeLiYm3btk0ff/yxHn30UXm9Xi1evLiLOw9eMLPaejyS/vyahvfee08HDhzo0H5bj0vBztmSTcekYGd17LgUykNDseD73/+++eIXv2hOnz7d7r633nrL9OvXzzz//PPm97//vfmP//gPk5OTY5YuXdpFnYbG4/GY48ePm4MHD5qysjJz8803mz/84Q8B9yYlJZmKigq/tfXr15uMjIyuaLXTgpm1uRUrVpg+ffqY3/3ud13QZed1dM66ujqTm5trtm3b5luz7amiYO7TAQMGmJycHHPt2jXf2k9/+lOTmZnZVe12SjCz2no8OnXqlMnIyPD7u3ajpxVsPC6FMmdzNh2Tgp3VyeNSXAaXkpIS84UvfMGcOHHihntHjBhhfvjDH/qt/cu//ItJSUkx169fD1eLjhs9erSZOXNmwMtycnLM008/7be2aNEiM3jw4C7ozHntzdrkxz/+senVq5c5cOBAF3XlvLbmPHz4sJFkEhMTfSeXy2VcLpdJTEw0H3/8cQS67Zz27tOvfvWrZvTo0X5r27ZtM5KMx+PpivYc1d6sth6PtmzZ0up3UpLvd7J56Gxi43EplDmb2HZMCnZWJ49LcfVUkTFGjz32mLZs2aK3335beXl5N7xOfX29EhL8XwqUmJjoq2eLxsZGeTyegJcVFBRo586dfm9jq6qq6vDrRKJNe7NK0urVq7V8+XLt2LFDQ4cO7cLOnNXWnAMHDtT777/vt7ZgwQJdunRJzzzzjHJycrqqRce0d58OHz5cFRUVamxs9P1d/eijj5SVlaXu3bt3ZZuOaG9WW49Ho0ePbvU7OX36dA0cOFDz5s3zzdCcjcelUOaU7DwmBTuro8clRyNYlPvBD35gevXqZd5++21z9uxZ36m+vt635x/+4R9MWVmZ7/zixYtNamqq+dWvfmVOnDhh3nzzTXPrrbeayZMnR2KEDikrKzO7d+82J0+eNL///e9NWVmZcblc5s033zTGtJ7xt7/9renWrZv5yU9+Yj788EOzePFia952GOysK1euNN27dze//vWv/X4HLl26FKkROiTYOVuy6amiYGc9deqUSU1NNbNmzTLHjh0zr7/+usnIyDDLli2L1AgdFuysNh6P2tLyaYVYOi41d6M5bT0mBXKjWVsK9bgUV4+4bNiwQZI0cuRIv/VNmzbp4YcfliSdOnXK7380CxYskMvl0oIFC/TZZ5/pL/7iL3T//fdr+fLlXdV20M6fP6/vfOc7Onv2rHr16qXBgwdrx44dGjNmjKTWM957772qqKjQggUL9MQTT2jAgAHaunVruy9ajhbBzrphwwZdvXpVDz74oF+dxYsXq7y8vCtbD0qwc9os2FlzcnK0Y8cOzZ07V4MHD9Ytt9yi2bNna968eZEaocOCndXG41FHxdJxqT2xckzqiHAdl1zGRPHjiwAAAM3Exn/RAABAXCC4AAAAaxBcAACANQguAADAGgQXAABgDYILAACwBsEFAABYg+ACAACsQXABAADWILgAAABrEFwAAIA1/g9F+6M1E/XF4QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dd_fair_50.hist(bins=200)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([[]], dtype=object)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGzCAYAAAAFROyYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKW9JREFUeJzt3X9w1PWdx/HXJiQbAmwwaH6VgNRfwEEKAxJW0aP8SIAMSk2vohziTUauXHCUnBbiIQSwwqBTbTsI1XLgXU3xcIo9ISVZ4YDjCL9SM/LDoQfKQYWEOykEyGXZJN/7w8le10DIZjf5fnbzfMzskP1+P9/d9/ed3eyLz3d3vw7LsiwBAAAYJMbuAgAAAL6JgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAWAEr9erhQsXKiMjQz179lR2drY8Ho/dZQGwCQEFgBGefvpp/eQnP9GsWbP005/+VLGxsZo2bZr27t1rd2kAbODgZIEA7Hbw4EFlZ2frtdde0wsvvCBJamho0LBhw5SSkqJ9+/bZXCGArsYMCgDbffDBB4qNjdXcuXP9yxISElRQUKDKykqdPXvWxuoA2IGAAsB2n3zyie699165XK6A5WPGjJEkVVdX21AVADsRUADY7vz580pPT2+1vGXZuXPnurokADYjoACw3f/+7//K6XS2Wp6QkOBfD6B7IaAAsF3Pnj3l9XpbLW9oaPCvB9C9EFAA2C49PV3nz59vtbxlWUZGRleXBMBmBBQAthsxYoT+8Ic/qK6uLmD5gQMH/OsBdC8EFAC2+/73v6+mpia9/fbb/mVer1cbNmxQdna2MjMzbawOgB162F0AAGRnZ+uv/uqvVFxcrAsXLujuu+/Wu+++q9OnT2v9+vV2lwfABnyTLAAjNDQ06OWXX9avfvUr/elPf1JWVpZWrFih3Nxcu0sDYAMCCgAAMA7vQQEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAME5EflFbc3Ozzp07pz59+sjhcNhdDgAAaAfLsnTlyhVlZGQoJqbtOZKIDCjnzp3jq68BAIhQZ8+eVf/+/dscE5EBpU+fPpK+3kGXy2VzNW3z+XyqqKhQTk6O4uLi7C4notC70NC/0NC/0NC/0ERr/+rq6pSZmel/HW9LRAaUlsM6LpcrIgJKYmKiXC5XVD3IugK9Cw39Cw39Cw39C0209689b8/gTbIAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDhBBZS1a9cqKyvL/w2ubrdbv/vd7/zrGxoaVFhYqH79+ql3797Kz89XbW1twG2cOXNGeXl5SkxMVEpKil588UU1NjaGZ28AAEBUCCqg9O/fX6tWrVJVVZUOHz6sCRMm6NFHH9WxY8ckSQsWLNBHH32kzZs3a/fu3Tp37pwee+wx//ZNTU3Ky8vT9evXtW/fPr377rvauHGjlixZEt69AgAAES2oc/FMnz494PqPf/xjrV27Vvv371f//v21fv16lZaWasKECZKkDRs2aMiQIdq/f7/Gjh2riooKHT9+XB9//LFSU1M1YsQIrVixQgsXLlRJSYni4+PDt2cAACBidfhkgU1NTdq8ebOuXbsmt9utqqoq+Xw+TZo0yT9m8ODBGjBggCorKzV27FhVVlZq+PDhSk1N9Y/Jzc3VvHnzdOzYMY0cOfKG9+X1euX1ev3X6+rqJH19MiWfz9fRXegSLfWZXqeJ6F1o6F9o6F9o6F9oorV/wexP0AHlyJEjcrvdamhoUO/evbVlyxYNHTpU1dXVio+PV9++fQPGp6amqqamRpJUU1MTEE5a1resu5mVK1dq2bJlrZZXVFQoMTEx2F2whcfjsbuEiEXvQkP/QkP/QkP/QhNt/auvr2/32KADyn333afq6mpdvnxZH3zwgebMmaPdu3cHezNBKS4uVlFRkf96XV2dMjMzlZOTI5fL1an3HSqfzyePx6PJkydH5SmzOxO9C43d/RtWUt7hbY+W5Iaxko6xu3+Rjv6FJlr713IEpD2CDijx8fG6++67JUmjRo3SoUOH9NOf/lSPP/64rl+/rkuXLgXMotTW1iotLU2SlJaWpoMHDwbcXsunfFrG3IjT6ZTT6Wy1PC4uLmJ+cZFUq2noXWjs6p+3ydHhbU36ffP4Cw39C0209S+YfQn5e1Cam5vl9Xo1atQoxcXFaceOHf51J06c0JkzZ+R2uyVJbrdbR44c0YULF/xjPB6PXC6Xhg4dGmopAAAgSgQ1g1JcXKypU6dqwIABunLlikpLS7Vr1y6Vl5crKSlJBQUFKioqUnJyslwul5599lm53W6NHTtWkpSTk6OhQ4dq9uzZWr16tWpqarR48WIVFhbecIYEAAB0T0EFlAsXLuipp57S+fPnlZSUpKysLJWXl2vy5MmSpDfeeEMxMTHKz8+X1+tVbm6u3nrrLf/2sbGx2rp1q+bNmye3261evXppzpw5Wr58eXj3CgAARLSgAsr69evbXJ+QkKA1a9ZozZo1Nx0zcOBAlZWVBXO3AACgm+FcPAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcYI+WSAAdLY7F23r8LanV+WFsRIAdmEGBQAAGIeAAgAAjMMhHgA3FcqhFgAIBTMoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABgnqICycuVK3X///erTp49SUlI0Y8YMnThxImDM+PHj5XA4Ai4//OEPA8acOXNGeXl5SkxMVEpKil588UU1NjaGvjcAACAq9Ahm8O7du1VYWKj7779fjY2Neumll5STk6Pjx4+rV69e/nHPPPOMli9f7r+emJjo/7mpqUl5eXlKS0vTvn37dP78eT311FOKi4vTq6++GoZdAgAAkS6ogLJ9+/aA6xs3blRKSoqqqqr08MMP+5cnJiYqLS3thrdRUVGh48eP6+OPP1ZqaqpGjBihFStWaOHChSopKVF8fHwHdgMAvnbnom0d3vb0qrwwVgIgFEEFlG+6fPmyJCk5OTlg+Xvvvadf/epXSktL0/Tp0/Xyyy/7Z1EqKys1fPhwpaam+sfn5uZq3rx5OnbsmEaOHNnqfrxer7xer/96XV2dJMnn88nn84WyC52upT7T6zQRvQtNOPrnjLXCVU5E+PNe8fgLDf0LTbT2L5j9cViW1aG/QM3NzXrkkUd06dIl7d2717/87bff1sCBA5WRkaFPP/1UCxcu1JgxY/Sb3/xGkjR37lz913/9l8rLy/3b1NfXq1evXiorK9PUqVNb3VdJSYmWLVvWanlpaWnA4SMAAGCu+vp6Pfnkk7p8+bJcLlebYzs8g1JYWKijR48GhBPp6wDSYvjw4UpPT9fEiRN16tQp3XXXXR26r+LiYhUVFfmv19XVKTMzUzk5ObfcQbv5fD55PB5NnjxZcXFxdpcTUehdaMLRv2El5bceFEWOluT6f+bxFxr6F5po7V/LEZD26FBAmT9/vrZu3ao9e/aof//+bY7Nzs6WJJ08eVJ33XWX0tLSdPDgwYAxtbW1knTT9604nU45nc5Wy+Pi4iLmFxdJtZqG3oUmlP55mxxhrsZsN+oTj7/Q0L/QRFv/gtmXoD5mbFmW5s+fry1btmjnzp0aNGjQLbeprq6WJKWnp0uS3G63jhw5ogsXLvjHeDweuVwuDR06NJhyAABAlApqBqWwsFClpaX67W9/qz59+qimpkaSlJSUpJ49e+rUqVMqLS3VtGnT1K9fP3366adasGCBHn74YWVlZUmScnJyNHToUM2ePVurV69WTU2NFi9erMLCwhvOkgAAgO4nqBmUtWvX6vLlyxo/frzS09P9l/fff1+SFB8fr48//lg5OTkaPHiw/v7v/175+fn66KOP/LcRGxurrVu3KjY2Vm63W3/913+tp556KuB7UwAAQPcW1AzKrT7wk5mZqd27d9/ydgYOHKiysrJg7hoAAHQjnIsHAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADj9LC7AACIBncu2tbhbU+vygtjJUB0YAYFAAAYh4ACAACMQ0ABAADG4T0oQAToyPsbnLGWVo/phGIAoAswgwIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIcvagOi3LCScnmbHHaXAQBBYQYFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4QQWUlStX6v7771efPn2UkpKiGTNm6MSJEwFjGhoaVFhYqH79+ql3797Kz89XbW1twJgzZ84oLy9PiYmJSklJ0YsvvqjGxsbQ9wYAAESFoALK7t27VVhYqP3798vj8cjn8yknJ0fXrl3zj1mwYIE++ugjbd68Wbt379a5c+f02GOP+dc3NTUpLy9P169f1759+/Tuu+9q48aNWrJkSfj2CgAARLSgvqht+/btAdc3btyolJQUVVVV6eGHH9bly5e1fv16lZaWasKECZKkDRs2aMiQIdq/f7/Gjh2riooKHT9+XB9//LFSU1M1YsQIrVixQgsXLlRJSYni4+PDt3cAACAihfRNspcvX5YkJScnS5Kqqqrk8/k0adIk/5jBgwdrwIABqqys1NixY1VZWanhw4crNTXVPyY3N1fz5s3TsWPHNHLkyFb34/V65fV6/dfr6uokST6fTz6fL5Rd6HQt9Zlep4no3f9zxlrBbxNjBfyLW/vzx1qwj7+O/I5udL/RgudvaKK1f8HsT4cDSnNzs55//nk9+OCDGjZsmCSppqZG8fHx6tu3b8DY1NRU1dTU+Mf8eThpWd+y7kZWrlypZcuWtVpeUVGhxMTEju5Cl/J4PHaXELHonbR6TMe3XTG6OXyFRLmysrJWy9r7+Avld3Sj+40WPH9DE239q6+vb/fYDgeUwsJCHT16VHv37u3oTbRbcXGxioqK/Nfr6uqUmZmpnJwcuVyuTr//UPh8Pnk8Hk2ePFlxcXF2lxNR6N3/G1ZSHvQ2zhhLK0Y36+XDMfI2cy6e9jhakuv/OdjHX0d+Rze632jB8zc00dq/liMg7dGhgDJ//nxt3bpVe/bsUf/+/f3L09LSdP36dV26dClgFqW2tlZpaWn+MQcPHgy4vZZP+bSM+San0ymn09lqeVxcXMT84iKpVtPQO4V0sj9vs4OTBbbTjR5n7X38hdLjaH588/wNTbT1L5h9CepTPJZlaf78+dqyZYt27typQYMGBawfNWqU4uLitGPHDv+yEydO6MyZM3K73ZIkt9utI0eO6MKFC/4xHo9HLpdLQ4cODaYcAAAQpYKaQSksLFRpaal++9vfqk+fPv73jCQlJalnz55KSkpSQUGBioqKlJycLJfLpWeffVZut1tjx46VJOXk5Gjo0KGaPXu2Vq9erZqaGi1evFiFhYU3nCUBAADdT1ABZe3atZKk8ePHByzfsGGDnn76aUnSG2+8oZiYGOXn58vr9So3N1dvvfWWf2xsbKy2bt2qefPmye12q1evXpozZ46WL18e2p4AAICoEVRAsaxbf4wuISFBa9as0Zo1a246ZuDAgVH9rnUAABAazsUDAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADj9LC7AAAwxZ2Ltvl/dsZaWj1GGlZSLm+Tw8aqgO6JgAJ0kT9/8QMAtI1DPAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADBO0AFlz549mj59ujIyMuRwOPThhx8GrH/66aflcDgCLlOmTAkYc/HiRc2aNUsul0t9+/ZVQUGBrl69GtKOAACA6BF0QLl27Zq+853vaM2aNTcdM2XKFJ0/f95/+fWvfx2wftasWTp27Jg8Ho+2bt2qPXv2aO7cucFXDwAAolKPYDeYOnWqpk6d2uYYp9OptLS0G6777LPPtH37dh06dEijR4+WJP385z/XtGnT9PrrrysjIyPYkgAAQJQJOqC0x65du5SSkqLbbrtNEyZM0CuvvKJ+/fpJkiorK9W3b19/OJGkSZMmKSYmRgcOHND3vve9Vrfn9Xrl9Xr91+vq6iRJPp9PPp+vM3YhbFrqM71OE0Vb75yxVtfeX4wV8C+C05X9i5bH+J+LtudvV4vW/gWzP2EPKFOmTNFjjz2mQYMG6dSpU3rppZc0depUVVZWKjY2VjU1NUpJSQksokcPJScnq6am5oa3uXLlSi1btqzV8oqKCiUmJoZ7FzqFx+Oxu4SIFS29Wz3GnvtdMbrZnjuOEl3Rv7Kysk6/D7tEy/PXLtHWv/r6+naPDXtAmTlzpv/n4cOHKysrS3fddZd27dqliRMndug2i4uLVVRU5L9eV1enzMxM5eTkyOVyhVxzZ/L5fPJ4PJo8ebLi4uLsLieiRFvvhpWUd+n9OWMsrRjdrJcPx8jb7OjS+44GXdm/oyW5nXr7doi2529Xi9b+tRwBaY9OOcTz57797W/r9ttv18mTJzVx4kSlpaXpwoULAWMaGxt18eLFm75vxel0yul0tloeFxcXMb+4SKrVNNHSO2+TPSHB2+yw7b6jQVf0Lxoe3zcTLc9fu0Rb/4LZl07/HpQ//vGP+uqrr5Seni5JcrvdunTpkqqqqvxjdu7cqebmZmVnZ3d2OQAAIAIEPYNy9epVnTx50n/9iy++UHV1tZKTk5WcnKxly5YpPz9faWlpOnXqlH70ox/p7rvvVm7u11OYQ4YM0ZQpU/TMM89o3bp18vl8mj9/vmbOnMkneAAAgKQOzKAcPnxYI0eO1MiRIyVJRUVFGjlypJYsWaLY2Fh9+umneuSRR3TvvfeqoKBAo0aN0r//+78HHKJ57733NHjwYE2cOFHTpk3TuHHj9Pbbb4dvrwAAQEQLegZl/Pjxsqybf+yuvPzWbwRMTk5WaWlpsHcNAAC6Cc7FAwAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxgj5ZIAAgvO5ctK3D255elRfGSgBzMIMCAACMQ0ABAADGIaAAAADj8B4UIAihvFcAANB+zKAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjNPD7gIAAB1356JtHd729Kq8MFYChBczKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjBB1Q9uzZo+nTpysjI0MOh0MffvhhwHrLsrRkyRKlp6erZ8+emjRpkv7zP/8zYMzFixc1a9YsuVwu9e3bVwUFBbp69WpIOwIAAKJH0AHl2rVr+s53vqM1a9bccP3q1av1s5/9TOvWrdOBAwfUq1cv5ebmqqGhwT9m1qxZOnbsmDwej7Zu3ao9e/Zo7ty5Hd8LAAAQVXoEu8HUqVM1derUG66zLEtvvvmmFi9erEcffVSS9E//9E9KTU3Vhx9+qJkzZ+qzzz7T9u3bdejQIY0ePVqS9POf/1zTpk3T66+/royMjBB2BwAARIOgA0pbvvjiC9XU1GjSpEn+ZUlJScrOzlZlZaVmzpypyspK9e3b1x9OJGnSpEmKiYnRgQMH9L3vfa/V7Xq9Xnm9Xv/1uro6SZLP55PP5wvnLoRdS32m12kiE3vnjLXsLqHdnDFWwL8ITnfoX2c+t0x8/kaSaO1fMPsT1oBSU1MjSUpNTQ1Ynpqa6l9XU1OjlJSUwCJ69FBycrJ/zDetXLlSy5Yta7W8oqJCiYmJ4Si903k8HrtLiFgm9W71GLsrCN6K0c12lxDRorl/ZWVlnX4fJj1/I1G09a++vr7dY8MaUDpLcXGxioqK/Nfr6uqUmZmpnJwcuVwuGyu7NZ/PJ4/Ho8mTJysuLs7uciKKib0bVlJudwnt5oyxtGJ0s14+HCNvs8PuciJOd+jf0ZLcTrttE5+/kSRa+9dyBKQ9whpQ0tLSJEm1tbVKT0/3L6+trdWIESP8Yy5cuBCwXWNjoy5evOjf/pucTqecTmer5XFxcRHzi4ukWk1jUu+8TZH3QuVtdkRk3aaI5v51xfPKpOdvJIq2/gWzL2H9HpRBgwYpLS1NO3bs8C+rq6vTgQMH5Ha7JUlut1uXLl1SVVWVf8zOnTvV3Nys7OzscJYDAAAiVNAzKFevXtXJkyf917/44gtVV1crOTlZAwYM0PPPP69XXnlF99xzjwYNGqSXX35ZGRkZmjFjhiRpyJAhmjJlip555hmtW7dOPp9P8+fP18yZM/kEDwAAkNSBgHL48GF997vf9V9veW/InDlztHHjRv3oRz/StWvXNHfuXF26dEnjxo3T9u3blZCQ4N/mvffe0/z58zVx4kTFxMQoPz9fP/vZz8KwOwAAIBoEHVDGjx8vy7r5x+4cDoeWL1+u5cuX33RMcnKySktLg71rAADQTXAuHgAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYJ+hz8QAmuHPRtg5ve3pVXhgrAQB0BmZQAACAcQgoAADAOBziQbcTyuEhAEDXYAYFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjNPD7gIAAJHnzkXb2lzvjLW0eow0rKRc3iZHwLrTq/I6szRECWZQAACAcQgoAADAOAQUAABgHAIKAAAwDm+SBYBu6lZvdAXsxAwKAAAwDgEFAAAYh0M8sE0o36MAAIhuzKAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABgn7AGlpKREDocj4DJ48GD/+oaGBhUWFqpfv37q3bu38vPzVVtbG+4yAABABOuUGZS/+Iu/0Pnz5/2XvXv3+tctWLBAH330kTZv3qzdu3fr3LlzeuyxxzqjDAAAEKE65YvaevToobS0tFbLL1++rPXr16u0tFQTJkyQJG3YsEFDhgzR/v37NXbs2Bventfrldfr9V+vq6uTJPl8Pvl8vk7Yg/Bpqc/0Ou3gjLXaXh9jBfyL4NC/0NC/0LTVP/4e3lq0vnYEsz8Oy7LC+uwrKSnRa6+9pqSkJCUkJMjtdmvlypUaMGCAdu7cqYkTJ+pPf/qT+vbt699m4MCBev7557VgwYKb3uayZctaLS8tLVViYmI4ywcAAJ2kvr5eTz75pC5fviyXy9Xm2LDPoGRnZ2vjxo267777dP78eS1btkwPPfSQjh49qpqaGsXHxweEE0lKTU1VTU3NTW+zuLhYRUVF/ut1dXXKzMxUTk7OLXfQbj6fTx6PR5MnT1ZcXJzd5RhlWEl5m+udMZZWjG7Wy4dj5G3mq+6DRf9CQ/9C01b/jpbk2lRV5IjW146WIyDtEfaAMnXqVP/PWVlZys7O1sCBA/Uv//Iv6tmzZ4du0+l0yul0tloeFxcXMb+4SKq1q7T3/DreZgfn4gkB/QsN/QvNjfrH38L2i7bXjmD2pdM/Zty3b1/de++9OnnypNLS0nT9+nVdunQpYExtbe0N37MCAAC6p04PKFevXtWpU6eUnp6uUaNGKS4uTjt27PCvP3HihM6cOSO3293ZpQAAgAgR9kM8L7zwgqZPn66BAwfq3LlzWrp0qWJjY/XEE08oKSlJBQUFKioqUnJyslwul5599lm53e6bfoIHAAB0P2EPKH/84x/1xBNP6KuvvtIdd9yhcePGaf/+/brjjjskSW+88YZiYmKUn58vr9er3NxcvfXWW+EuAwAARLCwB5RNmza1uT4hIUFr1qzRmjVrwn3XAAAgSnAuHgAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAccL+PSjoXu5ctM3uEgAAUYgZFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADG4WzGAIAuFcpZ0E+vygtjJTAZAQUAEDEIN90Hh3gAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBzOxYOQzm0BAEBnYAYFAAAYhxkUAEC3wJmQIwszKAAAwDgEFAAAYBwCCgAAMA7vQQEA4BZ4/0rXI6AYhCcAAABf4xAPAAAwDjMoUYIvWwMARBNmUAAAgHGYQQEAoBN1ZIbbGWtp9ZhOKCaCMIMCAACMY2tAWbNmje68804lJCQoOztbBw8etLMcAABgCNsO8bz//vsqKirSunXrlJ2drTfffFO5ubk6ceKEUlJS7CorZN+cymuZphtWUi5vk8OmqgAA3VEkf32FbQHlJz/5iZ555hn9zd/8jSRp3bp12rZtm/7xH/9RixYtsqssAACM0Z3/c2tLQLl+/bqqqqpUXFzsXxYTE6NJkyapsrKy1Xiv1yuv1+u/fvnyZUnSxYsX5fP5wl5f9sodHd72mw3t0Wypvr5ZPXwxamrung+yjqJ3oaF/oaF/oaF/oTGhf1999VXYb/PKlSuSJMuybj3YssGXX35pSbL27dsXsPzFF1+0xowZ02r80qVLLUlcuHDhwoULlyi4nD179pZZISI+ZlxcXKyioiL/9ebmZl28eFH9+vWTw2F2Mq+rq1NmZqbOnj0rl8tldzkRhd6Fhv6Fhv6Fhv6FJlr7Z1mWrly5ooyMjFuOtSWg3H777YqNjVVtbW3A8traWqWlpbUa73Q65XQ6A5b17du3M0sMO5fLFVUPsq5E70JD/0JD/0JD/0ITjf1LSkpq1zhbPmYcHx+vUaNGaceO/3+vR3Nzs3bs2CG3221HSQAAwCC2HeIpKirSnDlzNHr0aI0ZM0Zvvvmmrl275v9UDwAA6L5sCyiPP/64/vu//1tLlixRTU2NRowYoe3btys1NdWukjqF0+nU0qVLWx2iwq3Ru9DQv9DQv9DQv9DQP8lhWe35rA8AAEDX4Vw8AADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0AJwdq1a5WVleX/pj+3263f/e53bW6zefNmDR48WAkJCRo+fLjKysq6qFrzBNu/d955Rw899JBuu+023XbbbZo0aZIOHjzYhRWboyOPvRabNm2Sw+HQjBkzOrdIg3Wkf5cuXVJhYaHS09PldDp17733dtvnb0f69+abb+q+++5Tz549lZmZqQULFqihoaGLKjbXqlWr5HA49Pzzz7c5rju+dhBQQtC/f3+tWrVKVVVVOnz4sCZMmKBHH31Ux44du+H4ffv26YknnlBBQYE++eQTzZgxQzNmzNDRo0e7uHIzBNu/Xbt26YknntC//du/qbKyUpmZmcrJydGXX37ZxZXbL9jetTh9+rReeOEFPfTQQ11UqZmC7d/169c1efJknT59Wh988IFOnDihd955R9/61re6uHIzBNu/0tJSLVq0SEuXLtVnn32m9evX6/3339dLL73UxZWb5dChQ/rFL36hrKysNsd129eO8JyfGC1uu+0265e//OUN1/3gBz+w8vLyApZlZ2dbf/u3f9sVpUWEtvr3TY2NjVafPn2sd999t5Origy36l1jY6P1wAMPWL/85S+tOXPmWI8++mjXFRcB2urf2rVrrW9/+9vW9evXu7iqyNFW/woLC60JEyYELCsqKrIefPDBrijNSFeuXLHuuecey+PxWH/5l39pPffcczcd211fO5hBCZOmpiZt2rRJ165du+n5hCorKzVp0qSAZbm5uaqsrOyKEo3Wnv59U319vXw+n5KTkzu5OrO1t3fLly9XSkqKCgoKurA687Wnf//6r/8qt9utwsJCpaamatiwYXr11VfV1NTUxdWapz39e+CBB1RVVeU/JPv555+rrKxM06ZN68pSjVJYWKi8vLxWrwk30l1fO2z7qvtoceTIEbndbjU0NKh3797asmWLhg4desOxNTU1rb7KPzU1VTU1NV1RqpGC6d83LVy4UBkZGe16gkejYHq3d+9erV+/XtXV1V1bpMGC6d/nn3+unTt3atasWSorK9PJkyf1d3/3d/L5fFq6dGkXV26GYPr35JNP6n/+5380btw4WZalxsZG/fCHP+y2h3g2bdqk3//+9zp06FC7xnfX1w5mUEJ03333qbq6WgcOHNC8efM0Z84cHT9+3O6yIkZH+7dq1Spt2rRJW7ZsUUJCQhdUap729u7KlSuaPXu23nnnHd1+++02VGqmYB57zc3NSklJ0dtvv61Ro0bp8ccf1z/8wz9o3bp1XVy1OYLp365du/Tqq6/qrbfe0u9//3v95je/0bZt27RixYourtp+Z8+e1XPPPaf33nuv2/7taje7jzFFm4kTJ1pz58694brMzEzrjTfeCFi2ZMkSKysrqwsqiwxt9a/Fa6+9ZiUlJVmHDh3qoqoiw81698knn1iSrNjYWP/F4XBYDofDio2NtU6ePGlDteZp67H38MMPWxMnTgxYVlZWZkmyvF5vV5RnvLb6N27cOOuFF14IWPbP//zPVs+ePa2mpqauKM8YW7ZsafV8lOR/PjY2Nrbapru+djCDEmbNzc3yer03XOd2u7Vjx46AZR6Pp93vuegO2uqfJK1evVorVqzQ9u3bNXr06C6szHw3693gwYN15MgRVVdX+y+PPPKIvvvd76q6ulqZmZk2VGueth57Dz74oE6ePKnm5mb/sj/84Q9KT09XfHx8V5VotLb6V19fr5iYwJeb2NhYSZLVzc5XO3HixFbPx9GjR2vWrFmqrq729+XPddvXDrsTUiRbtGiRtXv3buuLL76wPv30U2vRokWWw+GwKioqLMuyrNmzZ1uLFi3yj/+P//gPq0ePHtbrr79uffbZZ9bSpUutuLg468iRI3btgq2C7d+qVaus+Ph464MPPrDOnz/vv1y5csWuXbBNsL37pu7+KZ5g+3fmzBmrT58+1vz5860TJ05YW7dutVJSUqxXXnnFrl2wVbD9W7p0qdWnTx/r17/+tfX5559bFRUV1l133WX94Ac/sGsXjPLNT/Hw2vE13iQbggsXLuipp57S+fPnlZSUpKysLJWXl2vy5MmSpDNnzgT8r+GBBx5QaWmpFi9erJdeekn33HOPPvzwQw0bNsyuXbBVsP1bu3atrl+/ru9///sBt7N06VKVlJR0Zem2C7Z3CBRs/zIzM1VeXq4FCxYoKytL3/rWt/Tcc89p4cKFdu2CrYLt3+LFi+VwOLR48WJ9+eWXuuOOOzR9+nT9+Mc/tmsXjMZrx9ccltXN5tcAAIDx+C8WAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIzzf45W4HoJFDcoAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dd_fair_100.hist(bins=30)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "For our broken die, and $n$ trials, the central limit theorem predicts\n", "\n", "$\\operatorname{var}(\\overline{X}_n) = \\dfrac{3.062}{n}$.\n", "\n", "|$n$ | var |\n", "|--: | -------------------------:|\n", "| 50 | 0.06124 | \n", "| 100 | 0.03062 |" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "std: [0.24694104]\n", "variance: [0.06097988]\n", "mean: [2.77364]\n", "std: [0.17855012]\n", "variance: [0.03188015]\n", "mean: [2.78033667]\n" ] } ], "source": [ "print(report(dd_broken_50)) \n", "print(report(dd_broken_100)) " ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([[]], dtype=object)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGzCAYAAAAFROyYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJpFJREFUeJzt3Xt0VNX9/vFnEoZJwISbkksJkHpXRBQkjdh6CwlKW6gUpNAutCxpFdpi2tqkSyCglEstIhaltoh11XjBFttKC6aguJQYINUq1iK1tKViQquSgaQZx2T//ugv880kIZkMZ2b2zLxfa81azD777Pl8OHPw8czNZYwxAgAAsEhKrAsAAADoiIACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAFiHgAIAAKxDQAFgBZ/Pp+9973vKzc1Venq6CgoKVFVVFeuyAMQIAQWAFW666SatWbNGs2fP1n333afU1FRdf/31eumll2JdGoAYcPFjgQBibc+ePSooKNAPf/hDfec735EkNTc3a9SoURo6dKh2794d4woBRBtXUADE3NNPP63U1FTNmzcvMJaWlqa5c+equrpahw8fjmF1AGKBgAIg5l599VWdc845yszMDBofP368JOm1116LQVUAYomAAiDm3nvvPeXk5HQabxs7cuRItEsCEGMEFAAx99///lcej6fTeFpaWmA7gORCQAEQc+np6fL5fJ3Gm5ubA9sBJBcCCoCYy8nJ0XvvvddpvG0sNzc32iUBiDECCoCYGzNmjN5++215vd6g8ZqamsB2AMmFgAIg5r74xS+qpaVFDz30UGDM5/Np06ZNKigoUF5eXgyrAxALfWJdAAAUFBRo+vTpKi8v19GjR3XWWWfp5z//uf7+979r48aNsS4PQAzwTbIArNDc3KxFixbpF7/4hT788EONHj1ad911l0pKSmJdGoAYIKAAAADr8B4UAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrxOUXtbW2turIkSPKyMiQy+WKdTkAACAExhgdP35cubm5Sknp/hpJXAaUI0eO8NXXAADEqcOHD2vYsGHdzonLgJKRkSHpfw1mZmbGuBrn+f1+PffccyouLpbb7Y51ORGVTL1KydUvvSauZOqXXp3l9XqVl5cX+O94d+IyoLS9rJOZ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FStWmEGDBpk//elP3c575513jCTzhz/84VTLdEQ4vRpjzEcffWTOPPNMc+eddxpj4uO4GhNev/PmzTMXXXRRj/NsObY+n88cPHjQ7Nu3z5SVlZnTTz/dvPnmm13OjffztTe9thev52u4/RoTf+dsuL3acr7yEk+ULFiwQM8++6yef/55DRs2rNu52dnZqq+vDxqrr69XdnZ2YHvb2MnmxFJvem1zzz33aOXKlXruuec0evTobud+8pOf1Omnn66//vWvTpR7SsLptY3b7dYll1wS6MP24yqF129jY6OeeOIJzZ07t8e5thzbvn376qyzztLYsWO1YsUKXXzxxbrvvvu6nBvv52tvem0Tr+erFF6/beLtnA2nV5vOVwJKhBljtGDBAm3ZskU7d+5Ufn5+j/sUFhZqx44dQWNVVVWB1w7z8/OVnZ0dNMfr9aqmpibk1xcjIZxepf+9C/6uu+7Stm3bNG7cuB7n/+tf/9L777+vnJycUy05bOH22l5LS4veeOONQB+2Hlfp1PrdvHmzfD6fvvzlL/c414Zj25XW1lb5fL4ut8Xr+Xoy3fUqxef52p2e+m0vns7ZroTSq1Xna0SuyyDg1ltvNQMGDDAvvPCCee+99wK3pqamwJyvfOUrpqysLHD/5ZdfNn369DH33HOPeeutt8ySJUuM2+02b7zxRmDOypUrzcCBA82vf/1r8/rrr5spU6aY/Px889///jeq/bUXTq8rV640ffv2NU8//XTQPsePHzfGGHP8+HHzne98x1RXV5tDhw6ZP/zhD+bSSy81Z599tmlubo56j23C6XXp0qVm+/bt5p133jG1tbVm5syZJi0tLeiSq43H1Zjw+m1zxRVXmBtvvLHTuK3HtqyszOzatcscOnTIvP7666asrMy4XC7z3HPPGWMS53w1pve9xuv52qa3/cbzOdvbXtvYdL4SUCJMUpe3TZs2BeZceeWVZs6cOUH7PfXUU+acc84xffv2NRdeeKHZunVr0PbW1lazaNEik5WVZTwej7n22mvNgQMHotDRyYXT64gRI7rcZ8mSJcYYY5qamkxxcbE544wzjNvtNiNGjDC33HKLqauri25zHYTT68KFC83w4cNN3759TVZWlrn++uvNH//4x6B1bTyuxoT/PP7LX/5iJAX+UWzP1mP71a9+1YwYMcL07dvXnHHGGebaa68Nqj9Rzldjet9rvJ6vbXrbbzyfs+E8j207X13GGBOZazMAAADh4T0oAADAOgQUAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALDO/wPI1f/vFo64lgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## \"broken\" dice results\n", "##\n", "dd_broken_50.hist(bins=300)\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "array([[]], dtype=object)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJoRJREFUeJzt3XtwU3X+//FX2qaBalMo2JtULioiIsKI1Hr7IpQW6Lii7Looq6iMrG5xRrteiiNQQC2LrtdBHC+L7q5VV8crILSigC4Fpepy0UVBGFRoUREKVEJoP78//DVrbIHmNG0+TZ+PmQzm5HxO3uc9Sc/LzzlJXMYYIwAAAIvFRLoAAACAYyGwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAWMHn8+nOO+9URkaGOnfurKysLJWXl0e6LACWILAAsMK1116rBx98UBMmTNAjjzyi2NhYjRkzRh988EGkSwNgARc/fggg0j788ENlZWXp/vvv12233SZJOnjwoAYMGKCUlBStWrUqwhUCiDRmWABE3CuvvKLY2FhNnjw5sKxTp06aNGmSKioq9PXXX0ewOgA2ILAAiLhPPvlEffv2ldfrDVo+dOhQSdKnn34agaoA2ITAAiDidu7cqfT09EbLG5bt2LGjrUsCYBkCC4CI++mnn+TxeBot79SpU+BxAB0bgQVAxHXu3Fk+n6/R8oMHDwYeB9CxEVgARFx6erp27tzZaHnDsoyMjLYuCYBlCCwAIm7QoEH64osvVFNTE7R8zZo1gccBdGwEFgAR99vf/lZ1dXV68sknA8t8Pp8WLFigrKwsZWZmRrA6ADaIi3QBAJCVlaXf/e53mjp1qnbt2qVTTjlFzz33nLZt26Znnnkm0uUBsADfdAvACgcPHtS0adP0z3/+Uz/++KMGDhyo2bNnKy8vL9KlAbAAgQUAAFiPa1gAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKzXLr84rr6+Xjt27FBiYqJcLlekywEAAM1gjNG+ffuUkZGhmJjQ5kzaZWDZsWMHX9UNAEA79fXXX6tHjx4hjWmXgSUxMVHSzzvs9XpDGuv3+1VWVqbc3Fy53e7WKC9q0Tvn6J1z9M45euccvXPuaL2rqalRZmZm4DgeinYZWBpOA3m9XkeBJSEhQV6vlxdhiOidc/TOOXrnHL1zjt4515zeObmcg4tuAQCA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKwXF+kCALSuXkWLHI/dNic/jJUAgHPMsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWi4t0AQDs1atokeOx2+bkh7ESAB0dMywAAMB6zLAAsM4vZ3Y8sUZzh0oDipfKV+c65lhmdoDoxAwLAACwHoEFAABYj8ACAACsF1JgKSkp0TnnnKPExESlpKRo7Nix2rRpU9A6w4YNk8vlCrrdeOONQets375d+fn5SkhIUEpKim6//XYdPny45XsDAACiUkgX3a5YsUIFBQU655xzdPjwYd11113Kzc3VZ599puOOOy6w3g033KBZs2YF7ickJAT+u66uTvn5+UpLS9OqVau0c+dOXXPNNXK73brvvvvCsEsAACDahBRYlixZEnT/2WefVUpKiiorK3XRRRcFlickJCgtLa3JbZSVlemzzz7TO++8o9TUVA0aNEizZ8/WnXfeqeLiYsXHxzca4/P55PP5AvdramokSX6/X36/P5RdCKwf6jjQu5aIZO88sabNn1Nq2b7+smZPjAn6tzWfN9rwnnWO3jl3tN61pJ8uY4zjv2abN2/WqaeeqvXr12vAgAGSfj4ltHHjRhljlJaWpksuuUTTpk0LzLJMnz5db775pj799NPAdrZu3ao+ffro448/1uDBgxs9T3FxsWbOnNloeWlpadDsDQAAsFdtba2uuuoq7d27V16vN6Sxjr+Hpb6+XrfccovOP//8QFiRpKuuuko9e/ZURkaG1q1bpzvvvFObNm3Sq6++KkmqqqpSampq0LYa7ldVVTX5XFOnTlVhYWHgfk1NjTIzM5WbmxvyDvv9fpWXl2vkyJFyu90hje3o6J1zkezdgOKlbfp8DTYU5zke+8uaPTFGs4fUa9raGPnqj/09LC153mjDe9Y5eufc0XrXcIbECceBpaCgQBs2bNAHH3wQtHzy5MmB/z7zzDOVnp6uESNGaMuWLTr5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9PR0SVJ2drb27NmjysrKwDrvvvuu6uvrlZWV1drlAACAdijkGZb9+/dr8+bNgftbt27Vp59+quTkZCUnJ2vmzJkaN26c0tLStGXLFt1xxx065ZRTlJf385Tn6aefrlGjRumGG27QE088Ib/frylTpmj8+PF8QggAADQp5BmWtWvXavDgwRo8eLAkqbCwUIMHD9b06dMVGxurdevW6Te/+Y369u2rSZMm6eyzz9b7778fdErn+eefV79+/TRixAiNGTNGF1xwgZ588snw7RUAAIgqIc+wDBs2TMYc+eOFS5cuPeY2kpOTVVpaGupTAwCADorfEgIAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWi4t0AQDQ0fUqWuR47LY5+WGsBLAXMywAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA68VFugCgrfUqWuR47LY5+WGsBADQXMywAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1+Gp+AGjHjvZTE55Yo7lDpQHFS+WrczV6nJ+aQHtCYAFC4PR3iBoOHAAAZzglBAAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYL+TAsnLlSl1yySXKyMiQy+XS66+/HvS4MUbTp09Xenq6OnfurJycHH355ZdB6+zevVsTJkyQ1+tVly5dNGnSJO3fv79FOwIAAKJXyIHlwIEDOuusszRv3rwmH587d64effRRPfHEE1qzZo2OO+445eXl6eDBg4F1JkyYoI0bN6q8vFwLFy7UypUrNXnyZOd7AQAAolrIX80/evRojR49usnHjDF6+OGHdffdd+vSSy+VJP39739XamqqXn/9dY0fP16ff/65lixZoo8++khDhgyRJD322GMaM2aMHnjgAWVkZLRgdwAAQDQK628Jbd26VVVVVcrJyQksS0pKUlZWlioqKjR+/HhVVFSoS5cugbAiSTk5OYqJ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3XeaPn26qqqqNGjQIC1ZsqTRhbjh5vF4NGPGjEanmHBs9M45euccvXOO3jlH75xrrd65jJPPFgEAALQhfvwQAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1oiqwlJSU6JxzzlFiYqJSUlI0duxYbdq06ahjnnrqKV144YXq2rWrunbtqpycHH344YdtVLE9nPTul1588UW5XC6NHTu29Yq0lNPe7dmzRwUFBUpPT5fH41Hfvn21ePHiNqjYHk579/DDD+u0005T586dlZmZqVtvvVUHDx5sg4rtMX/+fA0cODDwbaLZ2dl6++23jzrm5ZdfVr9+/dSpUyedeeaZHe711iDU3nGc+B8nr7sGLT1ORFVgWbFihQoKCrR69WqVl5fL7/crNzdXBw4cOOKY5cuX68orr9R7772niooKZWZmKjc3V99++20bVh55TnrXYNu2bbrtttt04YUXtkGl9nHSu0OHDmnkyJHatm2bXnnlFW3atElPPfWUTjzxxDasPPKc9K60tFRFRUWaMWOGPv/8cz3zzDN66aWXdNddd7Vh5ZHXo0cPzZkzR5WVlVq7dq2GDx+uSy+9VBs3bmxy/VWrVunKK6/UpEmT9Mknn2js2LEaO3asNmzY0MaVR16oveM48T+h9q5BWI4TJort2rXLSDIrVqxo9pjDhw+bxMRE89xzz7ViZfZrbu8OHz5szjvvPPP000+biRMnmksvvbRtCrRYc3o3f/5806dPH3Po0KE2rMx+zeldQUGBGT58eNCywsJCc/7557d2edbr2rWrefrpp5t87IorrjD5+flBy7Kysswf//jHtijNekfr3a9xnAh2rN6F6zgRVTMsv7Z3715JUnJycrPH1NbWyu/3hzQmGjW3d7NmzVJKSoomTZrUFmW1C83p3Ztvvqns7GwVFBQoNTVVAwYM0H333ae6urq2KtNKzendeeedp8rKysCU/FdffaXFixdrzJgxbVKjjerq6vTiiy/qwIEDR/w9toqKCuXk5AQty8vLU0VFRVuUaK3m9O7XOE78rLm9C9txwmGgsl5dXZ3Jz88P+f+6brrpJtOnTx/z008/tVJl9mtu795//31z4oknmu+++84YY5hhMc3v3WmnnWY8Ho+5/vrrzdq1a82LL75okpOTTXFxcRtVap9Q3rOPPPKIcbvdJi4uzkgyN954YxtUaJ9169aZ4447zsTGxpqkpCSzaNGiI67rdrtNaWlp0LJ58+aZlJSU1i7TSqH07tc6+nEilN6F8zgRtYHlxhtvND179jRff/11s8eUlJSYrl27mv/85z+tWJn9mtO7mpoa06tXL7N48eLAMgJL8193p556qsnMzDSHDx8OLPvrX/9q0tLSWrtEazW3d++9955JTU01Tz31lFm3bp159dVXTWZmppk1a1YbVWoPn89nvvzyS7N27VpTVFRkunfvbjZu3NjkugSWYKH07pc4TjS/d+E+TkRlYCkoKDA9evQwX331VbPH3H///SYpKcl89NFHrViZ/Zrbu08++cRIMrGxsYGby+UyLpfLxMbGms2bN7dRxfYI5XV30UUXmREjRgQtW7x4sZFkfD5fa5VorVB6d8EFF5jbbrstaNk//vEP07lzZ1NXV9daJbYLI0aMMJMnT27ysczMTPPQQw8FLZs+fboZOHBgG1Rmv6P1rgHHiaYdqXfhPk5E7NeaW4MxRjfffLNee+01LV++XL17927WuLlz5+ree+/V0qVLNWTIkFau0k6h9q5fv35av3590LK7775b+/bt0yOPPKLMzMzWLNcqTl53559/vkpLS1VfX6+YmJ8vJfviiy+Unp6u+Pj41i7ZGk56V1tbG+hZg9jY2MD2OrL6+nr5fL4mH8vOztayZct0yy23BJaVl5c3+7qNaHe03kkcJ47mSL0L+3EiDOHKGjfddJNJSkoyy5cvNzt37gzcamtrA+tcffXVpqioKHB/zpw5Jj4+3rzyyitBY/bt2xeJXYgYJ737tY56SshJ77Zv324SExPNlClTzKZNm8zChQtNSkqKueeeeyKxCxHjpHczZswwiYmJ5oUXXjBfffWVKSsrMyeffLK54oorIrELEVNUVGRWrFhhtm7datatW2eKioqMy+UyZWVlxpjGffv3v/9t4uLizAMPPGA+//xzM2PGDON2u8369esjtQsRE2rvOE78T6i9+zVOCf1/kpq8LViwILDO//3f/5mJEycG7vfs2bPJMTNmzGjz+iPJSe9+raMGFqe9W7VqlcnKyjIej8f06dPH3HvvvUHXtHQETnrn9/tNcXGxOfnkk02nTp1MZmam+dOf/mR+/PHHNq8/kq6//nrTs2dPEx8fb0444QQzYsSIwEHDmKZfc//6179M3759TXx8vDnjjDNCutA0moTaO44T/+PkdfdLLTlOuIzp4HOoAADAelH9PSwAACA6EFgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHr/D4JWw5mW4gi/AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dd_broken_100.hist(bins=30)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Random Number Generation\n", "========================\n", "\n", "We have been using the [random number generator](https://en.wikipedia.org/wiki/Random_number_generation) provided by ``numpy`` without much comment.\n", "\n", "e.g. we've seen that\n", "\n", "```\n", "from numpy.random import default_rng\n", "rng = default_rng()\n", "```\n", "\n", "produces an object ``rng`` with methods include ``random`` and ``choice``:\n", "\n", "```\n", ">>> rng.random(4)\n", "array([0.1403315 , 0.32259798, 0.60620108, 0.7533085 ])\n", "\n", ">>> rng.choice([\"red\",\"blue\",\"green\"],5)\n", "array(['blue', 'green', 'blue', 'green', 'red'], dtype='