{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove_cell"
]
},
"outputs": [],
"source": [
"# HIDDEN\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"from datascience import *\n",
"from prob140 import *\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('fivethirtyeight')\n",
"%matplotlib inline\n",
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Chernoff Bound ##"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If the form of a distribution is intractable in that it is difficult to find exact probabilities by integration, then good estimates and bounds become important. Bounds on the tails of the distribution of a random variable help us quantify roughly how close to the mean the random variable is likely to be. \n",
"\n",
"We already know two such bounds. Let $X$ be a random variable with expectation $\\mu$ and SD $\\sigma$.\n",
"\n",
"#### Markov's Bound on the Right Hand Tail ####\n",
"If $X$ is non-negative, \n",
"\n",
"$$\n",
"P(X \\ge c) ~ \\le ~ \\frac{\\mu}{c}\n",
"$$\n",
"\n",
"This bound depends only on the first moment of $X$ (and the fact that $X$ is non-negative).\n",
"\n",
"#### Chebychev's Bound on Two Tails ####\n",
"\n",
"$$\n",
"P(\\lvert X - \\mu\\rvert \\ge c) ~ \\le ~ \\frac{\\sigma^2}{c^2}\n",
"$$\n",
"\n",
"This bound depends on the first and second moments of $X$ since $\\sigma^2 = E(X^2) - (E(X))^2$. \n",
"\n",
"In cases where both bounds apply, Chebyshev often does better than Markov because it uses two moments instead of one. So it is reasonable to think that the more moments you know, the closer you can get to the tail probabilities. \n",
"\n",
"Moment generating functions can help get good bounds on tail probabilities. In what follows, we will assume that the moment generating function of $X$ is finite over the whole real line. If it is finite only over a smaller interval around 0, the calculations of the mgf below should be confined to that interval."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"remove-input",
"hide-output"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" VIDEO"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# VIDEO\n",
"from IPython.display import YouTubeVideo\n",
"\n",
"YouTubeVideo('HCEQFjHyLIw')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exponential Bounds on Tails ###\n",
"\n",
"Let $X$ be a random variable with mgf $M_X$. We are going to find an upper bound for the right hand tail probability $P(X \\ge c)$ for a fixed $c$.\n",
"\n",
"To see how the moment generating function comes in, fix $t > 0$. The function defined by $g(x) = e^{tx}$ is increasing as well as non-negative. Because it is increasing,\n",
"\n",
"$$\n",
"X \\ge c ~ \\iff ~ e^{tX} \\ge e^{tc}\n",
"$$\n",
"\n",
"Since $e^{tX}$ is a non-negative random variable, we can apply Markov's inequality as follows. \n",
"\n",
"$$\n",
"\\begin{align*}\n",
"P(X \\ge c) ~ &= P(e^{tX} \\ge e^{tc}) \\\\\n",
"&\\le ~ \\frac{E(e^{tX})}{e^{tc}} ~~~~ \\text{(Markov's bound)} \\\\\n",
"&= ~ \\frac{M_X(t)}{e^{tc}} \\\\\n",
"&=~ M_X(t)e^{-tc}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"Since $t$ is fixed, $M_X(t)$ is constant. So we have shown that $P(X \\ge c)$ is falling exponentially as a function of $c$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Chernoff Bound on the Right Tail ###\n",
"\n",
"The calculation above is the first step in developing a [Chernoff bound](https://en.wikipedia.org/wiki/Chernoff_bound) on the right hand tail probability $P(X \\ge c)$ for a fixed $c$.\n",
"\n",
"For the next step, notice that you can choose $t$ to be any positive number. For our fixed $c$, some choices of $t$ will give sharper upper bounds than others. The sharpest among all of the bounds will correspond to the value of $t$ that minimizes the right hand side. So the Chernoff bound has an *optimized* form:\n",
"\n",
"$$\n",
"P(X \\ge c) ~ \\le ~ \\min_{t > 0} M_X(t)e^{-tc}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Application to the Normal Distribution ###\n",
"\n",
"Suppose $X$ has the normal $(\\mu, \\sigma^2)$ distribution and we want to get a sense of how far $X$ can be above the mean. Fix $c > 0$. The exact chance that the value of $X$ is at least $c$ above the mean is\n",
"\n",
"$$\n",
"P(X - \\mu \\ge c) ~ = ~ 1 - \\Phi(c/\\sigma)\n",
"$$\n",
"\n",
"because the distribution of $X - \\mu$ is normal $(0, \\sigma^2)$. This exact answer looks neat and tidy, but the standard normal cdf $\\Phi$ is not easy to work with analytically. Sometimes we can gain more insight from a good bound.\n",
"\n",
"The optimized Chernoff bound is\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"P(X- \\mu \\ge c) ~ &\\le ~ \\min_{t > 0} M_{X-\\mu}(t)e^{-tc} \\\\ \\\\\n",
"&= ~ \\min_{t > 0} e^{\\sigma^2t^2/2} \\cdot e^{-tc} \\\\ \\\\\n",
"&= ~ \\min_{t > 0} e^{-ct + \\sigma^2t^2/2}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"The curve below is the graph of $\\exp(-ct + \\sigma^2t^2/2)$ as a function of $t$, in the case $\\sigma = 2$ and $c = 5$. The flat line is the exact probability of $P(X - \\mu \\ge c)$. The curve is always above the flat line: no matter what $t$ is, the bound is an upper bound. The sharpest of all the upper bounds corresponds to the minimizing value $t^*$ which is somewhere in the 1.2 to 1.3 range."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": [
"remove_input"
]
},
"outputs": [
{
"data": {
"image/png": "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61MuZobczJ2LmSF3c0vjkUkRswTvOkFbdQKWZbj8Q4CTzOx4vOt7tDCzp5xz59YspoiISN345JNPAvn5+deGw+GtHYVKdkjGYrG5ZWVlf+nfv3+ysgkyKWKmAUVm1gXvsvFn410wrFrOud8CvwVItcRcrQJGRESySX5+/rVt27Y9My8vr9IvSvFPeXl5r9WrVwPcWdn4aosY51zczEYB44Ag8KhzbraZXZwaPzp1+ffpQAsgaWZXAj11aXcREcl24XC4hwqY7JSXl5dMtZBVKqPO7pxzY4GxacNGV/h/Bd5upu0tYwLepehFRESyiXYhZbcq35+G8caVbiY04XVs9XK/k4iIiEg9aRBFTN4zD5D/2F8Jf/CG31FERERqrHXr1v0HDBjQc+vtD3/4w261teypU6cWjBkzprCq8R999FGTwYMHd+vdu/d+vXv33nfkyJF7btq0KXDDDTd0uO2229rVVo664Pu1k2pD7JDjCH84ltDEt4ieOhICQb8jiYiIZCwvLy85bdq0OXWx7E8//bTJjBkzmp566qkl6eOWLl0aOv/88/d+6KGHFg0ePHhzMpnkmWeeaVVSUpITjRwNoohJdutNsl1HAiuXEvxiOoneNemLT0RE5HstH1vavzaXt35kx092ZL61a9cGBw8e3OPpp58u7tWrV/lZZ53V5bDDDts4atSoNRdccMEen3/+edPy8vLA0KFD191xxx3LACZOnNjkt7/97R6lpaWBSCTiXn/99QV33313h/Ly8sCAAQOajRo1avl55523butj3H///buecsop3w0ePHgzQCAQ4Nxzz902fsGCBQVDhgzptmLFisjIkSNXXnPNNasAhg8fvveKFSsi0Wg08Mtf/nLlZZddtgagffv2fc8999xV77//fmFeXl7yhRdeWNixY8f40qVLQ5deeumeS5YsyQO46667vj7yyCM3P/LII60fffTRdrFYzHr37r35oYce+joUyrw0yYlKq1pmxA4bBkDowzd9DiMiIlIzqSJj2+6kf/3rX61at26duP3227+55JJLujz++OOtNmzYEBo1atQagNtvv33p5MmT506bNm32lClTmk+fPr2grKzMLrzwwr3vuOOOb6ZPnz7njTfemN+8efPEVVddtWzYsGHrpk2bNqdiAQMwf/78gr59+26pKteiRYvy33jjjQXvvffe3Pvvv79DNBo1gEceeeSrKVOmzJ04ceKcxx57rN2qVauCAKWlpYGBAwdumj59+pyBAwdueuihh9oCXHnllXscdNBBG6dPnz5n8uTJc/bff/+ymTNn5r/yyiutJ0yYMG/atGlzgsGge/TRR3epyevWIFpiAOKHHEvkxUcJfTqR8o3roXlLvyOJiEgO2tGWk51R1e6kE088ccOYMWNa/f73v9/zgw8+mL11+DPPPNP66aefbpNIJGzNmjXhL774It/MaNOmTezQQw/dAtCqVaudPm18yJAh6wsKClxBQUG8VatWsaVLl4a6dOkSu+eee9q9/fbbLQFWrlwZnjt3bv6uu+66ORwOu9NOO60EoE+fPpsnTJjQAmDq1KnNn3jiicUAoVCI1q1bJx577LHWc+bMaXLIIYf0AK+Qa9OmTbwm+RpMEeNa70qi1wBCs6YQnjSe2LGn+R1JRCSnBBbMgkg+yc5d/Y4iKYlEgi+//DI/Ly8v+d1334W6dOkSW7BgQeThhx9u98EHH8xt06ZNYsSIEZ3LysoCzjnMLKPLAm3VtWvX0s8++6zJWWedtb6y8ZFIZNvygsEg8Xjcxo0b1/zjjz9uPmHChHnNmjVLDhkypFtZWVkAIBQKuUAg8IPpq3ps55ydfPLJ3/3tb39bWpPMFTWM3UkpscO37lIaC65G76OISKOX98z/0uTmCwl+8pHfUSTlz3/+c7u999677MEHH1w0atSoztFo1EpKSoIFBQXJVq1aJZYuXRqaOHFiIcB+++1Xtnr16sjEiRObAKxfvz4Qi8Vo3rx5YtOmTZV+319++eWrXnrppV0+/PDDpluHPfLII62XLFlSZSPH+vXrgy1atEg0a9YsOWvWrPwvvviiaVXTbjVo0KCN9913X1uAeDzOunXrAkcfffSGcePGtVq2bFkIYPXq1cGFCxdGavL6NJiWGIBEn4NxzVoQ/PZLAl8X69eEiEiGAt8sJLh4Hq5JUxL7DfA7TqOz9ZiYrfcPP/zwkpEjR655/vnn23zwwQdzW7ZsmXzllVc23nzzze3vuOOOZT169NjSr1+/fTt16lTep0+fTQD5+fnu4Ycf/vK6667bo7y8PJCXl5d88803Fxx77LEb//GPf7QfMGBAz/QDezt27Bh/6KGHFt10002d1q1bFzYzd8ABB2w6++yzK22ZATjppJNKHn/88bb9+/fv2aVLl7L99ttvc3XP75577vnmkksu2bNfv35tgsEgd91119eDBw/efM011ywdPnx412QySSgUcn/5y1++2WeffaKZvm7mfG6xKCkpqdUAkafvJ/L2i0SPOpnoz6+slWXm4pVcczEzKHd9ysXMkJu5cyFz5Kn7iLwz5gefnbWZu7CwsMrdCn5bsGDBk+3atauya3vx18qVK+d27dp1RGXjGtTuJIB46iyl8KR3IVrucxoRkRwQLSf88dsAxI84wecwIplrcEVMco99SOzZFduyidCnE/2OIyKS9UKffIRt2USic1eSe2Z3i5FIRQ2uiAGIbz3AV5chEBGpVnjCawDE1AojOaZBFjGxg47GRfIJzfkUW/a133FERLJWYMligvNm4vLyiR94lN9xRGqkQRYxNG1O/KCjAQi/94rPYUREslco9RkZP/hYaNLM5zQiNdMwixggdtRwAMITx0FZlT0qi4g0XqVbCH88DoDY0Sf7HEak5hpsEZPcs4jEPvthpZsJTXrX7zgiIlkn9N+3sbJSEt32J9lpL7/jNGqtW7fuP2DAgJ4HHHBAz4EDB/Z4//33q+1Abmd1796914oVK3K6v7gGW8TA978swu++rB58RUQqcs77bOT7lmvxz9ZrJ02fPn3OjTfeuPSPf/xjJ78z5YKcrsCqEz/gcJLNWxJcsohA8ecku/b2O5KISFYIzJ9JcNlXJAtbE+9/mN9xskqz8wb3r83lbfrXhBpdUHLDhg3BFi1axAGSySRXXXVVpw8//LAQcFdcccXy8847b924ceOa33///e1ef/31hQAXX3zxHn369Nl88cUXf9e9e/dep5xyynfjx48vjMfj9vjjjy/q3bt32apVq4IjRozYa926deFevXpt9ruz29rQoFtiCEeIDz7R+zf1i0NERL7/TIwP/gmEwj6nka2XHejdu/e+119//Z7XXXfdcoBnn3225Zw5cwqmTp06+7XXXltw2223dfr222+rfcN22WWX+NSpU+eOGDFi9T333NMO4JZbbukwYMCATVOnTp1z/PHHr1+5cmWNrlOUjRp0SwxA7MifEH79GULTPyS6/jtcy138jiQi4itbt4bQpx/hAgFiqR968r2atpzUhq27kwAmTJjQ9NJLL+3yySefzJ40aVLzk08+eW0oFKJjx47xAQMGbJo0aVKTwsLC5PaWd8YZZ6wD6N+//5axY8e2Apg2bVrzp556aiHAaaedVnLllVcm6vp51bWMWmLMbKiZzTezhWZ2fSXju5vZJDMrN7OrKwzf3czeN7O5ZjbbzK6ozfCZcLu0I9H3YCwRV+d3IiJAaMLrWCJBot+huNZt/Y4jaQYPHrx5/fr1oRUrVoSq2uUTCoVcMvl9HVNeXv6Da1Pl5eU5gGAw6BKJxLZxZll7CasdUm0RY2ZB4AFgGNAT+KmZ9UybbC1wOfDXtOFx4DfOuR7AgcCllcxb52JHpQ7wnfAaJOL1/fAiItkjHv++h96jT/E5jFRm1qxZ+clkkl133TV+yCGHbHz11Vdbx+Nxli9fHpo+fXqzgw8+eHOXLl3KFy1aVFBaWmpr164NTp48uUV1yx0wYMDGp556aheAl156qcXGjRuDdf9s6lYmu5MGAgudc4sAzOw5YDgwZ+sEzrlVwCoz+0Gf1c655cDy1P8bzWwu0LHivPUh0bMfyd12J7DiW4KfTCQxcHB9PryISNYITf+AwPrvSHbYk0T3Pn7HkZStx8QAOOe4++67vwqFQpx99tnrp06d2mzgwIH7Au6GG25Y0qlTpzjAsGHD1g0aNGjfPfbYo6x79+7Vdoh2yy23LBsxYsReAwcO7DFw4MBN7dq1i9bx06pzVt3RyWZ2OjDUOXd+6v4IYJBzblQl094CbHLOpbfIYGadgQ+B/ZxzG7YOLykp2RaguLh4h55EJtpMf5/d33qGzR26sGDkb6GBNamJiFTLObo9ehtNln/NN8eP4Lt+h9fpwxUVfX8xycLCwqz90F2wYMGT7dq16+F3DqncypUr53bt2nVEZeMyaYmpbMWr0XlZZtYMeBG4smIBk67iCl/r9tgdN/F1mi5bTDdXVqPTrYuLi+s2Wx3Ixcyg3PUpFzNDbubOlszBuZ9RsPxrks1b0vqUc2kdydvu9NmSW6QqmRzYuwTYvcL9TsCyTB/AzMJ4BczTzrkxNYtXi/Lytx0bE3nzed9iiIj4JZz67IsdfQpUU8CI5IJMiphpQJGZdTGzCHA28GomCzfvMOh/AnOdc3fveMzaETvqZFw4TOizj7Hl3/gdR0Sk3tjSrwjNnIyL5KmH3h/b7unK4rsq359qixjnXBwYBYwD5gIvOOdmm9nFZnYxgJntZmZLgKuA35nZEjNrARwCjACGmNmM1O34WnhCO8QVtiZ+yFAAIm/9268YIiL1LvLWCwDEDhsGzVv6nCa7xGKxueXl5Q2789ccVV5eHojFYnOrGp9RZ3fOubHA2LRhoyv8vwJvN1O6iVR+TI1vokPPIDzhNUIfv0X0tF/iWrTyO5KISJ2y9d8R+u87ODNix53ud5ysU1ZW9pfVq1cTDod70NB7ss8tyVgsNresrOwvVU3Q4HvsTefa70G87yGEPvuY8LsvEz11pN+RRETqVPjdl7B4jPgBh+Pa6bqC6fr3758E7vQ7h9Rco6w4o8POAiA8/iUoL/M5jYhIHSrbQvi9V4DvP/tEGopGWcQku/YisVcPbNMGQhPf8juOiEidCX/0FrZ5I4l99iO5z75+xxGpVY2yiMFs2y+SyJvPQ1yXIhCRBigeJ/yWd1q1WmGkIWqcRQyQOOAw71IEq5cTmvSO33FERGpd6ONxBNas9C4x0O9gv+OI1LpGW8QQCBL9ybkARF57SheGFJGGJR73PtuA6EkjIJDz1/oT+ZHGW8QA8YOOIrlrBwIrlxKa/J7fcUREak1o0jsEVi8nudvuxAcd6XcckTrRqIsYgiGiP/GuKRV57UlIJnwOJCJSCxJqhZHGoXEXMUD84GNItm1PYPm3hKZM8DuOiMhOC01+j8DKpSTbdSR+4BC/44jUmUZfxBAKET3xZwBEXn0CkrqEhojksGSCyKtPAnjH/QUbXZ+m0oioiAHihx5Hcpd2BJZ9TWjaB37HERHZYaEp7xNY8S3Jtu2JH3SM33FE6pSKGIBQmOhPvNaYsFpjRCRXpbfChNQKIw2bipiU+KFDSbZuS3DJYoLTP/Q7johIjYWmTCCw7GuSbdoRP+RYv+OI1DkVMVuFI9v6jcl78Z/qxVdEcks8RmTMPwG8sy5DYZ8DidQ9FTEVxA8/gWS7jgRWfEvoo7F+xxERyVh4wusEVi0j2X534ocN9TuOSL1QEVNRKET0tPMBiLz8L13hWkRyQ9kWwq88AUD56RfojCRpNFTEpIkPOIJE564E1n9H+O0X/Y4jIlKt8Lj/ENiwjsTePUj0P8zvOCL1RkVMukCA6JkXARB54xnYVOJzIBGR7diwnsjYZwEoP/MiMPM5kEj9URFTicS+/YnvewBWupnIa0/7HUdEpEqR157EykqJ9x5Esnsfv+OI1CsVMVWInnkhAOHxLxEu+c7nNCIiP2arlxMe/wrOjOgZF/gdR6TeqYipQrJzV2KDhmCxGO0/eNXvOCIiPxIZ8yiWiBM/6GiSe+zjdxyReqciZjuip/0KFwzSetYkAovn+x1HRGSbwJdzCf/3HVwwRPTUX/odR8QXGRUxZjbUzOab2UIzu76S8d3NbJKZlZvZ1TWZN5u5dh2JHXMahiPv6fvBOb8jiYhAMkne0/cBEDvuDFzb9j4HEvFHtUWMmQWBB4BhQE/gp2bWM22ytcDlwF93YN6sFh3+c2JNmxMs/oLQ5PF+xxERIfTfdwh+OZdkYWuiJ43wO46IbzJpiRkILHTOLXLORYHngOEVJ3DOrXLOTQNiNZ036zVpxrIjT3AV9b0AACAASURBVAUg8vxoKNvicyARadRKtxB54SEArzuIgiY+BxLxTybdOnYEvq1wfwkwKMPl12je4uLiDBdbz/Y/mDafTKDp8q/Z9MQ/WH7kKX4nykjWvp7VUO76k4uZITdz11bmDu+9SLOStWzu2IUFu3aGOn4tdiZ3UVFRLSYR+bFMipjKek7K9OCQGs2brSt8cXExdv61cOultJv6Ds1PPhe3awe/Y21XcXFx1r6e26Pc9ScXM0Nu5q6tzLZyCU2meru17VfXUrR3t51e5vbk4mstjUsmu5OWALtXuN8JWJbh8ndm3qyS3GdfYgcfg8Vi5D37v37HEZFGKO+Z/8XiMWKHDiW5dw+/44j4LpMiZhpQZGZdzCwCnA1k2nHKzsybdaJnXoTLyyf06USCn0/zO46INCLBWVMIzfgvLr+JOrYTSam2iHHOxYFRwDhgLvCCc262mV1sZhcDmNluZrYEuAr4nZktMbMWVc1bV0+mrrlWbYgO/zkAeU/cA9FynxOJSKNQXkreE/cC3hmTruUuPgcSyQ4ZXa/dOTcWGJs2bHSF/1fg7SrKaN5cFjvuDO/0xiWLibzyhH4RiUidi7z8LwKrl5PYY29ix57udxyRrKEee2sqFKZ85NU4M8JvPkfgmy/9TiQiDVjg62LCb72AM6N85DUQyui3p0ijoCJmByT32ZfYkOFYIkHe43+FZMLvSCLSECUT5D16F5ZMEjvmVJJ7dfc7kUhWURGzg6JnXECyVRuCX84lPP4Vv+OISAMUfmcMwa8WkGy9K9FTf+V3HJGsoyJmRxU0pXzEFQBE/vN/2HerfA4kIg2JrVlB5MV/AlD+8yvVM69IJVTE7IRE/8OIH3A4VlZK3pN/1wUiRaR2OEfeE/di5WXEBgwm0fdgvxOJZCUVMTup/GeX4QqaEvrsY0L/fcfvOCLSAIQmvkVo5mRck6ZEz73M7zgiWUtFzE5yrdtSfs4oAPKe+rt2K4nITrE1K8h76n4Ayn92ufqEEdkOFTG1IH7YUOJ9Dsa2bCbvn3+GZNLvSCKSi5JJ8h75M1a2hXj/w4gfcqzfiUSymoqY2mBG+S+vxjUvJDT7E8Lv6WwlEam58LtjCM39jGSLVpT94jdglV1DV0S2UhFTS1xha8rOuwqAyPOjsRXf+pxIRHKJLfuayAsPA1A+8jfQoqXPiUSyn4qYWpQYcASxg4/FouXkP3w7JOJ+RxKRXBCPk//w7VgsSuzQoST6Hep3IpGcoCKmlpWfexnJ1m29TvBee9rvOCKSAyKvPklw8XySu7Sj/Gej/I4jkjNUxNS2ps0pP/86IHXRtnkzfA4kItksOOdTwq8+4V0b6YLroUkzvyOJ5AwVMXUgse8BRE/8GeaS5D/4J9iw3u9IIpKFrGQteaP/hDlH7KQRJHr09TuSSE5REVNHoqeOJNG1F4H1a7zjY3TatYhUlEyS99DtBErWkui+P9GTz/M7kUjOURFTV4Ihyi65CdesBaHPpxJ+8zm/E4lIFgm//jSh2dNxzQspu/gmCAT9jiSSc1TE1CHXelfKLvgtAJH/PEJgwec+JxKRbBCYN5PImMcAKLvwBlyrNj4nEslNKmLqWKLPQUSHnYUlk+Q/+EcdHyPSyNmGdeSPvhVzSaInnEOi9yC/I4nkLBUx9SB6+gUk9u5JYO1q8h+4BeLqP0akUYrHyL//ZgLr1pAo2o/oqb/0O5FITlMRUx9CIcpG/YFkYWtC82YQee5//U4kIj7Ie/ofBBfMItmyDWWj/gChkN+RRHKaiph64lq3peyyP+KCISLvjCH04Zt+RxKRehSa8Drh917BhcKUXf5HXZ1apBZkVMSY2VAzm29mC83s+krGm5ndlxo/y8z6VRj3azObbWZfmNmzZpZfm08glySL9qP851cCkPevuwl8OcfnRCJSH5p+u5C8J+4FoPwXV5Hcu6fPiUQahmqLGDMLAg8Aw4CewE/NLH0LHAYUpW4XAg+m5u0IXA4c4JzbDwgCZ9da+hwUH3wi0aNOxuIx8u/7Pbb+O78jiUgdsrWr6fLiaCwRJ3rMacQPG+Z3JJEGI5OWmIHAQufcIudcFHgOGJ42zXDgCeeZDLQ0s/apcSGgwMxCQBNgWS1lz1nRcy4l0bW31xHevTdCeanfkUSkLpRtIf/vNxLeVEK8R1+iZ1/idyKRBsWcc9ufwOx0YKhz7vzU/RHAIOfcqArTvA7c6ZybmLo/HrjOOTfdzK4AbgNKgbedcz+ruPySkpJtAYqLi2vnWeWA0OYNdH30dvJKvmN91/1ZfPr/QECHKIk0GMkEe73wAIULP6e8ZVsWjPwt8abN/U5Vr4qKirb9X1hYaD5GkQYqk0PjK1vx0iufSqcxs1Z4rTRdgPXAv83sXOfcU5U9UMUVPpsUFxfXSbb49XcT+dMoWi6Yyb5T3iQ64gqw2tnO6ypzXVPu+pOLmSFHcjtH3hP3El74Oa5pC7786eV06dOv+vmyTE681tKoZfLTfwmwe4X7nfjxLqGqpjkaWOycW+2ciwFjgIN3PG7D4jrsSenlf8KFwkTGv0z4rRf8jiQitSA89jnvTKRwmNIrb6N8l938jiTSIGVSxEwDisysi5lF8A7MfTVtmleBn6fOUjoQKHHOLQe+AQ40syZmZsBRwNxazJ/zkt33p/wC74SvvOceJDh1gr+BRGSnhCaPJ++Fh3BmlF10I8muvfyOJNJgVVvEOOfiwChgHF4B8oJzbraZXWxmF6cmGwssAhYC/wf8T2reKcB/gE+Bz1OP93BtP4lcFz/wKMrPvAiA/IdvIzj3M58TiciOCM75lLz/uxOA6NmXkBgw2N9AIg1cRt1FOufG4hUqFYeNrvC/Ay6tYt6bgZt3ImOjEDv+bOy7lUTGv0z+vTdQeu3f1JeESA4JLJxN/r03YPEY0WNOI3bcGX5HEmnwdDpMtjAjeu7lxA46GisrpeCv1xL45ku/U4lIBgJfF1Pwt2ux8jJihxxH9JxLa+0gfRGpmoqYbBIIUH7+9cT7HYJt2UT+XVdjy7/xO5WIbIct+5r8u67BtmwmfsDhlP/qGnWXIFJPtKVlm1CIsv+5mfi+BxDYsI6Cv/wGW7PC71QiUglbvZyCv/yGwMb1xHsNpOzi30FQF3UUqS8qYrJROELZFbeSKNqPwNrVFNz5a2z1cr9TiUgFtno5BXf+msC6NSS67U/ZZX+EcMTvWCKNioqYbJVXQOlVd5Lo0p3A6uUU3HEltnKp36lEBLAVSyi4/XICa1aQ2LsHpb++HfIa7bVtRXyjIiabNWlG6bV/JbHPvgS+W0nB7VfoGBkRn9myrym44woCa1eT6NqL0mv+CgVN/Y4l0iipiMl2TZpRevVdJLrtT2D9GgruuAJb+pXfqUQapcCSRRTccSWB9d8R79GX0t/8WQWMiI9UxOSCgiaU/uZO4j37EShZR5M7riDw1QK/U4k0KoHF870CZsM64vseQNmv74D8Jn7HEmnUVMTkirwCyn59B/FeA7GNJRTccQXB2dP9TiXSKAQ/n+a1gm7aQHz/Aym78jYdAyOSBVTE5JJIHmVX3kbswKOwslLy/3Y9oUnj/U4l0qCFPn6b/Huu9zqyO+hoyi6/FSJ5fscSETK87IBkkVCY8otuxBW2JjLu3+SPvpXykrXEhqqLc5Fa5RzhN58n73nvCivRYWcRPfMidWQnkkVUxOSiQIDoOZfiWrUh77kHyXv2AWzdaqJnXQSBoN/pRHJfMkHk2f8l8vaLAJT/9H+IDT3T51Aikk5FTA6LDTsLV9iavEfuJPLWCwRWfEvZxTdBgQ42FNlhWzaR/+CthGZNwQVDlF/wW+IHHeV3KhGphNpFc1z84GMou+avuKbNCc2YRMGfLlXvviI7yFYupcmtl3oFTNMWlF1zlwoYkSymIqYBSPToy5abHyTZYU+CSxbT5JaLaPq1TsEWqYng3M9o8odLCCz7mkSHzmy5ZTSJHn39jiUi26EipoFw7Tqx5aYHiPcehG3awD5P301o/MvgnN/RRLKbc4TfGeNdNX6zdwp16e8fwO3awe9kIlINFTENSZNmlP36dqLHnUEgmSD/iXvJe+g2KNvidzKR7FS6hbwHbyXvqfuwRILo0DO9PmDUC69ITtCBvQ1NIEj0nEtZ2qQlncc+SXjSuwS/Lqb0sj/iOuzpdzqRrBFYspj8f/yewPJvcfkFlP/yWuKDjvQ7lojUgFpiGqj1+w5kyy0PkejQmcCyr2lyy0WEJr3rdyyRrBD6+G0K/nAJgeXfkujYmS23PKQCRiQHqYhpwFyHPSm95UFiBx2NlZeRP/pP5D10O2zZ5Hc0EX9s3kje6D+R//DtWLSM2MHHUnrzg7j2e/idTER2gHYnNXR5BZRfdCOJbvuT98w/CP/3bYILZlJ20Y0ku/b2O51IvQnMm0H+w3cQ+G4lLpJP+c9GET/iBDDzO5qI7CAVMY2BGfEjf0Ki+/7kj/4Twa8WUHD7lcROPIfoyb+AkFYDacDiMSJjHiM89lnMORJdulN28e9wu3XyO5mI7KSMdieZ2VAzm29mC83s+krGm5ndlxo/y8z6VRjX0sz+Y2bzzGyumR1Um09AMufa70HpTQ8Q/cm5gCPy2lMU/OEiAl+pTxlpmAKL51Fw80VE3ngGMKInjaD0d/9QASPSQFT7E9zMgsADwDHAEmCamb3qnJtTYbJhQFHqNgh4MPUX4O/AW865080sAqhPfD+FwkRPP594r4Hk/98dBL/5koI/XExs2NlETz5PV+eVhiFaTuSlxwi/+QLmkiTbdqDswuu1C1WkgcmkJWYgsNA5t8g5FwWeA4anTTMceMJ5JgMtzay9mbUADgf+CeCcizrn1tdiftlByW692XLbo0SPPR2cI/LGMzS56XwCC2b5HU1kpwTmzaTJ735FZOxzAESHnsmW2x5VASPSAJmrpkdXMzsdGOqcOz91fwQwyDk3qsI0rwN3Oucmpu6PB64D4sDDwBxgf+AT4Arn3Oat85aUlGwLUFxcXEtPS2qiyZIv2eP1f1Gwxrvm0nf7H8KyIacSb9rC52QimQtt2kCH9/7DLrMmAVDatgPfnPgLtnTs4nOyxquoqGjb/4WFhTqCWmpdJkd0VrbipVc+VU0TAvoBlznnppjZ34HrgZsqe6CKK3w2KS4uztpsValR5qIiEocOIfraU4TfeJZdZn5M6+KZRE/7FbEhJ0EgWLdhK8jF1xpyM3cuZoZKcifihN97lciYf2JbNuPCYWInnEPixJ/RMRzxL2gFDea1FskymRQxS4DdK9zvBCzLcBoHLHHOTUkN/w9eESPZJhwheuoviR18LHlP/Z3Q59PIe/LvhD54g/JzLyfZTU3xkn0C82aS99R9BL/9EoD4/gdS/rNRuHY6cFekMcikiJkGFJlZF2ApcDZwTto0rwKjzOw5vAN6S5xzywHM7Fsz6+acmw8chbdrSbKU260TZb/5C8FPJpL3zD8IfrOQJrdfTrzfoZSfeaE6BZOsYMu+Ju+Fhwl99jEAyTa7Uf6zy0j0PVj9vog0ItUWMc65uJmNAsYBQeBR59xsM7s4NX40MBY4HlgIbAFGVljEZcDTqTOTFqWNk2xkRuKAw9jSawCRsc8SHvs8oU8nEpzxX2JHnkTs5PNwLVr5nVIaIStZS6exT9FkxkdYMonLyyc67Gxix58Nefl+xxORepZRL2fOubF4hUrFYaMr/O+AS6uYdwZwwE5kFL/k5RM9ZSSxI08iMuYxQh+OJTL+ZcIfjyN27OlEh54JTZv7nVIag00biLz1AuF3XqRpWSnOAsSO/AnRk3+Ba7mL3+lExCfqqlWq5VruQvkvryZ27GlEXniI0MzJRF59kvA7Y4gdd7p3mraKGakLmzcSGfdvwuP+g5VtAaCkqDehkVfhOnb2N5uI+E5FjGQs2akLZVfdSaD4CyIvPUZo9idEXv4X4bdfJHbsaUSPPgWat/Q7pjQEG9YTefclwu/8B9vi9cgQ328A0VN+wSIXoUgFjIigIkZ2QLJoP8qu/RuB+bO8YmbuZ14xM/Z5YkccT+y4M3Bt2/sdU3KQrV5O+M3nCX/0JhYtByDesx/RU0aS7NrLm0j9SYlIiooY2WHJbr0pu/4eAvNmEHnjWUKzphB5Zwzh8S8THzSE2LGnk9yru98xJQcEvpxL+O3/EJr6PpZMAt7p0tETztHp/SJSJRUxstOS3ftQ1r0PgW++JPzmc4Qmjyc86V3Ck94lsXcPYkedQnzgYMiSjsckS8SihKZOIPzOGIKL5wHggkFihxxH7PizSHbay+eAIpLtVMRIrUnusTflF91I9LRfEX73JcIfjiX45VyCX84l+dyDxI84gdjhx+N27eB3VPGRrVxC+MM3CX3wBoGN3qXUXNMWxI44gdjRJ+N2aedzQhHJFSpipNa5NrsRPfsSoqeMJDTpXe+X9pJFRF57ishrTxHv0Zf44ccTP+BwXTW7sSgvIzT9Q8IfvkFw3sxtgxN77E3s6FOJH3iU+nkRkRpTESN1Jy+f+OATiR9xAoH5swh/8Aah6R8QmvsZobmf4Z68l/gBRxA/cAiJ7n0gqNWxQUnECc75jNDU9wlN/2DbWUYukkd8wGBig08gWdRLPeyKyA7Tt4bUPTOS3fenvPv+lI+43Dtm5sOxBBfPJ/zhWMIfjiXZohXxAUfQtGMR7L03BAJ+p5YdkUwSWPA54SnvEZz2wbbdRQCJvXoQO/x44gcOgYKmPoYUkYZCRYzUrybNiA8ZTnzIcGzpV4SnvE9o8ngCK5cQGf8yXYHka48RH3gkib4HkyjqBSGtplktHidY/DnBTz8mNG0CgXVrto1K7rY78QOHEBs0BNdhTx9DikhDpG8H8Y3r2JnoqSOJnvILAt8sJDT5PZg4jsi6NUTG/RvG/RvXpCnxfQeQ6HMgid6DdM2mLGElawnOmkJo5mSCX0zHSjdvG5ds0474oCHEBw0hucc+2l0kInVGRYz4z4zknkVE9yyiuO+RdAvECE3/kNDMyQSWfU142gTC0ybgzEju1Z14r0EkevQluXcPnbZdX6LlBBbNJTh3BqFZUwgsnoc5t210okNnEn0OJN7/MJJ791ThIiL1QkWMZBczkvvsS3SffYmefQm2apn3a3/mJIJzZ2w7ZZuXH8eFIyT22ZdEt/1J9OhDcq8eOtuptkTLCX45h+C8GQTmzST45WwsFts22oXDxLv3JbH/gcT7HKQemkXEFypiJKu5XTsQO+ZUYsecCmVbCM75lODsTwjOm0FwyeJtZzrxsvfFmuzSnUSX7qm/3XDtOqpVoDrJJLZqGcHF8wgsmuf9/Wr+D4oWgESnvUj06EOiZ38S+/aDvAKfAouIeFTESO7Ib0Ki36Ek+h3q3d+4nuD8WQTnzfSKmm+/JLjgc4ILPt82i2vSjESXbiQ7dyO55z4kO3QmuVunxrsbKhYlsGIJgWVf0X7GNPLHrCT41fxtpz9v5cxI7LE3ie59SHTrQ6JbL13cU0SyjooYyV3NW5I44HASBxzu3d9UQnDRPAKL56f+ziNQspbQ7E9g9ifbZnOBAK5dR5Idu5DssKdX2LTrSLLNbtC8MPdbbpyDjSUEVi8nsGoZgaWLCSz7msCyr7CVS7ddm2i3CrMkW+6yrfUq2aUbib16QLMW/uQXEcmQihhpOJoVkug9iETvQcQAnMPWrfaKmsXzCSxZ7H2Rr1pGYPm3BJZ/+6NFuLx8km12w7Vt7/1tsxuu5S64Fi1xLVrjClvhmrWAQLDenx4AyQS2aQNWsg7bsNb7W7IWW7OCwOrl3t81K7DyskpndxbwCraOnVlTUEhh/4NIdumOa922np+IiMjOUxEjDZcZrvWuJFrvSqL/Yd8Pj5YTWP6N1zqx9CsCy77GVi8jsHoFVrqZ4NKvYOlXVS7WWQDXohDXvCXkN8UVNKFzIklem11xBU2hoAkuku/1QBwM4oLBbf9v65U4EYdEAhJxLJH4/v9oGZRu8U5ZLivFSjdjpVugbDO2YT22sQRzyWqfumvSlGSb9l4x1mFPkh07e7fddt928PPy4mKaFRXtxAssIuIvFTHS+ETySO5ZRHLPSr7AN2/0WjJWryCwZjm2ZuW2Fo/AhnVey8dmryWEknXbZqvP3mtc0xa4wlYkW7TyWoZatMa1aZcqWnbzdos1bV6PiURE/KEiRqSips1JNm0OexaRqGqaeMxrFdlU4rWalG1hxeIvaV/YAivb4rWclJdC0mthsUTC+z8e91pgzLzdUaEQBLa21AS9YXkFuIImuPwmXotOQdPv/2/e0mv9UQ/GIiKAihiRmguFca3b/uA4kvVNdqGtds2IiNQrXWVPREREclJGRYyZDTWz+Wa20Myur2S8mdl9qfGzzKxf2vigmX1mZq/XVnARERFp3KotYswsCDwADAN6Aj81s55pkw0DilK3C4EH08ZfAczd6bQiIiIiKZm0xAwEFjrnFjnnosBzwPC0aYYDTzjPZKClmbUHMLNOwAnAI7WYW0RERBq5TA7s7QhU7BVsCTAog2k6AsuBe4FrgWrP+SwuLs4gjj+yOVtVcjEzKHd9ysXMkJu5czEz7FzuIh3sLnUskyKmsj7YXSbTmNmJwCrn3CdmNri6B8rWFb64uDhrs1UlFzODctenXMwMuZk7FzND7uaWxiOT3UlLgN0r3O8ELMtwmkOAk8zsK7zdUEPM7KkdTisiIiKSkkkRMw0oMrMuZhYBzgZeTZvmVeDnqbOUDgRKnHPLnXO/dc51cs51Ts33nnPu3Np8AiIiItI4Vbs7yTkXN7NRwDggCDzqnJttZhenxo8GxgLHAwuBLcDIuossIiIikmGPvc65sXiFSsVhoyv874BLq1nGBGBCjROKiIiIVEI99oqIiEhOUhEjIiIiOUlFjIiIiOQkFTEiIiKSk1TEiIiISE5SESMiIiI5SUWMiIiI5CQVMSIiIpKTVMSIiIhITlIRIyIiIjlJRYyIiIjkJBUxIiIikpNUxIiIiEhOUhEjIiIiOUlFjIiIiOQkFTEiIiKSk1TEiIiISE5SESMiIiI5SUWMiIiI5CQVMSIiIpKTVMSIiIhITsqoiDGzoWY238wWmtn1lYw3M7svNX6WmfVLDd/dzN43s7lmNtvMrqjtJyAiIiKNU7VFjJkFgQeAYUBP4Kdm1jNtsmFAUep2IfBgangc+I1zrgdwIHBpJfOKiIiI1FgmLTEDgYXOuUXOuSjwHDA8bZrhwBPOMxloaWbtnXPLnXOfAjjnNgJzgY61mF9EREQaKXPObX8Cs9OBoc6581P3RwCDnHOjKkzzOnCnc25i6v544Drn3PQK03QGPgT2c85t2Dq8pKRkW4Di4uJaeEoiIpINioqKtv1fWFhoPkaRBiqUwTSVrXjplc92pzGzZsCLwJUVC5h0FVf4bFJcXJy12aqSi5lBuetTLmaG3Mydi5khd3NL45HJ7qQlwO4V7ncClmU6jZmF8QqYp51zY3Y8qoiIiMj3MilipgFFZtbFzCLA2cCradO8Cvw8dZbSgUCJc265mRnwT2Cuc+7uWk0uIiIijVq1u5Occ3EzGwWMA4LAo8652WZ2cWr8aGAscDywENgCjEzNfggwAvjczGakht3gnBtbu09DREREGptMjokhVXSMTRs2usL/Dri0kvkmUvnxMiIiIiI7RT32ioiISE5SESMiIiI5SUWMiIiI5CQVMSIiIpKTVMSIiIhITlIRIyIiIjlJRYyIiIjkJBUxIiIikpNUxIiIiEhOUhEjIiIiOUlFjIiIiOQkFTEiIiKSk1TEiIiISE5SESMiIiI5yZxzvgYoKSmplQAtH1taG4sREZGUaYduoaioqFaWVVhYaLWyIJEK1BIjIiIiOSnkd4Dasn5kxzpbdnFxca39GqkvuZgZlLs+5WJmyM3cuZgZvNwi2UwtMSIiIpKTVMSIiIhITlIRIyIiIjlJRYyIiIjkJBUxIiIikpMyKmLMbKiZzTezhWZ2fSXjzczuS42fZWb9Mp1XREREZEdUW8SYWRB4ABgG9AR+amY90yYbBhSlbhcCD9ZgXhEREZEaq7bHXjM7CLjFOXdc6v5vAZxzd1SY5iFggnPu2dT9+cBgoHN189ZWj70iIpK91GOv1IVMdid1BL6tcH9Jalgm02Qyr4iIiEiNZVLEVFY9p7eeVDVNJvOKiIiI1Fgmlx1YAuxe4X4nYFmG00Sqm1dNjCIiIrIjMmmJmQYUmVkXM4sAZwOvpk3zKvDz1FlKBwIlzrnlGc4rIiIiUmPVtsQ45+JmNgoYBwSBR51zs83s4tT40cBY4HhgIbAFGLm9eevkmYiIiEijklE/Mc65sc65rs65vZ1zt6WGjU4VMDjPpanxvZxz07c3b7bKpE8bMxtsZjPMbLaZfVDfGSvJU10fPoVm9pqZzUxlHulHzrRMj5rZKjP7oorxVfY75KcMcv8slXeWmf3XzPav74yVZNpu5grTDTCzhJmdXl/ZtieT3Fm4LVa3fmTdtghgZrub2ftmNjeV64pKpsnKbVIE55xu3mnmQeBLYC+8Y3lmAj3TpmkJzAH2SN3fNQcy3wD8OfV/W2AtEPE59+FAP+CLKsYfD7yJd2D4gcAUv9ePDHMfDLRK/T8sG3JXl7nCevQeXovq6X5nzvC1zqptMcPMWbctprK0B/ql/m8OLKjkcyQrt0nddNNlB743EFjonFvknIsCzwHD06Y5BxjjnPsGwDm3qp4zpsskswOam5kBzfA+OOP1GzMtkHMfpnJUZTjwhPNMBlqaWfv6SVe16nI75/7rnFuXujsZ70B2X2XwWgNcBrwI+L0+b5NB7mzbFjPJnHXbIoBzbrlz7tPU/xuBufy4K4ys3CZFVMR8L5M+bboCrcxsgpl9YmY/r7d0lcsk8z+AHnhnhX0OXOGcS9ZPvB3WEPoX+hXeL9esZmYdgVOA0X5nqaFs2xYzkfXbopl1BvoCU9JGNYRtUhqgfBEUDgAAAtRJREFUTE6xbiwy6dMmBPQHjgIKgElmNtk5t+D/27t/F6nOKIzj30fcQrHLQjpRFGKVWCxYxAhJY5kUgpVF2qSxE1KYIn1IJSkM2IgpRJJOsDP/wBpBG9EQjGncRrQQ1JPiDrHZdV9/3Xvf4fuBaYZbPDNwhjPnnTn3fYfbQkvm48A68AVwALiW5I+qevS+w72FrvcLJfmcoYk5OnWWBj8BZ6rq+TAg6MbcarHFrGsxyR6GidzpTTJ1XZNaXk5iXmrdh3O1qp5U1UPgOjDljzdbMn/NMHavqroD3AMOjZTvTbW8rllK8jFwHviyqjamztNgDfg1yV/ACeBckq+mjdRkbrXYYra1mGSFoYG5WFVXNrmk25rUcrOJeallp83vwGdJdibZDRxhOD+eSkvmvxm+rZLkQ+Aj4O6oKV/fVnuHZi3JXuAKcGrmE4H/VdX+qtpXVfuAy8A3VfXbxLFazK0WW8yyFhe/0fkFuF1VP25xWZc1qeXncdJCNezDqarbSa4CfwIvgPNV9cq/rk6dGfgBuJDkJsNI+Mzim+tkklxiuEHoapL7wPfACrx679DUGnKfBT5gmGYAPKuqtWnSDhoyz9J2uedWi9D0Xs+uFhc+BU4BN5OsL577DtgL865Jadu7WEuSJM2Rx0mSJKlLNjGSJKlLNjGSJKlLNjGSJKlLNjGSJKlLNjGSJKlLNjHSiJL8k+Tw1DkkaRm4J0YaSZJV4F9gT1U9nTqPJPXOSYw0giQHGe4CvAPYSLKRxI3ZkvQWnMRII0nyLXCsqk5OnUWSloGTGGk8nwDr214lSWpiEyON5zBwY+oQkrQsPE6SRpBkB/AYOFhVD6bOI0nLwEmMNI5di4c1J0nviB+o0giq6gnwM3Aryf2p80jSMvA4SZIkdclJjCRJ6pJNjCRJ6pJNjCRJ6pJNjCRJ6pJNjCRJ6pJNjCRJ6pJNjCRJ6pJNjCRJ6tJ/cqtYeJDh4JQAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# NO CODE\n",
"c = 5\n",
"sigma = 2\n",
"t_min = 0.5\n",
"t_max = 2\n",
"t = np.arange(t_min, t_max, 0.01)\n",
"bound = np.exp(-1*c*t + 0.5*((sigma*t)**2))\n",
"exact = 1 - stats.norm.cdf(2.5)\n",
"plt.plot([t_min, t_max], [exact, exact], lw=2, label = 'Exact Chance')\n",
"plt.plot(t, bound, lw=2, label = 'Bound')\n",
"plt.legend(bbox_to_anchor=(1.4, 1))\n",
"plt.xlabel('$t$')\n",
"plt.title('Bounding $P(X - \\mu \\geq 5)$ when $X$ is normal $(\\mu, 2^2)$');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To find the minimizing value of $t$ analytically, we will use the standard calculus method of minimization. But first we will simplify our calculations by observing that finding the point at which a positive function is minimized is the same as finding the point at which the log of the function is minimized. This is because $\\log$ is an increasing function.\n",
"\n",
"So the problem reduces to finding the value of $t$ that minimizes the function $h(t) = -ct + \\sigma^2t^2/2$. By differentiation, the minimizing value of $t$ solves\n",
"\n",
"$$\n",
"c = \\sigma^2 t^*\n",
"$$\n",
"\n",
"and hence\n",
"\n",
"$$\n",
"t^* = \\frac{c}{\\sigma^2}\n",
"$$\n",
"\n",
"So the Chernoff bound is \n",
"\n",
"$$\n",
"P(X - \\mu \\ge c) \\le e^{-ct^* + \\sigma^2{t^*}^2/2} = e^{-c^2/2\\sigma^2}\n",
"$$\n",
"\n",
"Compare this with the bounds we already have. Markov's bound can't be applied directly as $X - \\mu$ can have negative values. Because the distribution of $X - \\mu$ is symmetric about 0, Chebychev's bound becomes\n",
"\n",
"$$\n",
"P(X - \\mu \\ge c ) \\le \\frac{\\sigma^2}{2c^2}\n",
"$$\n",
"\n",
"When $c$ is large, the optimized Chernoff bound is quite a bit sharper than Chebychev's. In the case $\\sigma = 2$, the graph below shows the exact value of $P(X - \\mu \\ge c)$ as a function of $c$, along with the Chernoff and Chebychev bounds."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"remove_input"
]
},
"outputs": [
{
"data": {
"image/png": "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qpWg9MC1mqaVg9q1a9O7d++825gxY8pt28uWLWPatGlFPr948WIuuOACunTpQteuXRkyZAg5OTk8++yzjB07ttziqAmiPhZffvYZ3xM8/aJoh6Fp2jHO4/Ewa9asCtn28uXLWbp0Keeee+4Rz6Wnp3PTTTcxceJEunXrhlKKb7/9luzsYmds14pQpRKU69M3CLXvjqpdL9qhaJpWTpLe3Vau29v/78ZHtV5GRgZnnXUWn3zyCcnJydx666306dOHm266iaFDh7JkyRK8Xi+XXHIJw4cPB2DJkiU89NBDZGdn43K5+Oqrr3j22WfJzc1l7ty5DB06lCuuuCJvH+PHj+faa6+lW7duAIgIl156KV6vF4A1a9bQr18/tm7dyh133MHAgQMBuO6669i2bRs+n4+BAwdy8803A9C4cWMGDhzITz/9hMfj4eOPP6Z+/fqkp6dz7733snHjRgBGjx5N9+7d+eyzz3jrrbfw+/106dKFl156CcMwjur1qgqqVBOf5GbjmvSyburTNK1McnNzD2vi+/LLL0lMTOSFF15g0KBBTJkyhf3793PTTTcBMGLECKZPn87s2bOZPXs2K1aswO/38+9//5tRo0Yxe/Zsvv76a2JjY3n44Ye54oormDVr1mHJCWD16tV06NChyLhSU1P58ssv+e2333juuecIBKzR4caNG8eMGTP4/fffeeutt9i7dy8A2dnZdOnShdmzZ5OSksL7778PwLBhw+jVqxezZ8/mjz/+oHXr1qxdu5Yvv/ySqVOnMmvWLAzDYPLkyRXx8laaKlWDUu4Y7EtmYyycQajb6dEOR9O0cpC/xuP1eivleqCimvjOOOMMvv76a+6///7Dnv/qq6947733CAaD7Ny5k7Vr1yIiNGzYkE6dOgGQkJBQ5rjOPfdcXC4XLpeLevXqkZ6eTuPGjXnzzTf57jtrsodt27axfv16ateujdPp5PzzzwegQ4cO/P777wD88ccfvPmm1ZHaMAwSExP57LPP+OuvvzjjjDMA67WuW7dumWOOpipVg/JdfTsArkmvQJa+hErTtPJlmibr1q3D4/Gwb98+ADZu3MjYsWP59ttvmTNnDueeey5erxelVKlHRWjdujVLly4t8nmXy5X3v2EYBINBZs6cyYwZM/j555+ZPXs27dq1y2sSdDgceTEcXL4oSimuvfZaZs2axaxZs1i0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8x3U+caHczsQzMK/ejTepY9g5u6IdniaplWS8pxuozymo9i8eTM9e/Ys0zYK8+yzz3LyySfTu3dvunbtytChQw8bWaIifPTRRzzwwAMVuo+DqlWCAgicdRnqpF4kTfMSt64B2BMw9y0hd/7t+DdNRpm6K7qmVWcHp9vo3bs3S5cuZf78+YwYMaJcptuoigYNGsSsWbOYP38+q1atKnbEjGNNlRrNvFyI4L3tQWIevZXYuZswGlxNVvJ+QukzCKyfSHDHr7haDcFIahvtSDWtRsj+7fzD75dxe7Fn/lTs8+U93QbAZ599xrBhwzhw4ACvvfYaHTt2pEuXLkybNo26detimiadO3fml19+IRQKce+997Jx40YARo8eTa1atQiFQtx1110sWLCARo0a8fHHH+PxeNiwYQP3338/u3fvJiYmhldeeYUGDRrQu3dv/vrrL2w2Gzk5OXTt2pWlS5ficDgKLbff78fr9eaNcL5s2TKGDh1KTk4OLVq0YNy4cSQlJdGvXz+eeuopOnbsyJ49ezj99NNZvnw5H330ET/++CO5ubls2LCBiy66iP/+978AfPjhh4wZM4YGDRrQsmXLYkcKKU/VrgYFQFwivtsfQYng+uZzYuwX4jr1acTTCJW9Ce+S+/GtHo3yZ0Q7Uk3Tylkk0208++yzzJ8/n40bNzJv3jwCgQAPPvggH3zwATNmzKB///6MHDkyb52cnBymTZvGiy++yODBg7HZbFx11VVMnjwZgOnTp9O2bVvq1KnDsGHD6NWrF7Nnz+aPP/6gdevWAKxfv57bbruNefPmkZiYyLffWpeT3n333Tz//PPMmDGDkSNHct9995GYmEjbtm3zakM//fQTZ555ZqHJ6fXXX6d37960atWKli1b5iXjgQMH8sQTTzBnzhzatGnDqFGjjli3sNdm4sSJzJkzhy+//JKtW7eyY8cORo0axdSpU/n6669Zu3ZthO9E2VW/GlRY6OSOBC66Huf/PsT91lOYIydgdHuLwKbPCGyaTHD7NIK75uJseSv2RuciUj1ztaZFW/4aT1UY8udoptv417/+BUCvXr04cOAA+/fvp3///lx33XUMGjSIDz/8kOuvvx6wanBvvmldhWMYBomJiezcuZPmzZvnJY+D019kZWWxYMECbrrpprx9+f1+AK644gq++uor+vTpw5QpU7jtttsKLc+g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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# NO CODE\n",
"sigma = 2\n",
"c_min = 4\n",
"c_max = 7\n",
"c = np.arange(c_min, c_max + .01, 0.01)\n",
"chernoff = np.exp(-0.5*((c/sigma)**2))\n",
"chebychev = 0.5 * ((sigma/c)**2)\n",
"plt.plot(c, 1 - stats.norm.cdf(c/sigma), label='Exact Chance', lw=2)\n",
"plt.plot(c, chernoff, lw=2, label='Chernoff Bound')\n",
"plt.plot(c, chebychev, lw=2, label='Chebychev Bound')\n",
"plt.xlim(c_min, c_max)\n",
"plt.xlabel('$c$')\n",
"plt.legend()\n",
"plt.title('Bounds on $P(X - \\mu \\geq c)$ when $X$ is normal $(\\mu, 2^2)$');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Chernoff Bound on the Left Tail ###\n",
"By an analogous argument we can derive a Chernoff bound on the left tail of a distribution. For a fixed $t > 0$, the function $g(x) = e^{-tx}$ is decreasing and non-negative. So for $t > 0$ and any fixed $c$,\n",
"\n",
"$$\n",
"P(X \\le c) = P(e^{-tX} \\ge e^{-tc}) \\le \\frac{E(e^{-tX})}{e^{-tc}} = \\frac{M_X(-t)}{e^{-tc}}\n",
"$$\n",
"\n",
"and therefore\n",
"\n",
"$$\n",
"P(X \\le c) \\le \\min_{t > 0} \\frac{M_X(-t)}{e^{-tc}}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sums of Independent Random Variables ###\n",
"The Chernoff bound is often applied to sums of independent random variables. Let $X_1, X_2, \\ldots, X_n$ be independent and let $S_n = X_1 + X_2 + \\ldots + X_n$. Fix any number $c$. For every $t > 0$,\n",
"\n",
"$$\n",
"P(S_n \\ge c) \\le \\frac{M_{S_n}(t)}{e^{tc}} = \\frac{\\prod_{i=1}^n M_{X_i}(t)}{e^{tc}}\n",
"$$\n",
"\n",
"This result is useful for finding bounds on binomial tails because the moment generating function of a Bernoulli random variable has a straightforward form. It is also used for bounding tails of sums of independent indicators with possibly different success probabilities. We will leave all this for a subsequent course."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}