{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
Peter Norvig
Aug 2018
\n", "\n", "# Tour de 538\n", "\n", "\n", "You are the coach for a bicycle racing team, one of 20 teams entered in the [Tour de FiveThirtyEight](https://fivethirtyeight.com/features/can-you-win-the-tour-de-fivethirtyeight/) time trial, which has these rules:\n", "\n", ">*Each team rides as a group throughout the course at some fixed pace, specified by that team’s coach. Teams that can’t maintain their pace are said to have **cracked,** and don’t **finish** the course.\n", "The team that finishes the course with the fastest pace is the winner.\n", "Teams ride the course one at a time. After each team completes its attempt, the next team quickly consults with its coach (who assigns a pace) and then begins its ride. Coaches are aware of the results of all previous teams when choosing their own team’s pace.\n", "Assume that all teams are of equal ability: At any given pace, they have the exact same probability of cracking, and the faster the pace, the greater the probability of cracking. Teams’ chances of cracking are independent, and each team’s coach knows exactly what a team’s chances of cracking are for each pace. You are the first team to attempt the course. To maximize your chances of winning, what’s the probability that your team will finish the course? What’s the probability you’ll ultimately win? How about the other teams?*" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# PRELIMINARIES\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "from functools import lru_cache\n", "from collections import Counter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis\n", "\n", "At first it might seem like we don't have enough information: we don't know the relation between probability of finishing and the actual pace/speed. But after a little thought, it is clear we don't need to know how fast each team goes. Probability of finishing may not be related linearly to speed, but whatever the function that relates probability of finishing to speed, it is **monotonic**: the the faster the pace, the lower the probability of finishing. Thus, the team that chooses the lowest probability and actually finishes will be the winner (even if we don't know their speed/time).\n", "\n", "Let's start with **a simpler case: just two teams**. The first team chooses a probability $p$ of finishing. If the first team cracks, the second team chooses probability 1 of finishing, rides the race at a nice leisurly pace, and wins. If the first team finishes, the second team chooses probability $p - 𝜖$ of finishing, where 𝜖 is an arbitrarily small number; that gives them an ever-so-slightly-faster pace than the first team. But let's just write $p$ instead of $p - 𝜖$, with the understanding that the $𝜖$ is so small that it doesn't matter for our calculations—another way of saying this is that a tie goes to the team that goes later. So the first team wins if they finish and the second team doesn't, and since \"chances of cracking are independent,\" that joint event has probabilty $p (1 - p)$. What pace $p$ maximizes that? I'm going to enumerate 1001 different $p$ values and find the one that maximizes $p (1 - p)$:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "probabilities = [x/1000 for x in range(1001)] # [0.000, 0.001, 0.002, ... 1.000]\n", "\n", "max(probabilities, key=lambda p: p * (1 - p))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That says the first team's best choice is a pace that gives them a probability 0.5 of finishing. They win the race with probability 0.5 × (1 - 0.5) = 0.25; the second team wins with probability 0.75. There is value in the information gained by going second! \n", "\n", "Now for **the case of $n$ teams**. The first team wins if they finish (with probability $p$), and if *all* the other teams crack (with probability $(1 - p)^{n - 1}$, assuming they also choose pace $p$). All together, that's $p(1 - p)^{n - 1}$. Again, I can try out all the probabilities in `probabilities` and see which is the best pace for the first team, for various values of `n` teams in the race:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1: 1.0, 2: 0.5, 3: 0.333, 4: 0.25, 5: 0.2, 6: 0.167}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def best_pace(n) -> float:\n", " \"\"\"The pace p with highest probability of winning for the first of `n` teams.\"\"\"\n", " return max(probabilities, key=lambda p: win_prob(p, n))\n", "\n", "def win_prob(p, n) -> float:\n", " \"\"\"Probability of first team winning if all n teams choose pace `p`.\"\"\"\n", " return p * (1 - p) ** (n - 1)\n", " \n", "{n: best_pace(n) for n in range(1, 7)}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice a pattern? It looks like `best_pace(n)` is $1/n$. But can we prove it? \n", "\n", "# Using Calculus to Find Best Pace \n", "\n", "Calculus says that the extrema (maximum or minimum) of a function is where the derivative is zero. What's the derivative of $p (1 - p)^{n - 1}$?\n", "\n", "$$\\frac{d}{dp} p (1 - p)^{n - 1} = (1 - p)^{n - 2} (1 - n p) $$\n", "\n", "This is indeed zero when $p = 1/n$. We can check that `best_pace(n)` agrees with `1 / n` (to within 3 decimal places):" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "for n in range(1, 21):\n", " assert abs(best_pace(n) - 1/n) < 0.001 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now know how every race will play out:\n", "- The first of $n$ teams chooses pace $p = 1/n$.\n", "- If they crack, it is like starting a race with $n - 1$ teams, and the next team chooses pace $1/(n - 1)$.\n", "- If they finish, every team from then on will choose a pace that is $𝜖$ faster than the previous finisher.\n", "- The only way for the first team to win is if every other chooses $p$ and cracks.\n", "- This confirms that the win probability for the first team is $p(1 - p)^{n - 1}$, where $p = 1/n$.\n", "\n", "# Tabulating Results\n", "\n", "We can print a table of three columns: the number of teams $n$, the best pace for the first of $n$ teams, and the probability that the first team will win if it adopts that pace:\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " n pace P(win)\n", " 1 1.00000 1.00000\n", " 2 0.50000 0.25000\n", " 3 0.33333 0.14815\n", " 4 0.25000 0.10547\n", " 5 0.20000 0.08192\n", " 6 0.16667 0.06698\n", " 7 0.14286 0.05665\n", " 8 0.12500 0.04909\n", " 9 0.11111 0.04330\n", "10 0.10000 0.03874\n", "11 0.09091 0.03505\n", "12 0.08333 0.03200\n", "13 0.07692 0.02944\n", "14 0.07143 0.02726\n", "15 0.06667 0.02538\n", "16 0.06250 0.02374\n", "17 0.05882 0.02230\n", "18 0.05556 0.02102\n", "19 0.05263 0.01989\n", "20 0.05000 0.01887\n" ] } ], "source": [ "print(' n pace P(win)')\n", "for n in range(1, 21):\n", " print(f'{n:2d} {1 / n:0.5f} {win_prob(1 / n, n):0.5f}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualizing Results\n", "\n", "Here is a plot for various numbers of teams of the probability of the first team winning, as a function of the pace that the first team chooses. Each curve is for a different number of teams participating in the race (as shown by the label number)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def annotate(x, y, text):\n", " plt.text(x - 0.04, y - 0.014, text)\n", " plt.plot([x], [y], 'kx')\n", " \n", "for n in [2, 3, 4, 5, 7, 10, 20]:\n", " plt.plot(probabilities, [win_prob(p, n) for p in probabilities])\n", " annotate(1 / n, win_prob(1 / n, n), f'n={n}')\n", "plt.xlabel('First team pace, denoted by P(finish)')\n", "plt.ylabel('P(first team wins)')\n", "plt.grid(True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Calculation of Win Probability for All Teams\n", "\n", "What is the full probability distribution of winners over all the teams? I'll define `winners(teams)` to answer the question, where `teams` is a tuple of teams, such as `(1, 2, 3, 4)`. Here's how it works:\n", "- `winners(teams)` gives the probability of winning the race for each team. The result is a `Dist`, a probability distribution of `{team: probability}` pairs. For example, we want `winners((1, 2))` to return `Dist({1: 0.25, 2: 0.75})`.\n", "- A recursive call to `winners(teams, leader, leader_pace)` means that `teams` is the collection of teams who have not raced yet, `leader` is the fastest finishing team among those who have already raced, and `leader_pace` is the pace that the leader rode.\n", "- If there are no `teams` remaining to race, then the winner (with probability 1) is the `leader` so far.\n", "- If there are $n$ teams left to race, then the next team up will choose a pace $p$ that is the faster of $1/n$ and the current leader's pace. \n", "- There are two possible cases to consider:\n", " - That `team` finishes, with probability `p`, and becomes the new leader. The probability distribution in this case is computed by a recursive call `winners(other_teams, team, p)`.\n", " - That `team` cracks, with probability `1 - p`, and the leader is unchanged. The probability distribution in this case is computed by a recursive call `winners(other_teams, leader, leader_pace)`.\n", "- We combine the two cases, weighted by their probability.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "class Dist(Counter):\n", " \"\"\"A {outcome: frequency} distribution. Can multiply values by a constant.\"\"\"\n", " def __mul__(self, c): return Dist({x: c * self[x] for x in self})\n", " __rmul__ = __mul__\n", " \n", "@lru_cache(None)\n", "def winners(teams, leader=None, leader_pace=1) -> Dist:\n", " \"\"\"Calculate the probability of each team winning.\"\"\"\n", " if not teams:\n", " return Dist({leader: 1})\n", " else:\n", " team, other_teams = teams[0], teams[1:]\n", " p = min(1/len(teams), leader_pace)\n", " finish = winners(other_teams, team, p)\n", " crack = winners(other_teams, leader, leader_pace)\n", " return Dist(p * finish + (1 - p) * crack)\n", " \n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Dist({2: 0.75, 1: 0.25})" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "winners((1, 2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Simulation of Winners\n", "\n", "As a check, let's do a simulation where each team chooses their `pace`, and we randomly see if they crack, and eventually see who wins the race. Repeat that for a million races and count the winners. I'll define `race` to be as similar to `winners` as possible, but to follow one of the two paths (finish or crack) at random, rather than following both." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def race(teams, leader=None, leader_pace=1):\n", " \"Simulate a single race with given teams; return the winning team.\"\n", " if not teams:\n", " return leader\n", " else:\n", " team, other_teams = teams[0], teams[1:]\n", " p = min(1/len(teams), leader_pace)\n", " return (race(other_teams, team, p) if random.random() < p else\n", " race(other_teams, leader, leader_pace))\n", "\n", "def races(teams, repeat=1000000):\n", " \"Simulate `repeat` races with given teams; return a probability distribution over winners.\"\n", " counts = Counter(race(teams) for _ in range(repeat))\n", " return Dist({team: counts[team] / repeat for team in teams})" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Dist({1: 0.249669, 2: 0.750331})" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "races((1, 2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparison of Calculation to Simulation\n", "\n", "Now we can compare the theoretical calculated results with the simulated results:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " n Calcul Simul Delta\n", " 1 0.0189 0.0192 -0.0003\n", " 2 0.0199 0.0200 -0.0001\n", " 3 0.0210 0.0211 -0.0001\n", " 4 0.0223 0.0223 +0.0000\n", " 5 0.0237 0.0237 +0.0000\n", " 6 0.0253 0.0253 -0.0000\n", " 7 0.0270 0.0270 -0.0000\n", " 8 0.0290 0.0289 +0.0001\n", " 9 0.0313 0.0313 +0.0001\n", " 10 0.0340 0.0340 +0.0000\n", " 11 0.0370 0.0371 -0.0001\n", " 12 0.0406 0.0406 -0.0001\n", " 13 0.0448 0.0446 +0.0001\n", " 14 0.0498 0.0499 -0.0001\n", " 15 0.0560 0.0561 -0.0000\n", " 16 0.0639 0.0639 +0.0000\n", " 17 0.0742 0.0739 +0.0003\n", " 18 0.0889 0.0889 -0.0001\n", " 19 0.1126 0.1122 +0.0003\n", " 20 0.1799 0.1801 -0.0003\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def compare(teams=range(1, 21)):\n", " \"\"\"Print and plot comparison between `races` simulation and `winners` calculation.\"\"\"\n", " wins = winners(teams)\n", " sims = races(teams)\n", " print(f' n Calcul Simul Delta')\n", " for team in teams:\n", " print(f'{team:3d} {wins[team]:.4f} {sims[team]:.4f} {wins[team]-sims[team]:+.4f}')\n", " plt.plot(teams, [wins[i] for i in teams], 'rx', label='calculation', ms=10, mew=2)\n", " plt.plot(teams, [sims[i] for i in teams], 'b+', label='simulation', ms=10, mew=2)\n", " plt.xticks(ticks=teams); plt.grid(True);\n", " plt.xlabel('Team Number'); plt.ylabel('P(win)'); plt.legend()\n", "\n", "compare()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see there is excellent agreement The `×` and `+` markers are all on top of each other. The agreement extends to a different number of teams:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " n Calcul Simul Delta\n", " 1 0.0387 0.0387 +0.0001\n", " 2 0.0433 0.0434 -0.0001\n", " 3 0.0489 0.0489 -0.0000\n", " 4 0.0561 0.0554 +0.0007\n", " 5 0.0653 0.0657 -0.0004\n", " 6 0.0775 0.0769 +0.0006\n", " 7 0.0945 0.0948 -0.0003\n", " 8 0.1198 0.1198 +0.0001\n", " 9 0.1629 0.1633 -0.0004\n", " 10 0.2929 0.2931 -0.0002\n" ] }, { "data": { "image/png": "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Bsya1SEo3IO7t4G9gTFrVt5Hbyoswsu6spdeChJ51arglafLuTPOOIPGxkY2b94MwDvvvMO7777LkUcGU13df//9nR535plncvfddwPBdBrvvvsulZWVtLW1sXnzZt5//30eeeSRfY7LBMPQoUPZtm1bhxFShx56KFu3bt3nmPHjx/O73/2Ot99+m927dzN//nwmTpzY63+ziCRoxozum8crKhIZ5l/aYRFp/9t93HF707qzuyR7GRijRo3iG9/4BhMnTqS6upprrrmGm2++mfr6empqatqbp7LdeeedNDU1MWbMGGpqalizZg0DBgzgpptuYvz48Zx99tkcd9xx+xz3sY99jMsvv5zRo0dzzjnncPLJJ7dvu/TSS7niiivaO7gzPvGJT3DrrbdSV1dHdXU1Y8eOZcqUKft8toiUsFzmBDkQXp3NDbVmzZruJ0WZNat9HpWtr7227/boXCuzZnX/WXlwIM4NlRH7u+6Fkp3/pwuqI101uPeNOshxbqg+81jVXslcqtXX45HRQe0yVxiNjbp7W0RKWmmHBewNgU7a8oHE2v9ERA4kpd1nISIiOVFYiIhILIWFiIjEUlhkMctMASwiIhkKiyLI59TgI0aM4O233+52n+9+97sdlj/zmc/k5dwiUjoUFkVQ6KnBs8Pi6aefLti5RaRvUFgkbPv27Zx33nlUV1czevRoHnrooQ5Tg5eXlzNz5kxGjRrF5MmTee6556itreXoo49m4cLgkeX33Xdfh4cinX/++TQ3N+9zri984QvU1NQwatQofvzjHwNw/fXXs2PHDsaOHctFF13Ufk4IbsicOXMmo0ePZsyYMTz00EMAPPXUU9TW1jJt2jSOO+44LrroIjyJCfJF5IBR8mGR6aP4yEcO7dBXkVm/v30Yjz76KEcccQQrVqxg1apVTJo0qcP27du3c8YZZ7B69WrKy8u58cYbefzxx1mwYEGH50rkYu7cuSxbtoylS5dy1113sXnzZm699VYOPvhgWlpaeOCBBzrs/8tf/pKWlhZWrFjBE088wcyZM/nTn/4EwPPPP88Pf/hD1qxZw7p16/jDH/7Q+1+CiBzwSj4skjZmzBgef/xxrrvuOp566ql9phofOHBge4BUVVUxceJEBgwYwJgxY3o8Hfhdd93V/pCi9evX8+qrr3a7/+9//3suvPBCysrKqKysZOLEiSxZ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "compare(range(1, 11))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }