{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Decision Analysis" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "Think Bayes, Second Edition\n", "\n", "Copyright 2020 Allen B. Downey\n", "\n", "License: [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:41.807708Z", "iopub.status.busy": "2021-04-16T19:35:41.807149Z", "iopub.status.idle": "2021-04-16T19:35:41.810352Z", "shell.execute_reply": "2021-04-16T19:35:41.809718Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# If we're running on Colab, install empiricaldist\n", "# https://pypi.org/project/empiricaldist/\n", "\n", "import sys\n", "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:41.814888Z", "iopub.status.busy": "2021-04-16T19:35:41.814343Z", "iopub.status.idle": "2021-04-16T19:35:41.816295Z", "shell.execute_reply": "2021-04-16T19:35:41.816736Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Get utils.py\n", "\n", "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " \n", "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/soln/utils.py')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:41.820085Z", "iopub.status.busy": "2021-04-16T19:35:41.819538Z", "iopub.status.idle": "2021-04-16T19:35:42.501987Z", "shell.execute_reply": "2021-04-16T19:35:42.501513Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This chapter presents a problem inspired by the game show *The Price is Right*.\n", "It is a silly example, but it demonstrates a useful process called Bayesian [decision analysis](https://en.wikipedia.org/wiki/Decision_analysis).\n", "\n", "As in previous examples, we'll use data and prior distribution to compute a posterior distribution; then we'll use the posterior distribution to choose an optimal strategy in a game that involves bidding.\n", "\n", "As part of the solution, we will use kernel density estimation (KDE) to estimate the prior distribution, and a normal distribution to compute the likelihood of the data.\n", "\n", "And at the end of the chapter, I pose a related problem you can solve as an exercise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Price Is Right Problem\n", "\n", "On November 1, 2007, contestants named Letia and Nathaniel appeared on *The Price is Right*, an American television game show. They competed in a game called \"The Showcase\", where the objective is to guess the price of a collection of prizes. The contestant who comes closest to the actual price, without going over, wins the prizes.\n", "\n", "Nathaniel went first. His showcase included a dishwasher, a wine cabinet, a laptop computer, and a car. He bid \\\\$26,000.\n", "\n", "Letia's showcase included a pinball machine, a video arcade game, a pool table, and a cruise of the Bahamas. She bid \\\\$21,500.\n", "\n", "The actual price of Nathaniel's showcase was \\\\$25,347. His bid was too high, so he lost.\n", "\n", "The actual price of Letia's showcase was \\\\$21,578. \n", "\n", "She was only off by \\\\$78, so she won her showcase and, because her bid was off by less than 250, she also won Nathaniel's showcase." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a Bayesian thinker, this scenario suggests several questions:\n", "\n", "1. Before seeing the prizes, what prior beliefs should the contestants have about the price of the showcase?\n", "\n", "2. After seeing the prizes, how should the contestants update those beliefs?\n", "\n", "3. Based on the posterior distribution, what should the contestants bid?\n", "\n", "The third question demonstrates a common use of Bayesian methods: decision analysis.\n", "\n", "This problem is inspired by [an example](https://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter5_LossFunctions/Ch5_LossFunctions_PyMC3.ipynb) in Cameron Davidson-Pilon's book, [*Probablistic Programming and Bayesian Methods for Hackers*](http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Prior\n", "\n", "To choose a prior distribution of prices, we can take advantage of data from previous episodes. Fortunately, [fans of the show keep detailed records](https://web.archive.org/web/20121107204942/http://www.tpirsummaries.8m.com/). \n", "\n", "For this example, I downloaded files containing the price of each showcase from the 2011 and 2012 seasons and the bids offered by the contestants." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "The following cells load the data files." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.507523Z", "iopub.status.busy": "2021-04-16T19:35:42.506995Z", "iopub.status.idle": "2021-04-16T19:35:42.508609Z", "shell.execute_reply": "2021-04-16T19:35:42.509016Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Load the data files\n", "\n", "download('https://raw.githubusercontent.com/AllenDowney/ThinkBayes2/master/data/showcases.2011.csv')\n", "download('https://raw.githubusercontent.com/AllenDowney/ThinkBayes2/master/data/showcases.2012.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function reads the data and cleans it up a little." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.513237Z", "iopub.status.busy": "2021-04-16T19:35:42.512673Z", "iopub.status.idle": "2021-04-16T19:35:42.515256Z", "shell.execute_reply": "2021-04-16T19:35:42.514810Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "def read_data(filename):\n", " \"\"\"Read the showcase price data.\"\"\"\n", " df = pd.read_csv(filename, index_col=0, skiprows=[1])\n", " return df.dropna().transpose()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll read both files and concatenate them." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.519025Z", "iopub.status.busy": "2021-04-16T19:35:42.518583Z", "iopub.status.idle": "2021-04-16T19:35:42.547366Z", "shell.execute_reply": "2021-04-16T19:35:42.546804Z" } }, "outputs": [], "source": [ "df2011 = read_data('showcases.2011.csv')\n", "df2012 = read_data('showcases.2012.csv')\n", "\n", "df = pd.concat([df2011, df2012], ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.550926Z", "iopub.status.busy": "2021-04-16T19:35:42.550422Z", "iopub.status.idle": "2021-04-16T19:35:42.553032Z", "shell.execute_reply": "2021-04-16T19:35:42.552623Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(191, 6) (122, 6) (313, 6)\n" ] } ], "source": [ "print(df2011.shape, df2012.shape, df.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the dataset looks like:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.558946Z", "iopub.status.busy": "2021-04-16T19:35:42.557889Z", "iopub.status.idle": "2021-04-16T19:35:42.570199Z", "shell.execute_reply": "2021-04-16T19:35:42.570579Z" } }, "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", "
Showcase 1Showcase 2Bid 1Bid 2Difference 1Difference 2
050969.045429.042000.034000.08969.011429.0
121901.034061.014000.059900.07901.0-25839.0
232815.053186.032000.045000.0815.08186.0
\n", "
" ], "text/plain": [ " Showcase 1 Showcase 2 Bid 1 Bid 2 Difference 1 Difference 2\n", "0 50969.0 45429.0 42000.0 34000.0 8969.0 11429.0\n", "1 21901.0 34061.0 14000.0 59900.0 7901.0 -25839.0\n", "2 32815.0 53186.0 32000.0 45000.0 815.0 8186.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first two columns, `Showcase 1` and `Showcase 2`, are the values of the showcases in dollars.\n", "The next two columns are the bids the contestants made.\n", "The last two columns are the differences between the actual values and the bids." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Kernel Density Estimation\n", "\n", "This dataset contains the prices for 313 previous showcases, which we can think of as a sample from the population of possible prices.\n", "\n", "We can use this sample to estimate the prior distribution of showcase prices. One way to do that is kernel density estimation (KDE), which uses the sample to estimate a smooth distribution. If you are not familiar with KDE, you can [read about it here](https://mathisonian.github.io/kde).\n", "\n", "SciPy provides `gaussian_kde`, which takes a sample and returns an object that represents the estimated distribution.\n", "\n", "The following function takes `sample`, makes a KDE, evaluates it at a given sequence of quantities, `qs`, and returns the result as a normalized PMF." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.574533Z", "iopub.status.busy": "2021-04-16T19:35:42.574043Z", "iopub.status.idle": "2021-04-16T19:35:42.576062Z", "shell.execute_reply": "2021-04-16T19:35:42.575582Z" } }, "outputs": [], "source": [ "from scipy.stats import gaussian_kde\n", "from empiricaldist import Pmf\n", "\n", "def kde_from_sample(sample, qs):\n", " \"\"\"Make a kernel density estimate from a sample.\"\"\"\n", " kde = gaussian_kde(sample)\n", " ps = kde(qs)\n", " pmf = Pmf(ps, qs)\n", " pmf.normalize()\n", " return pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it to estimate the distribution of values for Showcase 1:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.584733Z", "iopub.status.busy": "2021-04-16T19:35:42.580411Z", "iopub.status.idle": "2021-04-16T19:35:42.587005Z", "shell.execute_reply": "2021-04-16T19:35:42.586599Z" } }, "outputs": [], "source": [ "import numpy as np\n", "\n", "qs = np.linspace(0, 80000, 81)\n", "prior1 = kde_from_sample(df['Showcase 1'], qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.590496Z", "iopub.status.busy": "2021-04-16T19:35:42.590066Z", "iopub.status.idle": "2021-04-16T19:35:42.592375Z", "shell.execute_reply": "2021-04-16T19:35:42.591868Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "from utils import decorate\n", "\n", "def decorate_value(title=''):\n", " decorate(xlabel='Showcase value ($)',\n", " ylabel='PMF',\n", " title=title)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.596416Z", "iopub.status.busy": "2021-04-16T19:35:42.595823Z", "iopub.status.idle": "2021-04-16T19:35:42.800967Z", "shell.execute_reply": "2021-04-16T19:35:42.801311Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior1.plot(label='Prior 1')\n", "decorate_value('Prior distribution of showcase value')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Use this function to make a `Pmf` that represents the prior distribution for Showcase 2, and plot it." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.807216Z", "iopub.status.busy": "2021-04-16T19:35:42.806692Z", "iopub.status.idle": "2021-04-16T19:35:42.809224Z", "shell.execute_reply": "2021-04-16T19:35:42.808685Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "qs = np.linspace(0, 80000, 81)\n", "prior2 = kde_from_sample(df['Showcase 2'], qs)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:42.856760Z", "iopub.status.busy": "2021-04-16T19:35:42.856256Z", "iopub.status.idle": "2021-04-16T19:35:43.013351Z", "shell.execute_reply": "2021-04-16T19:35:43.013757Z" }, "scrolled": true, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABLfUlEQVR4nO3deXxcV3nw8d8zi3ZZsiXZli3bkvc1XuItceLETgJJgKRAeEkoTaDQNCQBQgstFN4WPm95+xZaCimBQFjDFlLWEBKykH33vu+ybMuSbS3Wvs3Mfd4/7tVoJGu1NZqR/Hw/n/noLufOfWYkzTPn3HPPEVXFGGOMSTa+RAdgjDHG9MYSlDHGmKRkCcoYY0xSsgRljDEmKVmCMsYYk5QsQRljjElKlqBMv0SkSURmxum5rxaR8pj1PSJy9TA991+KyNMx6yois4fjub3ni9v7cj5E5GMictqLK28Ix70gIh+NZ2yjlb03iWcJ6iIjImUi0up9kJ0WkR+KSFZf5VU1S1VLRyI2VV2kqi/0V0ZEir1kExjguX6mqm8bjrh6+6AayfdlICISBL4GvM2LqybRMRkzHCxBXZzepapZwApgFfCFngUGSgADudDjR+u5E2QSkAbsSXQgxgwnS1AXMVU9CTwJLIZoM9g9InIIOBSzbba3nCMiD4tIlYgcE5EviIjP2/chEXlVRP5LRGqBL/Y8n4iki8iPROSsiOzFTY6x+8tE5FpvebWIbBaRBq+m9zWv2EvezzqvFnhZb+f2tr3SI4QbRaRURKpF5KsxsX9RRH4aE0e0liYiXwauBL7pne+b5/G+vCIi/+G97qMickPMuT7kxdTo7fvL3n5XIpIqIl8XkQrv8XVv21zgQMx78lwvx6aJyE9FpEZE6kRkk4hMiikyw3v/GkXkaRHJjzn2Jq/ptc6rSS7wtn9YRP4QU+6wiDwas35CRJZ5y4tE5BkRqfV+l/8U8zt+3XvuShH5poikePvE+32eEZF6EdkpIp1/p6ne+3nce74HRSS9j/esrvM4b1uBuC0IE0VkvIg87v3eznrLRX28/33+jXjrOSLyfe91nBSRfxURf2/PZQbPEtRFTESmATcC22I2/wWwBljYyyH/DeQAM4GrgNuBD8fsXwOUAhOBL/dy/L8As7zH24E7+gnvG8A3VHWcV77zw2+99zPXa856fZDnBng3sBK35ngz8Nf9nB8AVf088DJwr3e+e3spNpj35QCQD3wF+L73AZwJ3A/coKrZwOXA9j5C+TywFlgGLAVWA19Q1YPAIq9Mrqpu7OXYO7z4pgF5wF1Aa8z+D3jxTgRSgE8DeMnvF8B9QAHwBPAHL4m8CFwpIj4RKQSCwDrvuJlAFrBTRLKBZ4E/AVOA2cCfvfNGgE9578tlwDXA3d6+t+H+rucCucD7gc6my3/3ti/znm8q8M89X7SqtgO/AW6L2fy/gBdV9Qzu598PgRnAdO89+WYv799g/BgIe/Es9+K361cXSlXtcRE9gDKgCagDjgHfAtK9fQps7FFecf/p/EA7sDBm398CL3jLHwKOD3DuUuD6mPU7gfIesV3rLb8EfAnI7/EcxV5MgZht55zb2/ZKj9cRe+67gT97y18EftrXOYAXgI9ewPtyOGZfhnfsZCDT+z28t/N30M97dwS4MWb97UBZX+9Jj2P/GngNuKSXfS/gJrrY9+VP3vL/Bh6N2ecDTgJXe+sncJP9rcB3gbeA+bjJ7jGvzG3AtkH+bd4H/NZb3ggcxE3KvpgyAjQDs2K2XQYc7eM5rwVKY9ZfBW7vo+wy4GyP9+ajA/2N4Daxtsf+Dr3X/Xw8/ocvpofVoC5Of6Gquao6Q1XvVtXYb9Mn+jgmH/fb9bGYbcdwv70OdGynKT3KHOurIPAR3G/J+70mqXcO8NwDnbtnmWNePBdqMO/Lqc4FVW3xFrNUtRm3ZnAXUCkifxSR+X2cZ0ov5xhs/D8BngIe8ZoHvyJux4pz4gNacGs/55xTVR3c97Dztb0IXI1b03kR9wP9Ku/xoldmGm5yPYeIzPWa1U6JSAPwf3HfT1T1OdzazAPAaRH5roiMw63JZQBbvOa7OtzaWUEfr/05IF1E1ojIDNwk9Fvv/Bki8h2vWbYB90tR7nk0zc3ArUFWxsT0HdwaqbkAlqBMT30Nb18NhHD/GTtNx/1GPdCxnSpxP7Bij+89CNVDqnob7j/5vwO/8prE+jrHYIbl73nuCm+5GfdDr9PkITz3YN6XPqnqU6p6HVAI7Ace6qNoRS/nqOijbM9zhFT1S6q6ELcZ8Z24zZAD6XZOERHc97DztXUmqCu95Rc5N0GdwG2i7c23cV/zHHWbcv8Jt4bUGff9qnopbhPmXOAzuO93K7DI+5KVq6o56nb66e21O7jNw7fhNmU+rqqN3u6/B+YBa7zzdzYfyzlP1P/fyAncGlR+TEzjVHUR5oJYgjKDoqoR3H/0L4tItvdt9O+An/Z/ZDePAp/zLk4XAR/vq6CIfFBECrwPmDpvcwSoAhzc6z1D9Rnv3NOATwK/9LZvB9aLyHQRyQE+1+O4032d70LeFxGZ5HVCyMT9gGvCfY29+QXwBe8ifz7uNZdBvfciskFElng1gwbchNrXeWI9CrxDRK7xalx/78X5mrf/RWADbtNWOe61uutxr3N1Xtd8HJgsIvd5nRayRWSNty/bi6fJqzl+LCbmVV6tJ4ibHNqAiPf38BDwXyIy0Ss7VUTe3s/r+DluTfUvveVO2bjJrk5EJuBeI+3Ldvr4G1HVSuBp4D9FZJx3XW6WiFzVz/OZQbAEZYbi47gfFqXAK7j/7D8YwvFfwm0yOor7D/2TfspeD+wRkSbcDhO3qmqb10T2ZeBVrzll7RDO/3tgC+6HzR+B7wOo6jO4yWqnt//xHsd9A7jF6+l1fy/Pe77viw/3Q78CqMWtedzdR9l/BTZ7Me4CtnrbBmMy8CvcZLAPN7EMmNxU9QDwQdxOINXAu3BvUejw9h/ETaove+sNuO/Bq17ixqutXOcdewq3d+gG7xSfxq3VNOImnc4vDADjvG1ncf9maoD/8Pb9I3AYeMNrmnsWtybU1+t4E/f3MwW312qnrwPp3mt7A7epsK/nGOhv5Hbcpt69Xsy/wq0VmwsgqjZhoTHGmORjNShjjDFJyRKUMcaYpGQJyhhjTFKyBGWMMSYpjalBNfPz87W4uDjRYRhjjBmkLVu2VKtqrzdaj6kEVVxczObNmxMdhjHGmEESkT5HlLEmPmOMMUnJEpQxxpikZAnKGGNMUhpT16CMMSZZhEIhysvLaWtrS3QoSSEtLY2ioiKCweDAhT2WoIwxJg7Ky8vJzs6muLgYdyD4i5eqUlNTQ3l5OSUlJYM+Lq5NfCJyvYgcEHc66M/2sl9E5H5v/04RWRGzL1dEfiUi+0Vkn4hcFs9YjTFmOLW1tZGXl3fRJycAESEvL2/Itcm4JShvaP8HgBtwpw+/TUR6TiN+AzDHe9yJOz9Mp2/gzuw5H3eK633xitWMTW0dYcIRJ9FhmIuYJacu5/NexLOJbzXuVNelACLyCHAz7nD0nW4GHlZ3SPU3vFpTIe7Q+Otxp8vGG96/I46xmjEiHHF4c18Fz2wqZVfpGabkZfNPf7WOwrxe57MzxiSxeDbxTaX7FNvldJ8Gu78yM3EnpvuhiGwTke95k7oZ06vm1g5++vQu/uarf+Rrv3yDXaVnAKioaeRffvAip2qbEhyhMSPP7/ezbNkyFi9ezPve9z5aWlp6LXf55Zdf0Hk+//nPM23aNLKyhveLYDwTVG/1uZ6TT/VVJgCsAL6tqstxa1TnXMMCEJE7RWSziGyuqqq6kHjNKNXWEeYL33+R3758gIbm9nP21zS08i8/eIkzZ5sTEJ0xiZOens727dvZvXs3KSkpPPjgg932RyLuxMqvvfZab4f3qvOYWO9617t46623LizYXsQzQZUD02LWi3BnDh1MmXKg3JsJE9zZKVfQC1X9rqquVNWVBQW9DudkxjBV5Vu/28Lx0/XRbeOz07nl6gV86n1rCPj9AFTXt/DPP3jRkpS5aF155ZUcPnyYF154gQ0bNvCBD3yAJUuWAERrPqrKZz7zGRYvXsySJUv45S/dSY57OybW2rVrKSwc/gmE43kNahMwR0RKgJPArbjTO8d6DLjXuz61BqhX1UoAETkhIvO8aaevofu1K2MAePz1w7y6q6uV+EM3LOXGNbPw+93vXpnpQf7fz14nHIlQVdfCv/zgJb7ysY1kZ6QmKmRzEXrv//5V3J771//nlgHLhMNhnnzySa6//noA3nrrLXbv3n1Ol+/f/OY3bN++nR07dlBdXc2qVatYv359v8fEU9xqUKoaBu4FnsLtgfeoqu4RkbtE5C6v2BNAKXAYeAi4O+YpPg78TER2AsuA/xuvWM3otPtoFQ//aWd0/bqVM3nX5XOiyQlg+ZzJ/OMHLotuO1PXzOOvHR7xWI1JhNbWVpYtW8bKlSuZPn06H/nIRwBYvXp1r4nmlVde4bbbbsPv9zNp0iSuuuoqNm3a1O8x8RTXG3VV9QncJBS77cGYZQXu6ePY7cDKeMZnRq/q+hb+85dv4Kh7WXNO0QQ+8o6lvZZdMXcyH7tpBd/8rTvS/fPbynj/xoX4fNYF2IxtndegesrM7L3PmWrPbgIDHxNPNpKEGXVUlf/85ZvRDhHjMlP59K1rCQb8fR5z5dLp/OhPO2lq7aCmoZVdpWdYOnvSSIVsLnKDaYZLBuvXr+c73/kOd9xxB7W1tbz00kt89atfZf/+/QmJxwaLNaPOC9uOcfBEDQA+ET79/rXk52T0e0zA72P90unR9ee2lcUzRGNGpXe/+91ccsklLF26lI0bN/KVr3yFyZMnD3jcP/zDP1BUVERLSwtFRUV88YtfHJZ4pL8q3WizcuVKtQkLx7a2jjD3fv0pzja2AvDe9fP5wHWLB3Xs0co6Pv2tZwEIBvx8/x/eQWZ6StxiNRe3ffv2sWDBgkSHkVR6e09EZIuq9no5x2pQZlT5/SsHo8kpNyuN91w1f9DHlhTmUjw5F4BQOMKru8vjEaIxZphYgjKjRk1DK7975UB0/QPXLiItZWiXUTcsnxFdfm5r2XCFZoyJA0tQZtT4+bO76Qi5d7HPmJzLhuXFQ36O9UunR7ucHyqvpbyqYThDNMYMI0tQZlQ4cvIsL2w7Fl3/8A2XnFc38XGZqaya13XHe+xzGmOSiyUok/RUlR/F3JC7av4UlsyceN7Pd3VMM98L248TsSk5jElKlqBM0ttTVs3eMncgYJ/Px1+9/dyxwIZixZzJ5GSmAXC2sZUdR85ccIzGmOFnCcokvT+9eSS6fM2KYqbmZ1/Q8/n9Pq5a1nVP1Ku7T/RT2pjRaySm22hpaeEd73gH8+fPZ9GiRXz2s71OPHFeLEGZpFbb0Mqb+7oGwb9h7axhed7LFnVNTba7tKrfIV6MGa1GarqNT3/60+zfv59t27bx6quv8uSTT15Y4B5LUCapPbvlKI7jXiNaMCOfGZNyhuV5Z04ZT2rQ7aJeXd/CqVqbhsOMbfGabiMjI4MNGzYAkJKSwooVKygvH557DG0sPpO0IhGHZzcfja5fv3p4ak/gDn20qCSfrQdPAbDnaJVNC2/ipv3hv43bc6fe/p0By4zUdBt1dXX84Q9/4JOf/OQFvKIuVoMySWvzgUpqGtxRI8ZlprJm4ZRhff7FJV09AXeWWkcJM/aM5HQb4XCY2267jU984hPMnDlzWOK3GpRJWk+9VRpdvvbSkn5HK9dIGD19EG1vBifiPlAkvwTf+Km9HrNkZtcMzJ3XoURsCg4zdozkdBt33nknc+bM4b777htKiP2yBGWSUkV1IzuOnAZAEK5b2fc3N6eukvCL30HrK3vd7597Ff4V70ZS0rttL56cS2ZaCs1tHdQ3t1Fe1ci0ieOG70UY4xlMM1wyON/pNr7whS9QX1/P9773vWGNx5r4TFJ6elNX7WnF3MlMHH/utzdVJXL4VUJ//HKfyQkgcvBFQo99EefEjm7bfT5hcUlMLepo1YUHbswodj7TbZSXl/PlL3+ZvXv3smLFCpYtWzZsicqm2zBJpyMU4aNf+SPNbR0AfP6vrmDF3O7/JBpqI/zmz3FK3+za6A/iK1oCvgDi86PNtTinDnQ7zle8ksDldyABd5qNJ944zPf/uB2AtQun8pnbLovfCzMXFZtu41xDnW7DmvhM0nlrX0U0OU3MzWT5nO4z32okTPiZ/8KpLotuk5xCAuv/ptv1JlXFKdtMZNMv0bZGAJyyzYTFR+CKv0ZEWBwzZNLuo3YdyphkYk18JulsO3wqunz18hnnJAxn77PdkpN/1uUEb/zcOZ0hRAR/ySqCN38R/6yumpFz9C2cfX8GYFpBNuMyUwFoau2g7FT9cL8cY8x5sgRlkoqqsuNwV5fvc5r2GqsI73w8uu5f+i4C6+5Agql9PqekZhFY9yH8c66Mbgtv+TXOqQOISLeBZ3dZd3MzjMbSJZQLdT7vhSUok1SOn26IzpiblZ7CrCnjo/tUlfAbP4dICAAZPw3/khsG/dz+1e/Hl+/1BlSH8EsPoc213TtKlFpHCTM80tLSqKmpsSSF+79bU1NDWlrakI6za1AmqWw71NW8t2TmxG5zPjllm3Eq93prQuCyDyK+vu+N6kn8QQJX/y2hx7+MtjWibY2EXniQJas+Fi2zp6yKSMSJTmpozPkqKiqivLycqir70gNuwi4qKhrSMZagTFLZfvh0dDm2c4S2NxHZ9Mvoun/+1fjyi4f8/JIxnsBVf0vo6a+BOmjNMQpOPE/euHRqGlpp6whzpOIsc6flXdDrMCYYDPY78oIZmH1NNEmjrSPM3mPV0fWls7sSVGTLb6I98SQjF/+ym8/7PL5JcwisfF/Xc+/7MyundV3D2mXNfMYkhbgmKBG5XkQOiMhhETlnkhBx3e/t3ykiK2L2lYnILhHZLiJ2c9NFYM/RqujsttMKxpGfkwG4I0VEDr8aLRdYfds5o0IMlW/+hq4amBNmvW6N7tt91DpKGJMM4pagRMQPPADcACwEbhORhT2K3QDM8R53At/usX+Dqi7r6yYuM7Z0Dm0EsCymec859HJ02Td1Mb7pyy74XCKC/9KuWtTUloNMVrf2dvBELY5jF7aNSbR41qBWA4dVtVRVO4BHgJ7tMjcDD6vrDSBXRArjGJNJYtsPxSYot3u5RsLdRovwz98wbOfzTZqNb/pyAFICft4e3A6qtHWEOXba7ocyJtHimaCmArFzaZd72wZbRoGnRWSLiNzZ10lE5E4R2Swim623zOhVVdfCyWr3GlMw4GfhjHwAnPIdaHsT4HZwkMKelfALE1jxHhAfCMxOqWW29+e4/3jNsJ7HGDN08UxQvY0X07PdpL8y61R1BW4z4D0isr63k6jqd1V1paquLCgo6K2IGQW2x3QvX1ScT0rQ7T7uHOq69uSbfTniG94/WRk3Ef/8qwH3vqv1ugWfRtgX01nDGJMY8UxQ5cC0mPUioGKwZVS18+cZ4Le4TYZmjIrtXt7Ze0+ba3Eq9ka3+2ddHpdz+y95BxJMJys9SK42spSD7LcEZUzCxTNBbQLmiEiJiKQAtwKP9SjzGHC715tvLVCvqpUikiki2QAikgm8Ddgdx1hNAkUiTrcZbTuvP0UOv0Znhdo3eT6SnR+X80tqFv5LbiQjLYjPJ6zW3Zytb6K6viUu5zPGDE7cEpSqhoF7gaeAfcCjqrpHRO4Skbu8Yk8ApcBh4CHgbm/7JOAVEdkBvAX8UVX/FK9YTWIdKq+lpc0dvmhCdjrTCrLdkcgPvxYt45tzRVxj8M3fgC8jl6y0IJnaygKOsv+YXYcyJpHiOpKEqj6Bm4Ritz0Ys6zAPb0cVwosjWdsJnl0rz1NQkRwKvehzW6CkJQMfNPi++cg/iD++RvJOl5OQ0sHK3UP+49Vc8Ul0wY+2BgTFzaShEm40oq66PKiYrejSyS2c0TJmugEg/Hkm7eejKwsAPK0nvrDWwc4whgTT5agTMKVVpyNLpdMyUXbm3GOb4tu882JT+eIniQlg6wlV0e7lhZVv0lre2hEzm2MOZclKJNQjS3t1DS402sEA36K8rNxjm8HJwyATJiOb8L0EYsn45LrSU0LAlCkpzi6e8eIndsY050lKJNQsc170yeNw+/34VTsiW7zF4/sKFeSNYGWiV3Xu1p3WN8cYxLFEpRJqKOVddHlmYXjUcdBK/dFt8nURSMeU2Dx26LLKZU70EYbocSYRLAEZRKqNCZBlRTmoDVlaId7/5Gk5yC5PUfHir+Zi5Zw3BsSsrm1g/CeZ0c8BmOMJSiTYGXdElRut5EjfFMWItLbaFjxNTE3g/2ZlwIQcZSmvS9Gk6YxZuRYgjIJ09YRpqLaGwgWYcakHDQmQQ33wLCDJSJklSyhRnIAaGpswjn6VkJiMeZiZgnKJMyxU/WoN5TR1IJsUujAqT4a3e+bsiBRoTF/Rj47ZB4ATa0dRA68iHtfuTFmpFiCMgkT20GiuDAH59QBUHdGXZkwHUnLTlBksGB6HvuYSRg/Ta0daF0FeuZIwuIx5mJkCcokTGnPHnwnu7qX+6YkpnmvU3FhLqRksE9m0hFyaA9FiBx8MaExGXOxsQRlEia2BlUyOadHB4mR714eK+D3sWBGHtu9Zr7GlnacY1vQtsaExmXMxcQSlEmIcMTh+OmG6HpJdkd0cFgCqUjBzARF1mVRSQFVMoFTkk9jSwc4kW4jrBtj4ssSlEmIk1WNhCMRAPJzMsg4ezi6zzd5HuKP60D7g7K4xB24dofMdROUQuTQy9ZZwpgRYgnKJMTRAe5/SgYzp4wnNRhgP8U0hn20h8JoY1W3rvDGmPixBGUSotsQR5Oy3R58nmRJUAG/j4XF+UQkwB5mu7UoIHLwpQRHZszFwRKUSYjYHnzzMuoh3A6AZOZB9sQERXWuRT2b+QDnxA60pS6BURlzcbAEZUacqlJ2qi66Pp3K6HKihjfqS+d1qLOSw8GOPNz7ihXnyBsJjcuYi4ElKDPiTp9tpqXNnQgwKz2FzKYT0X0yeV6iwurVzMJc0lLcDhubOmbQHnLnqYocec06SxgTZ5agzIjrfv/TOLS6LLruK5g18gH1w+9dhwI4xHTq3ZZItOE0WmUjSxgTT5agzIg7GjNJ4aIJ4a7rT+k5kDk+QVH1bVGx28wXkiAHpCS63e6JMia+LEGZEXfsdH10eW5a17IUlCTV9adOndehAF5smOJdhwKnbAsaak9QVMaMfZagzIjrnGIDYDLV0WVffuJHj+hNScx1qL1N2bSmTgBAw204x7clMjRjxjRLUGZEhSMOp842R9fHtZyMLifD8Ea98ft90WY+RDia3jUNiHPEmvmMiZe4JigRuV5EDojIYRH5bC/7RUTu9/bvFJEVPfb7RWSbiDwezzjNyDlzthnHcafUKMz24Ws67e4QH5I3I4GR9W9RTDPfGy1FgNsU6Zw6gDZWJSgqY8a2uCUoEfEDDwA3AAuB20Sk5xABNwBzvMedwLd77P8ksC9eMZqRV1HT1by3MLtrGnUZX4QEUhIR0qAs8nryAWw90YrEjHYROfJ6IkIyZsyLZw1qNXBYVUtVtQN4BLi5R5mbgYfV9QaQKyKFACJSBLwD+F4cYzQjrDImQc1KrYsu+/JLeimdPGZOGU9GWhCA2sZWqicsje5zjrxh90QZEwfxTFBTgRMx6+XetsGW+TrwD4DT30lE5E4R2Swim6uqrKkl2VVUd82nVCRdHSSS9fpTJ59PWDprUnT99foJSEomANpcg8aMJWiMGR7xTFC99Rfu+TWz1zIi8k7gjKpuGegkqvpdVV2pqisLCgoGKm4SLNqDT5W80Knodl+SJyiA1QumRJffPHAGX8mq6Lpz9K1EhGTMmBbPBFUOTItZLwIqBllmHXCTiJThNg1uFJGfxi9UM1I6a1DjaSDd5w53JCmZkJ38Xy5WzJ2Mz7tP68jJszROXBbd5xzbgoY7EhSZMWNTPBPUJmCOiJSISApwK/BYjzKPAbd7vfnWAvWqWqmqn1PVIlUt9o57TlU/GMdYzQho6whT29gKwFSpITXoB9zmvWS8QbenrPQUFhZ3JdK3zgQRL7FqqA3n5K5EhWbMmBS3BKWqYeBe4CncnniPquoeEblLRO7yij0BlAKHgYeAu+MVj0m82A4S89Lro0kp2a8/xYpt5tt04BS+ktXRdafUmvmMGU5xvQ9KVZ9Q1bmqOktVv+xte1BVH/SWVVXv8fYvUdXNvTzHC6r6znjGaUZGbBfz4uDZ6LKvILl78MVaNb8wuryz9AyhqV237jknd6HtTb0dZow5DzaShBkxndefghpionQmKEHyihMW01BNHJ9J8eRcACIRh62n6brB2IngHNuauOCMGWMsQZkR05mgJlETHdtOcguRlPREhjVkq2Kb+fZV4J+5JrrulL6ZiJCMGZMsQZkR03kNqpAq0rwOEsl+g25v1sQkqC0HK3GmXQri/is5Zw6jTTWJCs2YMcUSlBkRqspJrwZVqNVdNagkm6BwMIon55CfkwFAS1uIfac78BXOj+53jm5KVGjGjCmWoMyIaGzpiE7zXug7SzDgdTHPT94BYvsiIqyaH9PMt78CX0lXM1+k1IY+MmY4WIIyI6Lz+lOatlMQbHPHEPEFkHGTExvYeYrtzffWvgpk2jLwu4Pdan0levZEH0caYwbLEpQZEZ3XnyZS29W8N34q4g8kMqzztqikIDp4bHV9C6VnWvBNixlAtuycOyaMMUNkCcqMiIpeEpRvwrT+DklqAb+PlfO6alHPbTuGf2bMTbtHN1sznzEXyBKUGRHRLuZaQ2rQq0GN4gQFcO2lXT0QX9pxnI68uUjQ7TKvzTVo9dFEhWbMmGAJyoyIk94o5gXUkpbidZCYMD2RIV2whcX5FOZlAdDaHuL1fafwTV8e3W/NfMZcGEtQJu5UlcqaJoIaYoI2eE18gowvSnRoF0REuCamFvXMlqPdp+Aos2Y+Yy6EJSgTd1V1LYQjEfI5SzDgw+/3ITmTk3qK98HasHwGPp/7b3TgeA0nfYVIqlur0tZ69PShRIZnzKhmCcrEXVcPvrNdU2yM8utPnXKz0lgd0+X8z9uO45sRM4CsNfMZc94sQZm46+zBN0lrxkQPvp5im/me33YMZ1pMgjq+FXUiiQjLmFHPEpSJu84efN3ugRrlHSRiLZs9KTr0UVNrB5tqM5H0HAC0rRE9dSCR4RkzalmCMnFXWdOETyPkax2p0R58o7uDRCyfT7jm0uLo+rNbyqyZz5hhYAnKxF1FdSN51OPDIS0YQDLzoh0JxoqNK4oR3BmCdx45Q+34RdF9zvFtaCScqNCMGbUsQZm4CkccqupamEgtAKkpgTHTQSJWfk4Gy+dOiq7/8WAEyZwAgHa0oJX7EhWaMaOWJSgTV9X1LTiqTNRaggEfPp+MyQQFcMOa2dHlZ7aU0VHYNTZfpMym4DBmqCxBmbg6XdsMuB0kOoc48uWNnQ4SsZbPmcT0SW7niPZQmBfrJkb36YkdaLgjUaEZMyr1m6BE5Ecxy3fEPRoz5pw+2wxeDaqrg8TYrEGJCH9xxdzo+q92NKEZeQBoqM2a+YwZooFqUEtjlj8Zz0DM2HSqpolcGgkSJjXoR9KyIT030WHFzbol06JdzhtaOtinXbXFiPXmM2ZIBkpQNpCYuSCnzzZHO0ikpQSQ8dMQkQRHFT8Bv4+b1sXUoo5mRsfjc6yZz5ghGWi2uCIRuR93/tPO5ShV/UTcIjNjwqnaZqap14Mv6EfyxmbzXqxrLi3m0ef30tTawf6GNM7kZTIp2ALhdpyKPfhjRjw3xvRtoBrUZ4AtwOaY5dhHv0TkehE5ICKHReSzvewXEbnf279TRFZ429NE5C0R2SEie0TkS0N9YSbxVJVTtU1MpAaA1GBgTI0g0Ze0lADXr5nlrojwQm1+tC3CKRvw38YY4+m3BqWqPz7fJxYRP/AAcB1QDmwSkcdUdW9MsRuAOd5jDfBt72c7sFFVm0QkCLwiIk+q6hvnG48ZeY0tHbR1hJnIWXw+IeD34RvlU2wM1jvWzub3rxwkFI7wav1Ebsg6xLjMVJzynWi4Y0yM5G5MvPWboETksf72q+pN/exeDRxW1VLvuR4BbgZiE9TNwMPqNtK/ISK5IlKoqpVAk1cm6D3setgoc6q2iQxtJV3bSE0JQDAVxk0a+MAxYFxmKtdeWsKTbx6mmlwO1gdZmYnbzHdyF/4ZlyY6RGOS3kDXoC4DTgC/AN4EhnJ1e6p3bKdy3NrRQGWmApVeDWwLMBt4QFXf7O0kInIncCfA9Oljv/loNDlztqVbBwlf7pQx3UGip5vWzeGpTaU4jsPrjZOY33KSrIwUnLLNlqCMGYSBrkFNBv4JWAx8A7e5rlpVX1TVFwc4trdPop61oD7LqGpEVZcBRcBqEVnc20lU9buqulJVVxYUFAwQkhlJlbVNFHAW8DpIXCTNe50mjs9k/VK3U8hBKY7Oi+WU70JD7YkMzZhRod8E5SWJP6nqHcBa4DDwgoh8fBDPXQ7EdtkqAiqGWkZV64AXgOsHcU6TRE7VNlGgMQlqDI1gPljvWT8fQaiRXEpb0mhpC0EkhFO+M9GhGZP0BhzqSERSReQ9wE+Be4D7gd8M4rk3AXNEpEREUoBbgZ7XtB4Dbvd6860F6lW1UkQKRCTXO386cC2wf7AvyiSHM2dbKIgdJPYiq0EBTM3P5rLF7us+QEwtym7aNWZAA3WS+DFu896TwJdUdfdgn1hVwyJyL/AU4Ad+oKp7ROQub/+DwBPAjbg1sxbgw97hhcCPvetQPuBRVX18SK/MJNyZ6nomaANwcTbxdbrlqvm8tvsEB6SYyxt30NYeJu3kbrSjBUnJSHR4xiStgTpJ/BXQDMwFPikindeQBFBVHdffwar6BG4Sit32YMyy4tbKeh63E7C7GUexjlAEaTyFoAiQMmEyEkxLdFgJMWNyDivnFbL5AFTJeCprmiiZEsA5vh3/7MsTHZ4xSWuga1A+Vc2OeYzzHtkDJSdzcYsd4igl6Mc/RgeIHaz3XjUfgH1SQm1jK+0dYRybgsOYfg00mnmaiNwnIt8UkTtFZKAalzGAm6CiHSRSLt7mvU5zp+VxyayJHKAYVXcIKKdyP9rWmOjQjElaA3WS+DGwEtiFe63oP+MekRkTTtc2x3QxD+C7yGtQAO+9agGNkkWFFFBT30ooFMI5ZkMfGdOXgRLUQlX9oKp+B7gFuHIEYjJjwKmaxq4efBdxB4lYi4rzmT11AvulBEeVqrMtOEetmc+YvgyUoEKdC6oajnMsZgyprzpNmrpTSwTTsyBzQoIjSjwR4aYr5nKAYgDO1DUTPnUIba5NbGDGJKkBJywUkQbv0Qhc0rksIg0jEaAZnSK1XSNYBfPH9hxQQ3HZwqmMm5DHcSkkHFGq61vsnihj+jBQLz5/j557AevFZwaiqvjqT0bXMyYXJy6YJOPzCe9aN5d9UgK41+rCpdbMZ0xvBhxJwpihqm1sY0LEnQMq4BfSJhUnNqAks2H5DCrTZ+Hgoz0U4eyxA2jD6USHZUzSsQRlht3pboPEXpxDHPUnLSXAxrULKZWpgNvlPGKdJYw5hyUoM+zOVJ1lfOcQRykBJHdKgiNKPjeunc1hvzvrbnNbiJqdL+EOrGKM6WQJygy7hsqy6LKTNdFmj+1FTmYq05avI+SNNlZ94ihaU5bYoIxJMpagzLBrrzoWXfZdhFNsDNY7rlzIQSkGoL6pnbqdLyQ0HmOSjSUoM/zOdvXgS7cOEn2amp9NpHg14M7SWbXjJTTckdigjEkilqDMsAs2VUaXx00tSWAkyW/VletpkCwA6mpr6SjbntiAjEkilqDMsGpp7WBcqBoAEcgtmpXgiJLbirmFHM9cAEA4ohx/8+kER2RM8rAEZYbV6RPHSVV3hCxJzURsiKN++XzC1FXXRtebSrejLXWJC8iYJGIJygyruvLD0eX2rCk2xNEgXHn5Cip8kwG3Blqx5fkER2RMcrAEZYZVa+WR6LLYFBuDkpOZisxcG10/teVZuyfKGCxBmWEWO0hs6iTrIDFYl1z9dsL4AeioLqe54sgARxgz9lmCMsMq0FARXc6xDhKDNqdkCtXj3GnhHUc5+NITCY7ImMSzBGWGjbY24GurByCMn4nTrQY1WCLC5JXXRNfbDr6OE2pPYETGJJ4lKDNsmioOE464105q/ROYMC4jwRGNLiuuvIqWQDYA2t7M0Tets4S5uFmCMsOm7oT14LsQ6alBwiXrous1W55MYDTGJJ4lKDNsWiuPRpetB9/5mXPVu4h4/5aRqjJaKw4lOCJjEieuCUpErheRAyJyWEQ+28t+EZH7vf07RWSFt32aiDwvIvtEZI+IfDKecZrhEak5Hl1OnVicuEBGsVklRZzKdkeWcByl7KXfJzgiYxInbglKRPzAA8ANwELgNhFZ2KPYDcAc73En8G1vexj4e1VdAKwF7unlWJNEtKMVmqrcZYQcG4PvvIgIucvfFl1vP/IW2tqQwIiMSZx41qBWA4dVtVRVO4BHgJt7lLkZeFhdbwC5IlKoqpWquhVAVRuBfcDUOMZqLpCeLaetIwxAjeQwuWB8giMavVatu4xTUgBAc3MbNVufSXBExiRGPBPUVOBEzHo55yaZAcuISDGwHHizt5OIyJ0isllENldVVV1ozOY8OTXHae+IAHCGCUzJz05wRKPX+Ow0mqZdHl2v2fI0GgknMCJjEiOeCaq3Llw9x2/pt4yIZAG/Bu5T1V7bOVT1u6q6UlVXFhQUnHew5sK0VJYScdxfXV2wgHEZNovuhZi77lpaJA2AhprTRI5vT2xAxiRAPBNUORDblasIqBhsGREJ4iann6nqb+IYpxkGLae6evAxfpp1Mb9AqxZO42Cqe9m1I+Rw+s0/JjgiY0ZePBPUJmCOiJSISApwK/BYjzKPAbd7vfnWAvWqWinup9v3gX2q+rU4xmiGgUZChGu7ZtFNnTgjgdGMDQG/j5yl1+J4jQwNZXtwao4lOCpjRlbcEpSqhoF7gadwOzk8qqp7ROQuEbnLK/YEUAocBh4C7va2rwP+CtgoItu9x43xitVcGK2rpKPDnaq8XrIomJif4IjGhnWrF3NI3GRf19RO62brcm4uLoF4PrmqPoGbhGK3PRizrMA9vRz3Cr1fnzJJSGtP0BbTQaIkLyvBEY0NJYW5/HTiOuadLsNxlLoDm0i/tAxffnGiQzNmRNhIEuaCae3xaBfzM0yg0BLUsFm2agUHvVpUTUMrkR2PJzgiY0aOJShzwZza47SH3BpUlViCGk5XXjKNN3zLAGhs6aC1bDtO9dH+DzJmjLAEZS6IOg7tZ47heF3Mm9Ink52RmuCoxo7crDSmz53HASkGoKa+hcj2PyQ2KGNGiCUoc2Eaz9De0gJAq6SRk2f3og23q5bO4HW5BIDahlack3twqkoTHJUx8WcJylwQp/oobV7z3mkmUGgjSAy71Qum0JpWwAEppq0jQnNbB5EdVosyY58lKHNBtKqUdq+DRAUFdv0pDlKCfi5bNJXXZSngdpZwKvbinLapOMzYZgnKXBCn6mi0B1+FFDAlz2pQ8XDVshnUSg77pITahlZUlfCbP7cx+syYZgnKnDcNtXujmHc28eUzJd9qUPGwqDif/JwMXpHltEV81De1o3UVOPufS3RoxsSNJShz3rTmGKjSHgpTIzm0S4o18cWJiHDV0uk0Shav+ZZS09AKQHj7H9Cm2gRHZ0x8WIIy502rSmkPR1CFSgrIyUwjPTWY6LDGrPXLpgOwlQUcaU4nHHEg0kF40y8THJkx8WEJypw3p6qU1rYQ4F5/mlpg15/iqahgHLOmjscRP0+zmlqvFuWc2I5zYkeCozNm+FmCMudFVdHqUlra3QRVSQElhTkJjmrs27C8GIAKmcQbbV2jxoffegQNtScoKmPiwxKUOT/NtWhbI63tYTokSA05FE/OTXRUY96Vl0wjGPAD8LvGhTRH3CZVba4lsuXXiQzNmGFnCcqcl86RDFraQpwiH0QoKcxNbFAXgaz0FC5bNBWANknllcCq6L7IwReJHNuaqNCMGXaWoMx50epSIhGH9lCECgrw+XwU2TWoEXHtpSXR5UfLctCpS6PrkdceRptqEhGWMcPOEpQ5L1pVSmu7e5NopeRTVJAdbXoy8bWwOJ/JE9zu/K0dYd4atxHJzANAQ62EX3rIbuA1Y4IlKDNkGu7AqT3RrYNE8WTrIDFSRIRrLi2Orj+94xSB9R8Fcf+dneqjRLbb7Ltm9LMEZYZMa0+AE6GlPcxZGUebpNr1pxG2YXkxPnEnnd53rJpKKSCw4t3R/ZE9T+OU70xUeMYMC0tQZsjUmzCvtS1EJfkA1oNvhI3PTmPlvMLo+p83H8W38Dp8UxZFt4Vf/j5OXWUiwjNmWFiCMkPmVJWiqrR2hKkUd/4na+Ibedes7Oos8fz2Y0QcJXDFh5GM8QBoqI3w8w+g7U2JCtGYC2IJygyZVh+lvSOC4ygVFDAhO51xmTaL7khbPnsSE7LTAWhobmfT/gokLZvAxrvBnwKANlYRfuFB6zRhRiVLUGZItKUOba6lpT1EGD/V5Nr1pwTx+31sWN41msTvXzmIquKbMJ3glR+JbndOHyLy1i9Q1USEacx5swRlhsQ5cxjwbtCVfFR81ryXQG9fMwu/3/03PlRey84jZwDwTV9GYPlfRMtFDr2Cs+/PiQjRmPNmCcoMiVbsBaClPcxJJgIww2pQCZM3Lp1rVhRH13/14v7osm/x9fhmromuhzf/isjxbSMZnjEXJK4JSkSuF5EDInJYRD7by34Rkfu9/TtFZEXMvh+IyBkR2R3PGM3gqSqOl6Ba20McFXfInRKrQSXUu6+ch8/n/ivvLatib1kV4N4vFVj7QXwFs7yS6vbs84apMibZxS1BiYgfeAC4AVgI3CYiC3sUuwGY4z3uBL4ds+9HwPXxis8MndafQlvOEgpHaIr4qSSf1GDAJilMsInjM7lq6fTo+q9e6KpFSSCFwIa7kWy3tyWREOHnHkAbzox0mMYMWTxrUKuBw6paqqodwCPAzT3K3Aw8rK43gFwRKQRQ1ZcAmyo0iWjFHgBa28McpxAVHzMm5yDeDaMmcd6zfh6C+3vYceQ0h8q7/nUkLYvgNZ9AUt0vEtreROjP/422Wfdzk9zimaCmAidi1su9bUMtY5KEc9JNUC1tMc17dv0pKUzJz2bdJUXR9V/HXIsCkHETCWy4G/ze9ByNZwg//y003DGicRozFPFMUL19re7Zz3UwZfo/icidIrJZRDZXVVUN5VAzBBruwDl9EICW9hBlTAHsBt1k8t6rFkSXN+2voKyyrtt+38RZBK74azr/7ZyqI4Rf+QHqOCMYpTGDF88EVQ5Mi1kvAirOo0y/VPW7qrpSVVcWFBScV6BmYHr6IDje6OWhbJokE7AElUymTxzH2oVdDRA/fHLnOfc++WesILDylui6c3wbkc2P2j1SJinFM0FtAuaISImIpAC3Ao/1KPMYcLvXm28tUK+qNnhYEnK860+Oo+xpc78ICMKMSZagksktVy+IXovaffQMj7166Jwy/oXX4l9wTXQ9sv95nL3PjFiMxgxW3BKUqoaBe4GngH3Ao6q6R0TuEpG7vGJPAKXAYeAh4O7O40XkF8DrwDwRKReRj2ASpvP6k9u93G3em5KfRWpKIJFhmR5KCnN59/p50fWfPbuboz2a+gD8K9+Hb8al0fXwll8TObppJEI0ZtDi+umiqk/gJqHYbQ/GLCtwTx/H3hbP2MzgaVMN2nAagMZ2pdy7QbfYOkgkpfdvXMiOI6c5cvIskYjDfz36Jl/92DXdvkyICIF1HyLcWh8dHST86g+RtGx8hfMTFbox3dhIEmZAnc17AIc68omI+0G3pMSu+SWjgN/HfbesJiXoznB8srqRH/3p3Lmh3HukPobkeNN2OBHCz38bp/b4SIZrTJ8sQZkBdTbvOY6yqWF8dPvyuZMTFZIZwJT8bD76jmXR9ac3lfL6nvJzykmqd49UunstUcNthJ+9327kNUnBEpTpl0bCaKV7T01jSzuljpuUphWMIz8nI5GhmQFsXFHcrVff1x59i2c2nTvMkWRNIHDtJ5GgO3WHtjUS+vP9aGvDiMVqTG8sQZl+aVUpGm4D4HR7GrWMA6z2NBqICHfdvIKCXPeLhOM4PPjYVn74xA4cp3u3ct/4qQQ23hNzI2+VO9pER8uIx21MJ0tQpl/Oia7Rr3e25oE3rNHyOZagRoPsjFT+9aNXUzw5N7rt8dcP8W8/e5WWtlC3sr5Jcwiu/xs6b+TV2uOE//xNNNQ+ghEb08USlOmThjtwjrwBQFtHmK0tkwBIDQZYMCMvkaGZIcjPyeDLf3M1axZ0NfdtPXiKT97/NE9vKiUc6RpJwjdtKYHLPhhdd6qOEH7umzYkkkkIS1CmT86xrdEmnupQenR4o0tmTSQY8CcyNDNEaSkBPnPbWt67vqsLeW1jK995bCufvP9pXtx+LNrs559zBYFV/ytazjl9kPDz37YkZUacJSjTJ+fQy9HlLZGZ0ea9ZbMnJSokcwFEhA9ct5hPvW8NOZlp0e2napu4/9eb+Pg3nuJ3Lx+gvrkd/4JrCKx4T7SMU7mX8EsPoZFwIkI3FylLUKZXTl1l9AZOBx9/qu5KSiusg8SodsUl0/jW313PX163mMy0lOj2U7VN/OTpXfzNV//I1x59k70Zy/Fd8q7ofqd8J+HnH7BrUmbEWIIyvYqtPZ3JmEV9JBWAqfnZTByfmaiwzDBJSwnwnvXz+fbfXc8tVy8gIy0Y3ReJOLy66wRf/OFLfOwpeDWykObWDlBwKvYSfua/0HabS8rEnw2kZs7hdo54Pbq+JTILiADWe2+syUxP4bZrFvGeK+fx6u5ynt5U2m2yw7NNbTzQOIXLtJqrArsYl5HKuIa9ZLf8O5k3fArJnJDA6M1YZwnKnCO2c4Rk5fHcsTSgGbD7n8aq1JQAG1cUs3FFMWWVdTyz+Siv7SmnobkdRHhdltISSeOa+jeprm+Fijp0/32Uzf0AU2bPZ07RBIoKsm12ZTOsLEGZc8Q27zVMXkXlNjc5BQN+Fs7IT1RYZoQUF+byN+9azl/fuJTdR6t4ZdcJ3th7kh1t82jzpXCD8yo+HKSljmnbv8MzO9fygMwiPTXIghl5LC6ZyKLifGZOGY/PZwnLnD9LUKab2M4RiI+3OmbgzogCS2YWRAcgNWOf3+9j6exJLJ09ib+9aQWHy2vZfmQhW/dOYlnl7whomAARbnBeZaqc4fm2VWw9eIqtB08BkJEWZOW8QjauKGZxSYHVrsyQWYIy3Tj7no0u65Ql/PrNrgmOV82fkoiQTBII+H3Mn5HP/Bn5sHEhLaevpv6p/6a9poLm1g4ubTtCYaSax1nPWXEHnm1pC/HSjuO8tOM4BbkZXL28mGsvLbYxHM2gWYIyUc7pQ0QOvRJdf619JnVNbm+t8dnpXL1sRqJCM0kmY9J00m/7V8Kv/wSnbBMozA+FWdn2MtuDS/lD3Uyqm7qGUqqqa+F/nt/Lb17az8blxbxn/TzrDWoGZAnKAG7PvfDrP4muO5MX8eNNXfe73HLVfGveM91IMJXAlR/BmTSb8KZHSRUoSAlwHft5W34Vp0rewdMVmby88zhNre4oFJGIwzObS3luW5klKjMguw/KABDZ+cforLkSSOMpXU2TN5hoQW4G164sSWR4JkmJCP55VxO88bP48ouj27W5hkm7H+aO1Bd46PZZ/P3/WsP86V0dbDoT1b3feIofPLGd+ma7+decS9xZ18eGlStX6ubNmxMdxqjj1B4n9Md/A3UHDQ0tex93PdZMa7uboO5990o2rChOYIRmNFBVnEMvE9n623Om6ZC8GfgXXsdeZxqPPLef/ceru+1PSwlw8xVzuWndXNJSrGHnYiIiW1R1Za/7LEFd3NSJEHri/6HeNN++SXP4H3k7v375AABT8rL5+sevw++3yrYZHG1rJLL1t0QOvwZ0/3yRjFxkxkoOB2fz8JtnORhzUzDAuMxUblw7m+tXzyQ7I3UEozaJYgnK9EpViWz/PZFdT7obfAHarvlHPvbQVtpD7qCgn3rfGq64ZFoCozSjlTacIbL3WSJHXoNI6Jz9Mm4yR1Nm8+h+2FGbikrXl6DUYIDrVpbwzsvnRCdcNGOTJShzDo2Eibz5cyKHX41uc5bcxFd3jGPHEfda1PRJOXztnmvt/hVzQbStkci+53AOvtT7GH4KZ1rgteos9rbnU0EBteSACIKwqKSAyxdPZc3CqeRmpZ17vBnVLEGZbrS9ifAL38E5fTC6rWPCLP71+DIOVzZEt/3jBy5n9QK798kMD42E0cp9RI6+hXN8O0S6zy+lqtQ2tHGqtom6DuEU+Zwin2rJpZYczpLD3JLJLJiex6yp45k1dTx549KT/guUqkJHC7Q3oe3N7s+OVgh3QLjdnWfLCYP4QHyI+MDng5RMJC0LUrPcnxnjkUDKwCccZfpLUHY18iLj1J4g/OJ30cYz0W2Nk5bzL7uKOFXflZxuuXqBJSczrMQfQIqW4Ctagobaccp3ohV7cCr2oK0NiAh5OenkjUunvrmdgtoaZrRUdruM1VCaSVNpBvtIZzPpaFoO2TnjyM7OJic3m9yccYzPzWJ8dgbjstIQnz86j9kA0XUv1/MYxwFVtyORRiASchNLJOQmmo5WNNQC7S1uB5H2JrStEdoa3aSkDsNB0nOQ7AIkuwCyJ+LLnYLkFkJWAeIbe9eJrQZ1EdBICOfYNpyDL3YNYwSEIw4Hc9fx9b3jo13KBeHOm5bztlUzExWuucioKnq2HK3Yi3PmCFpd6n64A6FQhLNNbZxtbKOppYOhfFqJQGrQT2owQGqK9zPoJzXF/Tmmxgn0BZCcyUjuFCSnEN/4qUjOZMjMQ/zJXQ9JWA1KRK4HvgH4ge+p6v/rsV+8/TcCLcCHVHXrYI41vVMnAs1n0bqTaF0FTl0FWrEXbWsi7Dh0hCK0toeoagzzy9ZVHCALcJNTMODn79+/xoY0MiNKRJAJ02DCNPx4TWJN1ThVpfjPnmRyfSWT6k/RcfYUjS3ttLSFaPYendPU90YV2joitHVEOgfj7yYl4Ismq5SAn2DQT0rARzDgJ+D3EfD78InAMOQxCaRBWqbbXJea6TbfBVIgkAKBVPAHvdqZ94iEob0ZjdbEmtCWs33XxJywm+TPlgOdk+PgNhlm5bm1rqwCyMh1e1Jm5EL6ODeWYAYEUpKyqTRuCUpE/MADwHVAObBJRB5T1b0xxW4A5niPNcC3gTWDPHbYHN+/h8NP/SweTz0MFPG+N4pX2xUcRB18GkHUwa8hgk47gUgbfg25E8up4qi696Y4SkfYwXEUB+GITOcNWUKVdM3lk52Ryj998HLmTstLyKs0ppOIQHYB/uyCbtuDkRCZTTVoawPaWo+21FFXU01jQyPNDQ00NzfT1txMS2s7rW0dhMJhfHT/QO/2ERwBWoFW7bbP/X+LABFEhGDAj8/nw+f3fvr8OL4Aji+I4wugviBhXwohXxphfxohXxohfzod/nQ6fO5PhwDSDlzA/cjij5AebiQjXE9GuI7sUC1ZHTVkh2pJjfSSgaNqgIP97AcVH2FJIewL4kiAiARwxI+DDxUfig8VQRHvHepK3CkFM1j3gY+d/wvrRzxrUKuBw6paCiAijwA3A7FJ5mbgYXXbGd8QkVwRKQSKB3HssGmuryX19O54PPWIiBDzjakPDZLJLpnDbplNs3R1251TNIErlkxj/dLpjMu0+05M8hJ/EHImu01Xnnzv0ZvW9hBnzrZw+mwzlTVN3s9GTtc2U1XXgjPYyxud/2Dn9pQfQMh7NAxUcIgC9HzladrOBOrIp548rSOPOibQQJa29Pks5zq3rDBwBbIt1DFAifMXzwQ1FTgRs16OW0saqMzUQR4LgIjcCdwJMH369AuLeIxolTRqyKGaXKplPFXkcop80tJSyRuXzpycdBbPnMi6xUU2DpoZs9JTg8yYnMOMyTnn7AtHHKrqWjhV20RVXQs1Da3U1LdS09DC2YY2mtpCNLZ0EI4M9NUvObRJKhVMooJJ3TJKQMPk0EgujeTSRKa2kEUrmbSSSQuphEjVDgIDfsVNjHgmqN4Sb8+vLH2VGcyx7kbV7wLfBbeTxFAC7FQ4ax4d1919PoeOCLc6HdNDx+dHfX4QHyp+1B+ElEycQBoSTCPd52NSwOe2qwd8pAT9TMhOJyMtmLgXYUwSCfh9FOZlUZiX1W+5jlCEptYO2kMROsIRQqEI7aGI24TuKBFHo8vgDfc0iJpZ0vVNc8L4wm34nBDihBEnhETCiEZAHbfZU91LC13BK6hSkDM+bmHFM0GVA7FDEBQBFYMskzKIY4dNbv5EcjdcH6+nN8aMUilBPxOC6YkO46IVz47zm4A5IlIiIinArcBjPco8BtwurrVAvapWDvJYY4wxY1jcalCqGhaRe4GncLuK/0BV94jIXd7+B4EncLuYH8a9Qvfh/o6NV6zGGGOSj92oa4wxJmH6u1F37I2NYYwxZkywBGWMMSYpWYIyxhiTlCxBGWOMSUpjqpOEiFQBxy7gKfKB6mEKJ55GQ5yjIUawOIfTaIgRLM7hNBwxzlDVgt52jKkEdaFEZHNfvUmSyWiIczTECBbncBoNMYLFOZziHaM18RljjElKlqCMMcYkJUtQ3X030QEM0miIczTECBbncBoNMYLFOZziGqNdgzLGGJOUrAZljDEmKVmCMsYYk5QsQXlE5HoROSAih0XksyNwvh+IyBkR2R2zbYKIPCMih7yf42P2fc6L7YCIvD1m+6Uissvbd7+IiLc9VUR+6W1/U0SKzyPGaSLyvIjsE5E9IvLJJI0zTUTeEpEdXpxfSsY4vefxi8g2EXk8iWMs855/u4hsTuI4c0XkVyKy3/sbvSyZ4hSRed572PloEJH7kinGmOf/lPe/s1tEfiHu/1Ti41TVi/6BO6XHEWAm7mSJO4CFcT7nemAFsDtm21eAz3rLnwX+3Vte6MWUCpR4sfq9fW8Bl+HOQvwkcIO3/W7gQW/5VuCX5xFjIbDCW84GDnqxJFucAmR5y0HgTWBtssXpHft3wM+Bx5Pxd+4dWwbk99iWjHH+GPiot5wC5CZjnN7xfuAUMCPZYgSmAkeBdG/9UeBDyRBn3D6AR9PDe0Ofiln/HPC5EThvMd0T1AGg0FsuBA70Fg/uPFmXeWX2x2y/DfhObBlvOYB7t7dcYLy/B65L5jiBDGArsCbZ4sSdGfrPwEa6ElRSxegdW8a5CSqp4gTG4X6oSjLHGfO8bwNeTcYYcRPUCWCC9xyPe/EmPE5r4nN1/oI6lXvbRtokdWcUxvs50dveV3xTveWe27sdo6phoB7IO9/AvCr5ctzaSdLF6TWdbQfOAM+oajLG+XXgHwAnZluyxQigwNMiskVE7kzSOGcCVcAPvSbT74lIZhLG2elW4BfeclLFqKongf8AjgOVuDObP50McVqCckkv25Kp/31f8fUX97C9JhHJAn4N3KeqDf0V7eOccY9TVSOqugy3lrJaRBb3U3zE4xSRdwJnVHXLYA/p43wj8Ttfp6orgBuAe0RkfT9lExVnALeJ/Nuquhxoxm2G6kvC3k8RSQFuAv5noKJ9nC+uMXrXlm7Gba6bAmSKyAeTIU5LUK5yYFrMehFQkYA4TotIIYD384y3va/4yr3lntu7HSMiASAHqB1qQCISxE1OP1PV3yRrnJ1UtQ54Abg+yeJcB9wkImXAI8BGEflpksUIgKpWeD/PAL8FVidhnOVAuVdTBvgVbsJKtjjBTfRbVfW0t55sMV4LHFXVKlUNAb8BLk+GOC1BuTYBc0SkxPu2cyvwWALieAy4w1u+A/eaT+f2W72eMCXAHOAtr9rdKCJrvd4yt/c4pvO5bgGeU68BeLC85/w+sE9Vv5bEcRaISK63nI77D7c/meJU1c+papGqFuP+fT2nqh9MphgBRCRTRLI7l3GvRexOtjhV9RRwQkTmeZuuAfYmW5ye2+hq3uv5vMkQ43FgrYhkeM9/DbAvKeI8nwt+Y/EB3IjbS+0I8PkRON8vcNt7Q7jfLj6C2yb7Z+CQ93NCTPnPe7EdwOsZ421fifsBcgT4Jl2jg6ThNikcxu1ZM/M8YrwCtxq+E9juPW5MwjgvAbZ5ce4G/tnbnlRxxpzjaro6SSRVjLjXdnZ4jz2d/wvJFqf3PMuAzd7v/XfA+GSLE7fTTg2QE7MtqWL0nudLuF/qdgM/we2hl/A4bagjY4wxScma+IwxxiQlS1DGGGOSkiUoY4wxSckSlDHGmKRkCcoYY0xSsgRlLgoi8nlvtOad4o4svcbbXiYi+YmOL95EpFhiRs4fhuf7es8RJkTkiz3Wl4jIj4brnObiYwnKjHkichnwTtyR2S/BvZH3RP9Hmb6IyARgraq+5K1fISKbgLvEnfZkI4Cq7gKKRGR6AsM1o5glKHMxKASqVbUdQFWr1RvOx/NxEdkq7jw28yE6/9HvvBrXGyJyibd9l7jzEImI1IjI7d72n4jIteIOWvsfXrmdIvJxb/8/i8gmcefb+a53pz0i8gkR2euVfcTblinufGGbxB0I9eaeL0jcuXVujFn/kYi816spvey9nq0icnkvx35IRL4Zs/64iFztLb9NRF73jv0fccdh7OkW4E8x61/DHeH6QdzR7g/H7PsD7sgZxgyZJShzMXgamCYiB0XkWyJyVY/91eoOjvpt4NPeti8B27wa1z8BD3vbX8UdV28RUApc6W1fC7wB3Ik76OZy79ifefu/qaqrVHUxkI5bowN3gNPOsnd52z6POxTMKmAD8FVv2KFYjwDvh+hgpNcAT+COl3ad93reD9w/2DfJa+r8AnCtd/xm3PmreloHxA562wFMBlDVelU9HrNvM13vkTFDYgnKjHmq2gRcips8qoBfisiHYop0DoK7BXeOLnCHefqJd/xzQJ6I5AAv4042uR43oS0RkalArXeea3EnZgt7x3YOiLlB3JlEd+HOB7XI274T+Jm4o0eHvW1vAz4r7vQhL+AOE9OzmexJ3AFnU3EHI31JVVtxJ2x8yDvP/+BOLjdYa73yr3rnvgN3gr2eCnHfx0534ibDT4g7G2txzL4zuCNkGzNkgUQHYMxIUNUI7of9C96H9x3Aj7zd7d7PCF3/E31ND/AScA9uwvg88G7cJq+XY47rNn6YiKQB3wJWquoJrzNBmrf7HbjJ7ibgf4vIIu853quqB/p5PW0i8gLwdtzk0DkY6aeA08BS3C+gbb0cHqb7l9POWAR3Lq3b+jqvpzXmGFR1L/AuEfkycBJ3gOFrYp67dYDnM6ZXVoMyY56IzBOROTGblgHHBjjsJeAvveOvxm0GbFDVE0A+MEdVS4FXcJsFOxPU07idBQLesRPo+jCv9q7p3OLt8wHTVPV53IkMc4Es3NlHPx5znWp5HzE+AnwYtwntKW9bDlCpqg7wV7hTjfdUBiwTEZ+ITMOdTgPcJsp1IjLbO2+GiMzt5fh9wOzOFemaeyuEO5txdkzZubiDhxozZFaDMheDLOC/xZ2SI4x7Ef/Ofo+AL+LO1roTaKFrqgBwZxXu/OB/Gfg33EQF8D3cD+WdIhICHlLVb4rIQ8Au3OSwySvrB37qNR0K8F+qWici/wd39t2dXpIqo+uaVaynca+NPaaqHd62bwG/FpH3Ac/jTuTX06u406Xvwk0eWwFUtcpr+vyF13QI7jWpgz2O/yPwt95rBbhbRJbhzvfzF8B9MWU3eOWNGTIbzdwYM2Qi8grwTnUniOzc9kVV/WLMeirwInBF5zU5Y4bCmviMMefj7zm348YLPdanA5+15GTOl9WgjDHGJCWrQRljjElKlqCMMcYkJUtQxhhjkpIlKGOMMUnJEpQxxpik9P8BJSVeC0MKsJsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "prior1.plot(label='Prior 1')\n", "prior2.plot(label='Prior 2')\n", "\n", "decorate_value('Prior distributions of showcase value')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Distribution of Error\n", "\n", "To update these priors, we have to answer these questions:\n", "\n", "* What data should we consider and how should we quantify it?\n", "\n", "* Can we compute a likelihood function; that is, for each hypothetical price, can we compute the conditional likelihood of the data?\n", "\n", "To answer these questions, I will model each contestant as a price-guessing instrument with known error characteristics. \n", "In this model, when the contestant sees the prizes, they guess the price of each prize and add up the prices.\n", "Let's call this total `guess`.\n", "\n", "Now the question we have to answer is, \"If the actual price is `price`, what is the likelihood that the contestant's guess would be `guess`?\"\n", "\n", "Equivalently, if we define `error = guess - price`, we can ask, \"What is the likelihood that the contestant's guess is off by `error`?\"\n", "\n", "To answer this question, I'll use the historical data again. \n", "For each showcase in the dataset, let's look at the difference between the contestant's bid and the actual price:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.018111Z", "iopub.status.busy": "2021-04-16T19:35:43.017611Z", "iopub.status.idle": "2021-04-16T19:35:43.019631Z", "shell.execute_reply": "2021-04-16T19:35:43.019982Z" } }, "outputs": [], "source": [ "sample_diff1 = df['Bid 1'] - df['Showcase 1']\n", "sample_diff2 = df['Bid 2'] - df['Showcase 2']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To visualize the distribution of these differences, we can use KDE again." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.027071Z", "iopub.status.busy": "2021-04-16T19:35:43.026529Z", "iopub.status.idle": "2021-04-16T19:35:43.028680Z", "shell.execute_reply": "2021-04-16T19:35:43.029157Z" } }, "outputs": [], "source": [ "qs = np.linspace(-40000, 20000, 61)\n", "kde_diff1 = kde_from_sample(sample_diff1, qs)\n", "kde_diff2 = kde_from_sample(sample_diff2, qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what these distributions look like:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.075959Z", "iopub.status.busy": "2021-04-16T19:35:43.048711Z", "iopub.status.idle": "2021-04-16T19:35:43.205035Z", "shell.execute_reply": "2021-04-16T19:35:43.205620Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "kde_diff1.plot(label='Diff 1', color='C8')\n", "kde_diff2.plot(label='Diff 2', color='C4')\n", "\n", "decorate(xlabel='Difference in value ($)',\n", " ylabel='PMF',\n", " title='Difference between bid and actual value')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like the bids are too low more often than too high, which makes sense. Remember that under the rules of the game, you lose if you overbid, so contestants probably underbid to some degree deliberately.\n", "\n", "For example, if they guess that the value of the showcase is \\\\$40,000, they might bid \\\\$36,000 to avoid going over." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like these distributions are well modeled by a normal distribution, so we can summarize them with their mean and standard deviation.\n", "\n", "For example, here is the mean and standard deviation of `Diff` for Player 1." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.209840Z", "iopub.status.busy": "2021-04-16T19:35:43.209325Z", "iopub.status.idle": "2021-04-16T19:35:43.211530Z", "shell.execute_reply": "2021-04-16T19:35:43.211881Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-4116.3961661341855 6899.909806377117\n" ] } ], "source": [ "mean_diff1 = sample_diff1.mean()\n", "std_diff1 = sample_diff1.std()\n", "\n", "print(mean_diff1, std_diff1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use these differences to model the contestant's distribution of errors.\n", "This step is a little tricky because we don't actually know the contestant's guesses; we only know what they bid.\n", "\n", "So we have to make some assumptions:\n", "\n", "* I'll assume that contestants underbid because they are being strategic, and that on average their guesses are accurate. In other words, the mean of their errors is 0.\n", "\n", "* But I'll assume that the spread of the differences reflects the actual spread of their errors. So, I'll use the standard deviation of the differences as the standard deviation of their errors.\n", "\n", "Based on these assumptions, I'll make a normal distribution with parameters 0 and `std_diff1`.\n", "\n", "SciPy provides an object called `norm` that represents a normal distribution with the given mean and standard deviation." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.215986Z", "iopub.status.busy": "2021-04-16T19:35:43.215405Z", "iopub.status.idle": "2021-04-16T19:35:43.217589Z", "shell.execute_reply": "2021-04-16T19:35:43.217195Z" } }, "outputs": [], "source": [ "from scipy.stats import norm\n", "\n", "error_dist1 = norm(0, std_diff1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an object that provides `pdf`, which evaluates the probability density function of the normal distribution.\n", "\n", "For example, here is the probability density of `error=-100`, based on the distribution of errors for Player 1." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.221442Z", "iopub.status.busy": "2021-04-16T19:35:43.220947Z", "iopub.status.idle": "2021-04-16T19:35:43.223380Z", "shell.execute_reply": "2021-04-16T19:35:43.223743Z" } }, "outputs": [ { "data": { "text/plain": [ "5.781240564008691e-05" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "error = -100\n", "error_dist1.pdf(error)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By itself, this number doesn't mean very much, because probability densities are not probabilities. But they are proportional to probabilities, so we can use them as likelihoods in a Bayesian update, as we'll see in the next section." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update\n", "\n", "Suppose you are Player 1. You see the prizes in your showcase and your guess for the total price is \\\\$23,000.\n", "\n", "From your guess I will subtract away each hypothetical price in the prior distribution; the result is your error under each hypothesis." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.226913Z", "iopub.status.busy": "2021-04-16T19:35:43.226469Z", "iopub.status.idle": "2021-04-16T19:35:43.228074Z", "shell.execute_reply": "2021-04-16T19:35:43.228429Z" } }, "outputs": [], "source": [ "guess1 = 23000\n", "error1 = guess1 - prior1.qs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we know, based on past performance, that your estimation error is well modeled by `error_dist1`.\n", "Under that assumption we can compute the likelihood of your error under each hypothesis." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.231953Z", "iopub.status.busy": "2021-04-16T19:35:43.231397Z", "iopub.status.idle": "2021-04-16T19:35:43.233519Z", "shell.execute_reply": "2021-04-16T19:35:43.233990Z" } }, "outputs": [], "source": [ "likelihood1 = error_dist1.pdf(error1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an array of likelihoods, which we can use to update the prior." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.239353Z", "iopub.status.busy": "2021-04-16T19:35:43.238671Z", "iopub.status.idle": "2021-04-16T19:35:43.241477Z", "shell.execute_reply": "2021-04-16T19:35:43.241931Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "3.3889812097254624e-05" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior1 = prior1 * likelihood1\n", "posterior1.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior distribution looks like:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.288160Z", "iopub.status.busy": "2021-04-16T19:35:43.287654Z", "iopub.status.idle": "2021-04-16T19:35:43.431834Z", "shell.execute_reply": "2021-04-16T19:35:43.432442Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior1.plot(color='C5', label='Prior 1')\n", "posterior1.plot(color='C4', label='Posterior 1')\n", "\n", "decorate_value('Prior and posterior distribution of showcase value')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because your initial guess is in the lower end of the range, the posterior distribution has shifted to the left. We can compute the posterior mean to see by how much." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.436831Z", "iopub.status.busy": "2021-04-16T19:35:43.436115Z", "iopub.status.idle": "2021-04-16T19:35:43.440717Z", "shell.execute_reply": "2021-04-16T19:35:43.441327Z" } }, "outputs": [ { "data": { "text/plain": [ "(30299.488817891375, 26192.024002392536)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior1.mean(), posterior1.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before you saw the prizes, you expected to see a showcase with a value close to \\\\$30,000.\n", "After making a guess of \\\\$23,000, you updated the prior distribution.\n", "Based on the combination of the prior and your guess, you now expect the actual price to be about \\\\$26,000." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Now suppose you are Player 2. When you see your showcase, you guess that the total price is \\\\$38,000.\n", "\n", "Use `diff2` to construct a normal distribution that represents the distribution of your estimation errors.\n", "\n", "Compute the likelihood of your guess for each actual price and use it to update `prior2`.\n", "\n", "Plot the posterior distribution and compute the posterior mean. Based on the prior and your guess, what do you expect the actual price of the showcase to be?" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.446313Z", "iopub.status.busy": "2021-04-16T19:35:43.445597Z", "iopub.status.idle": "2021-04-16T19:35:43.448186Z", "shell.execute_reply": "2021-04-16T19:35:43.448776Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-3675.891373801917 6886.260711323408\n" ] } ], "source": [ "# Solution\n", "\n", "mean_diff2 = sample_diff2.mean()\n", "std_diff2 = sample_diff2.std()\n", "\n", "print(mean_diff2, std_diff2)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.453527Z", "iopub.status.busy": "2021-04-16T19:35:43.452814Z", "iopub.status.idle": "2021-04-16T19:35:43.454765Z", "shell.execute_reply": "2021-04-16T19:35:43.455306Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "error_dist2 = norm(0, std_diff2)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.459870Z", "iopub.status.busy": "2021-04-16T19:35:43.459110Z", "iopub.status.idle": "2021-04-16T19:35:43.461269Z", "shell.execute_reply": "2021-04-16T19:35:43.461881Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "guess2 = 38000\n", "error2 = guess2 - prior2.qs\n", "\n", "likelihood2 = error_dist2.pdf(error2)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.468130Z", "iopub.status.busy": "2021-04-16T19:35:43.467318Z", "iopub.status.idle": "2021-04-16T19:35:43.472187Z", "shell.execute_reply": "2021-04-16T19:35:43.471584Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "2.697812321910703e-05" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior2 = prior2 * likelihood2\n", "posterior2.normalize()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.549426Z", "iopub.status.busy": "2021-04-16T19:35:43.506440Z", "iopub.status.idle": "2021-04-16T19:35:43.768369Z", "shell.execute_reply": "2021-04-16T19:35:43.769420Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "prior2.plot(color='C5', label='Prior 2')\n", "posterior2.plot(color='C15', label='Posterior 2')\n", "\n", "decorate_value('Prior and posterior distribution of showcase value')" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.773670Z", "iopub.status.busy": "2021-04-16T19:35:43.772931Z", "iopub.status.idle": "2021-04-16T19:35:43.776721Z", "shell.execute_reply": "2021-04-16T19:35:43.777489Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "31047.62371912252 34305.20161642468\n" ] } ], "source": [ "# Solution\n", "\n", "print(prior2.mean(), posterior2.mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Probability of Winning\n", "\n", "Now that we have a posterior distribution for each player, let's think about strategy.\n", "\n", "First, from the point of view of Player 1, let's compute the probability that Player 2 overbids. To keep it simple, I'll use only the performance of past players, ignoring the value of the showcase. \n", "\n", "The following function takes a sequence of past bids and returns the fraction that overbid." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.782090Z", "iopub.status.busy": "2021-04-16T19:35:43.781438Z", "iopub.status.idle": "2021-04-16T19:35:43.785129Z", "shell.execute_reply": "2021-04-16T19:35:43.785964Z" } }, "outputs": [], "source": [ "def prob_overbid(sample_diff):\n", " \"\"\"Compute the probability of an overbid.\"\"\"\n", " return np.mean(sample_diff > 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an estimate for the probability that Player 2 overbids." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.791906Z", "iopub.status.busy": "2021-04-16T19:35:43.791267Z", "iopub.status.idle": "2021-04-16T19:35:43.798095Z", "shell.execute_reply": "2021-04-16T19:35:43.797335Z" } }, "outputs": [ { "data": { "text/plain": [ "0.29073482428115016" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_overbid(sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose Player 1 underbids by \\\\$5000.\n", "What is the probability that Player 2 underbids by more?\n", "\n", "The following function uses past performance to estimate the probability that a player underbids by more than a given amount, `diff`:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.803290Z", "iopub.status.busy": "2021-04-16T19:35:43.802451Z", "iopub.status.idle": "2021-04-16T19:35:43.807092Z", "shell.execute_reply": "2021-04-16T19:35:43.806213Z" } }, "outputs": [], "source": [ "def prob_worse_than(diff, sample_diff):\n", " \"\"\"Probability opponent diff is worse than given diff.\"\"\"\n", " return np.mean(sample_diff < diff)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability that Player 2 underbids by more than \\\\$5000." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.812801Z", "iopub.status.busy": "2021-04-16T19:35:43.812084Z", "iopub.status.idle": "2021-04-16T19:35:43.820076Z", "shell.execute_reply": "2021-04-16T19:35:43.819320Z" } }, "outputs": [ { "data": { "text/plain": [ "0.38338658146964855" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_worse_than(-5000, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the probability they underbid by more than \\\\$10,000." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.826928Z", "iopub.status.busy": "2021-04-16T19:35:43.826246Z", "iopub.status.idle": "2021-04-16T19:35:43.830095Z", "shell.execute_reply": "2021-04-16T19:35:43.830762Z" } }, "outputs": [ { "data": { "text/plain": [ "0.14376996805111822" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_worse_than(-10000, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can combine these functions to compute the probability that Player 1 wins, given the difference between their bid and the actual price:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.837850Z", "iopub.status.busy": "2021-04-16T19:35:43.837006Z", "iopub.status.idle": "2021-04-16T19:35:43.840521Z", "shell.execute_reply": "2021-04-16T19:35:43.839477Z" } }, "outputs": [], "source": [ "def compute_prob_win(diff, sample_diff):\n", " \"\"\"Probability of winning for a given diff.\"\"\"\n", " # if you overbid you lose\n", " if diff > 0:\n", " return 0\n", " \n", " # if the opponent overbids, you win\n", " p1 = prob_overbid(sample_diff)\n", " \n", " # or of their bid is worse than yours, you win\n", " p2 = prob_worse_than(diff, sample_diff)\n", " \n", " # p1 and p2 are mutually exclusive, so we can add them\n", " return p1 + p2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability that you win, given that you underbid by \\\\$5000." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.846964Z", "iopub.status.busy": "2021-04-16T19:35:43.846152Z", "iopub.status.idle": "2021-04-16T19:35:43.848940Z", "shell.execute_reply": "2021-04-16T19:35:43.849568Z" } }, "outputs": [ { "data": { "text/plain": [ "0.6741214057507987" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_prob_win(-5000, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's look at the probability of winning for a range of possible differences." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.900383Z", "iopub.status.busy": "2021-04-16T19:35:43.880078Z", "iopub.status.idle": "2021-04-16T19:35:43.945743Z", "shell.execute_reply": "2021-04-16T19:35:43.945174Z" } }, "outputs": [], "source": [ "xs = np.linspace(-30000, 5000, 121)\n", "ys = [compute_prob_win(x, sample_diff2) \n", " for x in xs]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:43.983597Z", "iopub.status.busy": "2021-04-16T19:35:43.976147Z", "iopub.status.idle": "2021-04-16T19:35:44.200342Z", "shell.execute_reply": "2021-04-16T19:35:44.199432Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(xs, ys)\n", "\n", "decorate(xlabel='Difference between bid and actual price ($)',\n", " ylabel='Probability of winning',\n", " title='Player 1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you underbid by \\\\$30,000, the chance of winning is about 30%, which is mostly the chance your opponent overbids.\n", "\n", "As your bids gets closer to the actual price, your chance of winning approaches 1.\n", "\n", "And, of course, if you overbid, you lose (even if your opponent also overbids)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Run the same analysis from the point of view of Player 2. Using the sample of differences from Player 1, compute:\n", "\n", "1. The probability that Player 1 overbids.\n", "\n", "2. The probability that Player 1 underbids by more than \\\\$5000.\n", "\n", "3. The probability that Player 2 wins, given that they underbid by \\\\$5000.\n", "\n", "Then plot the probability that Player 2 wins for a range of possible differences between their bid and the actual price." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.207596Z", "iopub.status.busy": "2021-04-16T19:35:44.206660Z", "iopub.status.idle": "2021-04-16T19:35:44.210043Z", "shell.execute_reply": "2021-04-16T19:35:44.210868Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0.24600638977635783" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prob_overbid(sample_diff1)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.218842Z", "iopub.status.busy": "2021-04-16T19:35:44.217621Z", "iopub.status.idle": "2021-04-16T19:35:44.221106Z", "shell.execute_reply": "2021-04-16T19:35:44.222054Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0.3993610223642173" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prob_worse_than(-5000, sample_diff1)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.230669Z", "iopub.status.busy": "2021-04-16T19:35:44.229367Z", "iopub.status.idle": "2021-04-16T19:35:44.233645Z", "shell.execute_reply": "2021-04-16T19:35:44.234317Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0.6453674121405751" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "compute_prob_win(-5000, sample_diff1)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.252935Z", "iopub.status.busy": "2021-04-16T19:35:44.252459Z", "iopub.status.idle": "2021-04-16T19:35:44.313662Z", "shell.execute_reply": "2021-04-16T19:35:44.314024Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "xs = np.linspace(-30000, 5000, 121)\n", "ys = [compute_prob_win(x, sample_diff1) for x in xs]" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.357956Z", "iopub.status.busy": "2021-04-16T19:35:44.339391Z", "iopub.status.idle": "2021-04-16T19:35:44.564128Z", "shell.execute_reply": "2021-04-16T19:35:44.563691Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAx1UlEQVR4nO3dd5gc1ZX38e+ZVs4ogVCWkEQWoEFkREZggwCTbFiC7WVxWnZZ+7V3veuE7fU6G2ODMcYGGyObnETGBCEJBSQEAoSyNJJAOaI0M+f9o2p6qlvdPTWh0+j3eZ5+putWdfWprpk5fW/dutfcHRERkVJTUewAREREMlGCEhGRkqQEJSIiJUkJSkRESpISlIiIlCQlKBERKUlKUCJ5YGYvm9nnix2HSDlTghJpIjNbamY7zGybmX1kZn80sy7FjivKzK41s1lmtsXMqszsx2bWpthxicShBCXSPBe4exfgGOBY4L+LFUiWxNMJ+DegN3AccCbw1QKGJdJkSlAiLcDdVwJPA4enrzOz4Wb2kpmtN7N1ZnafmfUI133NzB5K2/7XZvbL8Hl3M/uDma02s5Vm9n0zS4TrrjOz183sF2a2AfhOhrhud/fX3H13GON9wEkte/Qi+aEEJdICzGwgcD4wO9Nq4H+BA4FDgIHUJ5O/AOMjCasNcAXw53D9PUA1cBBwNHAOEL22dRywGOgL/CBGqKcC8+IdlUhxKUGJNM+jZrYJmAy8AvwwfQN3X+juz7v7LndfC/wcGBeuWw28ClwWbj4eWOfus8xsf+A84N/cfbu7rwF+AVwZ2f0qd/+1u1e7+45cgZrZ9UAl8NNmHK9IwehiqUjzXOTuL+TawMz6ArcCpwBdCb4Yboxscg/wBeD3wNXU154GA22B1WZWt20FsCLy2ujzXDFcBPwIOMvd18V5jUixqQYlkn//CzhwpLt3I0hCFln/KHCkmR0OfJLgOhEEyWcX0Nvde4SPbu5+WOS1DU5HYGbjCZLfBe7+drOPRqRAlKBE8q8rsA3YZGb9ga9FV7r7TuBB4K/AdHdfHpavBp4DfmZm3cysIuxwMS7uG5vZGQQJ71PuPr1lDkekMJSgRPLvuwTd0DcDTwEPZ9jmHuAI6pv36lwDtAPeJWgWfBDo14j3/h+gOzApvF9rm5k93bjwRYrDNGGhSPGZ2SDgfeAAd99S7HhESoFqUCJFZmYVwM3ARCUnkXrqxSdSRGbWGfgIWEbQxVxEQmriExGRkqQmPhERKUll18TXu3dvHzJkSLHDEBGRFjJr1qx17t4nvbzsEtSQIUOYOXNmscMQEZEWYmbLMpWriU9EREqSEpSIiJQkJSgRESlJeUtQZna3ma0xs3eyrDczu9XMFprZXDM7Jl+xiIhI+clnDepP5L7x8DxgRPi4Abg9j7GIiEiZyVuCcvdXgQ05NpkA3OuBaUAPM2vMIJgiItKKFfMaVH9SJ1urCsv2YmY3mNlMM5u5du3aggQnIpIPu/fUUFurEXziKGaCsgxlGc+au9/p7pXuXtmnz173comIlIXnZizm0997hP/6/T+UpGIoZoKqAgZGlgcAq4oUi4hIXu3YtYffPf4mAAuqNrDso81Fjqj0FTNBPQ5cE/bmOx7YHM4gKiLS6rz0ZupgCbt2VxcpkvKRt6GOzOx+4DSgt5lVAd8G2gK4+x3AJOB8YCHwMXB9vmIRESmm2lpn0rSFKWVq4GtY3hKUu3+6gfUOfClf7y8iUipmzl/Nhxu2pZTV6BpUgzSShIhInj05ZcFeZTU1tUWIpLwoQYmI5NGS1ZuYt3Tv22NqNVlsg5SgRETyxN25/4V5Gdepia9hSlAiInkyZd5KZn1Q3zm5Z9eOyee6D6phSlAiInmwfcdu7n5qTnL5nGOHMXJgz+RyTa2uQTVECUpEJA/ue2Eem7btBKBHlw5cffbhmNUPoKMKVMPKbsp3EZFSVlvrPDFlAc9NX5ws++wnjqJzx3ZUVEQSlHrxNUgJSkSkhXy4YRu3PTyT95atS5aNGdmPEw8LxsFORBOUevE1SAlKRKQFfLRxO//v9pfYvnN3smxovx584aIxyaa9aA1KvfgapgQlItJM7s7vn5idTE4VZlwy7mAuO+0Q2iTqL/UnKuqfqxdfw5SgRESa6fW3q5i94EMADONb153CEcP67rVdIqUGpWtQDVEvPhGRZti2Yzd/mDQnuXzu2GEZkxMENas6auJrmBKUiEgT1dY6d096iy3bdwGwX9eOXHX24Vm3TyQinSSUoBqkJj4RkSZYvX4bv354BvOXr0+Wfe4To+nUoW3W16gG1ThKUCIijfSPN5dy55Oz2b2nJll24uEDOf7Q/jlfF+0koWtQDVOCEhGJyd156NX3UwaAraio4PLTD+GSU0aljBSRie6DahwlKBGRGNyD603RmXEH9unGTZeNZWi/HrH2YRW6BtUYSlAiIjHc9/w7Kcnp8KF9+fpnTsh5zSldQjfqNooSlIhIA1av38Zjr9fPinvCYQO46dJjadsm0aj9REeScCWoBilBiYg04C/Pv0Nt2Knh4EG9ufny41KSTVzqxdc4ug9KRCSH+cvXM21eVXL52vFHNCk5QdpQR+ok0SAlKBGRLNyde56dm1w+4bABjBzYq8n7q9BQR42iBCUiksX091Ylb8RNJCq4+pzso0TEkdJJokY1qIYoQYmIZODuTHzp3eTyeWOHc0DPLs3ap+6DahwlKBGRDGa8v5rlH20GoF3bBJeMO7jZ+1QnicZRghIRSePuPPDye8nl8WOH071z+2bvN5HQUEeNoQQlIpJm9oKPWLxqIwBt2yS48KSRLbLfhEaSaBQlKBGRiPTa09mVQ9mva4cW2bea+BpHCUpEJGLuojV8sKK+596Ek1um9gRQkdCU742hBCUiEnJ37n327eTyGUcPoXf3Ti22/+j9va5efA1SghIRCb361nKWfrgJCK49XXpa83vuRaXOB6UE1RAlKBERYPeeGv4amefpwhNHtGjtCVJHklATX8PymqDMbLyZzTezhWb2jQzru5vZE2b2lpnNM7Pr8xmPiEg2k6YtZN3mjwHo2qk9F50yqsXfI7WThLqZNyRvo5mbWQL4DXA2UAXMMLPH3f3dyGZfAt519wvMrA8w38zuc/fd+YpLRKTO0tWbeG7mEuYvX8+yDzcnyy8//ZBGzfMUl+aDapx8TrcxFljo7osBzGwiMAGIJigHulowT3IXYANQnceYREQA2PrxLv7n7lf4eOeelPJ+vbpwzrHD8vKeCfXia5R8NvH1B1ZElqvCsqjbgEOAVcDbwE3uvle918xuMLOZZjZz7dq1+YpXRPYhT05dmJKcDGPYgftx06VjaZPIz7/GaC8+1aAals8aVKYJU9LPyLnAHOAMYDjwvJm95u5bUl7kfidwJ0BlZaXOqog0y/Ydu1Omb7/m3CM5u3JoXpr1ojQfVOPkswZVBQyMLA8gqClFXQ887IGFwBKgZft1ioikmfTGomTt6cBeXbngxBF5T06Qfg1KnSQaks8ENQMYYWZDzawdcCXweNo2y4EzAcxsf2AUsDiPMYnIPm7Hrj08OWVBcvmSU0c1eYbcxqrQfFCNkrcmPnevNrMvA88CCeBud59nZjeG6+8AbgH+ZGZvEzQJft3d1+UrJhHZd239eBfzV2zglTnL2bYj6Cjct0dnThk9qGAxqImvcfJ5DQp3nwRMSiu7I/J8FXBOPmMQEZk8dwW3PjyDmprUZrVLTh2Vtw4RmZhu1G0UjSQhIq1aMDPuvL2S08A+3Tj9mCEFjUXTbTROXmtQIiLFtvTDzaxevw0IZsY9p3IYowb1YszIAwpae4LUkSTUxNcwJSgRadVef7v+dszjD+3P9eePLlos6sXXOA0mKDPrmaF4q7vvyVAuIlIy3J3X365KLp94+IAiRqNefI0Vp377JrAW+ABYED5fYmZvmtmYfAYnItIci1ZuZM2m7QB06tCWow7av6jxqBdf48RJUM8A57t7b3fvBZwH/B34IvDbfAYnItIcr79TX3sae8iBtG2TKGI0aTUodZJoUJwEVenuz9YtuPtzwKnuPg1on7fIRESawd2ZEklQJx0+MMfWhaFefI0Tp5PEBjP7OjAxXL4C2BhOp6GrfCJSkhZUbUjO79S5QzuOHN63yBFpPqjGilOD+gzBOHqPAo8Bg8KyBHB53iITEWmGx16vH87ouEMPLHiX8kw0H1TjNFiDCoce+kqW1QuzlIuIFM3M+auZNq++ee/MAt+Qm03KfFDqJNGgON3MRwJfBYZEt3f3M/IXlohI0+zcXc3vn5idXD7t6MEcPLh3ESOql3KjrrqZNyjONagHgDuAu4Ca/IYjItI8E1+cl7z21KVjO64998giR1Qvkp9wHHfHrDAjqZejOAmq2t1vz3skIiLNtOyjzTw5pf7Kw/XnjaZb59LpbGxmVFRUUBt2kKitdRIJJahs4lw1fMLMvmhm/cysZ90j75GJiDTS09MW4eHE3YcP7cu4owo3lUZcqT351MyXS5wa1LXhz69FyhwY1vLhiIg0zY5de3j1reXJ5SvPPLQkm88SFUZ1eLFEHSVyi9OLb2ghAhERaY7X5q5g155qAAb06cbBg3oVOaLMUsfj071QuWRNUGZ2hru/ZGaXZFrv7g/nLywRkcZ5fuaS5POzK4eWZO0J0kaTUA0qp1w1qHHAS8AFGdY5oAQlIiVh0cqNLF61EYA2iURJXnuqU5GSoIoYSBnImqDc/dvhz+sLF46ISONFa08nHt6frp1Kp+deuuiI5mriyy3OjbrtgU+x942638tfWCIi8WzYsiOlc8Q5x5Z2/61IBUq9+BoQpxffY8BmYBawK7/hiIjEt2PXHn7w59fLonNEHc0JFV+cBDXA3cfnPRIRkUaorqnlZ397g6UfbgKC+4s+e/7oku0cUUe9+OKLc6PuFDM7Iu+RiIg0wl1PzmH2gg+Ty/9y4TGMLvKMuXFoRPP44tSgTgauM7MlBE18Bri7l84AVyKyT3llzjKen7k4uXzpuEM4q7I8btmsUBNfbHES1Hl5j0JEJKZV67byu8frRys/6YiBXHnmoUWMqHEqNKtubHFGklgWzp67f5ztRUTyZU91DT//+xvJThH9enXhixeNKfnrTlGa9j2+ON3MvwJ8G/iI+ineHVATn4gU1F9fmMeS1ZuAYPK//7jieDq0K6/vzZr2Pb44Z/YmYJS7r893MCIi2axct5Unp9RP437tuUcytF+P4gXURNHpNVSDyi1OL74VBPdBiYgUzV+efTvZqeDQIX04//jhRY6oaVJGklCCyilODWox8LKZPUXkRl13/3neohIRiXhv2Tqmv78quXzd+CPL6rpTVMq07+rFl1OcBLU8fLQLHyIiBePu3PPM3OTyyUcOZHj//YoYUfNEKlCqQTUgTi++7zZ152Y2HvgVkADucvcfZdjmNOCXQFtgnbuPa+r7iUjrM2XeShZUbQCCjhFXnXV4kSNqnpShjpSgcso1H9Qv3f3fzOwJYK9P0d0vzLXjsGv6b4CzgSpghpk97u7vRrbpAfwWGO/uy82sb9MOQ0Raox279nDP028llz9x/EH03a9zESNqPvXiiy9XDerP4c+fNnHfY4GF7r4YwMwmAhOAdyPbfAZ42N2XA7j7mia+l4i0Qve/OI/1W3YA0K1zez417uAiR9R8ug8qvlzzQc0KnyaAae7+cSP33Z+gB2CdKuC4tG1GAm3N7GWgK/Ard783fUdmdgNwA8CgQaU7EZmItJyFVRuYNHVRcvn680bTpWP5Xwav0Fh8scXpZn4dMMfMpprZj83sAjOLc4UyUxeb9LPRBhgDfAI4F/gfMxu514vc73T3Snev7NOnT4y3FpFyVlNTy+2PvYmH/zJGD9+fU44cWOSoWkaFrkHFFqeTxDUAZnYgcCnBdaUDY7y2Coj+Rg0AVmXYZp27bwe2m9mrwGjgg1jRi0irU5ec6qbRaNsmwT9fcHTZditPl9LEp27mOcUZ6uhq4BTgCGAdcBvwWox9zwBGmNlQYCVwJcE1p6jHgNvMrA1BF/bjgF/Ejl5EWpXde4Kx9mZE7nm67LRD6NerSxGjalmaDyq+OPdB/RJYBNwB/MPdl8bZsbtXm9mXgWcJrmPd7e7zzOzGcP0d7v6emT0DzCUY5+8ud3+n8YchIuVu5+5qvn/vZN5bti5ZdtrRg7n4lFFFjKrlqQYVX5wmvt5mdhhwKvADMxsBzHf3f4rx2knApLSyO9KWfwL8pFFRi0irUl1Ty08nTktJThefMoqrzj681TTt1dFQR/HFaeLrBgwCBgNDgO7Uj2ouItIs7s7vHn8zZXbca8cfyYUn7dVfqlXQfFDxxWnimxx53ObuVfkNSUT2JQ+8/B4vvbk0uXzpaYe02uQEmvK9MeI08WneJxFpce7O/S/M46FX30+WjTtqMFeeUT6z4zaFBouNr7xm+hKRVqGmppbfPTGbF2ctSZYdObxv2c2O2xTqxRefEpSIFIy7M+P91Tz86vvJAWABjhl5AF+94njaJOKMHVDe1IsvvlyDxf6fu3/dzC5z9wcKGZSItC6799TwypxlPP76Alat35qybtxRg/niRWP2ieQE6YPFKkHlkqsGdb6Z/Tfwn4ASlIg0WnVNLY9Ons9TUxeyZfuulHUVFRVcfPJIPn3WYa2+WS+qIqFu5nHlSlDPEIwc0dnMthCMred1P929WwHiE5Ey5e786sEZTHlnRUp5x/ZtOadyKOefcBC9u3cqUnTFE23icyWonHKNZv414Gtm9pi7TyhgTCLSCrwwc0lKcurVrSOfOGEEZ1cOpVOHtkWMrLg0H1R8cbqZTzCz/YFjw6I33H1tfsMSkXK2fM0W/jCpfqLBM44Zwr9ceMw+c50pF90HFV+Dvy1mdhkwHbgMuByYbmaX5jswESlPu/fU8PO/vcGe6hoABvbpxj9/8mglp1Aioek24orTzfy/gWPrZrs1sz7AC8CD+QxMRMqPu/Orh2awYs1mIJgq4+Yrj6dd20SRIysdulE3vjhfaSrSpmJfH/N1IrKP+dPTc5k2r340tM+dP5pBfdWfKkpNfPHFqUE9Y2bPAveHy1eQNkK5iMiTUxbw5NQFyeXzjz+IsyqHFjGi0qTBYuOL00nia2Z2CXAyQRfzO939kbxHJiJl462FH/Gnp+cml487pD/Xnzd6n7q/Ka7UGpR68eUSa6gjd38YeDjPsYhIGdq0bSe/enAGTlAbGDmwF/922diUmoLU0zWo+HQtSUSazN259cEZbN6+E4DunTvw9c+coE4ROaQOFqsElYsSlIg02aOTP+CtRR8ll2+69Fh6dOlQxIhKn2bUjS/OfVCfNDMlMhFJ8ez0Rdz33DvJ5YtPGcXog/YvYkTloUKjmccWJ/FcCSwwsx+b2SH5DkhESpu787eX3uXOJ2YnrzuNGNCTK888rMiRlYeUBKX5oHKK04vvajPrBnwa+KOZOfBH4H5335r71SLSmuzYtYe7nprDy7OXJcuG99+P/7z6JI0UEZPug4ov1m+Uu28BHgImAv2Ai4E3zewreYxNRErIvCVrufm2F1KS0+jh+/O9z46je+f2RYysvKgXX3wN1qDM7ELgemA48GdgrLuvMbNOwHvAr/MboogU0+49Ndz3/Ds8NXVhskkP4NTRg/jSxZWqOTVSImU+KDXx5RLnPqhLgV+4+6vRQnf/2Mw+m5+wRKQULKzawK0PzWDluvrW/M4d2nHDBUdz0hEDdCNuE6RM+a78lFOcBLU6PTnVTQfv7i/mKS4RKaIlqzfx6OT5THm7KqUZ6ugRB/DFi8bQs1vHIkZX3tTEF1+cBHU28PW0svMylIlImVu1bit3PTkn5d4mgPZt23DdeUdyduVQ1ZqaSUMdxZc1QZnZF4AvAsPNbG5kVVfg9XwHJiKF4+48/cYi7n327eQ8TnWOHN6Xf7nwGA7o2aVI0bUuGiw2vlw1qL8CTwP/C3wjUr7V3TfkNSoRKZi1mz7mN4/M5O3F9bPqVJhxwuEDuPDEERw0oGcRo2t9Uqd8V4LKJVeCcndfamZfSl9hZj2VpETKm7vz8uxl/GHSW+zYtSdZPrBvd2669FiG9utRvOBasdRefEpQuTRUg/okMAtwgqk26jgwLI9xiUge1dTU8ssHZzDlnRXJMsOYcPJIrjzzUNq20WCv+aImvviyJih3/2T4UzOOibQi7s7vnpidkpwO6NmFr1xSycGDexcxsn1DSi8+dZLIKVcniWNyvdDd32xo52Y2HvgVkADucvcfZdnuWGAacIW7P9jQfkWk6R585X1enLUkuXzmmKF89vzRdGgXa3o4aSYNdRRfrt/In+VY58AZuXZsZgngNwTd1KuAGWb2uLu/m2G7/wOejRWxiDTJzt3VPDV1IRNfnJcsG3fUYL4w4Rh1HS8gNfHFl6uJ7/Rm7nsssNDdFwOY2URgAvBu2nZfIRjn79hmvp+IpNlTXcPiVZuYNX81z0xfzPadu5Prjhzely9eNEbJqcBS54NSE18uuZr4znD3l8zskkzrw2ngc+kPrIgsVwHHpb1Hf4KBZ88gR4IysxuAGwAGDRrUwNuK7Lu2fryLd5euY/7y9by/Yj2LVm6iuqZmr+2GHNCDr15xvMbRK4KUoY5UgcopVxPfOOAl4IIM6xxoKEFl+lqWfjp+CXzd3WtyfYtz9zuBOwEqKyt1SkXSrFizhccmf8Crc5dTk2OOob49OnPBSSM4a8xQTcteJBUaSSK2XE183w5/Xt/EfVcBAyPLA4BVadtUAhPD5NQbON/Mqt390Sa+p8g+5eOde/jto7OYOq8q6zYH9OzCqEG9OPbgfhx3SP+Uf5BSeAldg4otznQbvYBvAycT1IAmA99z9/UNvHQGMMLMhgIrCWbm/Ux0g2gXdjP7E/CkkpNIPJu27eT7905myepNKeVD+/XgyGF9GTWoF6MG9aJHlw7FCVAy0mCx8cXpVzoReBX4VLh8FfA34KxcL3L3ajP7MkHvvARwt7vPM7Mbw/V3NDlqkX3chxu2ccs9k/lww7Zk2diDD2TCySN1L1OJSxlJokYJKpc4Caqnu98SWf6+mV0UZ+fuPgmYlFaWMTG5+3Vx9imyr3H35P0yH27YxpNTFvKP2cuSnR8M48YJx3BWpe6pLwcaiy++OAnqH2Z2JfD3cPlS4Kn8hSQiEHR8ePz1D5j89gp279m7Jx5A2zYJbr78OMYecmCBo5OmSrkPSk18OeXqZr6V+jH4bgb+Eq6qALYRXJcSkRa2ev02/jjpLWZ9sDrndsP778fnzj+KUYN6FSgyaQmpnSTUiy+XXL34uhYyEJF9nbvzzPTF3Pvs3L1qTBVmYEaiwhg9vC8XnjSSQ4f01k22ZcjMMAwP77pxd53HLGINvmVm+wEjgGR3oPRp4EUkHndnzaaPk0lo07advLdsHW9+8CELqupnsTGMYw/ux4STRzJqUC/9E2tFKhKW7CBRU+u0SejcZhKnm/nngZsI7mOaAxwPTKWBsfhEZG8bt+7kJxOnMn957rs0Bvbpxlc+dSzD++9XoMikkCrMqKsj19TUakSPLOLUoG4iGIZomrufbmYHA9/Nb1girc/q9du45Z7X+Gjj9qzbaE6mfUOiwqibIlIdJbKLk6B2uvtOM8PM2rv7+2Y2Ku+RibQS7s7bi9fyywems3n7TiD4Bt2vVxcA2rdrw0H99+PgQb04bGgfenfvVMxwpQAqNOVGLHESVJWZ9QAeBZ43s43sPWSRiBAko8WrNrFh6w4Atn68m2emL2LRyo3Jbdq2SfAfVxzHsQera/i+KnVEcyWobBpMUO5+cfj0O2b2D6A78ExeoxIpMzU1tUydt5JHJ8/fa+ihqE4d2vJfV5/EIRrtYZ+WOquuElQ2cXvxHUP9WHyvu/vuBl4isk/YsWsPL8xaypNTFrBu88dZt2uTSHD60YO5+NRR7L9f5wJGKKUooRHNY4nTi+9bwGXUT6/xRzN7wN2/n9fIRIps954aduyuBmDX7moWrdrI/OXrqVq7NflPZeHKjXy8c0/K69q2SXD40D5UmGEGww7cj3PHDtOgrZKUSKgGFUecGtSngaPdfSeAmf0IeBNQgpJWafGqjTw6+QOmzlvZqDv9u3Zqz3nHDWf8ccPp3rl9HiOUcqfx+OKJk6CWEtyguzNcbg8syldAIsXg7sxe8BGPTf6Ad5asadRrD+jZhQtPGsHpRw/RJIASS7SThLqZZ5drLL5fE1xz2gXMM7Pnw+WzCeaEEilrtbXOijVbmLd0Lc9NX8yKtVv22qZLx3bB0DQGA/p04+BBvRjefz86tAv+dDq1b8NB/XtqEkBplApNWhhLrhrUzPDnLOCRSPnLeYtGpAAWrdzIY69/wKz5q9kZXmOKqjDjhMMHcNHJIxl2oEZykJanBBVPrsFi76l7bmbtgJHh4nx335P5VSKlwd35aON25i9fz5LVm9hTHVxLqqsxZdK+bRvOrhzKJ044iL7qaSd5lHoNSr34sonTi+804B6Ca1EGDDSzazVYrJSKXbur+cfsZTw7Y3Gyq3dNjbNrz961o3T7de3IqEG9OHRwb8YdNYguHdvlO1wR9eKLKU4niZ8B57j7fAAzGwncD4zJZ2Ai6TxyMXnz9l3MX76ed5eu4+U5y9i2I/6teRVmnHTEQC48aQRD+/XQKOFScOrFF0+cBNW2LjkBuPsHZtY2jzHJPmzDlh0sXLmRHbuCVuTde2pYtGoT81esZ8VHW5Jz6MTRsX1bRg3syciBvejaKagZtU1UcNSIA+jTQ+PdSfGkDnWkJr5s4iSoWWb2B+DP4fJVBB0nRBrN3Vm1fhsfLF/P+8vXJ5vk3GHV+q2s3ZR9NIZc+vToxAUnjuSkIwYkpy7o3KGtakdSklKnfS9iICUuToK6EfgS8K8E16BeBX6bz6CkvFXX1LJ09SYWr96UnJRvx+5qFlZt4P3l6xvVHJdN2zYJhh8YjAB+yJDeHH3Q/iQ0p46UiZShjmpUg8omZ4IyswpglrsfDvy8MCFJKamtddZu/jjjH9GGrTt5f/k6Pli+gU3hNBK1tc7KdVv3mrI8rrZtEowY0JPe3Tsmy/r16sIhg3szYkDP5P1HIuUskVKDUhUqm5x/7e5ea2Zvmdkgd19eqKDyZcWaLbz+TlWxwygL1dU1LFm9ifkrNiSvB7WULh3bMWpgL0YN6sXgA7onLxh369SOIf16aHZRafU0H1Q8cb6O9iMYSWI6kJwK1N0vzFtUebJizRYe+Me7xQ5jn9CnRydGDuyVHJOuwoxB+3dj1KBe9O/dVdeGZJ+WMtSRElRWcRKUpnffx3Xr3J5O7ffuuNmhXRtGDOjJqIE96d+nPun07NaRXt067rW9iAQ03UY8ucbi60DQQeIg4G3gD+7e8J2PJWxg325cdvqhxQ6jLBhwQM/OHDy4N317dFKNR6QFRf+eVIHKLlcN6h5gD/AacB5wKHBTIYLKl4F9u3HlGUpQIlJcKd3M1Ysvq1wJ6lB3PwIgvA9qemFCEhFp3dSLL55c3aWSXbfKvWlPRKSUqBdfPLlqUKPNrG6CHAM6hssGuLt3y3t0IiKtUMpQR2riyyrXdBuaGlREJA8qTE18ceT1jkgzG29m881soZl9I8P6q8xsbviYYmaj8xmPiEgpSKiJL5a8JSgzSwC/ob4H4KfNLL0L3RJgnLsfCdwC3JmveERESoXmg4onnzWoscBCd1/s7ruBicCE6AbuPsXdN4aL04ABeYxHRKQkaD6oePKZoPoDKyLLVWFZNp8Dns5jPCIiJUHzQcWTz6GhMw09kPGrgpmdTpCgTs6y/gbgBoBBgwa1VHwiIkVRofugYslnDaoKGBhZHgCsSt/IzI4E7gImuPv6TDty9zvdvdLdK/v06ZOXYEVECiUlQamJL6t8JqgZwAgzG2pm7YArgcejG5jZIOBh4J/c/YM8xiIiUjLUiy+evDXxuXu1mX0ZeBZIAHe7+zwzuzFcfwfwLaAX8Ntw8MRqd6/MV0wiIqUgWoNyJais8jo9qbtPAialld0Ref554PP5jEFEpNSoF188mrpURKTAUiYsVCeJrJSgREQKrEITFsaiBCUiUmApnSRqVIPKRglKRKTANB9UPEpQIiIFpk4S8ShBiYgUWCKhoY7iUIISESmwlPmgVIPKSglKRKTANJJEPEpQIiIFVhFp4lMNKjslKBGRAotUoHD14stKCUpEpMBS54NSgspGCUpEpMA03UY8SlAiIgWWeh+UuplnowQlIlJg6sUXjxKUiEiBqYkvHiUoEZECUw0qHiUoEZECS+3Fp2tQ2ShBiYgUWIVGM49FCUpEpMA0H1Q8SlAiIgWmKd/jUYISESkwUy++WJSgREQKLKEEFYsSlIhIgaXMB6UmvqyUoERECiz1Pih1M89GCUpEpMAq1IsvFiUoEZECUxNfPEpQIiIFlkhoPqg4lKBERApM16DiUYISESmwlCY+1aCyUoISESkwjWYejxKUiEiBRa9BqZNEdkpQIiIFltLEp27mWeU1QZnZeDObb2YLzewbGdabmd0arp9rZsfkMx4RkVIQyU84jqsWlVGbfO3YzBLAb4CzgSpghpk97u7vRjY7DxgRPo4Dbg9/ioi0WmZGhVmyee+nE6cVOaLm+ecLjqZHlw4tvt+8JShgLLDQ3RcDmNlEYAIQTVATgHs9+Powzcx6mFk/d1+dx7hERIoukaigtroGgGnvrixyNM1zzfgj87LffDbx9QdWRJarwrLGboOZ3WBmM81s5tq1a1s8UBGRQhsz8oBih1Dy8lmDsgxl6Q2tcbbB3e8E7gSorKxUY62IlL2bLz+Od5asZfvOPcUOpdm6d26fl/3mM0FVAQMjywOAVU3YRkSk1UkkKhh90P7FDqOk5bOJbwYwwsyGmlk74Erg8bRtHgeuCXvzHQ9s1vUnERGBPNag3L3azL4MPAskgLvdfZ6Z3RiuvwOYBJwPLAQ+Bq7PVzwiIlJe8tnEh7tPIkhC0bI7Is8d+FI+YxARkfKkkSRERKQkKUGJiEhJUoISEZGSpAQlIiIlycptkEIzWwssa+ZuegPrWiCcYir3Yyj3+KH8j6Hc44fyP4Zyjx9a5hgGu3uf9MKyS1AtwcxmuntlseNojnI/hnKPH8r/GMo9fij/Yyj3+CG/x6AmPhERKUlKUCIiUpL21QR1Z7EDaAHlfgzlHj+U/zGUe/xQ/sdQ7vFDHo9hn7wGJSIipW9frUGJiEiJU4ISEZGS1CoSlJndYmZzzWyOmT1nZgdG1v2nmS00s/lmdm6kfIyZvR2uu9XMLCxvb2Z/C8vfMLMhkddca2YLwse1LXwMPzGz98PjeMTMeoTlQ8xsR3hsc8zsjshrSuYYssUfriuXc3CZmc0zs1ozq4yUl8s5yBh/uK4szkFazN8xs5WRz/38fBxPsZjZ+DD+hWb2jWLHE2VmS8PPcY6ZzQzLeprZ8+F5f97M9ots36jzEZu7l/0D6BZ5/q/AHeHzQ4G3gPbAUGARkAjXTQdOIJjV92ngvLD8i5HXXwn8LXzeE1gc/twvfL5fCx7DOUCb8Pn/Af8XPh8CvJPlNSVzDDniL6dzcAgwCngZqIyUl8s5yBZ/2ZyDtOP5DvDVDOUtdjzFehBMQbQIGAa0C4/n0GLGlBbfUqB3WtmPgW+Ez7/RnL/xuI9WUYNy9y2Rxc7UTxs/AZjo7rvcfQnBvFNjzawfQVKb6sGneC9wUeQ194TPHwTODLP+ucDz7r7B3TcCzwPjW/AYnnP36nBxGsHswlmV2jHkiL+czsF77j4/7valdgw54i+bcxBTSx5PsYwFFrr7YnffDUwkiLGURT/De0j9bBt7PmJpFQkKwMx+YGYrgKuAb4XF/YEVkc2qwrL+4fP08pTXhP9wNwO9cuwrHz5L8G2jzlAzm21mr5jZKZE4S/UYovGX6zlIV27nIKqcz8GXLWg2vjvSpNSSx1MsxfxdjsOB58xslpndEJbt7+GM5+HPvmF5U85HLHmdsLAlmdkLwAEZVn3T3R9z928C3zSz/wS+DHyboFqZznOU08TXxNLQMYTbfBOoBu4L160GBrn7ejMbAzxqZoc1EE9ejqGJ8ZfdOcigrM5Bppc1IZa8nYOoXMcD3A7cEu7/FuBnBF9+WvJ4iqXU4kl3kruvMrO+wPNm9n6ObfP2u1I2Ccrdz4q56V+BpwgSVBUwMLJuALAqLB+QoZzIa6rMrA3QHdgQlp+W9pqXW/IYwgvOnwTODKvEuPsuYFf4fJaZLQJGFuMYmhI/ZXYOsrymbM5BFiV1DqLiHo+Z/R54Mi229LibcjzFku0YSoK7rwp/rjGzRwiaJD8ys37uvjpsvlsTbt6U8xE7kLJ/ACMiz78CPBg+P4zUi3eLqb94NwM4nvqLd+eH5V8i9WLq38PnPYElBBeG9wuf92zBYxgPvAv0SSvvE4l5GLCy7n1L6RhyxF825yAS88ukdjIoi3OQI/6yOwfhe/WLPP93guscLXo8xXoQVA4Wh/HXdZI4rJgxRWLrDHSNPJ8S/n3/hNROEj9u6vmIHUuxP4wW+kAfAt4B5gJPAP0j675J0KtkPpEeJEBl+JpFwG3Uj6rRAXiA4ELfdGBY5DWfDcsXAte38DEsJGjHnRM+6v6YPgXMC38B3gQuKMVjyBZ/mZ2Diwm+9e0CPgKeLbNzkDH+cjoHacfzZ+Btgr/rx0lNWC12PMV6AOcDH4SxfrPY8UTiGhb+rr8V/t5/MyzvBbwILAh/9oy8plHnI+5DQx2JiEhJajW9+EREpHVRghIRkZKkBCUiIiVJCUpEREqSEpSIiJQkJah9iJnVhKMTzzOzt8zsZjOrCNdVmtmt4fP2ZvZCuO0VZnZK+Jo5ZtaxuEeRmZlta+T2F5nZofmKpxFxLDWz3hnKbzSzazKUDzGzd/IQR4vst7mfa0vEYWZ3tcS5NbN+ZvZkWtl16SOhm9lEMxvR3PeTvZXNSBLSIna4+1EA4RAmfyW4o/7b7j4TmBludzTQNrLtHcBP3f2Pcd4kHITT3L22ZcNvURcRjEzwbpHjyMjd72h4q5J0EUX8XM0s4e6fb6Hd3Qz8vm6/wG+BC4AtZjbT3a8Ot7sd+H/AP7fQ+0qdYt8UpkfhHsC2tOVhwHqCu7xPI/jH0pfgZsbNBDfc/gvBkDBLgPvC132N4A7xucB3w7IhwHsEf8SzgcENbPd7gpsAnwM6husOAl6g/obY4dneL9OxEYzV9ibBTYR9wvLhwDPALOA14GDgxMgxzQGOA2aF248mGC9sULi8COhEMJrEQ2EcMwjGKoPgTvu7w7LZwISw/Drg4fC9FxDedZ8h7qUE05NMDx8HheXfIZxqAhgTfiZTCe7m32vqD6BLeNxvEtzcOiHG593k/YbrrgnPyVsEN9Wmf67DiYxqAfQGlkbiei3c75vAiZHyTHGcBrwKPEKQ/O4AKiLn/nvAG8DJae85Ptz/W8CLuc5ZhvdcDLQPn59P8Lt5YxjjEZHtKsJjblPsv/HW9ih6AHoU8GSnJaiwbCOwf/gP4MmwLPk8XP4TcGn4/BzgToKkVkGQ1E4N/2hrgeNjbFcNHBVu93fg6vD5G8DF4fMOBIkh434yHIcDV4XPvwXcFj5/kXAoLIJE9FL6MYXL84BuBAMNzyAYFX8wMDVc/1fg5PD5IOC98PkPI/H3IBgZoDNBglpMUEPtACwDBmaIeyn1d+pfEzkH36E+Qc0FxoXPsyWSNoTzohEkgoXhZ5br827Ofg8jGDWgd7iuZ5bP9WUyJ6hOQIfw+QhgZvh8SJY4TgN2EnypShBM81H3O+nA5envSfClYgUwNC3GjOcs7f2GEn5pCZfPIviScxMwJEN8zwNjiv033toeauKTxs6Jc074mB0udyH4B7McWObu02Jst8Td54Tls4AhZtaVYIiqRwDcfSeAmWXbz6tpcdUCfwuf/wV42My6EHyrfyAy9U/7LMc1BTiJIIn+kOCbtxF8y4fgH9Shkf10C2M+B7jQzL4alncgSGAQfGPfHB7HuwQJLzotQZ37Iz9/EV1hZt2BHu7+Slj0Z+C8DPsw4IdmdirBZ9Gf4IsHZP68m7vfMwjGvFwH4O6NHXi1LXCbmR0F1BAMvtuQ6e6+GMDM7ieoLT0Yvv6hDNsfD7zqwRxF0RiznbP3Iq/tB6ytW3D3F8zsAYIxAT9rZne4++2R7dcABxJ8vtJClKD2YWY2jOCPew3BbKyxXgb8r7v/Lm1fQ4DtMbfbFSmqATqSPVFm3E8MTlDj2uThtbQGvAacQpBEHgO+Hu6j7iJ5BXCCu+9ICS7IWJ/ytIkCzew49j7ObH9vnuU5BMcfZzyyqwhqDGPcfY+ZLSX4x0uGOOo+7+bsN+7rq6nvjNUhUv7vBOMFjg7X74yxr/T3q1ve6e41GbbPFmPGc5ZmR1q8uPuPzOxDgprxrWb2jrvXfYHpEL5GWpB68e2jzKwPQTv+bR62UcT0LME3yC7hfvqHHS6auh2QnBW5yswuCrdvb2adGrGfCuDS8PlngMnhPpeY2WXha83MRofbbAW6Rl7/KnA1sMCDzh0bCK47vB6uf46g+Y9wX0dFjvMrYaLCzI7Odow5XBH5OTW6wt03AZvN7OSw6Kos++gOrAmTyOkEiTarFtjvi8DlZtYLwMx6huXpn+tSgmtdUH9+6va7Ovys/4mg2a4hY81saNjz9ApgcgPbTwXGmdnQtBjjnLMPCJobCbcZXPc7SFALXkXqcY4kaCaWFqQEtW/pWNfNnOCC73PAdxuzA3d/juB6zFQze5ugiaVrU7dL80/Av5rZXIImtwMasZ/twGFmNoug+el7YflVwOfMrG5k5glh+UTgaxbMkjvc3ZeG5XVNh5MJal8bw+V/BSotmN31XYKL5RBMpNcWmBt2j76lgWPMpL2ZvUFwfePfM6y/HviNmU0l+7f0+8L4ZhIcc64J5pq9X3efB/wAeCX8bH8ebp/yuQI/Bb5gZlMIrkHV+S1wrZlNI/jnHq19ZzMV+BHB6NhLCDpMZOXua4EbCJp736K+CbjBc+bu24FFZnZQWNSPYLqI/wp/riFIdJjZ/gQ9ZFfHOAZpBI1mLiIlz8xOI+g08skCvufFBE2b/x0puw54OfKFBjP7d2CLu/+hULHtK3QNSkQkA3d/pK4JM2IOsCmtbBNBJxNpYapBiYhISdI1KBERKUlKUCIiUpKUoEREpCQpQYmISElSghIRkZL0/wFO3CeT6a2w3QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "plt.plot(xs, ys)\n", "\n", "decorate(xlabel='Difference between bid and actual price ($)',\n", " ylabel='Probability of winning',\n", " title='Player 2')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Decision Analysis\n", "\n", "In the previous section we computed the probability of winning, given that we have underbid by a particular amount.\n", "\n", "In reality the contestants don't know how much they have underbid by, because they don't know the actual price.\n", "\n", "But they do have a posterior distribution that represents their beliefs about the actual price, and they can use that to estimate their probability of winning with a given bid.\n", "\n", "The following function takes a possible bid, a posterior distribution of actual prices, and a sample of differences for the opponent.\n", "\n", "It loops through the hypothetical prices in the posterior distribution and, for each price,\n", "\n", "1. Computes the difference between the bid and the hypothetical price,\n", "\n", "2. Computes the probability that the player wins, given that difference, and\n", "\n", "3. Adds up the weighted sum of the probabilities, where the weights are the probabilities in the posterior distribution. " ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.570768Z", "iopub.status.busy": "2021-04-16T19:35:44.570139Z", "iopub.status.idle": "2021-04-16T19:35:44.574093Z", "shell.execute_reply": "2021-04-16T19:35:44.573672Z" } }, "outputs": [], "source": [ "def total_prob_win(bid, posterior, sample_diff):\n", " \"\"\"Computes the total probability of winning with a given bid.\n", "\n", " bid: your bid\n", " posterior: Pmf of showcase value\n", " sample_diff: sequence of differences for the opponent\n", " \n", " returns: probability of winning\n", " \"\"\"\n", " total = 0\n", " for price, prob in posterior.items():\n", " diff = bid - price\n", " total += prob * compute_prob_win(diff, sample_diff)\n", " return total" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This loop implements the law of total probability:\n", "\n", "$$P(win) = \\sum_{price} P(price) ~ P(win ~|~ price)$$\n", "\n", "Here's the probability that Player 1 wins, based on a bid of \\\\$25,000 and the posterior distribution `posterior1`." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.628806Z", "iopub.status.busy": "2021-04-16T19:35:44.612939Z", "iopub.status.idle": "2021-04-16T19:35:44.632948Z", "shell.execute_reply": "2021-04-16T19:35:44.633353Z" } }, "outputs": [ { "data": { "text/plain": [ "0.4842210945439812" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_prob_win(25000, posterior1, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can loop through a series of possible bids and compute the probability of winning for each one." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:44.708685Z", "iopub.status.busy": "2021-04-16T19:35:44.672661Z", "iopub.status.idle": "2021-04-16T19:35:46.270662Z", "shell.execute_reply": "2021-04-16T19:35:46.270147Z" } }, "outputs": [], "source": [ "bids = posterior1.qs\n", "\n", "probs = [total_prob_win(bid, posterior1, sample_diff2) \n", " for bid in bids]\n", "\n", "prob_win_series = pd.Series(probs, index=bids)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:46.306239Z", "iopub.status.busy": "2021-04-16T19:35:46.291839Z", "iopub.status.idle": "2021-04-16T19:35:46.422364Z", "shell.execute_reply": "2021-04-16T19:35:46.421956Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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vn2cd955zJkzh5NPPpn7749mCvnSl77EjTfemCn3hS98gZtuugmAb33rW5x66qnMmjWLL3/5ywCsXbuWE044gY9//OPMmTOH9etbT3R9yimnkMQYqYndHJCUAr4PnA/UAwslPWBmy7LKDAN+AMw3s3WSRiUVjys8azxE+m93AtGULaocQOq095GqrQMgmDibpmd+Sbh5BQDpVc8QnPhWgmHjihWyc4k49POPJnbufh/4r07LNDU18eCDDzJ//vxW2/v37899993HkCFD2LZtG/PmzePCCy/kyiuv5JJLLuFTn/oUYRhy11138eyzz/LII4/w6quv8uyzz2JmXHjhhTz++ONMmjSJFStWcNttt/GDH/wgqbd6hCTvXs8FVprZagBJdwEXAcuyyrwXuNfM1gGY2dYE43EFll72B+zgbgA0YCiVb78OHTMis19DRlFx/mdo+tPNhBuWAEb6xQUEZ15VpIid610OHjzI7NmzgagGdeWVV7bab2Z8/vOf5/HHHycIAjZs2MCWLVuora2lurqav//972zZsoVTTjmF6upqHnnkER555BFOOeUUIKqBvfrqq0yaNInJkyczb968Hn1/SSao8UB2PbAeeFObMjOASkmPEc1ceaOZ/bztiSRdDVwNMGnSpESCdV1jB3aRXvJwZj11ykWtklMzSaTe8M44QUG4dhH2hnegoWN6LFbneqvme1Dtuf3222loaGDx4sVUVlZSW1ubeRbpqquu4qc//SmbN2/mIx/5CBAltOuvv56PfrR1jXDt2rUcc8wxib2P9iSZoHJ1em87fW8F8EbgPGAA8LSkZ8zslVYHmd0K3ApQV1fnUwCXgPTzD0A6etZJw8YTTD2t3bJBTS3BuBMJNy4FjPRLD1LxDx/uoUidS14+zXDFsHv3bkaNGkVlZSV//vOfee21lh61F198MTfccAONjY3ccccdALztbW/jS1/6EldccQWDBg1iw4YNXRqaqNCS7CRRD0zMWp8AbMxR5iEz229m24DHgTckGJMrgHBnPemVT2XWK+ouRUHHP0qpWf+YWU6veRbb4625ziXtiiuuYNGiRdTV1XH77bdz/PHHZ/ZVVVVxzjnncNlll5FKpQB461vfynvf+15OO+00Tj75ZC699FL27t3b6XVuuukmJkyYQH19PbNmzeKqqwrTjC+zZCokkiqAV4hqRxuAhcB7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prob_win_series.plot(label='Player 1', color='C1')\n", "\n", "decorate(xlabel='Bid ($)',\n", " ylabel='Probability of winning',\n", " title='Optimal bid: probability of winning')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the bid that maximizes Player 1's chance of winning." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:46.425882Z", "iopub.status.busy": "2021-04-16T19:35:46.425408Z", "iopub.status.idle": "2021-04-16T19:35:46.430103Z", "shell.execute_reply": "2021-04-16T19:35:46.429712Z" } }, "outputs": [ { "data": { "text/plain": [ "21000.0" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_win_series.idxmax()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:46.433880Z", "iopub.status.busy": "2021-04-16T19:35:46.433042Z", "iopub.status.idle": "2021-04-16T19:35:46.437889Z", "shell.execute_reply": "2021-04-16T19:35:46.437462Z" } }, "outputs": [ { "data": { "text/plain": [ "0.6136807192359474" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_win_series.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that your guess was \\\\$23,000.\n", "Using your guess to compute the posterior distribution, the posterior mean is about \\\\$26,000.\n", "But the bid that maximizes your chance of winning is \\\\$21,000." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Do the same analysis for Player 2." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:46.495866Z", "iopub.status.busy": "2021-04-16T19:35:46.460137Z", "iopub.status.idle": "2021-04-16T19:35:47.898014Z", "shell.execute_reply": "2021-04-16T19:35:47.897569Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "bids = posterior2.qs\n", "\n", "probs = [total_prob_win(bid, posterior2, sample_diff1) \n", " for bid in bids]\n", "\n", "prob_win_series = pd.Series(probs, index=bids)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:47.916760Z", "iopub.status.busy": "2021-04-16T19:35:47.915987Z", "iopub.status.idle": "2021-04-16T19:35:48.073976Z", "shell.execute_reply": "2021-04-16T19:35:48.073607Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA4kUlEQVR4nO3deZxcVZ3//9f7Vnens+/7HpKQBAhbCCCyyzosA+MgGHd9IDI6OC4zorLN+P3NOC6jjAswKCCoICqCCAKyqyBJIGRPyE5n7ex70lX38/vj3q5Ud7o71UlX36quz/PxqEfdc9dPdSf9qXPuuefIzHDOOeeKTZB0AM4551xTPEE555wrSp6gnHPOFSVPUM4554qSJyjnnHNFyROUc865ouQJyrUpSSMk7ZSUKsC5b5f0UDPbzpFU08Kxd0m6pYXtJmlsW8TZGpJGxdeuOMzjm41b0jRJzza176F+Hm1J0mckrY//XfQ9zHOcKWlRG8XTbp/dHZnD+k/hOg5JHwO+CBwFbAceA242s615Hr8C+JSZ/QnAzFYB3QoR65EwsxuSjqG9mdnPgZ83sy3785B0DvCQmQ1r6xgkVQLfBU4zs7cP9zxm9ipwdFvEVI7/FkqV16DKmKQvAt8Evgz0BE4DRgLPSapKMraO4nBrRh3IQKAamJd0IK70eIIqU5J6AHcAnzOzP5pZnZmtAK4hSlIfive7XdKvJT0iaYekNyUdH297EBgB/D5uvvnXxk1Wkl6S9A1Jf433+b2kvpJ+Lmm7pOmSRuXE9X1J78bbZko6s5Wf66uSNkpaIWlazvr7JX0jp/xlSWslrZH0iVZe4yVJ/ynpDUnbJD0uqU+8rf7zf1LSKuAFSYGkr0taKWmDpJ9J6tnotJ+IY1kbf3Gov9ZUSa9J2hpv+0ETXx4ulbQs/tzfkhTEx35M0p+b+Qz3x7+XrsDTwJD497NT0hBJu3Ob4ySdLKk2rhE1PlcnSd+L418TL3eSNB6ob5bbKumFJo59oP7zShoa/+xujMtjJW1WpEETbvz7/ZKk2fHv4BFJ1fG2cyTVSPpi/PNeK+njjT97nvv2jf/N1v9b/UZzP1PX9jxBla/3EH2z/W3uSjPbSfQH64Kc1VcCjwJ9gF8Av5NUaWYfBlYBl5tZNzP772audS3wYWAoUVPia8B98fkWALfl7DsdOCHnWo/W/+HJwyCgX3ydjwL3SDqoWUjSxcCX4s84Dnhfo+0flDT7ENf6CPAJYAiQBu5stP1sYCJwEfCx+HUuMIaoCfQHjfY/N47lQuArkupjygD/En+u04HzgRsbHXsVMAU4ieh3lXfCNbNdwCXAmvh32M3M1gAvEX1Zqfch4GEzq2viNF8jqn2fABwPTAW+bmaLgWPifXqZ2XlNHPsycE68fDawLH4HOAt41Zofj+0a4GJgNDCZ6GdcbxBRq8BQ4JPADyX1buY8Le37Q2BXvM9H45drJ56gylc/YKOZpZvYtjbeXm+mmf06/uP0XaLEdlorrnWfmS01s21EyW+pmf0pvvajwIn1O5rZQ2a2yczSZvYdoBOtu/dwi5ntM7OXgT/Q8I9svWvimObGf6Bvz91oZr8ws8mHuM6DOcffAlyjhh1DbjezXWa2B5gGfNfMlsVfAG4GrlXD5r874v3nECXv6+JYZprZ6/HPYwVwNwf+gNf7ppltju//fa/+2CP0AAdq0an4nA82s+804N/NbIOZ1RLVzD+c53VeBs6Ma31nAf8NnBFvOzve3pw7zWyNmW0Gfk+UIOvVxTHVmdlTwE6a/3fU5L7x5/4H4DYz221m84l+Lq6deIIqXxuBfmr6HsngeHu9d+sXzCwEaohqDvlan7O8p4lytlNF3NSyIG622Ur0zTY3WbZkS5ww6q1sJs4h5HymeL/Wanx8JQ3jzN0+pNE1VhJ1UBrYwvmGAEgaL+lJSeskbQf+Pw7+eTR57BF6HJgkaQxRTXObmb3RzL5Nfb68YjCzpUQJ4QTgTOBJYE1c8z1UglqXs7ybhp1zNjX68tV4O3ns25/o95T7881ddgXmCap8vQbsA67OXRnfk7gEeD5n9fCc7QEwDFgTr2qz4fAV3W/6N6IaTm8z6wVsA5TnKXrH8dcbkRNnrrXkfKZ4v9ZqfHwdDZN67s9lDdF9vdz90zRM1I3PVx/3j4GFwDgz6wF8lYN/Hs0dm6+Dfodmthf4FVHt6MM0X3uCpj9fa2J4GXg/UGVmq+PyR4DewKxWnKet1RL9nnJ7Nw5vZl9XAJ6gylTc3HYH8L+SLpZUqaizwqNENaTcP0gnS7o6rm19niixvR5vW090X6UtdCf6g1ALVEi6FejRynPcIakqTnaXEX2exn4FfEzSJEldaHgPLF8fyjn+34Ffm1mmmX1/CfyLpNGSuhHVgh5p9K39FkldJB0DfBx4JF7fnaj7/05JE4DPNHH+L0vqLWk4cFPOsflaD/TVwR03fkZ0X+cKoMnnz2K/BL4uqb+kfsCth9i/sZeBzwKvxOWXgM8Bf27hZ1pw8bV/C9we/24mECVO1048QZWxuFPDV4FvE/0R/BtRE8b5ZrYvZ9fHgQ8AW4i+TV+dc7P8P4n+OG2V9KUjDOkZontUi4maifbSuiaVdXGMa4ie/7nBzBY23snMnia6V/MCsCR+z1L0gOuhukU/CNwfX7Ma+OcW9v1pvP8rwHKiz/W5Rvu8HMfyPPBtM6t/wPZLwAeBHcD/0XTyeRyYSVTb+APwk0PE3kD8M/olsCz+PQ6J1/8FCIE34/tfzfkGMAOYDcwB3ozX5etlokRcn6D+DHTJKSfps0TNzOuIfoe/JPqC5tqBfMJC1xJJtwNjzexDScdSLCS9RPRg671Jx1JocdfwX5TDZ82HpG8Cg8zMe/O1A69BOeeaJOkUoq7rrW0y7DAkTZA0OX4WaypRN/THko6rXJT7U+7OuSZIegD4e+AmM9uRcDhJ6k7UrDcE2AB8h6hJ1bUDb+JzzjlXlLyJzznnXFEquSa+fv362ahRo5IOwznnXBuYOXPmRjPr39S2kktQo0aNYsaMGUmH4Zxzrg1IanYkF2/ic845V5Q8QTnnnCtKnqCcc84VpZK7B+Wcc8Wgrq6Ompoa9u7dm3QoJaG6upphw4ZRWXnQnJfN8gTlnHOHoaamhu7duzNq1CikfAfcL09mxqZNm6ipqWH06NF5H+dNfM45dxj27t1L3759PTnlQRJ9+/ZtdW3TE5TrkMwM27cTC8OkQ3EdmCen/B3Oz8qb+FyHYLu3kFn4ErZ1DbZzI7ZzE6T3ocrOpE64guDoc1Dg38ecKyWeoFzJC9ctIv3K/2F7Dx7T1Or2kJ7+CMHyN0id/iGC3sOaOINzpSmVSnHccceRTqeZOHEiDzzwAF26dKFbt27s3Lmz3eKYNm0aM2bMoLKykqlTp3L33Xe3qjNEc/wrpStZZkZmwfPUPfe9JpMTOvDPO9y4nLon/x/pNx/DMumD93WuBHXu3JlZs2Yxd+5cqqqquOuuuwp+TTMjbNR0Pm3aNBYuXMicOXPYs2cP997bNtOHeYJyJcnS+0n/5T7S038FFv1nUXV3Kt7zUSovvZmqD3yHqg/eSer4yyFIxQeFZOb+kczrrZmN3LnScOaZZ7JkyZIG63bu3Mn555/PSSedxHHHHcfjj0czhdxyyy18//vfz+73ta99jTvvvBOAb33rW5xyyilMnjyZ2267DYAVK1YwceJEbrzxRk466STefbfhRNeXXnopkpDE1KlTqampaZPP5E18ruRYJk36+TsJ17+TXRf0G0XF2Z9GXfs02Lfi+MsIRp5M5vWHCDdE/3kzS19DwyaTGnlSu8btOq59P/t0wc7d6SN3H3KfdDrN008/zcUXX9xgfXV1NY899hg9evRg48aNnHbaaVxxxRV88pOf5Oqrr+amm24iDEMefvhh3njjDZ599lneeecd3njjDcyMK664gldeeYURI0awaNEi7rvvPn70ox81G0ddXR0PPvhgg+R3JAqaoCRdDHwfSAH3mtl/Ndp+DtHkX8vjVb81s38vZEyu9GVmPd4gOaXGnkHq1OtQquk276DXYHTRl0i/+hPCFdOjc7z2EEH/MahLr/YI2bmC2LNnDyeccAIQ1aA++clPNthuZnz1q1/llVdeIQgCVq9ezfr16xk1ahR9+/blrbfeYv369Zx44on07duXZ599lmeffZYTTzwRiGpg77zzDiNGjGDkyJGcdtppLcZz4403ctZZZ3HmmWe2yecrWIKSlAJ+CFwA1ADTJT1hZvMb7fqqmV1WqDhcxxLWzCYz79lsOXX85aQm/90hu7BKouK0D1K3YQm2ewu2fxfp1x6k4rzPeldhV7Lq70E15+c//zm1tbXMnDmTyspKRo0alX0W6VOf+hT3338/69at4xOf+AQQJbSbb76ZT3+6YY1wxYoVdO3atcVY7rjjDmpra7n77kPX+PJVyBrUVGCJmS0DkPQwcCXQOEE5lxfbtZn0n+/PloOhx+aVnOqpqgsVZ3yMuuf+B4Bw9VzCd14lNf6sQoTrykg+zXBJ2LZtGwMGDKCyspIXX3yRlSsPzGxx1VVXceutt1JXV8cvfvELAC666CJuueUWpk2bRrdu3Vi9enVevfHuvfdennnmGZ5//nmCNnyco5AJaiiQeyetBji1if1Ol/Q2sAb4kpnNa7yDpOuB6wFGjBhRgFBdsbNMmvQr92L7dwGgLr2pOOPjra79BIMnkJp4PpkFzwOQnv4owaAJqMeANo/ZuaRNmzaNyy+/nClTpnDCCScwYcKE7LaqqirOPfdcevXqRSoVdSS68MILWbBgAaeffjoA3bp146GHHspub84NN9zAyJEjs8ddffXV3HrrrUccfyETVFN/OaxR+U1gpJntlHQp8Dtg3EEHmd0D3AMwZcqUxudwZSAz6wnC2qVRQQEVZ30KVXc7rHOlTvx7wjXzsW1rIbOf9GsPUnnRF9swWufaR3PPOtWv79evH6+99lqT+4RhyOuvv86jjz7aYP1NN93ETTfddND+c+fObTaOdLowj24Uspt5DTA8pzyMqJaUZWbbzWxnvPwUUCmpXwFjciUo3LCUzLxnsuWKE64kGDD2sM+niioqzvxE9jmpcP1iwtplRxync6Vi/vz5jB07lvPPP59x4w6qExSNQtagpgPjJI0GVgPXAh/M3UHSIGC9mZmkqUQJc1MBY3IlxsxIT38kWw6GHENw7EVHfN6gzwhSY04lszT6dpmZ/yeCs68/4vM6VwomTZrEsmXF/6WsYDUoM0sDnwWeARYAvzKzeZJukHRDvNv7gbnxPag7gWvNzJvwXFa49DVsU3xjN6ig4rRpbdbrLpj0vgPXWfkmtmNjm5zXlQ//c5W/w/lZFfQ5qLjZ7qlG6+7KWf4B8INCxuBKl9XtJfPWY9ly6pgLUbe+bXb+oPcwgsETCdcuAIzMwuepOOUDbXZ+17FVV1ezadMmn3IjD/XzQVVXV7fqOB9JwhWtzJynsD3bAVDnnqSOvfgQR7ReatIFcYKCzDt/IXX85aiqS5tfx3U8w4YNo6amhtra2qRDKQn1M+q2hicoV5Rs+wYy8/+ULadOuhpVdmrz62jIJNRzcNSjL72PcPGrpNrgHpfr+CorK1s1O6xrPR8s1hWl9Ju/gTADQNBvNMGYph6hO3KSSE26IFvOLHzRRzt3rkh4gnJFJ1y7kHDVrGw5dco1BW3jD8ZMRdXdgWjiw3DlzIJdyzmXP09QrqiYGZlZT2TLqTGnEfQfU9BrKlVJcPQ52XJm3nPeO8u5IuAJyhUVW7vgwIgRQYrUCVe2y3VTR58D8WjotuXdA13bnXOJ8QTlioaZkXn799lyaux7Ubc+LRzRdlTdjdTIk7PlcMWMdrmuc655nqBc0bA18w8MORSkSB3X9t3KWxKMmpJdDlfM8GY+5xLmCcoVhYNqT+POPGh23ELT4InZZ6Bs9xbMx+dzLlGeoFxRsDXzCDfGEysHqUSeRVKqgmDEidlyuNKb+ZxLkicolzgzI53bc2/cWe1ee6rXsJlvpjfzOZcgT1AucbZ6boMBYdv73lMuDToadYrmmbI927ANSxKLxbly5wnKJcrMyMz+Q7acGn8m6tIrsXgUpBo283lvPucS4wnKJcrWLWp07ym52lO9Bs18K2diYZhgNM6VL09QLlGZuX/MLqeOek+itad6Gjj+wNBHe3dg6xcnHJFz5ckTlEtMuHFFdqoLUNGMIq4gIPCHdp1LnCcol5jc2lMw+hTUvX+C0TTUoJlv1VtYPLK6c679eIJyiQi3riVc9Va2XCy1p3oaMDbb3Gj7dmLrFiUbkHNlyBOUS0Q475nscjBsMkHv1s20WWiSGvbmWz0nwWicK0+eoFy7s52byCz7W7ZcDD33mhIMm5xdDlfPSzAS58qTJyjX7jLzngOLum4HA8cTDDgq4YiapgFjD0zBsX09tmNjwhE5V148Qbl2ZXt3kFny52w5ddwlCUbTMlVUEQwcny2Ha7wW5Vx78gTl2lVm/p8gUweA+oxAgycmHFHLgqHHZpe9mc+59uUJyrUb27+bcNFL2XLquIuRlFxAeQiGHpNdDtctxDLpBKNxrrx4gnLtJlz0Cla3FwD1GEgw/MRDHFEEug9A3fpFy+l9Pnisc+3IE5RrF5beT2bBn7Ll1LEXoaD4//lJIhiSU4taMz/BaJwrL8X/F8J1COHSv2J7dwCgLr0JRp+acET5a9DMt3pugpE4V148QbmCs0yazNxns+XUMRegVEWCEbWOBk2AIAWAbV2N7d6abEDOlQlPUK7gwhUzsF2bAFBVV4Kx7004otZRZSeCAWOzZe9u7lz7KGiCknSxpEWSlkj6Sgv7nSIpI+n9hYzHtT8zazgo7MTzUGWnBCM6PA3uQ3l3c+faRcESlKQU8EPgEmAScJ2kSc3s903gmcbbXOkLV72FbVsbFSo6kZpwbrIBHSblPA9la+b76ObOtYNC1qCmAkvMbJmZ7QceBq5sYr/PAb8BNhQwFpeAg6ZzP/oc1KlrghEdPvUacmB087o9WP0swM65gilkghoKvJtTronXZUkaClwF3FXAOFxCrGY2tqUmKqSqSB1zQbIBHQHvbu5c+ytkgmpqiABrVP4e8G9m1mJ7iaTrJc2QNKO2trat4nMFZGak334yW04dfXZ2GvVSpSEHWqht7cIEI3GuPBSyr28NMDynPAxY02ifKcDD8XA3/YBLJaXN7He5O5nZPcA9AFOmTGmc5FwRstVzsM2rokKqsqRrT/WCQUdnl8NNK7C6fSXZ4cO5UnHIBCWpTxOrd5hZ3SEOnQ6MkzQaWA1cC3wwdwczG51znfuBJxsnJ1d6Drr3NP4s1LlnghG1DVV3R72GYFvXQJjBapc2qFU559pWPk18bwK1wGLgnXh5uaQ3JZ3c3EFmlgY+S9Q7bwHwKzObJ+kGSTcceeiuWNmaeYQbV0SFoILUMRcmGk9bCgbm1KLWL04wEuc6vnya+P4IPGZmzwBIuhC4GPgV8COg2TFrzOwp4KlG65rsEGFmH8svZFfMzIxM7r2ncWdme791BBo0Hha9CICtW5RwNM51bPnUoKbUJycAM3sWOMvMXge8Ad41YGsXENZ3wQ5SpI7tOLUnoOEEhhuj+1DOucLIJ0FtlvRvkkbGr38FtsQP2IYFjs+VEDMj/dbvsuXU2Peirk3dwixdqu6GesVPS1iI1S5NNiDnOrB8EtQHiXrg/Q54HBgRr0sB1xQsMldywpUzsU0ro0KqktTk4p3O/UgEg3JqUeu8u7lzhXLIe1BmtpFotIem+OxtDohHLM+tPU04D3XpnVxABaSB42Fh/X0o7yjhXKHk0818PPAlYFTu/mZ2XuHCcqUmXPpXbEf0ELUqO5M69qKEIyqcBjWoTSv9eSjnCiSfXnyPEg1FdC/gI2S6g1h6f8Oee8deXLJj7uVDnaL7ULZ1dXQfasM7DQaTdc61jXwSVNrMflzwSFzJChc8j+3ZBoA69ySY2PEr18Gg8WS2rgai56ECT1DOtbl8Okn8XtKNkgZL6lP/KnhkriTYvp1k5h6YKSV1/GWooirBiNqHcoY98vtQzhVGPjWoj8bvX85ZZ8CYtg/HlZrMnKexuj0AqPsAgqPek3BE7SMYOI5oPGSL70PtRZXVSYflXIeSTy++0Yfax5WncOtaMgteyJZTJ16JUoUcf7h4qFM31HtoNJ2IhdiGJX4fyrk21uxfE0nnmdkLkq5uaruZ/bZwYbliZ2Zkpj8CFj2rHQwYSzCy2aEZO6Rg0Hgy8XxX4Tq/D+VcW2vp6+7ZwAvA5U1sM8ATVBkLV71FuHZBXBKpU68jnjalbASDJmRrkP7ArnNtr9kEZWa3xe8fb79wXCmw9H4y03+VLacmnEPQe1iCESVDA47KLtvmd/15KOfaWD4P6nYC/oGDH9T998KF5YpZZs7T2O4tQDRHUuqEKxKOKBnR81Dx/FDxuHw+P5RzbSefbuaPA1cCaWBXzsuVIdu+gcy8nG7lJ16FqrokGFGyggHjssvhBh/5y7m2lE+Xq2FmdnHBI3FFz8xIv/EwhNGAIkG/UQRjy6NbeXM0cBwsfhkA8wTlXJvKpwb1V0nHFTwSV/TCJX8lXDMvLonU1PLrGNFYkHMfKqxdjmXSCUbjXMeST4J6LzBT0iJJsyXNkTS70IG54mI7Nx/cMaLfqOQCKhLq2gd17RsVMvuxzauSDci5DiSfJr6OOamPy5uZkX7tZ1h6LxCNGJE6qcnH48qSBo7Flm0C4ma+/j7IinNt4ZA1KDNbCdQAdUTPP9W/XJkIF7/c4JmnijM+Whbj7eUrGDA2uxyu9/tQzrWVfLqZfw64DVjPgSneDZhcwLhckbAdtaRnHngmO3XMBQ3+IDtQTk8+27AEMyv7e3POtYV8mvhuAo42s02FDsYVFwszpP/6AKT3AaCeg0kd39TAIuVNPQehqq7Y/l3Ra9s61Gtw0mE5V/Ly6STxLrCt0IG44pOZ9Tjh+neiggIqzviYN+01QRLKqVXahncSjMa5jiOfGtQy4CVJfwD21a80s+8WLCqXuMyqtxrO8zT577zXXguCgWMJa94Gogd2U+PPSjgi50pfPglqVfyqil+ug7Nt68j8+f5sORh6LKnJf5dcQCVAA3PuQ3lHCefaRD7zQd3RHoG44mB1+6h76a4DXcq79aXivR/3m/6HoN7DIVUVPQu1axO2azPq6hNPO3ckWpoP6ntm9nlJv6eJbuVmVp4jhHZg2eedtq2NVqQqqTjnBtSpW7KBlQClKgj6j8lOuxGuX0JqzNSEo3KutLVUg3owfv92ewTikpeZ9TjhihnZcsWpHyToMyLBiEqLBo6DOEHZhnfAE5RzR6Sl+aBmxosp4HUz290+IbkkZBY8T2bO09lyavxZpMp8INjWCgYcRSZe9pHNnTty+XQz/xgwS9Jrkv5b0uWSehc4LteOMktfJ50zzl4w9FhSp3wgwYhKk/qNAUX/pWzrGmzfzoQjcq605TPU0UfMbDzRpIU1wA+B2nxOLunieJDZJZK+0sT2K+MBaGdJmiHpva39AO7IhDVzoodxY0H/o6g4+9MolU8HT5dLlZ0I+h5oErUNSxOMxrnSl89QRx8CzgSOAzYCPwBezeO4FFEyu4AosU2X9ISZzc/Z7XngCTMzSZOBXwETWv0p3GEJ1y2i7uW7waIRrNRrKBXn/ZM/jHsENGAcbFwBQLhhKcHw45MNyLkSls/X5O8BS4G7gBfNbEWe554KLDGzZQCSHiaamTeboMwstw2kKz4IbbsJV82i7pX/gzCav0hd+1L5vn9GnbomHFlpCwaOIzP/OcBHlHDuSOXTxNcP+ARQDfw/SW9IevAQhwEMJRomqV5NvK4BSVdJWgj8Ib7OQSRdHzcBzqitzat10bUg885fqHvprgPJqXNPKi+4CXXplWxgHYD650xguGkllt6fYDTOlbZDJihJPYARwEhgFNCTA6Oat3hoE+uaep7qMTObAPw98B9NncjM7jGzKWY2pX///nlc2jUnM/cZ0q/9jPpfhbr3p/KSf0M9BiYbWAeh6m6oZzxQbJjBNi5PNiDnSlg+TXx/znn9wMxq8jx3DTA8pzwMWNPczmb2iqSjJPUzs415XsPlyTJ1ZKY/Smbxy9l16j08qjlVd08wso4nGDCWTPywc7hhCcGgoxOOyLnSlM9QR4c779N0YJyk0cBq4Frgg7k7SBoLLI07SZxENNafT+vRxmznZtKv3E0Y37wHCAaOp+LcG1FV5+QC66A0YCy8E/Uj8nH5nDt8BetLbGZpSZ8FniF62PenZjZP0g3x9ruIuq5/RFIdsAf4gJl5R4k2FK6eS/rVn2L7d2XXBSNP9qkzCijIGTg2rF2KhRkUpBKMyLnSVNCHXczsKeCpRuvuyln+JvDNQsZQriy9n8zsP8RTZsQ5XwEVJ19NMPF9PvhrIXXtg7r0xnZvgfQ+bEsN6jsy6aicKznNdpKQ9M34/R/bLxzXFsJ1i6l78htk5v6RbGeIzj2pvPCLpCZd4MmpwA6ewNCb+Zw7HC314rtUUiVwc3sF446M7d9N+rWHqHv2O9j29dn1waCjqbzs6wQDx7ZwtGtLuT/r7KzEzrlWaamJ749EI0d0lbSdqNu41b+bWY92iM/lwTJ1hItfJTPnKWzvjux6VVSTOvkqgvFne62pnTWuQZmZ/w6ca6WWRjP/MvBlSY+b2ZXtGJPLk4UZwmWvk3n7SWzX5gbbgmHHU3HqtT5pXkLUayiq7IzV7Ym+NOzYAP6smXOtkk838yslDQROiVf9zcx8OIcEWd0+wmWvkVnwQoOmPAB16U3qlGsIRpzo39gTVH8fylbPAeIJDD1BOdcq+QwW+49Ekxa+RNS897+Svmxmvy5wbK4R276BzKKXCJf8Bavb22CbOnUjddwlBOPP8u7jRSIYMJYwTlC24R0Yd0bCETlXWvLpZv514BQz2wAgqT/wJ8ATVDuwvTsIV84kXD69yUnwVFlNMOkCUpPehyqrE4jQNUe5HSW8J59zrZZPggrqk1NsE/lNdOgOk23fQLh2PuGqtwnXLcxOh5FL3QeQmnAuwVGn+2gQRUp9R0KqEjJ12I5abPdWH5DXuVbIJ0H9UdIzwC/j8gdo9PCtOzK2ewth7TJs7SLCtfOxHc3d4hPB0GNITTgXDTnG7zEVOaUqCfqNynYzDzcsITVqSsJROVc68ukk8WVJVwPvJboHdY+ZPVbwyDogM4M927Atq7EtNdF0DLXLohEHWhAMGEswagrByJNRZ+/dX0o0cDzECcrWLQZPUM7lLa+hjszst8BvCxxLh2BmsH8XtmtzVBPaXovt2BC9tqxpMCZes1JVBIOOJhgyiWD4CaibdxUvVcHAcWTi5XD94kRjca7UFHQsvo7CzCC9H/btwvbthH07o2db9m7H9mzH9myD3duw3Vui55Eyda27QKqKoN8o1H8MweCJaMBRKFVZmA/j2pX6HwVBKpobattabO8On97EuTyVVYKy3VuxbWshvT/qpp3eFw3mWbcP6vZC3Z5o/f49sH83tn8P1O3G9u3Ozj57pFRRjXoPRb2GoD7DUP8x0UOdPtp1h6SKKoJ+o7O9+ML1i0mNPDnhqJwrDfk8B3UZ8JRZE13JSkxYM4f06w8V/kIVnVDXPqhbP9RjAOreH3UfgHoOika69s4NZUUDx0GcoGzdYvAE5Vxe8qlBXQt8X9JvgPvMbEGBYyqcik6Hf2xQgTp1hU7dUHW36L1zD9S5J1T3iDovdO0dDS1U2dmTkMsKBo4nM+dpAMJ1ixKOxrnSkU8vvg9J6gFcB9wnyYD7gF+a2Y6Wjy4u6to7mn67olNUy6nslLNcDVWdo+RS2Qkqu0CnLtEzRpVdoKLKk447LH4fyrnDk28vvu1xDaoz8HngKqKBZO80s/8tYHxtKhg4juDCLyQdhiszquxE0HcUYe1SIJp+IzXypISjcq74HXJECElXSHoMeAGoBKaa2SXA8cCXChyfcx2CBo3PLts6727uXD7yqUG9H/gfM3sld6WZ7Zb0icKE5VzH0uA+1Hq/D+VcPvIZU29t4+RUPx28mT1fkKic62DU/yhQ9N/Ntq7B9u5MOCLnil8+CeqCJtZd0taBONeRqbITQb9R2bKPKuHcoTWboCR9RtIcYIKk2Tmv5cDs9gvRuY5BA8dll80TlHOH1NI9qF8ATwP/CXwlZ/0OM9vc9CHOueYEA48mM/cZAELvKOHcIbXUxGdmtgL4J2BHzgtJPnqpc62kAWNz7kOtjsZ1dM4161A1qMuAmYARTbVRz4AxBYzLuQ4neh5qJOHG5UD8PNSIExOOyrni1WyCMrPL4vfR7ReOcx2bBo2HOEHZ2kXgCcq5ZjWboCS1+Ki7mb3Z9uE417EFgyYcuA+1tnSHtXSuPbTUxPedFrYZcF4bx+Jch6cBYyGogDCNbV+H7dzsE1I614yWmvjObc9AnCsHqqgiGDguW3sK1y4gNe6MhKNyrji19BzUefH71U298jm5pIslLZK0RNJXmtg+Lef5qr9KOv7wP4pzpSEYMim7HK6Zl2AkzhW3lpr4ziYaIPbyJrYZ8NuWTiwpBfyQaCSKGmC6pCfMbH7ObsuBs81si6RLgHuAU1sRv3MlR0MmwczfAGBrF2JhiIJ8BnVxrry01MR3W/z+8cM891RgiZktA5D0MHAlkE1QZvbXnP1fB4Yd5rWcKxnqNRRVd8f27sD278I2r0I5wyA55yL5TLfRV9Kdkt6UNFPS9yX1zePcQ4F3c8o18brmfJJo5ArnOjRJUS0qFq6Z38LezpWvfNoVHgZqgX8gmnqjFngkj+Oamn7WmtxROpcoQf1bM9uvlzRD0oza2to8Lu1ccQsGH0hQttYTlHNNySdB9TGz/zCz5fHrG0CvPI6rAYbnlIcBaxrvJGkycC9wpZltaupEZnaPmU0xsyn9+/fP49LOFbdg8ITscli7DKvbm2A0zhWnfBLUi5KulRTEr2uAP+Rx3HRgnKTRkqqAa4EncneQNIKos8WHzcxHz3RlQ116oV5xi3eY8dHNnWtCSyNJ7ODAGHxfAB6KNwXATuC2lk5sZmlJnwWeAVLAT81snqQb4u13AbcCfYEfSQJIm9mUI/pEzpWIYMgkMltXA9F9qGDY5IQjcq64tNSLr/uRntzMngKearTurpzlTwGfOtLrOFeKgiGTyMx/DvCOEs41paXnoLIk9QbGAdX16xpPA++cax0NGAupSsjUYdvX+7BHzjWSTzfzTwGvEDXV3RG/317YsJzr+FRRRTBgbLbsg8c611A+nSRuAk4BVsbj851I1NXcOXeEfNgj55qXT4Laa2Z7ASR1MrOFwNGFDcu58pD7wK6tmYdl0glG41xxySdB1UjqBfwOeE7S4zTxPJNzrvXUayjqGg3MYnV7vbu5czkOmaDM7Coz22pmtwO3AD8B/r7AcTlXFiQRDD/QvTxcNSu5YJwrMnkNoSzpJEn/DEwGasxsf2HDcq58BMNPyC6HNbMxa3JEMOfKTj69+G4FHiB6oLYfcJ+krxc6MOfKhQaOQ1VdALDdW7DNqxKOyLnikE8N6jrgFDO7LZ6C4zRgWmHDcq58KEihYcdly97M51wknwS1gpwHdIFOwNKCRONcmWrQzPfu28kF4lwRaWksvv8lGotvHzBP0nNx+QLgz+0TnnPlIRhyDAQVEKaxrauxHbWou4/c78pbS0MdzYjfZwKP5ax/qWDROFemVNmJYPBEwtVzgKgWlZr0voSjci5ZLQ0W+0D9cjxdxvi4uMjM6godmHPlJhhxQk6CmuUJypW9Qw4WK+kcol58K4im3hgu6aM+WKxzbSuabkOAEa5fgu3diaq7JR2Wc4nJp5PEd4ALzexsMzsLuAj4n8KG5Vz5UeceBP3HxCUjrJmdaDzOJS2fBFVpZovqC/HMt5WFC8m58hUMPz677L35XLnLJ0HNlPQTSefEr/8j6jjhnGtjDRLUmnlY3b4Eo3EuWfkkqBuAecA/E029MT9e55xrY+o5CPUcHBUydYSr3ko2IOcS1GInCUkBMNPMjgW+2z4hOVfeUmNOI/1W9GRHuOx1UkedlnBEziWjxRqUmYXA25JGtFM8zpW9YMxUot58EK5diO3emmg8ziUlnya+wUQjSTwv6Yn6V6EDc65cqWsfgkH1jx0a4fI3Eo3HuaQc8jko4I6CR+GcayAYfSrhuqjzbGbp66SOuTDhiJxrfy2NxVdN1BliLDAH+ImZ+XzUzrWDYORJ8MYvIVOHbV1NuKWGoPewpMNyrl211MT3ADCFKDldQvTArnOuHaiqc8Mu50tfTzAa55LRUoKaZGYfMrO7gfcDZ7ZTTM45IDXm1OxyuPwNLAwTjMa59tdSgsoOCOtNe861Pw2ehKq7A2B7tmHrFiYckXPtq6UEdbyk7fFrBzC5flnS9vYK0LlypVQFwagp2XJmmTfzufLSbIIys5SZ9Yhf3c2sIme5R3sG6Vy5CsYceEg3XDXLhz5yZSWf56CccwlR35Gox6CokN7nz0S5suIJyrkiJonUuDOy5czCFzCzBCNyrv0UNEFJuljSIklLJH2lie0TJL0maZ+kLxUyFudKVTDuvZCqAsC2rsHWLTrEEc51DAVLUJJSwA+JnqGaBFwnaVKj3TYTjZL+7ULF4VypU1UXUkedni1nFryQYDTOtZ9C1qCmAkvMbJmZ7QceBq7M3cHMNpjZdHK6tDvnDpaaeF52OayZje2oTTAa59pHIRPUUODdnHJNvK7VJF0vaYakGbW1/h/TlR/1HEQwpL4BwsgsfDHReJxrD4VMUGpi3WHd3TWze8xsiplN6d+//xGG5VxpSk3IqUUt+Yt3OXcdXiETVA0wPKc8DFhTwOs516Fp6LGox0AArG4v4dK/JhyRc4VVyAQ1HRgnabSkKuBawOeRcu4wSSI14dxsObPwRe9y7jq0giWoePy+zwLPAAuAX5nZPEk3SLoBQNIgSTXAF4CvS6qR5KNUONeM4KjTUWU1ALZ9PbZmXsIROVc4+UxYeNjM7CngqUbr7spZXkfU9Oecy4MqqwnGnkFmwfMAZN7+PRpyDFJTt3ydK20+koRzJSY16X0QpAAIN67AamYnHJFzheEJyrkSo659SB19dracfutxvxflOiRPUM6VoNSxl+QMf7SacMWMhCNyru15gnKuBKlzjwajS2Te/j0WZhKMyLm25wnKuRKVOuZCVNkZiHr0hUt9QkPXsXiCcq5EqVNXgmMuzJYzs5/EMj6spes4PEE5V8JSE89H1d0BsF2bCRe/mnBEzrUdT1DOlTBVdiJ17MXZcmbWE9iebQlG5Fzb8QTlXIkLxp+FukeDKFvdHtJvPJJwRM61DU9QzpU4VVRRcdq0bDlcOZPQH951HYAnKOc6gGDwxAaz7qZf/4VPx+FKnico5zqI1MnvR526AWC7t5CZ9XjCETl3ZDxBOddBqLobqSn/mC1nFrxAuHFFcgE5d4Q8QTnXgQRjTiUYPDEuGem/3O9Nfa5keYJyrgORFHWYSFUCYNvWkn79IR9M1pUkT1DOdTDq3p+Kqddly+HyNwgXvpBgRM4dHk9QznVAqXFnkBp3ZracnvFrwnWLE4zIudbzBOVcB5Wa+gGCfqOjgoWkX7kH270l2aCcawVPUM51UEpVUnH29QfG6tu7g/RLd3mnCVcyPEE514Gpax8qzroeFP1XDzeuIP2n72N1exOOzLlD8wTlXAcXDBpPxSnXZMth7VLSz30P2787waicOzRPUM6VgdSEc6nIeYg33Licuue+h+3blWBUzrXME5RzZSI16X1UTL02W7ZNK6MktWtzglE51zxPUM6VkdSEcxuMfG6bV1H3+28Qvvt2glE51zRPUM6VmdT4s6g4/SOAALD9u6h78Uek//Ywlt6fbHDO5fAE5VwZSo07g8oLv4C69M6uyyx6kbqn/otw/ZIEI3PuAE9QzpWpYNB4Ki//OsHwE7LrbOtq6p75FnV/utNHQneJq0g6AOdcctSpGxXn3EC4+GXS0x+FMA1AuGYe4Zp5BMOOJzXxPDRwPAr8+6xrX56gnCtzkkgdfQ7B4ElkZv+BzLK/AdHo52HN24Q1b6POPQlGnUww6hTUbzSSkg3alQWV2jD8U6ZMsRkzZiQdhnMdVrh1LZm3f0+4cmaT29WpW5Sk+o8h6D8G9R2Bqrq0c5Suo5A008ymNLWtoDUoSRcD3wdSwL1m9l+NtivefimwG/iYmb1ZyJiccy0Leg0mOPt6wi01hItfJVw5E9u7I7vd9u3EVs+B1XPIxOtU1RX1GADd+6NufaPx/zp1R9XdoLobqqiGqs5Q0QlSlV4Dc3kpWIKSlAJ+CFwA1ADTJT1hZvNzdrsEGBe/TgV+HL875xIW9B5GcOp12CnXYOsWES6fTvju29j+g0efsP27sI3LYePyQ59YQZSkggqoqISgIn6lQAFKRe/RS4Ci93g8wey6Jpc5UG5wTTW7qdGOh47fNZAa+x6CYZMLcu5C1qCmAkvMbBmApIeBK4HcBHUl8DOL2hlfl9RL0mAzW1vAuJxzraAghYZMIhgyKZqZd/t6wtplWO2y6H37+mznirxYCOl9GPugiceuSuumgwsGjC3YuQuZoIYC7+aUazi4dtTUPkOBBglK0vXA9QAjRoxo80Cdc/mRBD0Hkeo5CMa+ByBKWru3YDs2Yjtqozmn9u6ImgX37sD27YS6fVC3F0vvhTBziKs4Fylkgmqqrtz4y1E++2Bm9wD3QNRJ4shDc861FUnQtQ/q2gcGjT/k/pZJQ6YuqnVl6iBTh4UhWCZKXmEmqmWZxa8wekFUxg68Z9c1daFovR1qvyPif46CXkMLdu5CJqgaYHhOeRiw5jD2cc51IEpVQKrhnx6/8+OaUsgn76YD4ySNllQFXAs80WifJ4CPKHIasM3vPznnnIMC1qDMLC3ps8AzRN3Mf2pm8yTdEG+/C3iKqIv5EqJu5h8vVDzOOedKS0GfgzKzp4iSUO66u3KWDfinQsbgnHOuNPngWs4554qSJyjnnHNFyROUc865ouQJyjnnXFEqudHMJdUCK4/wNP2AjW0QTqGVSpxQOrGWSpxQOrF6nG2vVGJtizhHmln/pjaUXIJqC5JmNDe8ezEplTihdGItlTihdGL1ONteqcRa6Di9ic8551xR8gTlnHOuKJVrgron6QDyVCpxQunEWipxQunE6nG2vVKJtaBxluU9KOecc8WvXGtQzjnnipwnKOecc0Wp7BKUpIslLZK0RNJX2umaP5W0QdLcnHV9JD0n6Z34vXfOtpvj+BZJuihn/cmS5sTb7pSkeH0nSY/E6/8madRhxjlc0ouSFkiaJ+mmYoxVUrWkNyS9Hcd5RzHGmXONlKS3JD1Z5HGuiK8xS9KMYo1VUi9Jv5a0MP63enqxxSnp6PjnWP/aLunzxRZnzjX+Jf6/NFfSLxX9H0s+VjMrmxfRtB9LgTFAFfA2MKkdrnsWcBIwN2fdfwNfiZe/AnwzXp4Ux9UJGB3Hm4q3vQGcTjS/29PAJfH6G4G74uVrgUcOM87BwEnxcndgcRxPUcUan7NbvFwJ/A04rdjizIn3C8AvgCeL9XcfH78C6NdoXdHFCjwAfCpergJ6FWOcOfGmgHXAyGKMExgKLAc6x+VfAR8rhlgL+oe52F7xD+6ZnPLNwM3tdO1RNExQi4DB8fJgYFFTMRHNp3V6vM/CnPXXAXfn7hMvVxA92a02iPlx4IJijhXoArwJnFqMcRLNEv08cB4HElTRxRkfv4KDE1RRxQr0IPpjqmKOs1FsFwJ/KdY4iRLUu0Cf+DxPxjEnHmu5NfHV/yLq1cTrkjDQ4tmD4/cB8frmYhwaLzde3+AYM0sD24C+RxJcXAU/kah2UnSxxs1ms4ANwHNmVpRxAt8D/hUIc9YVY5wABjwraaak64s01jFALXBf3Gx6r6SuRRhnrmuBX8bLRRenma0Gvg2sAtYSzWz+bDHEWm4JSk2sK7Z+9s3F2FLsbfq5JHUDfgN83sy2t7RrM9cteKxmljGzE4hqKFMlHdvC7onEKekyYIOZzcz3kGau2V6/+zPM7CTgEuCfJJ3Vwr5JxVpB1Fz+YzM7EdhF1PzUnER/ppKqgCuARw+1azPXLHic8b2lK4ma64YAXSV9qKVDmrlum8dabgmqBhieUx4GrEkolvWSBgPE7xvi9c3FWBMvN17f4BhJFUBPYPPhBCWpkig5/dzMflvMsQKY2VbgJeDiIozzDOAKSSuAh4HzJD1UhHECYGZr4vcNwGPA1CKMtQaoiWvMAL8mSljFFme9S4A3zWx9XC7GON8HLDezWjOrA34LvKcYYi23BDUdGCdpdPzN5lrgiYRieQL4aLz8UaL7PfXrr417vYwGxgFvxFXsHZJOi3vGfKTRMfXnej/wgsWNva0Rn/cnwAIz+26xxiqpv6Re8XJnov9gC4stTjO72cyGmdkoon9rL5jZh4otTgBJXSV1r18mugcxt9hiNbN1wLuSjo5XnQ/ML7Y4c1zHgea9xuculjhXAadJ6hJf43xgQVHEerg3/kr1BVxK1DttKfC1drrmL4naduuIvkl8kqj99Xngnfi9T87+X4vjW0TcCyZeP4Xoj8ZS4AccGAmkmqgJYQlRL5oxhxnne4mq3bOBWfHr0mKLFZgMvBXHORe4NV5fVHE2ivkcDnSSKLo4ie7tvB2/5tX/3yjSWE8AZsS//98BvYs0zi7AJqBnzrqiizM+1x1EX/LmAg8S9dBLPFYf6sg551xRKrcmPueccyXCE5Rzzrmi5AnKOedcUfIE5Zxzrih5gnLOOVeUPEE5VyCSMopGsn5b0puS3hOvHyLp180c85KkKc1s+7WkMY3W3d6ofJni0d2dK3WeoJwrnD1mdoKZHU80wOZ/QjRig5m9vzUnknQM0YjRy+LyVfFYhJ+R9BdJx8W7/oFo9IoubfYpnEuIJyjn2kcPYAtEA/EqnhtMUmdJD0uaLekRoHMzx0/jwFP5AD8CrgF+DFxNPAyNRQ82vgRcVogP4Vx7qkg6AOc6sM5xLaeaaCqC85rY5zPAbjObLGky0dQhTTmDhkPmpIGBAHZgnLd6M4Azieb1ca5keYJyrnD2WDTiOpJOB37WxKjrZwF3ApjZbEmzmznXYKJpJupdC/wHcJykIcBXzWxjvG0D0ajUzpU0b+Jzrh2Y2WtAP6B/U5vzOMUeoppY/fn+YmbnAT8lmvztmzn7Vsf7O1fSPEE51w4kTSCa+ntTo02vEN1fIq5dTW7mFAuAsTnnq6+J7SEaNLV7zr7jiQbsdK6keROfc4VTfw8KognbPmpmmWgmgqwfE80OWz+C/BvNnOsPRCOi/ykuf0NSP6JJ5lYDn8jZ91yiXoPOlTQfzdy5EhDPe/Ui0ay3mZz1t5vZ7TnlgcAvzOz89o/SubblTXzOlQAz2wPcBgxttOmlRuURwBfbIybnCs1rUM4554qS16Ccc84VJU9QzjnnipInKOecc0XJE5Rzzrmi5AnKOedcUfr/AfyOj7xyZjbeAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "prob_win_series.plot(label='Player 2', color='C1')\n", "\n", "decorate(xlabel='Bid ($)',\n", " ylabel='Probability of winning',\n", " title='Optimal bid: probability of winning')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.077656Z", "iopub.status.busy": "2021-04-16T19:35:48.077009Z", "iopub.status.idle": "2021-04-16T19:35:48.079401Z", "shell.execute_reply": "2021-04-16T19:35:48.079754Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "29000.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prob_win_series.idxmax()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.083673Z", "iopub.status.busy": "2021-04-16T19:35:48.082935Z", "iopub.status.idle": "2021-04-16T19:35:48.086036Z", "shell.execute_reply": "2021-04-16T19:35:48.085566Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0.5171370053364229" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prob_win_series.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Maximizing Expected Gain\n", "\n", "In the previous section we computed the bid that maximizes your chance of winning.\n", "And if that's your goal, the bid we computed is optimal.\n", "\n", "But winning isn't everything.\n", "Remember that if your bid is off by \\\\$250 or less, you win both showcases.\n", "So it might be a good idea to increase your bid a little: it increases the chance you overbid and lose, but it also increases the chance of winning both showcases.\n", "\n", "Let's see how that works out.\n", "The following function computes how much you will win, on average, given your bid, the actual price, and a sample of errors for your opponent." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.089830Z", "iopub.status.busy": "2021-04-16T19:35:48.089389Z", "iopub.status.idle": "2021-04-16T19:35:48.091415Z", "shell.execute_reply": "2021-04-16T19:35:48.091026Z" } }, "outputs": [], "source": [ "def compute_gain(bid, price, sample_diff):\n", " \"\"\"Compute expected gain given a bid and actual price.\"\"\"\n", " diff = bid - price\n", " prob = compute_prob_win(diff, sample_diff)\n", "\n", " # if you are within 250 dollars, you win both showcases\n", " if -250 <= diff <= 0:\n", " return 2 * price * prob\n", " else:\n", " return price * prob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, if the actual price is \\\\$35000 \n", "and you bid \\\\$30000, \n", "you will win about \\\\$23,600 worth of prizes on average, taking into account your probability of losing, winning one showcase, or winning both." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.095957Z", "iopub.status.busy": "2021-04-16T19:35:48.095151Z", "iopub.status.idle": "2021-04-16T19:35:48.098364Z", "shell.execute_reply": "2021-04-16T19:35:48.097922Z" } }, "outputs": [ { "data": { "text/plain": [ "23594.249201277955" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_gain(30000, 35000, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In reality we don't know the actual price, but we have a posterior distribution that represents what we know about it.\n", "By averaging over the prices and probabilities in the posterior distribution, we can compute the expected gain for a particular bid.\n", "\n", "In this context, \"expected\" means the average over the possible showcase values, weighted by their probabilities." ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.102421Z", "iopub.status.busy": "2021-04-16T19:35:48.101903Z", "iopub.status.idle": "2021-04-16T19:35:48.104181Z", "shell.execute_reply": "2021-04-16T19:35:48.103665Z" } }, "outputs": [], "source": [ "def expected_gain(bid, posterior, sample_diff):\n", " \"\"\"Compute the expected gain of a given bid.\"\"\"\n", " total = 0\n", " for price, prob in posterior.items():\n", " total += prob * compute_gain(bid, price, sample_diff)\n", " return total" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the posterior we computed earlier, based on a guess of \\\\$23,000, the expected gain for a bid of \\\\$21,000 is about \\\\$16,900." ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.137026Z", "iopub.status.busy": "2021-04-16T19:35:48.136553Z", "iopub.status.idle": "2021-04-16T19:35:48.139335Z", "shell.execute_reply": "2021-04-16T19:35:48.138880Z" } }, "outputs": [ { "data": { "text/plain": [ "16923.59933856512" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expected_gain(21000, posterior1, sample_diff2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But can we do any better? \n", "\n", "To find out, we can loop through a range of bids and find the one that maximizes expected gain." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:48.212459Z", "iopub.status.busy": "2021-04-16T19:35:48.176771Z", "iopub.status.idle": "2021-04-16T19:35:49.578032Z", "shell.execute_reply": "2021-04-16T19:35:49.577538Z" } }, "outputs": [], "source": [ "bids = posterior1.qs\n", "\n", "gains = [expected_gain(bid, posterior1, sample_diff2) for bid in bids]\n", "\n", "expected_gain_series = pd.Series(gains, index=bids)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results." ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:49.595312Z", "iopub.status.busy": "2021-04-16T19:35:49.594806Z", "iopub.status.idle": "2021-04-16T19:35:49.758820Z", "shell.execute_reply": "2021-04-16T19:35:49.759161Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA8Q0lEQVR4nO3deXxV1bn4/8+TiSSEjIQ5A7MKIiACVnHCKra9TlWLtdW29qodvh3vva1trXbwezv31l9/tbV1bJ213to61FnUqhgEmYcAgQRCCAFCQoBMz/ePvXJyEpKTk+Fk7yTP+/U6r+y99vSck+HJWnvttURVMcYYY4Imzu8AjDHGmI5YgjLGGBNIlqCMMcYEkiUoY4wxgWQJyhhjTCBZgjLGGBNIlqDMoCEi+SJSKyLxMTj3bSLyl062nSMiZRGO/b2I3BJhu4rIlL6Ic6ARkftE5McxOO8iEdnU1+c1/csSlPGNiHxGRNaISJ2I7BGRO0UksxvHl4jI+S3rqrpTVdNUtSkmAfeQqt6kqj/yO45YCGpyVdU3VHW633GY3rEEZXwhIt8Efgr8J5ABLAQKgBdFJMnP2IwxwWAJyvQ7EUkHfgD8H1V9XlUbVLUEuAovSX3K7XebiDwhIo+KSI2IvC8ip7htfwbygb+7Zr3/EpFC9x99gtvnNRH5sYj8y+3zdxHJEZEHReSQiLwnIoVhcf1GRErdthUisqib7+s7IrLP1eyuCStv04wlIv8pIuUisltEPtfNa2SIyN3u+F3u/cWLSJKIrBKR/+P2ixeRt0Tk+119lm77OBF5UkQqRWS7iHwlbFu8e29b3bErRCRPRJa5XT5wn+8n3P4fc7EcdJ/9rLBzzXHXrhGRR4HkCO81XkR+6T7T7SLy5Xbf38+KyAZ3rm0icmPYsW2aXd335D9EZLWIVLvPodNrm4BQVXvZq19fwBKgEUjoYNv9wMNu+TagAbgCSAT+A9gOJLrtJcD5YccWAtpyXuA1oBiYjFdLWw9sBs4HEoAHgHvDjv8UkOO2fRPYAySHxfKXTt7POe79/AoYBpwNHAamu+33AT8Oe+8VwExgOPCQi3mK2/5JYHWEz+5/gT+4Y0cBy4Eb3baZwAHgROC7wDtAfFefJd4/qiuA7wNJwCRgG3ChO/Y/gTXAdECAU4Acty0Uu1ufC+wFFgDxwHXu+zTMnXsH8HV33StcTD/u5L3e5L5nE4As4KV239+Puu+tuM+8Dpgb9j0pCztXifusxgHZwAbgJr9/F+wV+WU1KOOHkcA+VW3sYFu5295ihao+oaoNeAkgGa85MFr3qupWVa0GngO2qupL7tqPA3NadlTVv6hqlao2quov8f6oduc+xi2qekxVXweewasRtneVi2mtqh7GSxwhqvqQqs7q4DhEZDRwEfA1VT2sqnuBXwNL3bFrgR8DT+EloE9r2/txnX2WpwG5qvpDVa1X1W3AH1vOC3we+J6qblLPB6pa1cln8O/AH1T1XVVtUtX7gWPuOgvxEtP/qFdrfgJ4r5PztHxWv1HVMlU9APyk3Wf1jPveqvvMXwAi1XrvUNXdqrof+DswO8K+JgAS/A7ADEn7gJEiktBBkhrrtrcobVlQ1WbXbDOuG9eqCFs+0sF6WsuKuy/2eXd+BdJpmywjOeASTosdncQ5Dq+2Er5ftArw/sCXi0hLWRxhnxFeDfR24ElV3dLu+M4+SwXGicjBsH3jgTfcch6wtRsxXtfS1OgkhV1nl6qGj1Ad6f2Po+17C19GRC4CbgWm4X0OqXg1vc7sCVuuo3s/R8YHVoMyfngb77/qy8MLRWQ4Xg3h5bDivLDtcXjNPbtdUZ8Nxe/uN30L77/2LFXNBKrxmo+ikeXib5EfFme4csLek9svWqV4n9tIVc10r3RVnRG2z++AfwAXisiZ7Y7v7LMsBbaHnTNTVUeo6kfCrju5GzHe3u5cqar6MN57Hy9h2ZXI77/cxdhR/MOAJ4FfAKPd9+tZov9+mQHAEpTpd6657QfA/yciS0Qk0XVWeBwoA/4ctvupInK5uzH+Nbw/0O+4bRV490v6wgi8+0iVQILrXJDezXP8wHVWWAR8DO/9tPcY8BkROUlEUvFqAFFR1XK8Zqxfiki6iMSJyGQRORtARD4NnAp8BvgKcL+IpIWdorPPcjlwSES+JSIprnPCTBE5zR33J+BHIjJVPLNEJMdta/89+CNwk4gscPsOF5GPisgIvH9MGoGviEiCiFwOzI/wlh8Dvioi48V7/OBbYduS8JpgK4FGV5u6IMqP0gwQlqCML1T1Z8B38P4DPgS8i/ff92JVPRa269+AT+Dd/P80cLm7hwLw38D3XG+x/+hlSP/Eu0e1Ga/Z6SjtmpS6sMfFuBt4EO8G/Mb2O6nqc8D/AK/gdeB4JXy7iFwjIusiXOdavD/O6931ngDGiki+O++1qlqrqg8BRXj3qFp0+Fm6+1T/hndPZjteE+uf8DqWgHe/6jG85HgIuBtIcdtuw0uEB0XkKlUtwrsP9Vt3nWK8hImq1uPVmj/jtn0C+GuE9/pHd83VwEq8GlIj0KSqNXhJ+DF3rk8CT0c4lxmApG1zsDHBISK34fUQ+5TfsQx0g+GzdLWk36tqgd+xmP5hNShjTCC55saPuObA8XjNoU/5HZfpP5agjDFBJXj3Kg/gNfFtwHtWywwR1sRnjDEmkKwGZYwxJpCG3IO6I0eO1MLCQr/DMMYYA6xYsWKfquZ2tG3IJajCwkKKior8DsMYYwwgIp2OJmJNfMYYYwLJEpQxxphAsgRljDEmkIbcPShjjOkLDQ0NlJWVcfToUb9DGRCSk5OZMGECiYmJUR8TswQlIvfgDZi5V1VnurJHaZ1fJxM4qKqz3UChG4BNbts7qnqTO+ZUvAnfUvDG4vqqqqobzfgBvMExq4BPqDcrqzHGxFxZWRkjRoygsLCQtgO0m/ZUlaqqKsrKypg4cWLUx8Wyie8+vNlDQ1T1E6o6W1Vn4w2VHz5Q5NaWbS3JybkTuAGY6l4t57webw6eKXgDYv40Ju/CGGM6cPToUXJyciw5RUFEyMnJ6XZtM2YJSlWXAfs72ubmg7kKeDjSOURkLJCuqm+7Sc4eAC51my/Bm5wNvBGdF4v9pAx4qsqho7Ucbaz3OxRjumR/cqLXk8/Kr3tQi4CKdjN+ThSRlXjD+X9PVd8AxuPND9SizJXhvpYCqGqjiFQDObSdjRUAEbkBrxZGfn535ocz/alZm/n9O4/yXpk3KeqwhCQykkeQlZLOuZMXsCCvw5nQjTGDlF+9+K6mbe2pHMhX1TnAN4CHRCSdjmfHbBk8MNK2toWqd6nqPFWdl5vb4QPLJgD+seG1UHICONZYz97aKjZVbueudx+jZP8uH6MzJnji4+OZPXs2M2fO5Morr6Surg6AtLS0Lo7sW7/97W+ZMmUKIsK+fcfVEXqs3xOUm83zcuDRljJVPaaqVW55BbAVmIZXYwqf8jl8uu8y3BTQ7pwZdNKkaIJvXUUx/7uudab3OGn7o9mszdxT9CSNzU39HZoxgZWSksKqVatYu3YtSUlJ/P73v4/5NVWV5ubmNmVnnHEGL730EgUFfTtVlx81qPOBjaoaaroTkVwRiXfLk/A6Q2xzU1zXiMhCd3/pWrxZQcGbPfM6t3wF8Ira0OwD0v66av7wzqOoqwCfOGoyd13+A357yS1859wbSYr3uqWWVu/hmQ2v+RipMcG1aNEiiouL25TV1tayePFi5s6dy8knn8zf/ub9+bzlllv4zW9+E9rvu9/9LnfccQcAP//5zznttNOYNWsWt956KwAlJSWceOKJfPGLX2Tu3LmUlradbHrOnDnEYozTWHYzfxg4BxgpImXArap6N7CU4ztHnAX8UEQagSa86bJbakNfoLWb+XPuBd60038WkWK8mtPSWL0XEzuNzU3c+c7D1NQfBiAzOZ0b5l9FfFw8w5NSmDqygI/PvICHP3gGgL9veI2542eQlznGz7CNaeOzj38nZue+98r/2+U+jY2NPPfccyxZ0qbjNMnJyTz11FOkp6ezb98+Fi5cyMUXX8z111/P5Zdfzle/+lWam5t55JFHWL58OS+88AJbtmxh+fLlqCoXX3wxy5YtIz8/n02bNnHvvffyu9/9LlZv9TgxS1CqenUn5Z/poOxJvG7nHe1fBMzsoPwocGXvojR+e3z18xRX7QS8Zr2bFn6CzJQRbfY5f+rpLC9dzdb9pTRpE/cUPcn3zruJ+Lh4P0I2JjCOHDnC7NmzAa8Gdf3117fZrqp85zvfYdmyZcTFxbFr1y4qKiooLCwkJyeHlStXUlFRwZw5c8jJyeGFF17ghRdeYM6cOYBXA9uyZQv5+fkUFBSwcOHCfn1/NpKE8U3l4f28uOVfofUrTr6A6bnHP8QXJ3F87rSPc9uLv6WhuZGSA7t4fvObfPSEs/szXGMCp+UeVGcefPBBKisrWbFiBYmJiRQWFoaeRfr85z/Pfffdx549e/jc5z4HeAnt5ptv5sYbb2xznpKSEoYPHx6z99EZS1DGN69ufTd03+mE3Eksmbao033HpY/ikhmLeWLNPwF4ev0rnD3xNNKGpfZLrMZEEk0znB+qq6sZNWoUiYmJvPrqq+zY0TqzxWWXXcb3v/99GhoaeOihhwC48MILueWWW7jmmmtIS0tj165d3RqaqK/ZYLHGF/VNDbyxfUVofcm0M7t8kG/JtDPJyxgTOn556eqYxmjMQHfNNddQVFTEvHnzePDBBznhhBNC25KSkjj33HO56qqriI/3mssvuOACPvnJT3L66adz8sknc8UVV1BTU9Plde644w4mTJhAWVkZs2bN4vOf/3yfxC9DrePbvHnz1CYs9N8b21dwT5F323FkahY//cg3j+ta3pGXtrzNg6v+DsCUnHy+e95NXRxhTGxs2LCBE0880e8weqy5uZm5c+fy+OOPM3Xq1H65ZkefmYisUNV5He1vNSjT71SVl4vfDq2fN2VBVMkJYEH+LOK9JxIortrJnpq+eyjQmKFi/fr1TJkyhcWLF/dbcuoJuwdl+t22/aXsOOg9b50Un8iiwg7/eerQiGHDmTV2Git3bwDg7R2ruGzm+TGJ05jB6qSTTmLbtm1+h9Elq0GZfvdy8Tuh5fl5s7rd0eH0gjmh5bd3rmKoNVOb4LCfvej15LOyBGX6VfXR2jbj7S2e3P3nKk4ZO53UxBTA66q+pWpHF0cY0/eSk5OpqqqyJBWFlvmgkpOTu3WcNfGZfrVse1FoPL3J2XkUZo/v4ojjJcUnMj/vZF7bthzwmvmmjSzsyzCN6VJLr7XKykq/QxkQWmbU7Q5LUKbfNDU38drWd0Pri6ec3uNznV4wO5Sglpeu4erZHw2N2WdMf0hMTOzW7LCm+6yJz/SbTZUl7D9SDUD6sDTmTThuBKuoTc0pIHd4NgB1DUf4oHxTn8RojAkOS1Cm34Q/WDs/bxaJ8T2vwIsIp+fPDq2/vWNlb0IzxgSQJSjTLxqbm1ixa11ofX7eyb0+5+kFs0PLq8s3U3usrtfnNMYEhyUo0y827N1Kbb2XQLJSMpiSk9/rc44ZMZKJWd5N1yZtYv3erb0+pzEmOCxBmX7xXuna0PJpE2Z2Oe5etE4eMy20vK5iS5+c0xgTDJagTMzFonmvxYwxU0LL6yqK7ZkUYwYRS1Am5tZVFFPXcATwBoadlJ3XZ+eelJ1HcsIwAKrqDlJRa2PzGTNYWIIyMfdeWO+90/L6rnkPICEunhNHTQqtr6uw+1DGDBaWoExM1Tc18L4b2BXgtAl917zX4qRR4c18dh/KmMHCEpSJqXV7ijnS4E0xnTs8m8Ks7g9t1JWZYfehNuzdFhpKyRgzsMUsQYnIPSKyV0TWhpXdJiK7RGSVe30kbNvNIlIsIptE5MKw8lNFZI3bdoe49iERGSYij7ryd0WkMFbvxfTc8rKw5r0JJ/dp816L0WkjyUnNBOBo4zG27y/r82sYY/pfLGtQ9wFLOij/tarOdq9nAUTkJGApMMMd8zsRNysd3AncAEx1r5ZzXg8cUNUpwK+Bn8bqjZieqW9qCM3bBH3bey+ciLRr5iuOyXWMMf0rZglKVZcB+6Pc/RLgEVU9pqrbgWJgvoiMBdJV9W31+g8/AFwadsz9bvkJYLHE4t9z02Nr92zhWGM94NVy8jPHxuxaM8e0zgpq96GMGRz8uAf1ZRFZ7ZoAs1zZeKA0bJ8yVzbeLbcvb3OMqjYC1UBORxcUkRtEpEhEimxo/P5TVBabh3M7ctKoyQje+bftL6Ou/kjMrmWM6R/9naDuBCYDs4Fy4JeuvKO/XBqhPNIxxxeq3qWq81R1Xm5ubrcCNj3T0NTIqvKNofXejFwejbRhqRRkjQOgWZvZWLk9ptczxsRevyYoVa1Q1SZVbQb+CMx3m8qA8Kc3JwC7XfmEDsrbHCMiCUAG0TcpmhhbX9G2914sm/dazBhtzXzGDCb9mqDcPaUWlwEtbUBPA0tdz7yJeJ0hlqtqOVAjIgvd/aVrgb+FHXOdW74CeEVtnJvAeC+seW/ehBkxbd5rMWP05NDyWusoYcyAF7MZdUXkYeAcYKSIlAG3AueIyGy8prgS4EYAVV0nIo8B64FG4Euq2vIwyxfwegSmAM+5F8DdwJ9FpBiv5rQ0Vu/FdE9jcxOrwnrvzRsf2+a9FlNyCkiKT6K+qZ69tVXsO3yAkcOzuj7QGBNIMUtQqnp1B8V3R9j/duD2DsqLgOP+wqnqUeDK3sRoYmPj3m0cdmPvZadkMDF7QhdH9I3E+ASmjSxkbcVmADbvK7EEZcwAZiNJmD5X1KZ5L7a999qbOrJ1nqmtVTv77brGmL5nCcr0qabmpjYP58a69157k8MmQiyuKo2wpzEm6CxBmT61eV8Jh47VApCZnN4nM+d2x6TsCaHnoUoPlnO04Vi/Xt8Y03csQZk+Fd68N3f8Sf3avAeQkpjMhIwxACjKNhuXz5gByxKU6TOqyopd60Prp/Vz816L8PtQxVU7fInBGNN7lqBMn9m8r4TqozUApA9LY1puoS9xtL0PZR0ljBmoLEGZPvPuztapNeaOP4k48efHKzxBba0qxZ7fNmZgsgRl+kRjcxPvla0JrS/MP8W3WEYNzyZ9WBoAdQ1HKK+xAYKNGYgsQZk+sa6imNr6OsB7OHfayELfYhGRNr0Hi/fZfShjBiJLUKZPvLvzg9DygvxZ/d57r70pYR0ltth9KGMGJEtQpteONdbz/u7W3nsL8vxr3mthHSWMGfgsQZleW1W+MTRz7tgRuf0ytUZXCrPGkxAXD8Cemkpqj9X5HJExprssQZleC2/eW5h/iu/NewBJ8YkUZI4Lrdu4fMYMPJagTK8crj/Cmj2bQ+vz82b5GE1b1sxnzMBmCcr0yoqytTQ2e1N3TcyawJgRI32OqNWUkQWhZUtQxgw8lqBMr7xT2vpwrp/PPnVkSnZeaHnb/rJQIjXGDAyWoEyPHTxyiI17twEgCPPzTvY5orayUjPISc0EoL6pnrKDe/wNyBjTLZagTI+9WfI+ijeM0AmjJpGZku5zRMebFFaLKjmwy8dIjDHdZQnK9Iiqsmx7UWj9zMK5PkbTuYnZ40PLlqCMGVhilqBE5B4R2Ssia8PKfi4iG0VktYg8JSKZrrxQRI6IyCr3+n3YMaeKyBoRKRaRO8T1YRaRYSLyqCt/V0QKY/VezPHW791K5eH9AKQmpvT7zLnRKsxqTVDbLUEZM6DEsgZ1H7CkXdmLwExVnQVsBm4O27ZVVWe7101h5XcCNwBT3avlnNcDB1R1CvBr4Kd9/xZMZ17f9l5o+UMFc0iKT/Qxms6FPwu1+1AFDU2NPkZjjOmOmCUoVV0G7G9X9oKqtvyFeAeYEOkcIjIWSFfVt9WbM+EB4FK3+RLgfrf8BLBYgvCE6BBw6GgtK8OGNjpr4jwfo4ksNSmFUWk5gDfielm1dZQwZqDw8x7U54DnwtYnishKEXldRBa5svFA+JzdZa6sZVspgEt61UBORxcSkRtEpEhEiiorbeqF3vrXjpWhLtuTs/PIyxzjc0SRhTfz2X0oYwYOXxKUiHwXaAQedEXlQL6qzgG+ATwkIulARzWiltnnIm1rW6h6l6rOU9V5ubm5vQt+iFNVXg/rHHHWpNN8jCY6hVmtzXyWoIwZOBIibRSRCcBSYBEwDjgCrAWeAZ5T1ebuXlBErgM+Bix2zXao6jHgmFteISJbgWl4NabwZsAJwG63XAbkAWUikgBk0K5J0fS9zftK2OMmAByWkBSooY0607YGtTvCnsaYIOm0BiUi9wL3APV4HRCuBr4IvITXUeFNETmrOxcTkSXAt4CLVbUurDxXROLd8iS8zhDbVLUcqBGRhe7+0rXA39xhTwPXueUrgFfU5vaOufCu5afnzyY5IcnHaKLTvqNEfVODj9EYY6IVqQb1S1Vd20H5WuCvIpIE5HewHQAReRg4BxgpImXArXi99oYBL7r+DO+4HntnAT8UkUagCbhJVVtqQ1/A6xGYgnfPquW+1d3An0WkGK/mtLTLd2t6pa7+CEVlrT8SZ08MfvMetHaU2FtbRWNzE7uqK5iYHbF/jjEmADpNUJ0kp/Dt9UBxhO1Xd1B8dyf7Pgk82cm2IuC4h2xU9ShwZaQYTd9atr0oVPvIzxxHYdhDsEFXmDWevbVVgHcfyhKUMcEXsZOEiJzj7kMhIgUi8pKIvNPdpj0z8DU2N/HCln+F1hdPXuBjNN1nHSWMGXi66sX3E7zu2wD/F+95o68C/xPDmEwALS9dzYEj3o9C+rA0FhbM9jegbrKOEsYMPJ028YnIrXj3mL7uOihcCGwDRuPdV/o+8Jp7INcMYqrK85veCK2fP/VDgR05ojPhHSV2VXsdJQbaezBmqOm0BqWqP8Dryv0m3r2mf6nqLa68VFV/aMlpaFi/dyulbgSGpPgkzp003+eIui98RIkm9TpKGGOCrasmvq8D/w3cCPwXgIjMAFbFNiwTJOG1p0UTTyVtWKqP0fScjShhzMASMUGp6luqukBVz1LVja5snap+qX/CM34rPbiHtRVbAG9SwgumnuFzRD03MXxk8/2WoIwJukgP6p4Z6UARSReRYM6xYPrM85tba0/zJsxkVFq2j9H0TkFYT74dB62jhDFBF+lB3Y+LyM+A54EVQCWQDEwBzgUKgG/GPELjm/111by7c3Vofcm0iP+zBJ51lDBmYIn0oO7XRSQLbxihK4GxeGPxbQD+oKpv9k+Ixi//2PAaTeqNWj49dyKTcvK6OCLYwkeUaNImyg7uGfDvyZjBLOJgsap6APije5khpKK2qs24ex894Wwfo+k74SNK7DxYbgnKmADzcz4oE2BPrX0xVHs6IXcSM0dP9TmivpGfOTa0vPNguY+RGGO6YgnKHGfnwXLeLW2993TFyRcwWCYrbpugrKOEMUFmCcoc569rXwwtzxl3IpNzOh20fsDJD+soUVpdQXP3pzQzxvSTiPegWojIh4DC8P1V9YEYxWR8tHlfCR+UbwS8554un/lhnyPqWxnJaWQkj6D6aA31TfXsra1izAibZdmYIOoyQYnIn4HJeKNHNLliBSxBDTKqyhNrXgitn14wmwkZY3yMKDbyM8eyZk8NADsOlluCMiagoqlBzQNOstlqB79VuzeyZV8JAAlx8Vw6Y7G/AcVIXsZY1uzZDMDOA+UsGADT1hszFEVzD2otMPj+jTZtHG2s58FVfw+tnzXxNHKHD9xRIyIJH1GitNp68hkTVNHUoEYC60VkOXCspVBVL45ZVKbfPb3+ZarqDgIwImk4l80439+AYig/s/X/LetqbkxwRZOgbot1EMZfpQf38M/Nb4XWrzrlogE7Ynk0RqXlMCwhiWON9VQfreHgkRoyU0b4HZYxpp0uE5Sqvt4fgRh/qCr3r3gq1N36hNxJnFEwx+eoYitO4sjLGENx1U7Aa+azBGVM8EQazfxN97VGRA6FvWpE5FBXJxaRe0Rkr4isDSvLFpEXRWSL+5oVtu1mESkWkU0icmFY+akissZtu8PN7ouIDBORR135uyJS2MPPYEh7fdt7bN1fCngdI66de8mgeSg3EhtRwpjgizSj7pnu6whVTQ97jVDV9CjOfR+wpF3Zt4GXVXUq8LJbR0ROApYCM9wxvxOReHfMncANwFT3ajnn9cABVZ0C/Br4aRQxmTAHj9Tw+Jp/htY/Mv1sxqYPjS7XeRmWoIwJuqhHkhCRUSKS3/Lqan83Hfz+dsWXAPe75fuBS8PKH1HVY6q6HW+K+fkiMhZIV9W3XTf3B9od03KuJ4DFMhT+9e8jqsrd7z1JXcMRwLsv89ETB8eAsNGwGpQxwddlghKRi0VkC7AdeB0oAZ7r4fVGq2o5gPs6ypWPB0rD9itzZePdcvvyNseoaiNQDeR08h5uEJEiESmqrKzsYeiDy3Ob3mBtxebQ+nVzLx1ScyONzxiN4P0/U1Gzj6ON9T5HZIxpL5oa1I+AhcBmVZ0ILAbeinxIt3VU89EI5ZGOOb5Q9S5Vnaeq83Jzh0YTViTFVTvbjLf3kelnc9LoyT5G1P+GJSQx1o0goSi7qvf4HJExpr1oElSDqlYBcSISp6qvArN7eL0K12yH+7rXlZcB4RPzTAB2u/IJHZS3OUZEEoAMjm9SNO0crj/C7995JDSVxpScfC6bOXifeYokz56HMibQoklQB0UkDVgGPCgivwEae3i9p4Hr3PJ1wN/Cype6nnkT8TpDLHfNgDUistDdX7q23TEt57oCeMWGY4pMVbm36K+hB3JTE1O4ccEnSIiLj3zgIBU+srklKGOCJ5oHdS8BjgJfB67Bq6n8sKuDRORh4BxgpIiUAbcCPwEeE5HrgZ14U8mjqutE5DFgPV7y+5KqtgxM+wW8HoEpePe+Wu5/3Q38WUSK8WpOS6N4L0Pas5uWsWLXutD65+ZdzsjhWRGOGNzCO0qUWoIyJnCieVD3cNjq/Z3uePxxV3eyqcMRSFX1duD2DsqLgJkdlB/FJTjTtX/tWMkTYV3KF085nVMnzPAxIv/lhSeo6j00azNxYlOkGRMU0fTia/+g7iERKRWRp0RkUn8EaXpnzZ7N3PPeX0Pr03Mn8olZF/kYUTBkJKeRmew90lff1EBFTZXPERljwkXTxPcrvI4JD+H1nFuKN7r5JuAevGY8E1Al+3fx/7/9UKhTRF7GGL7yoU+RGB/VXJWDXl7mGA7u8QZG2Xlw95B5UNmYgSCa9owlqvoHVa1R1UOqehfwEVV9FBi6NzAGgD01lfz6zfs55p7xyU7J4OtnXkdqUorPkQVHgXWUMCawoklQzSJylYjEuddVYdus11xAlezfxX+/+kcOHasFYHhiCt8867NkpWb4HFmw5NmIEsYEVjQJ6hrg03jPLFW45U+JSArw5RjGZnpoXUUxP3m9NTklxSfylTM/zbj0UV0cOfS0H/LInlQwJjii6cW3Dfi3Tja/2bfhmN56t3Q1f1r+OI3N3j2n4YkpfG3RdUzJ6XL4xCFpdNjcUIeO1VJ9tIbMlGjGQjbGxJr1qR0kmrWZp9e/wh/eeTSUnLJTMvjOeTdacopARNqMbL7DmvmMCQxLUIPA/rpqfvb63Ty17iXU3RYcN2IU3z3vJmvWi0JBlnWUMCaIrK/xALdy1wbuKXqS2vq6UNn03Il8+fRrBvW07X2p7X2o3RH2NMb0p04TlIh8I9KBqvqrvg/HRGt/XTWPr3med3Z+ECoThEtnLOZjJ55jIyJ0g80NZUwwRapBjXBfpwOn4Q3OCl6HiWWxDMp0rr6pgec3vcEzG5dR39Q6h1F2SgY3LLiK6bkTfYxuYBqXPop4iadJm9hbW8WRhqOkJCb7HZYxQ16nCUpVfwAgIi8Ac1W1xq3fBjzeL9GZkPqmBv5VspJnNr7OvroDbbbNz5vFp+dcbE16PZQUn8i49FxK3ZxQpdV7mDay0N+gjDFR3YPKB8KnG60HCmMSjTlOzbHDvLr1XV4ufif0XFOLvIyxXDPnY1Zr6gP5mWNDCWrHgd2WoIwJgGgS1J+B5SLyFN7IEZcBD8Q0qiGusbmJdXu28PbOVazcvYH6poY220ckDefymR/mrEnz7F5TH8nPHMdbO1YCUHrQZtc1JgiieVD3dhF5Dljkij6rqitjG9bQc7ThGBsrt/FB+SaKyta26ZXXIjslgwunncmiiafaPZI+Ft5RYof15DMmEKLtZp4KHFLVe0UkV0Qmqur2WAY22NUeq2PHwd1srdrJ2opitlWVhkYcby8/cxwXTV/EvAkzh+zst7EWPibf7kMVNDY32WdtjM+6TFAiciswD683371AIvAX4IzYhjY4NDY3UVGzj/KaSnYfqmTXoQpKDuxib23kuYdyUjNZkHcKC/NPYULGaLwZ702sDE9KYWRqFvvqDtDY3MTuQ3vb1KqMMf0vmhrUZcAc4H0AVd0tIiMiHzI01Dc1UHPsMNVHaqg+WsvBo4c4eKSGqroD7Ks7SNXhg+w/Uk2zNkd1vvzMccwYPZnZ405kak6BJaV+lp85NtRDcufBcktQxvgsmgRVr6oqIgogIsNjHFMgbd9fxuNr/kntsToO19dRW193XOeF7kiIiycvYyyFWeOZnlvIiaMmk56c1ocRm+4qyBrH+7vXA1BqD+wa47toEtRjIvIHIFNE/h34HPCn2IYVPI3NTWzYu7XbxwlCTmomY9NzGTvCexVkjWNCxhib1TZg2g4aax0ljPFbNL34fiEiHwYO4d2H+r6qvtjTC4rIdODRsKJJwPeBTODfgUpX/h1VfdYdczNwPdAEfEVV/+nKTwXuA1KAZ4Gvaowm9ElLOv4h2IS4eNKShpOenEZm8ggykkeQmTKCkamZ5AzPIic1g+zUTJLiE2MRkulj+VmtCar04B5U1ZpZjfFRNJ0kfqqq3wJe7KCs21R1EzDbnSce2AU8BXwW+LWq/qLd9U8ClgIzgHHASyIyTVWbgDuBG4B38BLUEuC5nsTVlZzhmXxj0WcYkTSctGGppCWlMiwhyf6ADSLZKRmkJaVSW19HXcMR9tUdIHd4tt9hGTNkRfOU54c7KLuoj66/GNiqqjsi7HMJ8IiqHnNd24uB+SIyFkhX1bddrekB4NI+ius4SfGJnDxmGoXZ4xk5PIvkxGGWnAYZEWnT3XzHAWvmM8ZPnSYoEfmCiKwBThCR1WGv7cCaPrr+UuDhsPUvu2vcIyJZrmw8UBq2T5krG++W25d39F5uEJEiESmqrKzsaBdjACjIbJ0byhKUMf6KVIN6CG/k8r+5ry2vU1X1mt5eWESSgItpHXj2TmAyXvNfOfDLll07OFwjlB9fqHqXqs5T1Xm5ubm9CdsMcoVhkxeWHNjlYyTGmE4TlKpWq2oJ8Btgv6rucE1xDSKyoA+ufRHwvqpWuOtVqGqTqjYDfwTmu/3KgLyw4yYAu135hA7KjemxwuzWH6mSA7uIUZ8bY0wUorkHdScQPoz2YVfWW1cT1rzn7im1uAxY65afBpaKyDARmQhMBZarajlQIyILxbsZdC1ebc+YHhs1PDvUY7O2vo69h/f7HJExQ1c0CUrCu267Gk6vHuARkVS8zhd/DSv+mYisEZHVwLnA19311gGPAeuB54EvuR58AF/AeyarGNhKjHrwmaFDRCjMar2VWbK/LMLexphYiibRbBORr9Baa/oisK03F1XVOiCnXdmnI+x/O3B7B+VFwMzexGJMe4VZ41lbsQWA7Qd2sSD/FJ8jMmZoiqYGdRPwIbznlcqABXjPHhkzKE3Kbr3lud1qUMb4JpqRJPbidQc3ZkiYmN3axLfj4G6atdkmhjTGB13+1onINBF5WUTWuvVZIvK92IdmjD8yU9LJTE4H4FhjPeWH7Nk5Y/wQzb+FfwRuBhoAVHU1VqMyg1x4LWq7PQ9ljC+iSVCpqrq8XVljLIIxJigKs1qfh9q+vzTCnsaYWIkmQe0Tkcm4URpE5Aq8kR6MGbTa1KD2Ww3KGD9E0838S8BdeGPy7QK2A70e6siYIJsYVoMqrS6nsbmJhLh4HyMyZujpsgalqttU9XwgFzhBVc/sYvRxYwa8tGGpoak2GpubbIZdY3wQTS++HBG5A3gDeE1EfiMiOV0dZ8xANzE7/D6UPQ9lTH+L5h7UI3iz3H4cuMItPxrxCGMGgYlZ1pPPGD9Fcw8qW1V/FLb+YxG5NEbxGBMY4TUoG5PPmP4XTQ3qVRFZKiJx7nUV8EysAzPGbwVZ4xE37diuQ3s52ljvc0TGDC3RJKgb8SYvPOZejwDfEJEaETkUy+CM8VNyQhLj0kcBoCg7rJnPmH4VTS++Eaoap6qJ7hXnykaoanp/BGmMX8Kn3rCOEsb0r2h68V3fbj1eRG6NXUjGBMeUnPzQ8uZ9Jf4FYswQFE0T32IReVZExorIycA7wIgYx2VMIEzLLQwtb9m3w6aAN6YfRTPdxidF5BPAGqAOuFpV34p5ZMYEwNgRuaQPS+PQsVpq6+soq64gL3OM32EZMyRE08Q3Ffgq8CRQAnzaTdluzKAnIm1qUZsqt/sXjDFDTDRNfH8HblHVG4GzgS3AezGNypgAmTayMLS8aZ8lKGP6SzQJar6qvgygnl8Cl/bmoiJSIiJrRGSViBS5smwReVFEtrivWWH73ywixSKySUQuDCs/1Z2nWETuEBHpTVzGdOSE3Emh5c2VJXYfyph+0mmCEpH/AlDVQyJyZbvNn+2Da5+rqrNVdZ5b/zbwsqpOBV5264jISXgTJM4AlgC/E5GWYaXvBG4AprrXkj6Iy5g2JmSMZnhiCgCHjtWyp2afzxEZMzREqkGFz5p7c7ttsUgElwD3u+X7aa2lXQI8oqrHVHU7UAzMF5GxQLqqvq3ev7QP0MuanTEdsftQxvgjUoKSTpY7Wu8uBV4QkRUicoMrG62q5QDu6yhXPh4In9K0zJWNd8vty48jIjeISJGIFFVWVvYydDMUTc+dGFq2+1DG9I9I3cy1k+WO1rvrDFXdLSKjgBdFZGOEfTtKhhqh/PhC1bvwJl1k3rx5dgPBdFubjhLuPpTd8jQmtiIlqFPcWHsCpISNuydAcm8uqqq73de9IvIUMB+oEJGxqlrumu/2ut3LgLywwycAu135hA7Kjelz+ZljSU4YxtHGYxw4Us3ew/sZnWbTohkTS5028alqvKqmuzH3Etxyy3piTy8oIsNFZETLMnABsBZ4GrjO7XYd8De3/DSwVESGichEvM4Qy10zYI2ILHS9964NO8aYPhUfF8/UkQWh9c2VJf4FY8wQEU038742GnhTRD4AlgPPqOrzwE+AD4vIFuDDbh1VXQc8BqwHnge+pKpN7lxfAP6E13FiK/Bcf74RM7S0uQ9lHSWMibloJizsU6q6DTilg/IqYHEnx9wO3N5BeREws69jNKYjlqCM6V9+1KCMGZAKs8aTFJ8EwL66A1TVHfQ3IGMGOUtQxkQpIS6eKTmt/XWsFmVMbFmCMqYbwpv51lUU+xiJMYOfJShjumHWmOmh5Q92b6SxuSnC3saY3rAEZUw3FGSNIzslA4DDDUfYYrPsGhMzlqCM6QYRYfa4E0LrK3dv8DEaYwY3S1DGdNOccSeFllfu2mDTbxgTI5agjOmmE0ZNIiXRG+1rX90ByqorfI7ImMHJEpQx3ZQQF8/JY6aF1lfuXu9jNMYMXpagjOmBueNODC2/v8sSlDGxYAnKmB44ecw04t3EzjsO7mZ/XbXPERkz+FiCMqYHUpNSOCHsoV3rzWdM37MEZUwPzQ5r5ltpzXzG9DlLUMb00Nzxrd3NN+3bTl39ER+jMWbwsQRlTA9lp2ZQkDkOgMbmJtbs2exzRMYMLpagjOmF8FrU2zs/8DESYwYfS1DG9ML8vFmh5dXlm2yOKGP6kCUoY3phzIiRnDRqMgCKsmxbkc8RGTN4WIIyppfOmbwgtLxse5FNwWFMH7EEZUwvzRl3IhnJIwA4ePQQH+ze6HNExgwO/Z6gRCRPRF4VkQ0isk5EvurKbxORXSKyyr0+EnbMzSJSLCKbROTCsPJTRWSN23aHiEh/vx9jEuLiWVR4amj9tW3LfYzGmMHDjxpUI/BNVT0RWAh8SURaukL9WlVnu9ezAG7bUmAGsAT4nYgbYwbuBG4AprrXkn58H8aEnD3pNATv/6O1FVuoqK3yOSJjBr5+T1CqWq6q77vlGmADMD7CIZcAj6jqMVXdDhQD80VkLJCuqm+rNyHPA8ClsY3emI6NHJ7FrLGt08FbZwljes/Xe1AiUgjMAd51RV8WkdUico+IZLmy8UBp2GFlrmy8W25f3tF1bhCRIhEpqqys7Mu3YEzIOZNOCy2/WbKChqZGH6MxZuDzLUGJSBrwJPA1VT2E11w3GZgNlAO/bNm1g8M1Qvnxhap3qeo8VZ2Xm5vb29CN6dCssdPJTskA4NCxWt7ftc7niIwZ2HxJUCKSiJecHlTVvwKoaoWqNqlqM/BHYL7bvQzICzt8ArDblU/ooNwYX8RJHGeH1aKe2fg6zdrsY0TGDGx+9OIT4G5gg6r+Kqx8bNhulwFr3fLTwFIRGSYiE/E6QyxX1XKgRkQWunNeC/ytX96EMZ04Z9J8hiUkAVBavYd3bPgjY3rMjxrUGcCngfPadSn/mesyvho4F/g6gKquAx4D1gPPA19S1ZYnIb8A/Amv48RW4Ln+fSvGtJWenMaFU88Mrf917YvUNzX4GJExA5d4HeCGjnnz5mlRkfWwMrFzpOEo337uVxw6VgvA1ad8lAumneFzVMYEk4isUNV5HW2zkSSM6WMpicl87MRzQut/3/CqzRVlTA9YgjImBs6dvIDc4dkA1NbX8dymN3yOyJiBxxKUMTGQEBfPx2d+OLT+wpa3OHjkkI8RGTPwWIIyJkbm580i3824W9/UwCMfPOtzRMYMLJagjIkREeGqWa3DQ75bupp/7VjpY0TGDCyWoIyJoRmjp3BGwdzQ+p/ff5q9tft9jMiYgcMSlDEx9qk5/8aotBwAjjYe4653H6XJJjU0pkuWoIyJseTEYdy04BPEu1litu4v5en1r/oclTHBZwnKmH4wMXsCl808P7T+9w2vsqlyu48RGRN8lqCM6ScXTV/ECbmTAFCUO976CzsO2PjGxnTGEpQx/SRO4vj3+VeSPiwNgLqGI/xy2b3sPrTX58iMCSZLUMb0o+zUDL6x6DOkJqYAUFN/mJ+9fjd7avb5HJkxwWMJyph+VpA1jm8u+gzJCcMAqD5aw89fv5vKw9b93JhwlqCM8cGknDy+dua1JMUnArD/SDU/fOl3rC7f7HNkxgSHJShjfDI9dyJfOePTJMYlAN6gsr9+8z6eXPOCPSdlDJagjPHVjNFT+M+zrycrJSNU9o+Nr/GLZfeyv67ax8iM8Z8lKGN8NnVkAbed/yVmjJoSKttYuY2bn/8Vj69+nsM2l5QZomxGXWMColmb+ceG1/jfdS+jtP5epiam8NETzua8yQtIThzmY4TG9L1IM+pagjImYDZVbueRD56l5MCuNuVJ8UnMHX8ip+fPYcboycTHxfsUoTF9xxJUGEtQZiBQVd4rW8uTa19gb23VcdvTh6Uxc8xUpuTkMyWngAkZoxERHyI1pncGdYISkSXAb4B44E+q+pNI+1uCMgNJY3MTb2wv4pXidyg7VNHpfqmJKYwdMZLctGxGDc8hNy2bjOQ0RiQNJ21YKmlJqQxLSLIkZgJn0CYoEYkHNgMfBsqA94CrVXV9Z8dYgjIDkaqy82A5b+9cxTs7P6D6aE2PzpMUn8Sw+ESSEhKJj4snQeK9r3HxxIkgEkd8XBxxEkccXjITiUMEBAklOG+57bmF45Pf8QnREuRg9MnZHyU7NaPrHTsQKUEl9Coq/80HilV1G4CIPAJcAnSaoIwZiESEgqxxFGSN48qTL6TkwC6Kq3ayZd8OtuzbwaFjtVGdp76pnvqmeqiPccBmSLk8bKT+vjTQE9R4oDRsvQxY0H4nEbkBuAEgPz+/fyIzJkbi4+KZnJPP5Jx8Lpx2JqrKgSOHqKjdR2Xtfipq91NVd4CaY4eprT9Crfta32RZyQwsAz1BddRecFybpareBdwFXhNfrIMypj+JCNmpGWSnZnDiqMmd7qeqHGtqoL6xnvqmBhqbm2hqbgp9bUZpam5CVWlWRVGatRlVUG32zoESflegpTt8R7cK9PhfxYjsF3PgykpJj8l5B3qCKgPywtYnADbBjjEdEBGSE5JITkjyOxRjojLQR5J4D5gqIhNFJAlYCjztc0zGGGP6wICuQalqo4h8GfgnXjfze1R1nc9hGWOM6QMDOkEBqOqzwLN+x2GMMaZvDfQmPmOMMYOUJShjjDGBZAnKGGNMIFmCMsYYE0gDeiy+nhCRSmBHL04xEtjXR+HEStBjDHp8EPwYgx4fWIx9IejxQe9jLFDV3I42DLkE1VsiUtTZwIZBEfQYgx4fBD/GoMcHFmNfCHp8ENsYrYnPGGNMIFmCMsYYE0iWoLrvLr8DiELQYwx6fBD8GIMeH1iMfSHo8UEMY7R7UMYYYwLJalDGGGMCyRKUMcaYQLIE1Q0iskRENolIsYh8O8bXukdE9orI2rCybBF5UUS2uK9ZYdtudnFtEpELw8pPFZE1btsdIiKufJiIPOrK3xWRwm7Glycir4rIBhFZJyJfDWCMySKyXEQ+cDH+IGgxunPEi8hKEflHQOMrcedeJSJFQYtRRDJF5AkR2eh+Hk8PWHzT3WfX8jokIl8LWIxfd78ja0XkYfF+d/yPT1XtFcULbzqPrcAkIAn4ADgphtc7C5gLrA0r+xnwbbf8beCnbvkkF88wYKKLM95tWw6cjjf78HPARa78i8Dv3fJS4NFuxjcWmOuWRwCbXRxBilGANLecCLwLLAxSjO64bwAPAf8I2vfZHVcCjGxXFpgYgfuBz7vlJCAzSPG1izUe2AMUBCVGYDywHUhx648BnwlCfDH7gz7YXu5D/2fY+s3AzTG+ZiFtE9QmYKxbHgts6igWvPmxTnf7bAwrvxr4Q/g+bjkB70lw6UWsfwM+HNQYgVTgfWBBkGLEmwX6ZeA8WhNUYOJzx5VwfIIKRIxAOt4fVwlifB3EewHwVpBixEtQpUC2O/YfLk7f47Mmvui1fBNblLmy/jRaVcsB3NdRXcQ23i23L29zjKo2AtVATk+CctX1OXg1lEDF6JrPVgF7gRdVNWgx/g/wX0BzWFmQ4gNQ4AURWSEiNwQsxklAJXCvayb9k4gMD1B87S0FHnbLgYhRVXcBvwB2AuVAtaq+EIT4LEFFTzooC0of/c5iixRzn7wfEUkDngS+pqqHIu3ayfViGqOqNqnqbLyaynwRmRmUGEXkY8BeVV0Rzf4RrhXr7/MZqjoXuAj4koicFWHf/o4xAa8p/E5VnQMcxmuOCkp8rRcWSQIuBh7vatdOrhern8Ms4BK85rpxwHAR+VQQ4rMEFb0yIC9sfQKwu59jqBCRsQDu694uYitzy+3L2xwjIglABrC/O8GISCJecnpQVf8axBhbqOpB4DVgSYBiPAO4WERKgEeA80TkLwGKDwBV3e2+7gWeAuYHKMYyoMzVjAGewEtYQYkv3EXA+6pa4daDEuP5wHZVrVTVBuCvwIeCEJ8lqOi9B0wVkYnuP6GlwNP9HMPTwHVu+Tq8+z4t5UtdT5mJwFRguauW14jIQteb5tp2x7Sc6wrgFXUNxNFw57sb2KCqvwpojLkikumWU/B+ETcGJUZVvVlVJ6hqId7P0yuq+qmgxAcgIsNFZETLMt69ibVBiVFV9wClIjLdFS0G1gclvnauprV5r/15/YxxJ7BQRFLdeRcDGwIRX09u9A3VF/ARvN5qW4HvxvhaD+O1Bzfg/fdxPV6b7cvAFvc1O2z/77q4NuF6zrjyeXh/ULYCv6V19JBkvKaGYryeN5O6Gd+ZeFX01cAq9/pIwGKcBax0Ma4Fvu/KAxNj2PnPobWTRGDiw7vH84F7rWv5uQ9YjLOBIvd9/l8gK0jxuXOkAlVARlhZYGIEfoD3z9ta4M94PfR8j8+GOjLGGBNI1sRnjDEmkCxBGWOMCSRLUMYYYwLJEpQxxphAsgRljDEmkCxBGeMTEWkSb3TrD0TkfRH5kCsfJyJPdHLMayIyr5NtT4jIpHZlt7Vb/5i4Ud2NCTpLUMb454iqzlbVU/AG4Pxv8EZuUNUrunMiEZmBN6L0Nrd+mRuD8Asi8paInOx2fQZv9IrUPnsXxsSIJShjgiEdOADe4Lvi5gETkRQReUREVovIo0BKJ8dfQ+tT+wC/A64C7gQuxw1To96Dj68BH4vFmzCmLyX4HYAxQ1iKq+Uk401VcF4H+3wBqFPVWSIyC2/KkI6cQdthdBqB0QDaOvZbiyJgEd68P8YEliUoY/xzRL2R1hGR04EHOhht/SzgDgBVXS0iqzs511i8aSdaLAV+BJwsIuOA76jqPrdtL96o1cYEmjXxGRMAqvo2MBLI7WhzFKc4glcTaznfW6p6HnAP3uRwPw3bN9ntb0ygWYIyJgBE5AS86cCr2m1ahnd/CVe7mtXJKTYAU8LO11ITO4I3iOqIsH2n4Q3oaUygWROfMf5puQcF3oRu16lqkzdTQcideLPFtowav7yTcz2DNyL6S279xyIyEm8Sul3A58L2PRev16AxgWajmRszCLj5rl7Fm/22Kaz8NlW9LWx9NPCQqi7u/yiN6R5r4jNmEFDVI8CtwPh2m15rt54PfLM/YjKmt6wGZYwxJpCsBmWMMSaQLEEZY4wJJEtQxhhjAskSlDHGmECyBGWMMSaQ/h+zhXrrnh2U6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "expected_gain_series.plot(label='Player 1', color='C2')\n", "\n", "decorate(xlabel='Bid ($)',\n", " ylabel='Expected gain ($)',\n", " title='Optimal bid: expected gain')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the optimal bid." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:49.763145Z", "iopub.status.busy": "2021-04-16T19:35:49.762475Z", "iopub.status.idle": "2021-04-16T19:35:49.764913Z", "shell.execute_reply": "2021-04-16T19:35:49.765309Z" } }, "outputs": [ { "data": { "text/plain": [ "22000.0" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expected_gain_series.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With that bid, the expected gain is about \\\\$17,400." ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:49.768943Z", "iopub.status.busy": "2021-04-16T19:35:49.768405Z", "iopub.status.idle": "2021-04-16T19:35:49.771158Z", "shell.execute_reply": "2021-04-16T19:35:49.770667Z" } }, "outputs": [ { "data": { "text/plain": [ "17384.899584430797" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expected_gain_series.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that your initial guess was \\\\$23,000.\n", "The bid that maximizes the chance of winning is \\\\$21,000.\n", "And the bid that maximizes your expected gain is \\\\$22,000." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Do the same analysis for Player 2." ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:49.833753Z", "iopub.status.busy": "2021-04-16T19:35:49.808430Z", "iopub.status.idle": "2021-04-16T19:35:51.251753Z", "shell.execute_reply": "2021-04-16T19:35:51.252169Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "bids = posterior2.qs\n", "\n", "gains = [expected_gain(bid, posterior2, sample_diff1) for bid in bids]\n", "\n", "expected_gain_series = pd.Series(gains, index=bids)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.336820Z", "iopub.status.busy": "2021-04-16T19:35:51.336306Z", "iopub.status.idle": "2021-04-16T19:35:51.527770Z", "shell.execute_reply": "2021-04-16T19:35:51.528265Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "expected_gain_series.plot(label='Player 2', color='C2')\n", "\n", "decorate(xlabel='Bid ($)',\n", " ylabel='Expected gain ($)',\n", " title='Optimal bid: expected gain')" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.532762Z", "iopub.status.busy": "2021-04-16T19:35:51.532102Z", "iopub.status.idle": "2021-04-16T19:35:51.535667Z", "shell.execute_reply": "2021-04-16T19:35:51.535248Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "30000.0" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "expected_gain_series.idxmax()" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.555414Z", "iopub.status.busy": "2021-04-16T19:35:51.554109Z", "iopub.status.idle": "2021-04-16T19:35:51.557359Z", "shell.execute_reply": "2021-04-16T19:35:51.554778Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "19404.164188501607" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "expected_gain_series.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "There's a lot going on this this chapter, so let's review the steps:\n", "\n", "1. First we used KDE and data from past shows to estimate prior distributions for the values of the showcases.\n", "\n", "2. Then we used bids from past shows to model the distribution of errors as a normal distribution.\n", "\n", "3. We did a Bayesian update using the distribution of errors to compute the likelihood of the data.\n", "\n", "4. We used the posterior distribution for the value of the showcase to compute the probability of winning for each possible bid, and identified the bid that maximizes the chance of winning.\n", "\n", "5. Finally, we used probability of winning to compute the expected gain for each possible bid, and identified the bid that maximizes expected gain.\n", "\n", "Incidentally, this example demonstrates the hazard of using the word \"optimal\" without specifying what you are optimizing.\n", "The bid that maximizes the chance of winning is not generally the same as the bid that maximizes expected gain." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Discussion\n", "\n", "When people discuss the pros and cons of Bayesian estimation, as contrasted with classical methods sometimes called \"frequentist\", they often claim that in many cases Bayesian methods and frequentist methods produce the same results.\n", "\n", "In my opinion, this claim is mistaken because Bayesian and frequentist method produce different *kinds* of results:\n", "\n", "* The result of frequentist methods is usually a single value that is considered to be the best estimate (by one of several criteria) or an interval that quantifies the precision of the estimate.\n", "\n", "* The result of Bayesian methods is a posterior distribution that represents all possible outcomes and their probabilities." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Granted, you can use the posterior distribution to choose a \"best\" estimate or compute an interval.\n", "And in that case the result might be the same as the frequentist estimate.\n", "\n", "But doing so discards useful information and, in my opinion, eliminates the primary benefit of Bayesian methods: the posterior distribution is more useful than a single estimate, or even an interval." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example in this chapter demonstrates the point.\n", "Using the entire posterior distribution, we can compute the bid that maximizes the probability of winning, or the bid that maximizes expected gain, even if the rules for computing the gain are complicated (and nonlinear).\n", "\n", "With a single estimate or an interval, we can't do that, even if they are \"optimal\" in some sense.\n", "In general, frequentist estimation provides little guidance for decision-making.\n", "\n", "If you hear someone say that Bayesian and frequentist methods produce the same results, you can be confident that they don't understand Bayesian methods." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** When I worked in Cambridge, Massachusetts, I usually took the subway to South Station and then a commuter train home to Needham. Because the subway was unpredictable, I left the office early enough that I could wait up to 15 minutes and still catch the commuter train.\n", "\n", "When I got to the subway stop, there were usually about 10 people waiting on the platform. If there were fewer than that, I figured I just missed a train, so I expected to wait a little longer than usual. And if there there more than that, I expected another train soon.\n", "\n", "But if there were a *lot* more than 10 passengers waiting, I inferred that something was wrong, and I expected a long wait. In that case, I might leave and take a taxi.\n", "\n", "We can use Bayesian decision analysis to quantify the analysis I did intuitively. Given the number of passengers on the platform, how long should we expect to wait? And when should we give up and take a taxi?\n", "\n", "My analysis of this problem is in `redline.ipynb`, which is in the repository for this book. [Click here to run this notebook on Colab](https://colab.research.google.com/github/AllenDowney/ThinkBayes2/blob/master/notebooks/redline.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** This exercise is inspired by a true story. In 2001 I created [Green Tea Press](https://greenteapress.com) to publish my books, starting with *Think Python*. I ordered 100 copies from a short run printer and made the book available for sale through a distributor. \n", "\n", "After the first week, the distributor reported that 12 copies were sold. Based that report, I thought I would run out of copies in about 8 weeks, so I got ready to order more. My printer offered me a discount if I ordered more than 1000 copies, so I went a little crazy and ordered 2000. \n", "\n", "A few days later, my mother called to tell me that her *copies* of the book had arrived. Surprised, I asked how many. She said ten.\n", "\n", "It turned out I had sold only two books to non-relatives. And it took a lot longer than I expected to sell 2000 copies." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The details of this story are unique, but the general problem is something almost every retailer has to figure out. Based on past sales, how do you predict future sales? And based on those predictions, how do you decide how much to order and when?\n", "\n", "Often the cost of a bad decision is complicated. If you place a lot of small orders rather than one big one, your costs are likely to be higher. If you run out of inventory, you might lose customers. And if you order too much, you have to pay the various costs of holding inventory.\n", "\n", "So, let's solve a version of the problem I faced. It will take some work to set up the problem; the details are in the notebook for this chapter." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Suppose you start selling books online. During the first week you sell 10 copies (and let's assume that none of the customers are your mother). During the second week you sell 9 copies.\n", "\n", "Assuming that the arrival of orders is a Poisson process, we can think of the weekly orders as samples from a Poisson distribution with an unknown rate.\n", "We can use orders from past weeks to estimate the parameter of this distribution, generate a predictive distribution for future weeks, and compute the order size that maximized expected profit.\n", "\n", "* Suppose the cost of printing the book is \\\\$5 per copy, \n", "\n", "* But if you order 100 or more, it's \\\\$4.50 per copy.\n", "\n", "* For every book you sell, you get \\\\$10.\n", "\n", "* But if you run out of books before the end of 8 weeks, you lose \\\\$50 in future sales for every week you are out of stock.\n", "\n", "* If you have books left over at the end of 8 weeks, you lose \\\\$2 in inventory costs per extra book.\n", "\n", "For example, suppose you get orders for 10 books per week, every week. If you order 60 books, \n", "\n", "* The total cost is \\\\$300. \n", "\n", "* You sell all 60 books, so you make \\\\$600. \n", "\n", "* But the book is out of stock for two weeks, so you lose \\\\$100 in future sales.\n", "\n", "In total, your profit is \\\\$200.\n", "\n", "If you order 100 books,\n", "\n", "* The total cost is \\\\$450.\n", "\n", "* You sell 80 books, so you make \\\\$800.\n", "\n", "* But you have 20 books left over at the end, so you lose \\\\$40.\n", "\n", "In total, your profit is \\\\$310.\n", "\n", "Combining these costs with your predictive distribution, how many books should you order to maximize your expected profit?" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "To get you started, the following functions compute profits and costs according to the specification of the problem:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.562554Z", "iopub.status.busy": "2021-04-16T19:35:51.561855Z", "iopub.status.idle": "2021-04-16T19:35:51.565805Z", "shell.execute_reply": "2021-04-16T19:35:51.566720Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def print_cost(printed):\n", " \"\"\"Compute print costs.\n", " \n", " printed: integer number printed\n", " \"\"\"\n", " if printed < 100:\n", " return printed * 5\n", " else:\n", " return printed * 4.5" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.572879Z", "iopub.status.busy": "2021-04-16T19:35:51.572142Z", "iopub.status.idle": "2021-04-16T19:35:51.582185Z", "shell.execute_reply": "2021-04-16T19:35:51.582596Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def total_income(printed, orders):\n", " \"\"\"Compute income.\n", " \n", " printed: integer number printed\n", " orders: sequence of integer number of books ordered\n", " \"\"\"\n", " sold = min(printed, np.sum(orders))\n", " return sold * 10" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.587177Z", "iopub.status.busy": "2021-04-16T19:35:51.586735Z", "iopub.status.idle": "2021-04-16T19:35:51.588667Z", "shell.execute_reply": "2021-04-16T19:35:51.589058Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def inventory_cost(printed, orders):\n", " \"\"\"Compute inventory costs.\n", " \n", " printed: integer number printed\n", " orders: sequence of integer number of books ordered\n", " \"\"\"\n", " excess = printed - np.sum(orders)\n", " if excess > 0:\n", " return excess * 2\n", " else:\n", " return 0" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.594274Z", "iopub.status.busy": "2021-04-16T19:35:51.593740Z", "iopub.status.idle": "2021-04-16T19:35:51.597400Z", "shell.execute_reply": "2021-04-16T19:35:51.596976Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def out_of_stock_cost(printed, orders):\n", " \"\"\"Compute out of stock costs.\n", " \n", " printed: integer number printed\n", " orders: sequence of integer number of books ordered\n", " \"\"\"\n", " weeks = len(orders)\n", " total_orders = np.cumsum(orders)\n", " for i, total in enumerate(total_orders):\n", " if total > printed:\n", " return (weeks-i) * 50\n", " return 0" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.601347Z", "iopub.status.busy": "2021-04-16T19:35:51.600787Z", "iopub.status.idle": "2021-04-16T19:35:51.604170Z", "shell.execute_reply": "2021-04-16T19:35:51.604606Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def compute_profit(printed, orders):\n", " \"\"\"Compute profit.\n", " \n", " printed: integer number printed\n", " orders: sequence of integer number of books ordered\n", " \"\"\"\n", " return (total_income(printed, orders) -\n", " print_cost(printed)-\n", " out_of_stock_cost(printed, orders) -\n", " inventory_cost(printed, orders))" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "To test these functions, suppose we get exactly 10 orders per week for eight weeks:" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.611079Z", "iopub.status.busy": "2021-04-16T19:35:51.610241Z", "iopub.status.idle": "2021-04-16T19:35:51.616176Z", "shell.execute_reply": "2021-04-16T19:35:51.616554Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "[10, 10, 10, 10, 10, 10, 10, 10]" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "always_10 = [10] * 8\n", "always_10" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "If you print 60 books, your net profit is \\\\$200, as in the example." ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.620756Z", "iopub.status.busy": "2021-04-16T19:35:51.620229Z", "iopub.status.idle": "2021-04-16T19:35:51.622764Z", "shell.execute_reply": "2021-04-16T19:35:51.623275Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "200" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_profit(60, always_10)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "If you print 100 books, your net profit is \\\\$310." ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.628975Z", "iopub.status.busy": "2021-04-16T19:35:51.628140Z", "iopub.status.idle": "2021-04-16T19:35:51.631017Z", "shell.execute_reply": "2021-04-16T19:35:51.631678Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "310.0" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_profit(100, always_10)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Of course, in the context of the problem you don't know how many books will be ordered in any given week. You don't even know the average rate of orders. However, given the data and some assumptions about the prior, you can compute the distribution of the rate of orders.\n", "\n", "You'll have a chance to do that, but to demonstrate the decision analysis part of the problem, I'll start with the arbitrary assumption that order rates come from a gamma distribution with mean 9.\n", "\n", "Here's a `Pmf` that represents this distribution." ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.638252Z", "iopub.status.busy": "2021-04-16T19:35:51.637600Z", "iopub.status.idle": "2021-04-16T19:35:51.640800Z", "shell.execute_reply": "2021-04-16T19:35:51.641451Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "8.998788382371902" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import gamma\n", "\n", "alpha = 9\n", "qs = np.linspace(0, 25, 101)\n", "ps = gamma.pdf(qs, alpha)\n", "pmf = Pmf(ps, qs)\n", "pmf.normalize()\n", "pmf.mean()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.658650Z", "iopub.status.busy": "2021-04-16T19:35:51.658221Z", "iopub.status.idle": "2021-04-16T19:35:51.986329Z", "shell.execute_reply": "2021-04-16T19:35:51.985935Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pmf.plot(color='C1')\n", "decorate(xlabel=r'Book ordering rate ($\\lambda$)',\n", " ylabel='PMF')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now, we *could* generate a predictive distribution for the number of books ordered in a given week, but in this example we have to deal with a complicated cost function. In particular, `out_of_stock_cost` depends on the sequence of orders.\n", "\n", "So, rather than generate a predictive distribution, I suggest we run simulations. I'll demonstrate the steps.\n", "\n", "First, from our hypothetical distribution of rates, we can draw a random sample of 1000 values. " ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.990537Z", "iopub.status.busy": "2021-04-16T19:35:51.989846Z", "iopub.status.idle": "2021-04-16T19:35:51.993533Z", "shell.execute_reply": "2021-04-16T19:35:51.993896Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "8.906" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rates = pmf.choice(1000)\n", "np.mean(rates)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "For each possible rate, we can generate a sequence of 8 orders." ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:51.998261Z", "iopub.status.busy": "2021-04-16T19:35:51.997702Z", "iopub.status.idle": "2021-04-16T19:35:52.002977Z", "shell.execute_reply": "2021-04-16T19:35:52.003508Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "array([[ 8, 2, 7, 8, 9, 9, 11, 12],\n", " [ 5, 3, 5, 4, 3, 9, 4, 4],\n", " [11, 11, 8, 3, 8, 7, 8, 5],\n", " [ 6, 5, 9, 6, 9, 9, 12, 6],\n", " [ 4, 4, 10, 5, 1, 6, 12, 6]])" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(17)\n", "order_array = np.random.poisson(rates, size=(8, 1000)).transpose()\n", "order_array[:5, :]" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Each row of this array is a hypothetical sequence of orders based on a different hypothetical order rate.\n", "\n", "Now, if you tell me how many books you printed, I can compute your expected profits, averaged over these 1000 possible sequences." ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:52.007370Z", "iopub.status.busy": "2021-04-16T19:35:52.006916Z", "iopub.status.idle": "2021-04-16T19:35:52.008586Z", "shell.execute_reply": "2021-04-16T19:35:52.008935Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def compute_expected_profits(printed, order_array):\n", " \"\"\"Compute profits averaged over a sample of orders.\n", " \n", " printed: number printed\n", " order_array: one row per sample, one column per week\n", " \"\"\"\n", " profits = [compute_profit(printed, orders)\n", " for orders in order_array]\n", " return np.mean(profits)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "For example, here are the expected profits if you order 70, 80, or 90 books." ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:52.016373Z", "iopub.status.busy": "2021-04-16T19:35:52.015963Z", "iopub.status.idle": "2021-04-16T19:35:52.035494Z", "shell.execute_reply": "2021-04-16T19:35:52.035057Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "182.96" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_expected_profits(70, order_array)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:52.073335Z", "iopub.status.busy": "2021-04-16T19:35:52.072683Z", "iopub.status.idle": "2021-04-16T19:35:52.076415Z", "shell.execute_reply": "2021-04-16T19:35:52.076779Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "181.994" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_expected_profits(80, order_array)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:52.098735Z", "iopub.status.busy": "2021-04-16T19:35:52.098012Z", "iopub.status.idle": "2021-04-16T19:35:52.100689Z", "shell.execute_reply": "2021-04-16T19:35:52.100277Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "157.608" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compute_expected_profits(90, order_array)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now, let's sweep through a range of values and compute expected profits as a function of the number of books you print." ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:52.151466Z", "iopub.status.busy": "2021-04-16T19:35:52.110313Z", "iopub.status.idle": "2021-04-16T19:35:53.044324Z", "shell.execute_reply": "2021-04-16T19:35:53.043782Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "printed_array = np.arange(70, 110)\n", "t = [compute_expected_profits(printed, order_array)\n", " for printed in printed_array]\n", "expected_profits = pd.Series(t, printed_array)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.067959Z", "iopub.status.busy": "2021-04-16T19:35:53.061574Z", "iopub.status.idle": "2021-04-16T19:35:53.181791Z", "shell.execute_reply": "2021-04-16T19:35:53.181406Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "expected_profits.plot(label='')\n", "\n", "decorate(xlabel='Number of books printed',\n", " ylabel='Expected profit ($)')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here is the optimal order and the expected profit." ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.185628Z", "iopub.status.busy": "2021-04-16T19:35:53.185129Z", "iopub.status.idle": "2021-04-16T19:35:53.189282Z", "shell.execute_reply": "2021-04-16T19:35:53.189626Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(74, 186.328)" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expected_profits.idxmax(), expected_profits.max()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now it's your turn. Choose a prior that you think is reasonable, update it with the data you are given, and then use the posterior distribution to do the analysis I just demonstrated." ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.194510Z", "iopub.status.busy": "2021-04-16T19:35:53.194020Z", "iopub.status.idle": "2021-04-16T19:35:53.198181Z", "shell.execute_reply": "2021-04-16T19:35:53.198701Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "101" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# For a prior I chose a log-uniform distribution; \n", "# that is, a distribution that is uniform in log-space\n", "# from 1 to 100 books per week.\n", "\n", "qs = np.logspace(0, 2, 101)\n", "prior = Pmf(1, qs)\n", "prior.normalize()" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.216932Z", "iopub.status.busy": "2021-04-16T19:35:53.213964Z", "iopub.status.idle": "2021-04-16T19:35:53.323589Z", "shell.execute_reply": "2021-04-16T19:35:53.324119Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# Here's the CDF of the prior\n", "\n", "prior.make_cdf().plot(color='C1')\n", "decorate(xlabel=r'Book ordering rate ($\\lambda$)',\n", " ylabel='CDF')" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.327897Z", "iopub.status.busy": "2021-04-16T19:35:53.327424Z", "iopub.status.idle": "2021-04-16T19:35:53.330290Z", "shell.execute_reply": "2021-04-16T19:35:53.330803Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# Here's a function that updates the distribution of lambda\n", "# based on one week of orders\n", "\n", "from scipy.stats import poisson\n", "\n", "def update_book(pmf, data):\n", " \"\"\"Update book ordering rate.\n", " \n", " pmf: Pmf of book ordering rates\n", " data: observed number of orders in one week\n", " \"\"\"\n", " k = data\n", " lams = pmf.index\n", " likelihood = poisson.pmf(k, lams)\n", " pmf *= likelihood\n", " pmf.normalize()" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.335171Z", "iopub.status.busy": "2021-04-16T19:35:53.334695Z", "iopub.status.idle": "2021-04-16T19:35:53.338131Z", "shell.execute_reply": "2021-04-16T19:35:53.337723Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# Here's the update after week 1.\n", "\n", "posterior1 = prior.copy()\n", "update_book(posterior1, 10)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.342520Z", "iopub.status.busy": "2021-04-16T19:35:53.342028Z", "iopub.status.idle": "2021-04-16T19:35:53.344891Z", "shell.execute_reply": "2021-04-16T19:35:53.345436Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# And the update after week 2.\n", "\n", "posterior2 = posterior1.copy()\n", "update_book(posterior2, 9)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.348958Z", "iopub.status.busy": "2021-04-16T19:35:53.348514Z", "iopub.status.idle": "2021-04-16T19:35:53.352690Z", "shell.execute_reply": "2021-04-16T19:35:53.353204Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(21.78849107458653, 10.000000817984526, 9.500000000003652)" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prior.mean(), posterior1.mean(), posterior2.mean()" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.356962Z", "iopub.status.busy": "2021-04-16T19:35:53.356103Z", "iopub.status.idle": "2021-04-16T19:35:53.359918Z", "shell.execute_reply": "2021-04-16T19:35:53.359487Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "9.408095235418383" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Now we can generate a sample of 1000 values from the posterior\n", "\n", "rates = posterior2.choice(1000)\n", "np.mean(rates)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.363099Z", "iopub.status.busy": "2021-04-16T19:35:53.362692Z", "iopub.status.idle": "2021-04-16T19:35:53.368315Z", "shell.execute_reply": "2021-04-16T19:35:53.367822Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "array([[ 9, 13, 7, 8, 11, 9, 11, 9],\n", " [ 7, 12, 9, 9, 9, 7, 11, 12],\n", " [12, 5, 10, 8, 12, 15, 13, 10],\n", " [ 5, 10, 7, 4, 9, 11, 8, 15],\n", " [ 5, 2, 3, 5, 3, 3, 4, 3]])" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# And we can generate a sequence of 8 weeks for each value\n", "\n", "order_array = np.random.poisson(rates, size=(8, 1000)).transpose()\n", "order_array[:5, :]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:53.428215Z", "iopub.status.busy": "2021-04-16T19:35:53.402097Z", "iopub.status.idle": "2021-04-16T19:35:54.443135Z", "shell.execute_reply": "2021-04-16T19:35:54.444074Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# Here are the expected profits for each possible order\n", "\n", "printed_array = np.arange(70, 110)\n", "t = [compute_expected_profits(printed, order_array)\n", " for printed in printed_array]\n", "expected_profits = pd.Series(t, printed_array)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:54.467573Z", "iopub.status.busy": "2021-04-16T19:35:54.463557Z", "iopub.status.idle": "2021-04-16T19:35:54.727439Z", "shell.execute_reply": "2021-04-16T19:35:54.728002Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# And here's what they look like.\n", "\n", "expected_profits.plot(label='')\n", "\n", "decorate(xlabel='Number of books printed',\n", " ylabel='Expected profit ($)')" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:54.734792Z", "iopub.status.busy": "2021-04-16T19:35:54.733641Z", "iopub.status.idle": "2021-04-16T19:35:54.738456Z", "shell.execute_reply": "2021-04-16T19:35:54.739144Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "79" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here's the optimal order.\n", "\n", "expected_profits.idxmax()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "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.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }