{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulating the PHYS 211 M&M lab\n", "\n", "NOTE: In this notebook I use the `stats` sub-module of `scipy` for all statistics functions, including generation of random numbers. There are other modules with some overlapping functionality, e.g., the regular python random module, and the `scipy.random` module, but I do not use them here. The `stats` sub-module includes tools for a large number of distributions, it includes a large and growing set of statistical functions, and there is a unified class structure. (And namespace issues are minimized.) See https://docs.scipy.org/doc/scipy/reference/stats.html." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import stats\n", "\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ " \n", "# M.L. modification of matplotlib defaults\n", "# Changes can also be put in matplotlibrc file, \n", "# or effected using mpl.rcParams[]\n", "plt.rc('figure', figsize = (6, 4.5)) # Reduces overall size of figures\n", "plt.rc('axes', labelsize=16, titlesize=14)\n", "plt.rc('figure', autolayout = True) # Adjusts supblot params for new size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Intro\n", "+ 6 Colors: Yellow, Blue, Orange, Red, Green, and Blue\n", "+ Assume 60 M&Ms in every bag\n", "+ Assume equal probabilities (well mixed, large \"reservoir\")\n", "+ Assume 24 students (bags) per section" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get started, sample one bag of M&Ms, and count the numberof brown M&Ms.
\n", "Do this by generating 60 random integers from the set 0, 1, 2, 3, 4, 5, and let's say that \"brown\" = 0." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3 0 5 1 2 5 4 5 2 0 5 5 5 1 5 2 0 0 4 1 5 2 1 5 0 4 4 0 3 5 5 0 4 4 0 2 4\n", " 0 3 2 2 1 5 3 1 3 2 2 2 3 1 4 5 3 3 3 1 2 1 1]\n" ] } ], "source": [ "bag = stats.randint.rvs(0,6,size = 60) # or sp.random.randint(0,6,60)\n", "print(bag)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Count the number of each color in the bag using `np.bincount(bag)`. The first element in the array is the number of occurences of 0 in \"bag,\" the second element is the number of occurences of 1, etc." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 9, 10, 11, 9, 8, 13], dtype=int64)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.bincount(bag)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ For our \"brown\" = 0 choice, the number of brown M&Ms is the last element in the array returned by `bincount`, or `sp.bincount(bag)[0]`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.bincount(bag)[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "+ Now sample many bags\n", "+ Record number of brown M&Ms in each bag" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10., 10., 6., 10., 14., 11., 8., 13., 7., 16., 8., 12., 9.,\n", " 10., 13., 9., 9., 8., 6., 7., 13., 9., 15., 15.])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Long version of sampling many bags\n", "nb = 24 # number of bags \n", "data_section = np.zeros(nb) # array in for data for a lab section\n", "for i in range(nb):\n", " bag = stats.randint.rvs(0,6,size=60)\n", " data_section[i] = np.bincount(bag)[0]\n", "\n", "data_section" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([13, 10, 9, 12, 6, 12, 12, 13, 6, 7, 14, 8, 10, 7, 7, 9, 19,\n", " 9, 8, 12, 6, 8, 8, 10], dtype=int64)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Concise version of sampling many bags\n", "nb = 24 # number of bags\n", "data_section = np.array([np.bincount(stats.randint.rvs(0,6,size=60))[0] for i in range(nb)])\n", "data_section" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9.791666666666666, 3.0547663122114956, 0.6369628076720711)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(data_section), np.std(data_section), np.std(data_section)/np.sqrt(len(data_section)-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for results from this single lab section:
\n", "$\\overline N = 9.8 \\pm 0.6$" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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phrrJSYmokePHvD390dsbCzmz5+PqVOnIjw8vIJ6SkRERDVRtQhNT548wfDhw7F582bUrl1bY92NGzfC2dkZq1atgqenJyZMmIBx48YhJCSkgnpLRERENVG1CE2TJ09Gz5490blz5xLrnj17FkFBQUplXbt2RUxMDPLy8sqri0RERFTD6VV2B0qya9cuXLhwAX/99Zek+mlpabC1tVUqs7W1RX5+PjIyMmBvb68yT05ODnJychTPs7KytOs0ERER1ThVOjQlJydj2rRpOHr0KIyMjCTPJ5PJlJ4LIdSWywUHB2Px4sWv3lGi14jr3IhyW/bt5T3Lbdk1UXntC+4HIvWq9Om58+fPIz09HT4+PtDT04Oenh6io6OxZs0a6OnpoaCgQGUeOzs7pKWlKZWlp6dDT08PVlZWatuZN28eMjMzFY/k5ORyWR8iIiKqvqr0kaZOnTrh8uXLSmVjx45Fo0aN8PHHH0NXV1dlHj8/Pxw4cECp7OjRo/D19YW+vr7adgwNDWFoaFh2HSciIqIap0qHJjMzMzRu3FipzNTUFFZWVoryefPmISUlBdu3bwcATJw4EWvXrsXMmTPx7rvv4uzZswgNDcXOnTsrvP9ERERUc1Tp03NSpKamIikpSfHczc0NBw8eRFRUFJo1a4alS5dizZo1GDBgQCX2koiIiKq7Kn2kSZ2oqCil52FhYSp1AgICcOHChYrpEBEREb0Wqv2RJiIiIqKKwNBEREREJAFDExEREZEEDE1EREREEjA0EREREUnA0EREREQkAUMTERERkQQMTUREREQSMDQRERERScDQRERERCQBQxMRERGRBAxNRERERBIwNBERERFJwNBEREREJAFDExEREZEEDE1EREREEjA0EREREUnA0EREREQkAUMTERERkQQMTUREREQSMDQRERERScDQRERERCQBQxMRERGRBAxNRERERBIwNBERERFJwNBEREREJAFDExEREZEEDE1EREREEjA0EREREUnA0EREREQkQZUPTRs2bEDTpk1hbm4Oc3Nz+Pn54dChQ8XWj4qKgkwmU3lcv369AntNRERENY1eZXegJI6Ojli+fDkaNGgAANi2bRv69u2L2NhYeHl5FTtfQkICzM3NFc/r1q1b7n0lIiKimqvKh6bevXsrPV+2bBk2bNiAc+fOaQxNNjY2sLS0LOfeERER0eui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8ePo16+fpHlmzJgBCwsLXLx4Eb169VI54hQVFYUdO3Yonq9btw4XLlyQ3KdFixbh+PHjaq/EU+eTTz5BaGgoHj16pFRe9FcBWrRoIbl9er0xNNFrTyaTKY42FfeTD56enhg/fjzy8/PRs2dP1K9fH82bN4ezszPS09OLvfS/vC1duhQhISGwt7dHq1atYG9vj+DgYOjo6GDTpk0qtzn44IMPMHfuXGRkZKB///6wtrZGq1at4OPjAysrKzRp0gQrVqwo8wHZS5cuRWBgIFJSUtCiRQvFVVgeHh64du0avL29sW7dujJtEwDq1auH8ePHY9CgQXB1dUXLli3h6OiIo0ePwsrKCtu3by/VT8EAL8b6fP/99zAwMMCqVatgZ2en2PYff/wxdHR0sHbtWjRt2lRlXldXVzg7OyvCqrrQBLwYO9esWTNYWFi84ppXHgcHBxw4cABWVlY4fvw43N3d4enpiVatWsHW1haBgYG4cuUKPvnkE0yZMgVPnjxBjx49ir2thrauXr2KCRMmwMrKCg0bNsRbb72Fhg0bokmTJrh79y4CAwP5u3UkGUMTEYD+/fuXeCn1xo0bsWTJEri7uyMlJQX379/H+++/j7Nnz8LS0rJC+vmyIUOG4NChQ/Dy8sL169fx/PlzdOzYEZGRkRgyZIjaeYKDg3H69GkMGzYMpqamuHjxIm7fvg1HR0eMGzcOERER6NSpU5n209jYGEeOHMHq1avh6+uLO3fu4O+//8abb76Jzz//HGfOnIGVlVWZtim3bt06rF69GmZmZrhy5QpMTU0xfPhwnD9/vtjbCpSkT58+OH/+PIYPHw4jIyPExcVBCIG3334bp06dwnvvvVfsvPJTdLVq1VI5wtGuXTvo6uoq1auO/P39cfXqVcydOxdeXl5ISkrClStXYGlpiUmTJuHatWv4/PPP8fXXXyMwMBD37t1Dt27dkJGRUeZ9+fTTTzF37ly0bNkST548QVxcHJ49e4aAgABs374dR48e1XifJ6KiZELb61KJiIiIXgM80kREREQkAUMTERERkQQMTUREREQSMDQRERERScDQRERERCQBQxMRERGRBAxNRERERBIwNBERERFJwNBEREREJAFDExEREZEEDE1EREREEjA0EREREUnA0EREREQkAUMTERERkQT/D4PZwbh/md/DAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "nbins = 20\n", "low = 0\n", "high = 20\n", "plt.hist(data_section,nbins,[low,high],rwidth = 0.9)\n", "plt.xlim(0,20)\n", "plt.title(\"Histogram of brown M&Ms per bag - Single Section\",fontsize=14)\n", "plt.xlabel(\"Number of brown M&Ms\")\n", "plt.ylabel(\"Occurences\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Version information\n", "`version_information` is from J.R. Johansson (jrjohansson at gmail.com); see Introduction to scientific computing with Python for more information and instructions for package installation.\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "%load_ext version_information" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/json": { "Software versions": [ { "module": "Python", "version": "3.11.5 64bit [MSC v.1916 64 bit (AMD64)]" }, { "module": "IPython", "version": "8.15.0" }, { "module": "OS", "version": "Windows 10 10.0.26100 SP0" }, { "module": "numpy", "version": "1.23.2" }, { "module": "scipy", "version": "1.11.1" }, { "module": "matplotlib", "version": "3.7.2" } ] }, "text/html": [ "
SoftwareVersion
Python3.11.5 64bit [MSC v.1916 64 bit (AMD64)]
IPython8.15.0
OSWindows 10 10.0.26100 SP0
numpy1.23.2
scipy1.11.1
matplotlib3.7.2
Sat Feb 08 14:33:34 2025 Eastern Standard Time
" ], "text/latex": [ "\\begin{tabular}{|l|l|}\\hline\n", "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n", "Python & 3.11.5 64bit [MSC v.1916 64 bit (AMD64)] \\\\ \\hline\n", "IPython & 8.15.0 \\\\ \\hline\n", "OS & Windows 10 10.0.26100 SP0 \\\\ \\hline\n", "numpy & 1.23.2 \\\\ \\hline\n", "scipy & 1.11.1 \\\\ \\hline\n", "matplotlib & 3.7.2 \\\\ \\hline\n", "\\hline \\multicolumn{2}{|l|}{Sat Feb 08 14:33:34 2025 Eastern Standard Time} \\\\ \\hline\n", "\\end{tabular}\n" ], "text/plain": [ "Software versions\n", "Python 3.11.5 64bit [MSC v.1916 64 bit (AMD64)]\n", "IPython 8.15.0\n", "OS Windows 10 10.0.26100 SP0\n", "numpy 1.23.2\n", "scipy 1.11.1\n", "matplotlib 3.7.2\n", "Sat Feb 08 14:33:34 2025 Eastern Standard Time" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version_information numpy, scipy, matplotlib" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }