{ "cells": [ { "cell_type": "markdown", "id": "834d5334-219e-420d-8b92-4e03f86577a4", "metadata": {}, "source": [ "# Your assignment\n", "\n", "## Right now: email me a description of the energy function you want to use. I need to know if you care about height of players, offensive ranking of teams, overall rankings of teams, etc. I need to know that ASAP so that I can make sure to have the data available.\n", "\n", "## Here's what you'll do to get your own copy of the code:\n", "\n", "1. Grab the code. Here's where it lives on github: [https://github.com/mglerner/MarchMadnessMonteCarlo]. You can either grab it via git if you know how, or by clicking on the code button and downloading a zip file.\n", "\n", "2. Unzip the code if you downloaded it as zip file.\n", "\n", "3. Start up jupyter lab from the directory where the zip file was.\n", "\n", "4. Follow the directions below. That means you need to at least\n", "\n", " * Define one energy function\n", " * Find a temperature\n", " * Run the rest of the code so that you have a full bracket at the bottom\n", " * (You can do this with multiple functions of temperatures)\n", " \n", "\n", "5. When you're all done, email me a copy of your notebook.\n", "\n", "6. Enter as many brackets as you want (but at least one) in our bracket pool. \n", " * You go to https://picks.cbssports.com/college-basketball/ncaa-tournament/bracket/pools/kbxw63b2g44dqmrqg43a====/standings and login. I've made accounts for each of you\n", " * You'll use the following accounts:\n", " * Wisdom: earlham.statmech.1@gmail.com password Boltzmann\n", " * Matias: earlham.statmech.2@gmail.com password Boltzmann\n", " * Vela: earlham.statmech.3@gmail.com password Boltzmann\n", " * Enter as many brackets as you want. I suggest also entering at least one in the big bracket challenge.\n", " * **If you can't make the CBS site work, just make sure to email me a copy of your brackets. I won't be able to enter them in the big bracket pool that wins money, but I can enter them in ours.**" ] }, { "cell_type": "code", "execution_count": 1, "id": "6d74b4da-04d0-465d-916f-8308b666e4c9", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/4w/ssz2zjl56pxgf3w8b2b78c2c0000gr/T/ipykernel_95738/387262696.py:9: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses\n", " import imp\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Import all of the things we need\n", "\n", "import seaborn as sns\n", "from IPython.display import HTML\n", "\n", "sns.set_style('darkgrid')\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "import imp\n", "from MarchMadnessMonteCarlo import KenPomeroy\n", "imp.reload(KenPomeroy)\n", "import MarchMadnessMonteCarlo as MMMC\n", "imp.reload(MMMC)" ] }, { "cell_type": "markdown", "id": "1cc7652b-712e-4a4e-ba82-97f76b0e5bbe", "metadata": {}, "source": [ "## OK folks, the brackets are in\n", "\n", "If you're not familiar with March Madness, it's a 32-team bracket, divided into four regions: Midwest, South, East and West. We can print out a bracket for all of the regions, and then I'll explain one weirdness." ] }, { "cell_type": "code", "execution_count": 2, "id": "29f9e1a3-ba46-4b23-aaab-0ba157b03972", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Midwest\n", "\n", "Houston (1) \n", "Northern Kentucky (16) Nor (16) \n", "Iowa (8) \n", "Auburn (9) Aub (9) Aub (9) \n", "Miami FL (5) \n", "Drake (12) Dra (12) \n", "Indiana (4) \n", "Kent St. (13) Ken (13) Ken (13) Ken (13) \n", "Iowa St. (6) Pit (11) Pit (11) Tex (7) Tex (7) \n", "Pittsburgh (11) \n", "Xavier (3) Ken (14) \n", "Kennesaw St. (14) \n", "Texas A&M (7) Tex (7) Tex (7) \n", "Penn St. (10) \n", "Texas (2) Col (15) \n", "Colgate (15) \n", "Total bracket energy: -0.040450000000000014\n", "\n", "South\n", "\n", "Alabama (1) \n", "Texas A&M Corpus Chris (16) Tex (16) \n", "Maryland (8) \n", "West Virginia (9) Mar (8) Tex (16) \n", "San Diego St. (5) \n", "Charleston (12) Cha (12) \n", "Virginia (4) \n", "Furman (13) Fur (13) Fur (13) Tex (16) \n", "Creighton (6) Cre (6) Cre (6) Cre (6) Tex (16)\n", "N.C. State (11) \n", "Baylor (3) UC (14) \n", "UC Santa Barbara (14) \n", "Missouri (7) Mis (7) Mis (7) \n", "Utah St. (10) \n", "Arizona (2) Ari (2) \n", "Princeton (15) \n", "Total bracket energy: 0.029500000000000005\n", "\n", "East\n", "\n", "Purdue (1) \n", "Texas Southern (16) Pur (1) \n", "Memphis (8) \n", "Florida Atlantic (9) Flo (9) Pur (1) \n", "Duke (5) \n", "Oral Roberts (12) Ora (12) \n", "Tennessee (4) \n", "Louisiana (13) Ten (4) Ora (12) Pur (1) \n", "Kentucky (6) Ken (6) Ken (6) Mic (7) Pur (1) \n", "Providence (11) \n", "Kansas St. (3) Mon (14) \n", "Montana St. (14) \n", "Michigan St. (7) Mic (7) Mic (7) \n", "USC (10) \n", "Marquette (2) Mar (2) \n", "Vermont (15) \n", "Total bracket energy: -0.03909999999999999\n", "\n", "West\n", "\n", "Kansas (1) \n", "Howard (16) How (16) \n", "Arkansas (8) \n", "Illinois (9) Ill (9) How (16) \n", "Saint Mary's (5) \n", "VCU (12) Sai (5) \n", "Connecticut (4) \n", "Iona (13) Con (4) Con (4) How (16) \n", "TCU (6) TCU (6) Gon (3) UNC (15) UNC (15)\n", "Arizona St. (11) \n", "Gonzaga (3) Gon (3) \n", "Grand Canyon (14) \n", "Northwestern (7) Nor (7) UNC (15) \n", "Boise St. (10) \n", "UCLA (2) UNC (15) \n", "UNC Asheville (15) \n", "Total bracket energy: 0.05775000000000002\n", "\n" ] } ], "source": [ "# Verify that you can print out a bracket\n", "print('\\nMidwest\\n')\n", "teams = MMMC.Teams['midwest']\n", "b = MMMC.Bracket(teams=teams,T=0.5)\n", "print (b)\n", "\n", "print('South\\n')\n", "print(MMMC.Bracket(teams=MMMC.Teams['south'],T=0.5))\n", "\n", "print('East\\n')\n", "print(MMMC.Bracket(teams=MMMC.Teams['east'],T=0.5))\n", "print('West\\n')\n", "print(MMMC.Bracket(teams=MMMC.Teams['west'],T=0.5))" ] }, { "cell_type": "markdown", "id": "9a05a430-6399-4dba-b2b4-1bf0554d9e91", "metadata": {}, "source": [ "### One thing about four of those teams\n", "\n", "Four of those teams are not actually determined. During the first couple of days of the brackets, there are four matches to determine the last four teams. I've arbitrarily picked winners of those matches, and I'll update afterwards. FYI, I picked \n", "\n", " * Pittsburgh\n", " * Arizona St.\n", " * Texas A&M Corpus Chris\n", " * Texas Southern\n" ] }, { "cell_type": "markdown", "id": "4527bf03-fe7f-410d-8631-1ec755a8c1ce", "metadata": {}, "source": [ "### Now define your energy function\n", "\n", "The code below makes one called `bogus_energy_function`. You want to make your own, and set the MMMC energy function to your function. So, you'll need to \n", "\n", "1. define your own function.\n", " 1. Call it something other than `bogus_energy_function`\n", " 2. Remember, your function takes in the result of some \"random\" game with a winner and a loser. \n", " 3. You return an energy value. \n", " 4. Your value should be lower for games where the \"right\" team wins.\n", " 5. It doesn't matter if your function returns positive values, negative values, or both. So you could do `x - y` or `x/y` or whatever.\n", "2. change the last line in the below cell to point to yours instead of `bogus_energy_function`\n", "\n", "I encourage you to submit **MULTIPLE** energy functions. Maybe one cares just about defensive efficiency. Maybe one is a weighted average between several statistics. Maybe one is completely random. Submit lots of them!\n", "\n", "In order to spur some creativity, here are some from 2017:\n", "\n", "\n", "```python\n", "def alex_energy_game(winner, loser):\n", " \"\"\"def energy(A,B):\n", " get AdjEM (\"adjusted efficiency margin,\" not the other AdjEMs) for A and B from kenpom.com\n", " energy = ln(AdjEM[A]/AdjEM[B])\n", " \"\"\"\n", " result = np.log(adjem[loser]/adjem[winner])\n", " return result\n", "\n", "def tyler_energy_game(winner, loser):\n", " \"\"\"My energy function was defined as U=(Points scored per\n", " game/points opponent scored per game)(average assists/average\n", " turnovers). I did some back of a napkin calculations on the\n", " homework and this energy function seems to predict the better team\n", " will win more often and teams of equal skill will slightly favor\n", " the more defensive team. Is this kinda what you were looking\n", " for?\n", " \"\"\"\n", " result = (adjo[winner]/adjo[loser])\n", " result = - result\n", " return result\n", "\n", "def thad_energy_game(winner, loser):\n", " \"\"\"Chance of team a + luck/ chance of team b plus its amount of luck>\n", " \"\"\"\n", " result = (luck[winner] - luck[loser])\n", " result = - result\n", " return result\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "id": "e478b774-2811-482f-9b9a-8bee590afc4f", "metadata": {}, "outputs": [], "source": [ "def bogus_energy_function(winner,loser):\n", " strength = MMMC.RAS.kenpom['AdjD']\n", " # Lower numbers are better\n", " A,B = strength[winner], strength[loser]\n", " result = A/B\n", " #result = A-B\n", " return result\n", "\n", "MMMC.set_energy_function(bogus_energy_function)" ] }, { "cell_type": "markdown", "id": "3721fe7c-f733-4c36-9d55-c038df0ca52e", "metadata": {}, "source": [ "### What should temperature be?\n", "\n", "Now, what should our actual temperature be? Historically, we know that an 8 seed vs. a 9 seed should essentially be a tossup. So, as a proxy here, we could just look at the chance of an 8 seed winning over a range of temperatures, and pick the point where it's pretty close to 0.5.\n", "\n", "Here are two functions that help us look at that:" ] }, { "cell_type": "code", "execution_count": 4, "id": "42c54fa3-b7e8-44c3-8339-f1ac9361630c", "metadata": {}, "outputs": [], "source": [ "def winpct8(team8,team9,T,numtrials=1000):\n", " results = [MMMC.playgame(team8,team9,T)[0] == team8 for i in range(numtrials)]\n", " return np.average(results)\n", "def plotwins(team8,team9,numtrials=1000,tmin=0,tmax=1,numtemps=100):\n", " Ts = np.linspace(tmin,tmax,numtemps)\n", " pct = [winpct8(team8,team9,T,numtrials) for T in Ts]\n", " plt.plot(Ts,pct,label='{t1} vs. {t2}'.format(t1=team8,t2=team9))\n", " plt.xlabel('T')\n", " plt.ylabel('winpct')" ] }, { "cell_type": "markdown", "id": "20e82f3a-a736-471f-866e-a593be6be02e", "metadata": {}, "source": [ "### How do we actually decide on temperature?\n", "\n", "We want to pick a temperature where the results converge to about 50%. That may or may not be possible, so you just do your best.\n", "\n", "You want to change some things in your calls to plotwins below as you play around.\n", "\n", "* tmin is the lowest temperature you care about. This can probably stay at 0.\n", "* tmax is the biggest you care about. some of our functions wanted that at 1, some wanted it as big as 50. You want it to be big enough to see convergence, but small enough that you can really see the part that closes in on 50%.\n", "* numtrials: start this at 100 or 1000 to make it run quickly. Then, when you think you have a good range, set it to 10000 so the curve is more converged.\n", "\n", "Two of the below matchups start below 0.5 and trend up as temperature goes up. That's because this particular statistic/energy function thinks that the lower-ranked team should win." ] }, { "cell_type": "code", "execution_count": 5, "id": "8cd6c791-408f-49ed-b2f2-a6adb54c13a0", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/mglerner/coding/MarchMadnessMonteCarlo/MarchMadnessMonteCarlo/Brackets.py:63: RuntimeWarning: divide by zero encountered in double_scalars\n", " boltzmann_factor = exp(-ediff/T)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tmin = 0\n", "tmax = 3\n", "numtemps = 100\n", "numtrials = 1000\n", "plt.clf()\n", "plotwins('Iowa','Auburn',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Maryland','West Virginia',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Arkansas','Illinois',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Memphis',\"Florida Atlantic\",numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "78b5dc2f-346f-4c7e-9a0d-b96132c2853c", "metadata": {}, "source": [ "# Part TWO: Making a bracket!\n", "\n", "Now let's say that we have an energy function and a bracket. Let's say we made a basic energy function like this:" ] }, { "cell_type": "code", "execution_count": 6, "id": "1efc8c7a-2c60-48f6-94c7-74801cea1fb6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Kansas', 'VCU')\n", "46.20765027322405\n", "-50.263688760806915\n" ] } ], "source": [ "def basic_energy_function(winner,loser):\n", " strength = MMMC.RAS.kenpom['AdjEM']\n", " # Lower numbers are better\n", " A,B = strength[winner], strength[loser]\n", " #result = -(A-B)/2\n", " result = B/A\n", " # Now make sure Kansas looks good\n", " if winner == 'Kansas':\n", " result = result - 50\n", " if loser == 'Kansas':\n", " result = result + 50\n", " return result\n", "MMMC.set_energy_function(basic_energy_function)\n", "\n", "print(MMMC.playgame('VCU','Kansas',T=8))\n", "print(MMMC.config.default_energy_function('VCU','Kansas'))\n", "print(MMMC.config.default_energy_function('Kansas','VCU'))" ] }, { "cell_type": "code", "execution_count": 7, "id": "4b58e87b-b452-4332-9896-53e9a07f2eaf", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tmin = 0\n", "tmax = 15\n", "numtemps = 100\n", "numtrials = 10000\n", "plt.clf()\n", "plotwins('Iowa','Auburn',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Maryland','West Virginia',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Arkansas','Illinois',numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plotwins('Memphis',\"Florida Atlantic\",numtrials=numtrials,tmin=tmin,tmax=tmax,numtemps=numtemps)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "817c7b7c-5f2c-447c-b9b3-c6b327f46d8d", "metadata": {}, "source": [ "With the above plot (**I expect you to use your own plots!**) we could reasonably choose a temperature of 8.\n", "\n", "## Running each region individually\n", "\n", "We wrote two functions a couple of years ago to look at the results of individual regions, and individual teams. The first runs `ntrials1` trials for each region, and `ntrials2` for the final four. Here's what it says for our bracket:" ] }, { "cell_type": "code", "execution_count": 8, "id": "ad0a3ead-7564-45e6-8eee-3090a4f74f8d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/mglerner/coding/MarchMadnessMonteCarlo/MarchMadnessMonteCarlo/Brackets.py:63: RuntimeWarning: overflow encountered in exp\n", " boltzmann_factor = exp(-ediff/T)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "YOUR LOWEST ENERGY BRACKETS\n", "LOWEST ENERGY BRACKET FOR REGION midwest\n", "Houston (1) \n", "Northern Kentucky (16) Nor (16) \n", "Iowa (8) \n", "Auburn (9) Iow (8) Iow (8) \n", "Miami FL (5) \n", "Drake (12) Mia (5) \n", "Indiana (4) \n", "Kent St. (13) Ind (4) Ind (4) Ind (4) \n", "Iowa St. (6) Pit (11) Pit (11) Pen (10) Pen (10)\n", "Pittsburgh (11) \n", "Xavier (3) Ken (14) \n", "Kennesaw St. (14) \n", "Texas A&M (7) Pen (10) Pen (10) \n", "Penn St. (10) \n", "Texas (2) Col (15) \n", "Colgate (15) \n", "Total bracket energy: -0.8958645939314741\n", "\n", "\n", "LOWEST ENERGY BRACKET FOR REGION west\n", "Kansas (1) \n", "Howard (16) Kan (1) \n", "Arkansas (8) \n", "Illinois (9) Ark (8) Kan (1) \n", "Saint Mary's (5) \n", "VCU (12) VCU (12) \n", "Connecticut (4) \n", "Iona (13) Con (4) VCU (12) Kan (1) \n", "TCU (6) Ari (11) Gon (3) UNC (15) Kan (1) \n", "Arizona St. (11) \n", "Gonzaga (3) Gon (3) \n", "Grand Canyon (14) \n", "Northwestern (7) Boi (10) UNC (15) \n", "Boise St. (10) \n", "UCLA (2) UNC (15) \n", "UNC Asheville (15) \n", "Total bracket energy: -237.02621482317633\n", "\n", "\n", "LOWEST ENERGY BRACKET FOR REGION south\n", "Alabama (1) \n", "Texas A&M Corpus Chris (16) Ala (1) \n", "Maryland (8) \n", "West Virginia (9) Wes (9) Ala (1) \n", "San Diego St. (5) \n", "Charleston (12) Cha (12) \n", "Virginia (4) \n", "Furman (13) Vir (4) Vir (4) Ala (1) \n", "Creighton (6) N.C (11) Bay (3) Uta (10) Ala (1) \n", "N.C. State (11) \n", "Baylor (3) Bay (3) \n", "UC Santa Barbara (14) \n", "Missouri (7) Uta (10) Uta (10) \n", "Utah St. (10) \n", "Arizona (2) Ari (2) \n", "Princeton (15) \n", "Total bracket energy: -12.966482094910289\n", "\n", "\n", "LOWEST ENERGY BRACKET FOR REGION east\n", "Purdue (1) \n", "Texas Southern (16) Tex (16) \n", "Memphis (8) \n", "Florida Atlantic (9) Flo (9) Flo (9) \n", "Duke (5) \n", "Oral Roberts (12) Ora (12) \n", "Tennessee (4) \n", "Louisiana (13) Ten (4) Ora (12) Flo (9) \n", "Kentucky (6) Ken (6) Ken (6) Ken (6) Ken (6) \n", "Providence (11) \n", "Kansas St. (3) Kan (3) \n", "Montana St. (14) \n", "Michigan St. (7) Mic (7) Mar (2) \n", "USC (10) \n", "Marquette (2) Mar (2) \n", "Vermont (15) \n", "Total bracket energy: -38.99399749600803\n", "\n", "\n", "LOWEST ENERGY BRACKET FOR FINAL FOUR\n", "Houston (1) \n", "Kansas (1) Kan (1) \n", "Baylor (3) Bay (3) Kan (1) \n", "Louisiana (13) \n", "Total bracket energy: -99.50073952091243\n", "\n", "YOUR MOST COMMON BRACKETS\n", "MOST COMMON BRACKET FOR REGION midwest\n", "Houston (1) \n", "Northern Kentucky (16) Hou (1) \n", "Iowa (8) \n", "Auburn (9) Iow (8) Hou (1) \n", "Miami FL (5) \n", "Drake (12) Dra (12) \n", "Indiana (4) \n", "Kent St. (13) Ind (4) Ind (4) Hou (1) \n", "Iowa St. (6) Pit (11) Pit (11) Pen (10) Hou (1) \n", "Pittsburgh (11) \n", "Xavier (3) Ken (14) \n", "Kennesaw St. (14) \n", "Texas A&M (7) Pen (10) Pen (10) \n", "Penn St. (10) \n", "Texas (2) Tex (2) \n", "Colgate (15) \n", "Total bracket energy: -9.311844481796976\n", "\n", "number of times this bracket happened: 30\n", "\n", "\n", "MOST COMMON BRACKET FOR REGION west\n", "Kansas (1) \n", "Howard (16) Kan (1) \n", "Arkansas (8) \n", "Illinois (9) Ark (8) Kan (1) \n", "Saint Mary's (5) \n", "VCU (12) Sai (5) \n", "Connecticut (4) \n", "Iona (13) Con (4) Con (4) Kan (1) \n", "TCU (6) Ari (11) Gon (3) UNC (15) Kan (1) \n", "Arizona St. (11) \n", "Gonzaga (3) Gon (3) \n", "Grand Canyon (14) \n", "Northwestern (7) Boi (10) UNC (15) \n", "Boise St. (10) \n", "UCLA (2) UNC (15) \n", "UNC Asheville (15) \n", "Total bracket energy: -239.06014814826838\n", "\n", "number of times this bracket happened: 270\n", "\n", "\n", "MOST COMMON BRACKET FOR REGION south\n", "Alabama (1) \n", "Texas A&M Corpus Chris (16) Ala (1) \n", "Maryland (8) \n", "West Virginia (9) Wes (9) Ala (1) \n", "San Diego St. (5) \n", "Charleston (12) Cha (12) \n", "Virginia (4) \n", "Furman (13) Vir (4) Cha (12) Cha (12) \n", "Creighton (6) N.C (11) Bay (3) Bay (3) Bay (3) \n", "N.C. State (11) \n", "Baylor (3) Bay (3) \n", "UC Santa Barbara (14) \n", "Missouri (7) Uta (10) Pri (15) \n", "Utah St. (10) \n", "Arizona (2) Pri (15) \n", "Princeton (15) \n", "Total bracket energy: -24.03860692997801\n", "\n", "number of times this bracket happened: 20\n", "\n", "\n", "MOST COMMON BRACKET FOR REGION east\n", "Purdue (1) \n", "Texas Southern (16) Tex (16) \n", "Memphis (8) \n", "Florida Atlantic (9) Flo (9) Flo (9) \n", "Duke (5) \n", "Oral Roberts (12) Duk (5) \n", "Tennessee (4) \n", "Louisiana (13) Lou (13) Lou (13) Lou (13) \n", "Kentucky (6) Pro (11) Pro (11) Pro (11) Lou (13)\n", "Providence (11) \n", "Kansas St. (3) Kan (3) \n", "Montana St. (14) \n", "Michigan St. (7) Mic (7) Mar (2) \n", "USC (10) \n", "Marquette (2) Mar (2) \n", "Vermont (15) \n", "Total bracket energy: -36.49157826218766\n", "\n", "number of times this bracket happened: 95\n", "\n", "\n", "MOST COMMON BRACKET FOR FINAL FOUR\n", "Houston (1) \n", "Kansas (1) Kan (1) \n", "Baylor (3) Bay (3) Kan (1) \n", "Louisiana (13) \n", "Total bracket energy: -99.50073952091243\n", "\n", "number of times this bracket happened: 684\n" ] } ], "source": [ "results = MMMC.runbracket2(ntrials1=10000,ntrials2=1000,T=8)" ] }, { "cell_type": "markdown", "id": "eee797bc-03db-49a6-9e6d-c79af31da623", "metadata": {}, "source": [ "## Interpreting the above\n", "\n", "You'll note that there's a difference between the most common bracket, and the lowest energy bracket. Why is that?" ] }, { "cell_type": "markdown", "id": "b1f0c00a-49ba-4d75-ac26-b99ba284ba62", "metadata": {}, "source": [ "## Summarizing all of the brackets\n", "The above told us a couple of brackets, but we ran tens of thousands. Let's summarize them. Note that the results for the final four are a little odd: you only see non-zero results for 4 of the teams. That's because our code runs each of the regions separately, then sends just one team to the final four. We could change that ..." ] }, { "cell_type": "code", "execution_count": 9, "id": "8f53444a-c942-4ced-b15f-9b18a9c33e1f", "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", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
TeamRegionRank2nd Round3rd RoundSweet 16Elite 8Final 4ChampionshipWin
Kansaswest1100.0100.0100.0100.0100.0100.0100.0
Baylorsouth3100.047.9123.6112.986.3268.40.0
Louisianaeast13100.025.745.814.113.5831.60.0
Marquetteeast2100.082.760.7334.9825.550.00.0
Florida Atlanticeast9100.075.3753.1226.4313.450.00.0
Houstonmidwest1100.038.3925.018.7213.170.00.0
Furmansouth13100.056.2733.920.3210.320.00.0
Charlestonsouth12100.056.7731.2518.79.650.00.0
Penn St.midwest10100.054.3538.6521.938.320.00.0
UC Santa Barbarasouth14100.052.0928.3614.177.940.00.0
Kansas St.east3100.057.1720.6313.167.560.00.0
Tennesseeeast4100.074.2635.0815.727.330.00.0
Oral Robertseast12100.062.9842.1719.387.320.00.0
Marylandsouth8100.056.1127.214.57.180.00.0
Alabamasouth1100.071.7842.4915.147.160.00.0
Colgatemidwest15100.054.9520.5312.336.590.00.0
Texas A&Mmidwest7100.045.6526.5613.586.540.00.0
Drakemidwest12100.048.6322.1911.576.380.00.0
Princetonsouth15100.048.8523.3511.796.130.00.0
Iowamidwest8100.065.6923.811.356.130.00.0
Arizonasouth2100.051.1526.5413.196.090.00.0
Texasmidwest2100.045.0514.269.666.080.00.0
N.C. Statesouth11100.050.6423.0911.316.030.00.0
Northern Kentuckymidwest16100.061.6131.4414.995.980.00.0
Pittsburghmidwest11100.052.223.1813.155.980.00.0
Indianamidwest4100.047.528.9410.555.970.00.0
Missourisouth7100.046.8722.910.975.960.00.0
Creightonsouth6100.049.3624.9413.465.890.00.0
Miami FLmidwest5100.051.3726.3511.145.890.00.0
Utah St.south10100.053.1327.2112.135.70.00.0
Texas Southerneast16100.082.3426.5217.575.580.00.0
Iowa St.midwest6100.047.825.7210.935.560.00.0
Kentuckyeast6100.076.7438.3813.795.360.00.0
Michigan St.east7100.066.818.5410.414.950.00.0
Kent St.midwest13100.052.522.5211.874.80.00.0
Xaviermidwest3100.049.0225.99.714.640.00.0
San Diego St.south5100.043.2318.099.054.460.00.0
Texas A&M Corpus Chrissouth16100.028.2215.617.944.320.00.0
Montana St.east14100.042.8328.78.864.240.00.0
Auburnmidwest9100.034.3119.769.814.00.00.0
Kennesaw St.midwest14100.050.9825.28.713.970.00.0
Dukeeast5100.037.0216.947.493.810.00.0
Virginiasouth4100.043.7316.767.543.540.00.0
West Virginiasouth9100.043.8914.76.813.310.00.0
USCeast10100.033.211.736.552.990.00.0
Memphiseast8100.024.6312.687.312.960.00.0
Providenceeast11100.023.2612.297.722.490.00.0
Vermonteast15100.017.39.04.531.960.00.0
Purdueeast1100.017.667.681.990.870.00.0
UNC Ashevillewest15100.076.1855.6851.630.00.00.0
Grand Canyonwest14100.020.019.7217.320.00.00.0
Gonzagawest3100.080.064.5810.230.00.00.0
Northwesternwest7100.038.6625.225.280.00.00.0
UCLAwest2100.023.8210.855.270.00.00.0
TCUwest6100.052.0210.614.440.00.00.0
Boise St.west10100.061.348.253.80.00.00.0
Arizona St.west11100.047.985.092.030.00.00.0
Connecticutwest4100.059.0433.490.00.00.00.0
VCUwest12100.055.4732.010.00.00.00.0
Ionawest13100.040.9618.090.00.00.00.0
Saint Mary'swest5100.044.5316.410.00.00.00.0
Illinoiswest9100.051.960.00.00.00.00.0
Arkansaswest8100.048.040.00.00.00.00.0
Howardwest16100.00.00.00.00.00.00.0
" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h = HTML(MMMC.maketable(results))\n", "h" ] }, { "cell_type": "markdown", "id": "5842a498-76dc-4d41-9459-3272a13dac7b", "metadata": {}, "source": [ "## With that in mind, we can run a full bracket" ] }, { "cell_type": "code", "execution_count": 10, "id": "360f0de9-b26f-415e-a7a6-256a40842545", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lowest energy bracket\n", "Houston (1) \n", "Northern Kentucky (16) Nor (16) \n", "Iowa (8) \n", "Auburn (9) Iow (8) Iow (8) \n", "Miami FL (5) \n", "Drake (12) Mia (5) \n", "Indiana (4) \n", "Kent St. (13) Ind (4) Ind (4) Ind (4) \n", "Iowa St. (6) \n", "Pittsburgh (11) Pit (11) \n", "Xavier (3) \n", "Kennesaw St. (14) Ken (14) Pit (11) \n", "Texas A&M (7) \n", "Penn St. (10) Pen (10) \n", "Texas (2) \n", "Colgate (15) Col (15) Pen (10) Pen (10) Pen (10) \n", "Alabama (1) \n", "Texas A&M Corpus Chris (16) Ala (1) \n", "Maryland (8) \n", "West Virginia (9) Wes (9) Ala (1) \n", "San Diego St. (5) \n", "Charleston (12) Cha (12) \n", "Virginia (4) \n", "Furman (13) Vir (4) Vir (4) Ala (1) \n", "Creighton (6) \n", "N.C. State (11) N.C (11) \n", "Baylor (3) \n", "UC Santa Barbara (14) Bay (3) Bay (3) \n", "Missouri (7) \n", "Utah St. (10) Uta (10) \n", "Arizona (2) \n", "Princeton (15) Ari (2) Uta (10) Uta (10) Ala (1) Pen (10) \n", "Kansas (1) Kan (1) Kan (1) Kan (1) Kan (1) Kan (1) Kan (1) \n", "Howard (16) \n", "Arkansas (8) Ark (8) \n", "Illinois (9) \n", "Saint Mary's (5) VCU (12) VCU (12) \n", "VCU (12) \n", "Connecticut (4) Con (4) \n", "Iona (13) \n", "TCU (6) Ari (11) Gon (3) UNC (15) \n", "Arizona St. (11) \n", "Gonzaga (3) Gon (3) \n", "Grand Canyon (14) \n", "Northwestern (7) Boi (10) UNC (15) \n", "Boise St. (10) \n", "UCLA (2) UNC (15) \n", "UNC Asheville (15) \n", "Purdue (1) Tex (16) Flo (9) Flo (9) Ken (6) \n", "Texas Southern (16) \n", "Memphis (8) Flo (9) \n", "Florida Atlantic (9) \n", "Duke (5) Ora (12) Ora (12) \n", "Oral Roberts (12) \n", "Tennessee (4) Ten (4) \n", "Louisiana (13) \n", "Kentucky (6) Ken (6) Ken (6) Ken (6) \n", "Providence (11) \n", "Kansas St. (3) Kan (3) \n", "Montana St. (14) \n", "Michigan St. (7) Mic (7) Mar (2) \n", "USC (10) \n", "Marquette (2) Mar (2) \n", "Vermont (15) \n", "Total bracket energy: -392.66624328734724\n", "\n", "Most common bracket (28)\n", "Houston (1) \n", "Northern Kentucky (16) Hou (1) \n", "Iowa (8) \n", "Auburn (9) Iow (8) Hou (1) \n", "Miami FL (5) \n", "Drake (12) Dra (12) \n", "Indiana (4) \n", "Kent St. (13) Ken (13) Dra (12) Hou (1) \n", "Iowa St. (6) \n", "Pittsburgh (11) Pit (11) \n", "Xavier (3) \n", "Kennesaw St. (14) Xav (3) Xav (3) \n", "Texas A&M (7) \n", "Penn St. (10) Pen (10) \n", "Texas (2) \n", "Colgate (15) Tex (2) Pen (10) Pen (10) Hou (1) \n", "Alabama (1) \n", "Texas A&M Corpus Chris (16) Ala (1) \n", "Maryland (8) \n", "West Virginia (9) Mar (8) Mar (8) \n", "San Diego St. (5) \n", "Charleston (12) San (5) \n", "Virginia (4) \n", "Furman (13) Fur (13) Fur (13) Mar (8) \n", "Creighton (6) \n", "N.C. State (11) Cre (6) \n", "Baylor (3) \n", "UC Santa Barbara (14) Bay (3) Cre (6) \n", "Missouri (7) \n", "Utah St. (10) Mis (7) \n", "Arizona (2) \n", "Princeton (15) Pri (15) Mis (7) Mis (7) Mis (7) Hou (1) \n", "Kansas (1) Kan (1) Kan (1) Kan (1) Kan (1) Kan (1) Kan (1) \n", "Howard (16) \n", "Arkansas (8) Ill (9) \n", "Illinois (9) \n", "Saint Mary's (5) Sai (5) Con (4) \n", "VCU (12) \n", "Connecticut (4) Con (4) \n", "Iona (13) \n", "TCU (6) Ari (11) Gon (3) UNC (15) \n", "Arizona St. (11) \n", "Gonzaga (3) Gon (3) \n", "Grand Canyon (14) \n", "Northwestern (7) Boi (10) UNC (15) \n", "Boise St. (10) \n", "UCLA (2) UNC (15) \n", "UNC Asheville (15) \n", "Purdue (1) Pur (1) Flo (9) Lou (13) Lou (13) \n", "Texas Southern (16) \n", "Memphis (8) Flo (9) \n", "Florida Atlantic (9) \n", "Duke (5) Duk (5) Lou (13) \n", "Oral Roberts (12) \n", "Tennessee (4) Lou (13) \n", "Louisiana (13) \n", "Kentucky (6) Pro (11) Pro (11) Pro (11) \n", "Providence (11) \n", "Kansas St. (3) Mon (14) \n", "Montana St. (14) \n", "Michigan St. (7) USC (10) Mar (2) \n", "USC (10) \n", "Marquette (2) Mar (2) \n", "Vermont (15) \n", "Total bracket energy: -379.6806186941867\n", "\n" ] } ], "source": [ "results = MMMC.runbracket1(ntrials=100000,T=8)" ] }, { "cell_type": "markdown", "id": "5cd3208d-1e8b-4432-bc2c-fe795c3fff4e", "metadata": {}, "source": [ "## What to enter in the pool?\n", "\n", "I suggest entering both your lowest energy bracket AND your most common!" ] }, { "cell_type": "code", "execution_count": null, "id": "fead843a-a68e-44ae-993b-c3807014e6c7", "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.10.4" } }, "nbformat": 4, "nbformat_minor": 5 }