diff --git a/SRECon16 - Theory.ipynb b/SRECon16 - Theory.ipynb new file mode 100644 index 0000000..b3efe10 --- /dev/null +++ b/SRECon16 - Theory.ipynb @@ -0,0 +1,2413 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "769dee7d-5d46-414a-8713-fae761d2cd10" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# #StatsForEngineers - Theory\n", + "\n", + "1. Summary Statistics\n", + "\n", + "2. Deviation Measures\n", + "\n", + "3. Measuring Distributions\n", + "\n", + "4. Mergability and Robustness" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "6d170ee1-0905-48d6-9874-c80e01fe9254" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# (1) Summary Statistics\n", + "\n", + "Problem statment:\n", + "\n", + "Given a dataset X:\n", + "\n", + "* Characterize the distribution in one or two values\n", + "* Characterization should be robust, i.e. not severly affected by single outliers\n", + "\n", + "Equivalent of an elevator pitch for a data sets.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "nbpresent": { + "id": "e45021d3-f422-4831-9e82-69a390cdfe53" + }, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## The Mean Value\n", + "\n", + "The _mean value_ of $X=[x_1, \\dots, x_n]$ is defined as\n", + "\n", + "$$ \\mu = mean(X) = \\frac{1}{n} \\sum_{i=1}^n x_i. $$\n", + "\n", + "- Represnets center of mass\n", + "- If the values are close together this is a good representative\n", + "- Can be easily affected by outliers" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# Computation of the mean value\n", + "\n", + "def mean(X):\n", + " return float(sum(X)) / len(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Medians\n", + "\n", + "A _median value_ for $x_1, \\dots, x_n$ is number $m$ such that\n", + " \n", + " $$ \\# \\{ i \\,|\\, x_i \\lt m \\} = \\# \\{ i \\,|\\, x_i \\gt m \\}. $$\n", + "\n", + "So the number of samples smaller than $m$ is equal to the number of samples larger than $m$.\n", + "(Both should be roughly $n/2$).\n", + " \n", + "Remark:\n", + "\n", + "* A Median always exists\n", + "* Median is not always unique\n", + "* Very robust to outliers\n", + "* Less \"precise\" then the mean for well behaved datasets" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# The central median\n", + "\n", + "Medians can be computed by sorting the dataset.\n", + "\n", + "`S = sorted(X)`\n", + "\n", + "Consider the following cases:\n", + "\n", + "- if `len(X)` is odd, then `S[(len(X)-1)/2]` is the (unique and) central median.\n", + "- if `len(X)` is even, then all values between `S[len(X)/2-1]` and `S[len(X)/2]` are median values. \n", + " The central median is defined as the mean of those two values.\n", + "\n", + "We write $median(X)$ for the central median of $X$.\n", + "\n", + "Example:\n", + "* `median([1,2,3]) = 2`\n", + "* `median([1,2]) = (1 + 2) / 2`" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# Computation of the median\n", + "def median_range(X):\n", + " S = sorted(X)\n", + " n = len(X)\n", + " lower_mid = int(math.floor((n-1)/2.))\n", + " upper_mid = int(math.ceil((n-1)/2.))\n", + " return (S[lower_mid], S[upper_mid])\n", + "\n", + "def median(X):\n", + " a,b = median_range(X)\n", + " return (a+b)/2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Challenge\n", + "\n", + "Just like the mean value, medians can be computed in linear time.\n", + "\n", + "Can you find the algorithm?\n", + "\n", + "Hint: Start with a quicksort." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "def plot_median_range(X):\n", + " plt.figure(figsize=(14,1))\n", + " a, b = median_range(X)\n", + " c = (a+b)/2.\n", + " sns.rugplot(X, color=\"green\", height=0.5)\n", + " plt.plot([a,a],[0.5,1],'r-')\n", + " plt.plot([b,b],[0.5,1],'r-')\n", + " plt.plot([c,c],[0.5,1],'r-')\n", + " plt.plot([a,b],[0.5,0.5],'r--')\n", + " plt.title(\"Median Range: {:.3f} .. {:,.3f}\".format(a,b))\n", + " plt.ylim([0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_median_range([1,2,3])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nhf8HQfwO9rYbXWsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_median_range([1,2,3,4])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Truncated Means\n", + "\n", + "* Truncated means \"interpolate\" between means and medianse.\n", + "* In many cases they provid the increased \"precision\" of means, while keeping the robustnes against outliers.\n", + "\n", + "To arrive at the k-truncated mean of a dataset X, perform the following steps:\n", + "* Remove a minimum and a maximum value from X, a total of k times.\n", + "* The remaining samples are called the k-truncation of X and denoted by $T_k X$.\n", + "* Caculate the mean value of the remaining samples.\n", + "\n", + "We deonte the k-truncated mean by `tmean(X,k)`." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def tmean(X,k):\n", + " X = list(X)\n", + " k = int(k)\n", + " if len(X) <= 2*k:\n", + " return None\n", + " for i in range(k):\n", + " X.remove(max(X))\n", + " X.remove(min(X))\n", + " return mean(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "22.2\n", + "3.33333333333\n", + "3.0\n" + ] + } + ], + "source": [ + "# Truncated mean examples\n", + "print tmean([1,2,3,5,100],0)\n", + "print tmean([1,2,3,5,100],1)\n", + "print tmean([1,2,3,5,100],2)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": false, + "nbpresent": { + "id": "150f1522-96cb-4ea6-ba08-e9a4acb9554c" + }, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "# Plot\n", + "def mark(m,height=1,style='r'):\n", + " plt.plot([m,m],[0,height],style)\n", + "\n", + "def plot_mean_median(X):\n", + " plt.figure(figsize=(14,1))\n", + " sns.rugplot(X, color='grey', height=0.5)\n", + " mark(mean(X)); print \"mean: {:4.2f} (red)\".format(mean(X))\n", + " k = int(math.ceil(10*len(X)/100.))\n", + " mark(tmean(X,k), style='b'); print \"tmean(X,{:2}): {:4.2f} (blue)\".format(k,tmean(X,k))\n", + " mark(median(X), style='g'); print \"median: {:4.2f} (green)\".format(median(X))\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean: 0.10 (red)\n", + "tmean(X,50): 0.09 (blue)\n", + "median: 0.05 (green)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzMAAABaCAYAAACMuAi5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEG5JREFUeJzt3WGsXGlZwPH/nS5WrO0uXa9iorAx6BMMuB9cwtKUBZX9\nACxJUYisrIFKBbcR0SUoVZDEBGIkNDTgDYUVWBVZZaUhglaCYY1bcQl8MA3is2CzGhKM16172wC7\nbjvjh7lzPZ3OzHnPnZl77rT/35fOOe8573nOe55zzjyduXOWer0ekiRJkrRoOm0HIEmSJEmbYTEj\nSZIkaSFZzEiSJElaSBYzkiRJkhaSxYwkSZKkhWQxI0mSJGkhFRUzEfHciPj8iPkvi4gvRsSpiDg0\n+/AkSZIkabTaYiYi3gJ8CNg5NP8a4CjwIuCFwOsjYnkOMUqSJEnSZUo+mfk68PIR858JfC0zz2Xm\nE8ADwC2zDE6SJEmSxqktZjLzBHBhRNMeYK0yfR64dkZxSZIkSdJE10yx7jn6Bc3AbuDRupV6vV5v\naWlpis1Kkq4WN7z3BgAe/vWH/3/eDcA3vsHDP7QfHn54xFqSpCtAUcHQpJgZ7vCrwDMi4jrg2/S/\nYvbu2k6WllhdPd9gs7oSLS/vNg8EmAvqG5cH3W4P4JK2bncXHXpc7PY4a+5cUbweCMwD9S0v7y5a\nrkkx0wOIiNuBXZl5d0TcBXyWfqFzd2Z+s2mgkiRJkrQZRcVMZv47sG/99ccr8z8DfGY+oUmSJEnS\neD40U5IkSdJCspiRJEmStJAsZiRJkiQtpNq/mYmIJWAFuBF4DDiUmWcq7a8G7qL/LJqPZOYH5hSr\nJEmSJG0o+WTmALAzM/cBR4CjQ+3vBn4a2A+8OSJ8cKYkSZKkuSspZvYDJwEy80HgpqH2fwaeAjx5\nfbo3s+gkSZIkaYySYmYPsFaZvhAR1fW+AnwZOA18OjPPzTA+SZIkSRqp5Dkz54DqIzg7mdkFiIhn\nAy8Fng58C/hYRPxcZv7lpA5Ln+ipK5t5oAFzQTA6DzqdpcvaOh2AJXZ0lsydK5DHVGAeqFxJMXMK\nuA24LyJupv8JzMAa8G3g8czsRcR/0f/K2USrq+c3E6uuIMvLu80DAeaC+sblQbfb/+Zyta3b3UWH\nHhe7Pc6aO1cUrwcC80B9pQVtSTFzArg1Ik6tTx+MiNuBXZl5d0R8EHggIh4H/g346CbilSRJkqRG\naouZzOwBdw7NfqjSfhw4PuO4JEmSJGkiH5opSZIkaSFZzEiSJElaSBYzkiRJkhaSxYwkSZKkhVT7\nAwARsQSsADcCjwGHMvNMpf05wHvWJ/8TuCMz/3cOsUqSJEnShpJPZg4AOzNzH3AEODrU/kHgtZl5\nC3CS/gM0JUmSJGmuSoqZ/fSLFDLzQeCmQUNE/BjwCHBXRNwP7M3Mr80hTkmSJEm6RMlDM/cAa5Xp\nCxHRycwu8H3A84DDwBng0xHxpcy8f1KHpU/01JXNPNCAuSAYnQedztJlbZ0OwBI7OkvmzhXIYyow\nD1SupJg5B1QzalDIQP9Tma9n5kMAEXGS/ic390/qcHX1fPNIdUVZXt5tHggwF9Q3Lg+63R5w6X2j\n291Fhx4Xuz3OmjtXFK8HAvNAfaUFbcnXzE4BLwGIiJuB05W2M8D3RsSPrE8/H/hKeZiSJEmStDkl\nn8ycAG6NiFPr0wcj4nZgV2beHRGvAz4eEQD/mJl/M6dYJUmSJGlDbTGTmT3gzqHZD1Xa7weeO9uw\nJEmSJGkyH5opSZIkaSGVfM1MU7r33nt41ate03iZkvXmbd4xzKr/QT/D/w5vY1R7yfzBa2Bj+vjx\nY7zhDW/aVLwrK0c5fPiuy/q89957WFt79LJ+x+3D8LrDY3n8+DGuvfY6gEv6HSw72Idx+z8c0/Hj\nx7h48SJ7915/2XiPinu4n7NnH7lkv9fWHuVtb3vbRpzVfTl79pGN7VT3pbrvg/2vjudgPYCzZx8B\n4PDhu0buz8rK0Y1tjOq/um+DtsEY7NixY2NsBzEMtlvtbziGlZX+o7p27NgBsDH+1fEb7M+oPDl+\n/NjGvgzWrR7f4Xir666sHGXHjh0bxxLY2JfqeAz6Azb2Ye/e6zf6Hfw7OJ6D4zNpXKpjt3fv9Rvj\nMui3mgdra49uLHfu/Bo7Ojs2Yu/3fZhut8f58+cuWWdU/lVzZVz8w8e7uvwgjuH+q7k26twa3u/B\nmFfHs/pvddwGYz/oczBug/Eade5Vx7V6TKrHuNrnIM9Gbbd6/Ko5O8jJ6nk5fD0aHNdBTo26Noy7\n7t977z288Y2/eskxGJh0vale54aP4/DrUde86r4O4hiMxWDshq971fwddw+bdN0e3qfBfozL4VHX\nweHpUfsyyIHh/Bx1rxsX1/C41J1ndfeqcWNVXWZlZYVXvvIXxy5ft/6k5aZ5zzHpvcNA2+/bqrbD\n+8itYDGzBQYXvabLlKw3b/OOYVb9D/oZ/nfc6+Ht1s0f1TZ4czGNSduri6Nk3YsXL07MrcE+jOtz\neN645Zvm+KixrNvH6jJ14zQpnnHjNq7/4XmDMRg1tuPiHaWaP3XjN+oY1O3PuLGoxl8Sy7j+JvU7\naYyH1500Zhvrdcf03evVjnPJuT4pN+vmlVwzRo3NqLwatx+jjk/dfgyvN+56VZfHo5Rcj0Yd67r+\nN3t+1+1DyTVsUnyT1inNvZJ8GXeMJp0jddfFcdeLumPe9D1Jk3OkZP3V1dXadUpj28xypes32cc2\nbNe4Zq22mImIJWAFuBF4DDiUmWdGLHcceCQzf3vmUUqSJEnSkJK/mTkA7MzMfcAR4OjwAhHxBuBZ\nM45NkiRJksYqKWb2AycBMvNB+g/F3BARzwOeAxyfeXSSJEmSNEbJ38zsAdYq0xciopOZ3Yh4KvAO\n+p/e/HzpRkuf6HklKdnnUctsh7GaVwyDfmfV/3B/1X5HvR7ebt38SX1NE2/JNict3ySeSeNQdzxK\nxmuzeT6prfR4TNNv6Xg2HZum69blaZPcLOm7JL46peM+y+tIp9Oh2zCWcTZ7/pT2M811ri5nSvOx\ntK1u2abXnc2cS3WxTLPd0ntESRx18+piaRrHtPelJjk5TX5NiqXp/WGW50zTZZqsP21uz9t2i2ce\nSoqZc0B1JDqZObiPvBK4Hvhr4AeBJ0fEv2bmH0/qcHX1/GZiXWgl+zxqme0wVvOIYXl590a/s+p/\nuL9qv6NeD2+3bv6kvqaJt2Sbk5ZvEs+kcag7HiXjtdk8n9RWejym6bd0PJuOTdN16/K0SW6W9F0S\nX53ScZ/ldaTbHVXKbG4bmz1/SvuZ5jpXlzOl+VjaVrds0+vOZs6lulim2W7pPaIkjrp5dbE0jWPa\n+1KTnJwmvybF0vT+MMtzpukyTdafNrfnbbvF00RpIVZSzJwCbgPui4ibgdODhsx8H/A+gIh4DRB1\nhYwkSZIkzUJJMXMCuDUiTq1PH4yI24FdmXn3/EKTJEmSpPFqi5nM7AF3Ds1+aMRylz/lSpIkSZLm\npOTXzCRJkiRp27GYkSRJkrSQLGYkSZIkLaTav5mJiCVgBbgReAw4lJlnKu23A28CngBOZ+bhOcUq\nSZIkSRtKPpk5AOzMzH3AEeDooCEivhv4PeAFmfl84LqIuG0ukUqSJElSRUkxsx84CZCZDwI3Vdoe\n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\nJC2k/wMF8snAHbMYuQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean: 1316.31 (red)\n", + "tmean(X, 8): 1315.61 (blue)\n", + "median: 1399.66 (green)\n" + ] + }, + { + "data": { + "image/png": "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\nqu2gdqP60yp9Vdm+ediyuuetSmxNtl2rzbB5a+VrnPGuTKyT6C/KxjfJe3FaphlLk/se55rTeMoU\nO4eA3iwsZuZK9+8fBx4P/CXwDcDjIuIzmfnOYRvcv//Rv7oz71aPucyxVzk//W3XWnfQ/HHWLdum\n7LH0tqt7/FWvqzqxNW15eanStbGWWb2nylx3Zddrou0gvTmYlqb2P3g7naH7GLbvce/rqupeL3W3\nvVabUW0HtRvVn1bpq8r2zcOW1TlvZe6FusdR974fNm+tfI0z3pWJte3+YlQexhn3ypp2n9hrWrE0\nPTaMc82dqJoqAssUO3uAi4BbIuIs4M7VBZl5PXA9QES8GIhRhY4kSZIkTUKZYmcXcH5E7OlOXx4R\nlwAbMnNne6FJkiRJUn0ji53M7ABb+2bvHdDOpyJJkiRJmhllfo1NkiRJko47FjuSJEmS5pLFjiRJ\nkqS5NPI7OxGxAGwHzgAeArZk5r6e5ZcAVwFHgDsz86UtxSpJkiRJpZV5Z+diYH1mbgKuAbatLoiI\nk4HfAJ6TmecAp0bERa1EKkmSJEkVlCl2NgO7ATLzDuDMnmUPA5sy8+Hu9DqKd38kSZIkaarKFDsb\ngYM900cjYhGKn6XOzP0AEfEyimfv/E3zYUqSJElSNWUeKnoIWOqZXszMldWJ7nd6Xgd8O/AjZXa6\nvLw0utGcWT3mMsde5fz0t11r3UHzx1m3bJuyx9Lbru7xV72u6sTWhirXxqhtzJoy113Z9Zpo2+Y2\nZmH/g7dzcOg+hu173Pu6qrrXS91tr9VmVNtB7Ub1p1X6qrJ987Bldc9bldiabLtWm2Hz1srXOONd\nmVgn0V+UjW+S9+K0TDOWJvc9zjWn8ZQpdvYAFwG3RMRZwJ19y98K/G9mXlx2p/v3Hy4f4ZxYPeYy\nx17l/PS3XWvdQfPHWbdsm7LH0tuu7vFXva7qxNa05eWlStfGWmb1nipz3ZVdr4m2g/TmYFqa2v/g\n7XSG7mPYvse9r6uqe73U3fZabUa1HdRuVH9apa8q2zcPW1bnvJW5F+oeR937fti8tfI1znhXJta2\n+4tReRhn3Ctr2n1ir2nF0vTYMM41d6JqqggsU+zsAs6PiD3d6cu7v8C2AfgEcDlwW0R8iGJUvS4z\n/7yR6CRJkiSpppHFTmZ2gK19s/dW2YYkSZIkTZoPFZUkSZI0lyx2JEmSJM0lix1JkiRJc2nk9226\n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\njiRJkqS59H/HynPjguL96AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean: 45.77 (red)\n", + "tmean(X,10): 30.52 (blue)\n", + "median: 29.10 (green)\n" + ] + }, + { + "data": { + "image/png": "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\nR5IkSdJQ+X8fOM3ZIfpXqgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Normally distributed data\n", + "Z = [ np.random.normal() for x in range(500) ]\n", + "plot_mean_median(Z)\n", + "\n", + "# Mean value of some request rates\n", + "X = np.loadtxt(\"DataSets/RequestRates.csv\", delimiter=\",\")[:,1]\n", + "plot_mean_median(X)\n", + "\n", + "# Request Latency Dataset\n", + "Y = np.genfromtxt(\"DataSets/WebLatency.csv\", delimiter=\",\")[:,2][0:500] - 85\n", + "plot_mean_median(Y[0:100])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean: 41.60 (red)\n", + "tmean(X, 1): 35.00 (blue)\n", + "median: 3.00 (green)\n" + ] + }, + { + "data": { + "image/png": "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\n1hBOR/MAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Mean values can be atypical\n", + "plot_mean_median([1,2,3,100,102])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "\n", + "# Mean and Median Values in Monitoring\n", + "\n", + "* Spike Erosion in Graphs [demo](https://demo-hh2.circonus.com/trending/graphs/view/6944e456-b711-e532-def1-b92c8a118898#set-OqHjffwi)\n", + "* Request latency mean values can be missleading [demo](https://demo-hh2.circonus.com/trending/graphs/view/359c41b6-025e-656f-d490-e5548191033b)\n", + "* Rolling and windowed means as smoothing techniques [demo](https://demo-hh2.circonus.com/trending/graphs/add)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# (2) Deviation Measures\n", + "\n", + "Goal measure \"typical\" deviation form a central value." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "1. The _maximal deviation_ is defined as\n", + "\n", + " $$ maxdev(X) = max \\{ |X[i] - \\mu| \\,|\\, i=1,\\dots,n\\}.$$\n", + "\n", + "2. The _mean absolute deviation_ is defined as\n", + " \n", + " $$ mad(X) = \\frac{1}{n} \\sum_{i=1}^n |X[i] - \\mu|.$$\n", + "\n", + "3. The _standard deviation_ is defined as\n", + "\n", + " $$ \\sigma(X) = stddev(X) = \\sqrt{\\frac{1}{n} \\sum_{i=1}^n (X[i] - \\mu)^2}.$$\n", + "\n", + "4. The _inter quartile range_ is defined as difference of the 75- and 25-Percentile:\n", + "\n", + " $$ IQR(X) = P(75,X) - P(25,X) $$\n", + "\n", + "Properties:\n", + "* Measure the 'typical' displacement from the mean value.\n", + "* Standard deviation is popular because it has extremely nice mathematical properties.\n", + "* The IQR is very robust to outliers." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def max_dev(X):\n", + " m = mean(X)\n", + " return max(abs(x - m) for x in X)\n", + "\n", + "def mad(X):\n", + " m = mean(X)\n", + " return sum(abs(x - m) for x in X) / float(len(X))\n", + "\n", + "def stddev(X):\n", + " m = mean(X)\n", + " return math.pow(sum((x - m)**2 for x in X) / len(X), 0.5)\n", + "\n", + "def IQR(X): return percentile(75,X) - percentile(0.25,X)\n", + "\n", + "# computation of percentiles is given below" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "# Plotting helper function\n", + "def plot_mean_dev(X, m, s, new_canvas=True):\n", + " print \"center = \", m\n", + " print \"deviation = \", s\n", + " if new_canvas: plt.figure(figsize=(14,1))\n", + " sns.rugplot(X, color='grey', height=0.5)\n", + " plt.plot([m,m],[0,1],'r-' )\n", + " plt.plot([m-s,m-s],[0,1],'b-')\n", + " plt.plot([m+s,m+s],[0,1],'b-')\n", + " plt.plot([m-s,m+s],[0.5,0.5],'b--')\n", + " if new_canvas: plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximal deviation\n", + "center = 0.0994650556128\n", + "deviation = 2.63265757082\n" + ] + }, + { + "data": { + "image/png": "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\nF7C8fHWnfdF3Mb7luuj3uCmud7uO79oyf3mMetsXOXr7L9daO//Uxn53dp03HGZlZZnp6Zmumlhc\nvJvjxx/jwIELOH78Maampti//3xWV9/aGfuiHlZWlpmfb1+vYiyL4xS102rRGaeZmZnO2JSvcVFv\nhaIeiut18uQJgK663qxHmJnZfMwU98/ueycsL18N0KmzIl8xPuV9+l2rYp/Fxbu6tpXvz72Pl5WV\nZRYX7+7Tlk774voW16I3dznPZmY6NT0/P9c19sW9ZXX15i2fp8vnWb5ehd577lbPKeU2m/f0ic4+\n5ftWcf8pbN4vuuuz9xr05up3jRYX72Rl5erOuPduK5TPuXf8t1K+XkXuOq9/qhyjaDfK66re/Xvr\nqHf8m7YXXkeeDk5mToPp6WUeemhqYJvixgibM+b5+Q93vQjbylYz7J1of/z4Y2PR//z8h4FbOuNY\nHs8bbtgcx2JMi/blHP3ylK/B/Pxmn9B+gbBVnmH55+fnSjk2X2yXc3e373cO3W2Lfbvzz5Xyntp2\nbW2tq/9+NVfOtLa2xs03z3Uyl/cr99+bv8hd3u/48c02a2trXfmLtuWxmZ9f63t9+41nu03/PDfc\nUM5RPpf+/Rfte/dZWzv1eh0//lin3spj39Y9ruX66a2D9r6n1ifATTdt9ls+52L8e89h0Pn2Zuk9\n3+5z69//5vWd69u+3LZcP6e6vasOiv36tT98+BZ4YavTZ7/7Z6EYn0H5e2tzq/zd59s7Tqc+hov7\nyWZ9zpW2dfddnEdvvbWPNdfVZ/nffter2K98Xfvdr/rl6Xe+3XVT7NN9vsW/5evV/ZjsX8+999vb\nb7+d972v+/5Q3m+rx0tv+62v71zX/bP3Mdx7/+nX51bPL1u1L/986v3kw32vV2+eU2thc59yrt48\nw65Xv3ru9/xS7HPTTXN9z3er9v2uVz/98tR5/VPlGDD4eg3qv9Cbq9/jcZT+d7r9dvJs9W7OXjZ0\nMhMRE8A8cBHwBHBtZh7r024BeCwz39O7TZIkSZJ2WpWPZr4COC8zLwVuBY70NoiI64AX73A2SZIk\nSdpSlcnMQeA+gMx8kPaXYnZExCuAlwELO55OkiRJkrZQ5W9mZoCTpeWnI2IyM9cj4jnA7bTfvfnl\nqget+o2eZ4KNv72udM792uyFsdqtDEW/O9V/b3/lfvv93HvcYesH9TVK3irHHNS+Tp5B4zDselQZ\n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\netFJysJ5KQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Standard Deviation\n", + "center = 0.0994650556128\n", + "deviation = 0.954918342285\n" + ] + }, + { + "data": { + "image/png": "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\n3o3M4QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Absolute Deviation\n", + "center = 0.0994650556128\n", + "deviation = 0.779523036406\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Median IQR\n", + "center = 0.0541148890544\n", + "deviation = 1.61999449286\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Standard deviation is a good deviation for normal distributed data\n", + "\n", + "print \"Maximal deviation\"\n", + "plot_mean_dev(Z,mean(Z),max_dev(Z))\n", + "\n", + "print \"Standard Deviation\"\n", + "plot_mean_dev(Z,mean(Z),stddev(Z))\n", + "\n", + "print \"Mean Absolute Deviation\"\n", + "plot_mean_dev(Z,mean(Z),mad(Z))\n", + "\n", + "print \"Median IQR\"\n", + "plot_mean_dev(Z,median(Z),IQR(Z)/2)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximal deviation\n", + "center = 1316.30863471\n", + "deviation = 738.072957089\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Standard Deviation\n", + "center = 1316.30863471\n", + "deviation = 374.572363954\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Absolute Deviation\n", + "center = 1316.30863471\n", + "deviation = 327.4656915\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Median IQR\n", + "center = 1399.66320801\n", + "deviation = 452.709228516\n" + ] + }, + { + "data": { + "image/png": "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\nJV9vT6zX7u133Ds4w/andVpJsYxj3L+zNJ6Bg52ImAMWgbOBh4Atmbm/S7ntwIHMfEXlUUqSJEnS\nkMo8xnY5sC4zNwE3At/wrFRE/CrwgxXHJkmSJEkjKzPY2QzsAsjMuyheGvr/IuJ84OnA9sqjkyRJ\nkqQRlfnMzkbgYNv0sYiYz8zliPg24NUUd39eUHanVb0RdTVpHXOZYx+mfjrL9lq32/xx1i1bpuyx\ntJcb9fiHPa96lZ+fP3F53edrFftZqW2qzHlXdr0qyta5jZWw/1G202+dcdt1FbFMsm7KtsVu5QZd\nT4e5VpW9NvdbNmq9DRNblWV7lek3r1e+xunvysQ6ietF2fhGjaWznxtm/5M2zViq3Pc455zGU2aw\nc4gTP7U4n5mtr835OeDxwN8C3w48LiK+kJnv6rfBpaXDo8S6qrWOucyxD1M/nWV7rdtt/jjrli1T\n9ljay416/MOeV73Kt76GuPWh9TrP1+LD8eXPjV5Wapsqc96VXa+Kst2052Baqtr/KNvpt8647bqK\nWCZZN2XbYrdyg66nw1yryl6b+y0bpd7KtIVRj2PUdt9vXq98jdPflYm17uvFoDyM0++1dPZz/fYx\nbdOKpeq+YZxz7mRV1SCwzGBnD3AZcHtEnAfc3VqQmTcDNwNExAuBGDTQkSRJkqRJKDPY2QlcHBF7\nmtNXR8QVwPrM3FFfaJIkSZI0uoGDncxsAFs7Zu/rUs63IkmSJElaMcp8G5skSZIkrToOdiRJkiTN\nJAc7kiRJkmbSwM/sRMQcsAicDTwEbMnM/W3LrwCuB44Cd2fmtTXFKkmSJEmllbmzczmwLjM3ATcC\n21oLIuIU4PeAZ2XmM4HTIuKyWiKVJEmSpCGUGexsBnYBZOZdwLltyx4GNmXmw83ptRR3fyRJkiRp\nqsoMdjYCB9umj0XEPBRfS52ZSwAR8RKKd+/8Q/VhSpIkSdJwyrxU9BCwoW16PjOXWxPNz/S8Dvg+\n4KfL7HRhYcPgQjOmdcxljn2Y+uks22vdbvPHWbdsmbLH0l5u1OMf9rzqVX5+/sTldZ+vVexnpbap\nMudd2fWqKFvnNlbC/kfZTr91xm3XVcQyybop2xa7lRt0PR3mWlX22txv2aj1NkxsVZbtVabfvF75\nGqe/KxPrJK4XZeMbNZbOfm6Y/U/aNGOpct/jnHMaT5nBzh7gMuD2iDgPuLtj+S3A/2bm5WV3urR0\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "X = np.loadtxt(\"DataSets/RequestRates.csv\", delimiter=\",\")[:,1]\n", + " \n", + "print \"Maximal deviation\"\n", + "plot_mean_dev(X,mean(X),max_dev(X))\n", + "\n", + "print \"Standard Deviation\"\n", + "plot_mean_dev(X,mean(X),stddev(X))\n", + "\n", + "print \"Mean Absolute Deviation\"\n", + "plot_mean_dev(X,mean(X),mad(X))\n", + "\n", + "print \"Mean Median IQR\"\n", + "plot_mean_dev(X,median(X),IQR(X)/2)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximal deviation\n", + "center = 47.9512\n", + "deviation = 1175.0488\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Standard Deviation\n", + "center = 47.9512\n", + "deviation = 92.4618512607\n" + ] + }, + { + "data": { + "image/png": "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\nf/Si1FPhnTCKAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Absolute Deviation\n", + "center = 47.9512\n", + "deviation = 34.9059744\n" + ] + }, + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Median IQR\n", + "center = 28.2\n", + "deviation = 9.5\n" + ] + }, + { + "data": { + "image/png": "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\nNF3dyy++AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print \"Maximal deviation\"\n", + "plot_mean_dev(Y,mean(Y),max_dev(Y))\n", + "\n", + "print \"Standard Deviation\"\n", + "plot_mean_dev(Y,mean(Y),stddev(Y))\n", + "\n", + "print \"Mean Absolute Deviation\"\n", + "plot_mean_dev(Y,mean(Y),mad(Y))\n", + "\n", + "print \"Mean Median IQR\"\n", + "plot_mean_dev(Y,median(Y),IQR(Y)/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Caution with Standard Deviation\n", + "\n", + "- Everybody Learns about standard deviation in school\n", + "- Beautiful mathematical properties!\n", + "- Everybody knows \n", + " - \"68% of data falls within 1 std-dev of the mean\"\n", + " - \"95% falls within 2 std-dev of the mean\"\n", + " - \"99.7\" falls within 3 std-dev of the mean\"\n", + "* \"Problem is: this is utter nonsense\". Only true for normally distributed data.\n", + "\n", + "* Not good for measuring outliers!\n", + "\n", + "\n", + "_Source:_ Janert - Data Analysis with Open Source Tools" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## War Story:\n", + "\n", + "- Looking at SLA for DB response times\n", + "- Outlier defined as value larger than $\\mu + 3\\sigma$\n", + "- Look at code: Takes '0.3' percentile!\n", + "- So always have outliers.\n", + "- And 0.3-percentile was way too large (hours of latency).\n", + "- Programmer changed code for 1%, 5%, 10% quantiles.\n", + "- Finally handcoded a threshold\n", + "- The SLA was never changed\n", + "\n", + "Source: Janert - Data Analysis with Open Source Tools" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Tukey's outlier Definition\n", + "\n", + "A k-outlier is a data point X which is either\n", + "\n", + "* larger than `P(75) + k * IQR(X)` or\n", + "* smaller than `P(25) - k * IQR(X)`.\n", + "\n", + "An outlier (without k) is an 1.5-outlier." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def outliers(X, k=1.5):\n", + " iqr = IQR(X)\n", + " lower_bound = percentile(25,X) - k * iqr\n", + " upper_bound = percentile(75,X) + k * iqr\n", + " out = []\n", + " for x in X:\n", + " if x < lower_bound: out.append(x)\n", + " if x > upper_bound: out.append(x)\n", + " return out" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "def outlier_plot(X):\n", + " plt.figure(figsize=(14,2))\n", + " sns.rugplot(X, color=\"green\", height=0.5)\n", + " a,b = percentile(25,X), percentile(75,X)\n", + " O = outliers(X)\n", + " print \"IQR:\", b-a\n", + " print \"Outlier count:\", len(O)\n", + " mark_range(a,b)\n", + " for o in O:\n", + " plt.plot([o,o],[0.7,0.8],'b--')\n", + " plt.ylim([0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IQR: 1.38359374912\n", + "Outlier count: 0\n" + ] + }, + { + "data": { + "image/png": "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\nV5/7uOsBnDW3Kv5xufH44cf4xl1Hz4y9/f4bzsRVj7nqo1rjK/ds5tJLNpxpr84Zd92qfqo5VfOo\nX4cBAzZcsvFMXxsu2cCJUye49JINZ/ZV86mPVeXTaJ/Vv1fs2cQ37jp6Jp56PgBn9VVdl2oOV+7Z\nfNY4lfr1eurUCQYMuGbLtVMfN1VOVXlUzafqZzTX6rlcH7fars6vP37GPQ6q/urrV1+vet5UfVW5\nA3Dfs77G6cEp3lLbNy4X69eh/nir1qiKtZ5Po+dXaw6cifVfjhxkUFv76tx6n6P3gfpazXoeqsc0\nem2r9alMuhfOuuePO3b0Os+Kr4pxXG5Nex6uzHr+rPJiWiwl85r13FyPp+Q5pmkMpa/xpl3LSefU\n75El47R5PdSFNuvf5jXo+XRBFzOPH35s6nbpefM6to2q//o4K5lHm3injT0uvjZxNRmzSX/T1mDS\nedPyps2alp4zbpym45W2Tcurkj5WEuuJU8cbx1adV+2r/1w/tt73uPbB8sukaXGNG39czNW+XdsP\nA3DHmD7G9Teu39F/x/08a31H5zbr/jdtvuP2DRg0Pmd0HqPXoT6v47U1aJKXpfOd9DgeneO0/B83\nl2nxTbpuJes4aXtaXpQ+X4w+Xga18uGeW04t//T/+5rk4rgcHs35cXk7K9Zx50+a/zTjYhqNe1Z/\nbZ/vmsRXP740t5s8X6z0tUvT5/H69rxeNzV5jddmHSblStN70Voz79eBa4G/ZiZJkiSplyxmJEmS\nJPWSxYwkSZKkXrKYkSRJktRLFjOSJEmSemnmp5lFxAKwB7gOOAbsysyDY47bC3wzM39l7lFKkiRJ\n0oiSd2Z2ABszcytwL7B79ICIeAPwvDnHJkmSJEkTlRQz24CHADLzAHB9vTEiXgS8ENg79+gkSZIk\naYKSYmYTcKS2fTIi1gFExDOAtwO/ACzMPzxJkiRJGm/m38wAR4HF2va6zDy9/PNPA98P/Dnwg8DT\nIuLxzPy9aR0uLS1Oa56r0bFKx24S42rPp+q/Ps5K5tE23nFxTNvfJrZJ7U2OLWmbFXNJ3jTNraZ9\nls6/6TUuXY+StZm2jtPmW7rus/ppEsPocW0fQ22uUUlcTcdr09fo/nndD0v6aXOfKB237bUtHavJ\nOrbpZ1J721wv6a9kzVZyj5vXPaH0+Hk8DzW5L7UZq815pfebtmu70tcvTe8h83pen3RMmz5L1me1\n7q1dWo3HSldKipn9wK3AAxFxI/Bo1ZCZ7wHeAxARrwViViEDcOjQk+2ibWF0rNKxm8S42vOp+q+P\ns5J5tI13XBzT9reJbVJ7k2NL2mbFXJI3TXOraZ+l8296jUvXo2Rtpq3jtPmWrvusfprEMHpc28dQ\nm2tUElfT8dr0Nbp/XvfDkn7a3CdKx217bUvHarKObfqZ1N4210v6K1mzldzj5nVPKD1+Hs9DTe5L\nbcZqc17p/abt2q709UvTe0hpXEtLi41zoiSets+Xq3Vv7dJqPFbmrbRoKilmHgRuiYj9y9s7I+I2\n4LLM3NcyPkmSJElakZnFTGYOgDtHdj8x5riPzCsoSZIkSZrFL82UJEmS1EsWM5IkSZJ6yWJGkiRJ\nUi9ZzEiSJEnqJYsZSZIkSb1kMSNJkiSplyxmJEmSJPWSxYwkSZKkXrKYkSRJktRLFjOSJEmSesli\nRpIkSVIvWcxIkiRJ6iWLGUmSJEm9ZDEjSZIkqZfWzzogIhaAPcB1wDFgV2YerLXfBrwJeAp4NDPv\nWqVYJUmSJOmMkndmdgAbM3MrcC+wu2qIiO8Bfh14SWa+GLg8Im5dlUglSZIkqaakmNkGPASQmQeA\n62ttx4GtmXl8eXs9w3dvJEmSJGlVlRQzm4Ajte2TEbEOIDMHmXkIICLeCFyWmZ+Zf5iSJEmSdLaZ\nfzMDHAUWa9vrMvN0tbH8NzW/CTwX+MmSQZeWFmcfNCejY5WO3STG1Z5P1X99nJXMo2284+KYtr9N\nbJPamxxb0jYr5pK8aZpbTfssnX/Ta1y6HiVrM20dp823dN1n9dMkhtHj2j6G2lyjkriajtemr9H9\n87oflvTT5j5ROm7ba1s6VpN1bNPPpPa2uV7SX8mareQeN697Qunx83geanJfajNWm/NK7zdt13al\nr1+a3kPm9bw+6Zg2fZasz2rdW7u0Go+VrpQUM/uBW4EHIuJG4NGR9vcD383MHaWDHjr0ZHmEKzQ6\nVunYTWJc7flU/dfHWck82sY7Lo5p+9vENqm9ybElbbNiLsmbprnVtM/S+Te9xqXrUbI209Zx2nxL\n131WP01iGD2u7WOozTUqiavpeG36Gt0/r/thST9t7hOl47a9tqVjNVnHNv1Mam+b6yX9lazZSu5x\n87onlB4/j+ehJvelNmO1Oa/0ftN2bVf6+qXpPaQ0rqWlxcY5URJP2+fL1bq3dmk1HivzVlo0lRQz\nDwK3RMT+5e2dy59gdhnwCLAT+JuI+CwwAO7LzE82D1mSJEmSys0sZjJzANw5svuJJn1IkiRJ0rz5\npZmSJEmSesliRpIkSVIvWcxIkiRJ6iWLGUmSJEm9ZDEjSZIkqZcsZiRJkiT1ksWMJEmSpF6ymJEk\nSZLUSxYzkiRJknrJYkaSJElSL1nMSJIkSeolixlJkiRJvWQxI0mSJKmXLGYkSZIk9ZLFjCRJkqRe\nWj/rgIhYAPYA1wHHgF2ZebDW/grgbcBTwIcyc98qxSpJkiRJZ5S8M7MD2JiZW4F7gd1VQ0SsX96+\nGbgJeH1ELK1CnJIkSZJ0lpJiZhvwEEBmHgCur7VdC3w5M49m5lPAw8D2uUcpSZIkSSNKiplNwJHa\n9smIWDeh7Ulg85xikyRJkqSJFgaDwdQDIuLdwBcy84Hl7X/LzGct//x84Dcy8+XL27uBhzPzE6sb\ntiRJkqSLXck7M/uBlwFExI3Ao7W2x4DnRMTlEbGB4a+YfWHuUUqSJEnSiJJ3ZqpPM/vR5V07gRcA\nl2Xmvoh4OfB2YAH43cx83yrGK0mSJElAQTEjSZIkSWuRX5opSZIkqZcsZiRJkiT1ksWMJEmSpF5a\nf74HjIjvBf4QeDpwHHhtZn79fMehbkXEJuAPGH5X0aXAPZn5d91Gpa5ExCuBV2Xma7qORedP7QNm\nrgOOAbsy82C3UakrEXEDw697+LGuY1E3ImI98EHgKmAD8I7M/NNOg9J5t/x9lh8AAjgN/HxmfmnS\n8V28M/NzwN9n5kuAjwK/3EEM6t7dwGcy8yaGn5D3O92Go65ExG8B72D4iYi6uOwANmbmVuBeYHfH\n8agjEfFmhi9eNnYdizp1O/DfmbkdeCnw3o7jUTdeAQwycxvwNuCd0w4+78VMZt7H8IULwLOA/znf\nMWhN2A3sXf75UuC7Hcaibu0H7uw6CHViG/AQQGYeAK7vNhx16CvAK7sOQp37Y4YvXmH4GvWpDmNR\nRzLzk8DrlzevYkatsKq/ZhYRPwv8EjBg+L+uA2BnZj4SEX8FPA+4ZTVjUPdm5MEzgN8HfrHDEHUe\nTMmDj0fESzoNTl3ZBBypbZ+MiHWZebqrgNSNzHwwIp7ddRzqVmZ+ByAiFoGPA7/abUTqSmaejogP\nM3wH/1XTjl3VYiYzP8jwdx/Htf1ERATwKeA5qxmHujUpDyLi+Qz/fuqezHz4vAem82ra/UAXraPA\nYm3bQka6yEXEDwGfAN6bmX/UdTzqTmbeERFXAF+MiGszc+xv8Zz3XzOLiLdGxO3Lm98GTp7vGNS9\niPgRhm8n/0xmfrrreCR1Yj/wMoCIuBF4tNtwtAb4t3MXsYi4EvhL4C2Z+ZGu41E3IuL2iHjr8uYx\n4BTDDwIY67x/mhnD/5n9SES8jmExtbODGNS9dzL8Q8/7lj/R6FuZ6e9LSxeXB4FbImL/8rbPBxp0\nHYA6dS9wOfC2iPg1hvnw0sw83m1YOs8+AXwoIv6aYa3ypmk5sDAYeN+QJEmS1D9+aaYkSZKkXrKY\nkSRJktRLFjOSJEmSesliRpIkSVIvWcxIkiRJ6iWLGUmSJEm9ZDEjSZIkqZcsZiRJkiT10v8BwvAx\n/41lYbMAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Normal Data\n", + "outlier_plot(Z)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false, + "scrolled": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IQR: 725.891693115\n", + "Outlier count: 0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzsAAACSCAYAAABi1NSUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEkRJREFUeJzt3X2wHXdZwPHvvQ0EJt60Fo4oIlRFH0CwCsW2IYTKtCPS\nVoMvg62MWE1xIjCMFZTi8KKCOjBE2jqBQASKMIBWowISfKPSBqZoZbSF8qRYAQcUYiJJKDZNyPGP\nPdeeHs69Z8+e3XPO3Xw//9y7+/vt7rP77P72PnfPy0K320WSJEmS2mZx1gFIkiRJUhMsdiRJkiS1\nksWOJEmSpFay2JEkSZLUShY7kiRJklrJYkeSJElSK5UqdiLi3Ij48JD5l0bExyNiX0Rsqz88SZIk\nSapmZLETES8B3gKsH5i/DtgBXAhcADwvIjoNxChJkiRJYyvzZOczwLOGzH8scGdmHsnM48DNwJY6\ng5MkSZKkqkYWO5m5BzgxpGkjcLhv+ihwek1xSZIkSdJE1k2w7BGKgmfZEvCVUQt1u93uwsLCBJuV\n+px1VvHzs5+dZRSSdOpyHJbUjFoKhnGKncEN3gE8OiLOAL5G8RK2141cycICBw4cHWOzakKns9SK\nPJx5sgvAoTW6L23Jw1pmDuaDeZi9qjlY6+PwvPFamA/mYfY6naVa1jNOsdMFiIjLgA2ZuTsirgL+\nmqIQ2p2Z/1lLVJIkSZI0oVLFTmZ+DtjU+/3dffM/AHygmdAkSZIkqTq/VFSSJElSK1nsSJIkSWol\nix1JkiRJrWSxI0mSJKmVLHYkSZIktZLFjiRJkqRWstiRJEmS1EoWO5IkSZJayWJHkiRJUitZ7EiS\nJElqJYsdSZIkSa1ksSNJkiSplSx2JEmSJLWSxY4kSZKkVrLYkSRJktRK60Z1iIgFYCdwNnAPsC0z\n7+pr/1ngKuAE8LbMfFNDsUqSJElSaWWe7GwF1mfmJuBqYMdA++uApwObgV+NiNPrDVGSJEmSxlem\n2NkM7AXIzFuAcwba/wX4ZuDBvelubdFJkiRJUkVlip2NwOG+6RMR0b/cJ4FbgduA92fmkRrjkyRJ\nkqRKRr5nBzgCLPVNL2bmSYCIeAJwMfAo4G7gXRHxk5n5p6utsNNZWq1ZU9KKPCwuAGt7X9Zy7G1h\nDuaDeZi9SjlowTg8bzyW88E8tEOZYmcfcAlwQ0ScR/EEZ9lh4GvAsczsRsSXKV7StqoDB45WiVU1\n6nSWWpGHM08Wr5o8tEb3pS15WMvMwXwwD7NXNQdrfRyeN14L88E8zF5dxWaZYmcPcFFE7OtNXxER\nlwEbMnN3RLwZuDkijgH/Bry9lsgkSZIkaQIji53M7ALbB2bv72vfBeyqOS5JkiRJmkiZJzvSXFv8\n4hc480mP/4b5h269fWj/YX3tf+r256yz/v9lOPMQzynbf3HhfnmYeTynYv++HIyz/sUvfoGTD//2\nof0ladbKfBqbJEmSJK05C93u1L8Wp+sbvmavLW+8W/4v44r/tZ9zbcnDWmYO5oN5mL3KH1Cwxsfh\neeO1MB/Mw+x1OksLdazHJzuSJEmSWsliR5IkSVIrWexIkiRJaiWLHUmSJEmtZLEjSZIkqZUsdiRJ\nkiS1ksWOJEmSpFay2JEkSZLUShY7kiRJklrJYkeSJElSK1nsSJIkSWqldaM6RMQCsBM4G7gH2JaZ\nd/W1Pxl4fW/yv4DnZOa9DcQqSZIkSaWVebKzFVifmZuAq4EdA+1vBn4+M7cAe4FH1RuiJEmSJI2v\nTLGzmaKIITNvAc5ZboiI7wUOAldFxI3AmZl5ZwNxSpIkSdJYyhQ7G4HDfdMnImJ5uYcC5wPXAhcC\nF0bEBbVGKEmSJEkVjHzPDnAEWOqbXszMk73fDwKfycz9ABGxl+LJz42rrbDTWVqtWVPSijwsLgBr\ne1/WcuxtYQ7mg3mYvUo5aME4PG88lvPBPLRDmWJnH3AJcENEnAfc1td2F/BNEfFdvQ8teCqwe9QK\nDxw4WiVW1ajTWWpFHs482QXg0Brdl7bkYS0zB/PBPMxe1Rys9XF43ngtzAfzMHt1FZtlip09wEUR\nsa83fUVEXAZsyMzdEfGLwLsjAuCjmfnBWiKTJEmSpAmMLHYyswtsH5i9v6/9RuDcesOSJEmSpMn4\npaKSJEmSWsliR5IkSVIrWexIkiRJaiWLHUmSJEmtZLEjSZIkqZUsdiRJkiS1ksWOJEmSpFay2JmC\nLe85934/y/QdZ73LHrbz9KF9BvsNm15pu2XiecSuTuVlB/uNu//HLt3KsUu3jrVc1diaNMl2phXj\nuMY5z1Zbrq6+86qufaiyntWu+0nGhHE8YleHLe85l8fvfHwj2xr3vBvVd1i/MmNs2VhGratMW1PX\nxUr7vDwOl+lbZt1l5i3fd8ocrzqOadn2plW9X1bdxqzNUyyTmOSc0+RGfqmoJvfpQ3fc72eZvuOs\nd1mXbqn1Dc5bbZtl4rn368cqLzvYb9z9v/tVtxS/77y29HJVY2vSJNuZVozjGuc8q9Jv3L7zqq59\nqLKelZaZdEwYx71fP1YpjrLGPe9G9R/Wb9S5Psk9oEoumrouVtrnu1/16tJ9y6y7zLzl+06Z41Xn\nPW/WY07V+2XVbczaPMUyiWmOqfpGPtmRJEmS1EoWO5IkSZJayWJHkiRJUitZ7EiSJElqJYsdSZIk\nSa008tPYImIB2AmcDdwDbMvMu4b02wUczMyX1R6lJEmSJI2pzJOdrcD6zNwEXA3sGOwQEb8EfOOX\nJEiSJEnSjJQpdjYDewEy8xbgnP7GiDgfeDKwq/boJEmSJKmiMsXORuBw3/SJiFgEiIhvBV4JvABY\nqD88SZIkSapm5Ht2gCPAUt/0Ymae7P3+08BDgL8Cvg14cER8OjPfsdoKO52l1ZpbaXmfy+z7OMdn\nsO9Kyw6bP8myZfuU3Zf+flX3f9zzqkpsTRjn3Bi1jnlT5rwru1wdfZtcxzxsv8p6Vltm0uu6jlim\neWzKXovD+o0aT8cZq8qOzau1VT1u48RWZ9+V+qw2b6V8TXK/KxPrNMaLsvFN81qclVnGUue2Jznn\nNJkyxc4+4BLghog4D7htuSEzrwOuA4iI5wIxqtABOHDgaLVo17DlfS6z7+Mcn8G+Ky07bP4ky5bt\nU3Zf+vtV3f9xz6sqsdWt01ka69xYybxeU2XOu7LL1dF3mP4czEpd26+yntWWmfS6riOWaR6bstfi\nsH6jxtNxxqqyY/NqbVWOW5lroep+VL3uV5u3Ur4mud+VibXp8WJUHia575U16zGx36xiqfveMMk5\nd6qqqwgsU+zsAS6KiH296Ssi4jJgQ2buriUKSZIkSarZyGInM7vA9oHZ+4f0u76uoCRJkiRpUn6p\nqCRJkqRWstiRJEmS1EoWO5IkSZJayWJHkiRJUitZ7EiSJElqJYsdSZIkSa1ksSNJkiSplSx2JEmS\nJLWSxY4kSZKkVrLYkSRJktRKFjuSJEmSWsliR5IkSVIrWexIkiRJaiWLHUmSJEmttG5Uh4hYAHYC\nZwP3ANsy866+9suAFwHHgdsy85cbilWSJEmSSivzZGcrsD4zNwFXAzuWGyLiQcBvAU/LzKcCZ0TE\nJY1EKkmSJEljKFPsbAb2AmTmLcA5fW3HgE2Zeaw3vY7i6Y8kSZIkzVSZYmcjcLhv+kRELAJkZjcz\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Web request Rates\n", + "outlier_plot(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false, + "scrolled": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IQR: 11.2\n", + "Outlier count: 22\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzsAAACSCAYAAABi1NSUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEHJJREFUeJzt3X2wXPVZwPHvTVPSTnoD0i4VKi0q+linGG1SCTEE2kl8\nAaqpL1OpaBtNcSLtdERbmzrY8aXqWBtbcFICsS3VDoxGo06R1DewkHaCjVWDhSdgBpgRbCORJIAJ\npFn/2F2yLPfePXvv2b17Dt/PDJN7fr9zfuf57cPeu8+et4lms4kkSZIk1c2C+Q5AkiRJkobBYkeS\nJElSLVnsSJIkSaolix1JkiRJtWSxI0mSJKmWLHYkSZIk1VKhYicizo+I26dof3NE3B0RuyJiQ/nh\nSZIkSdLs9C12IuK9wI3Aop72hcBmYA1wMXBlRDSGEKMkSZIkDazIkZ0HgLdM0f5a4P7MPJyZzwB3\nAavLDE6SJEmSZqtvsZOZO4DjU3QtAQ51LR8BTi0pLkmSJEmak4Vz2PYwrYKnYxJ4vN9GzWazOTEx\nMdiezjmn9e+DDxZrlyRJklRlAxYMUxuk2Ond4b3AuRFxGvAUrVPYPtx3kIkJDhw4MsBu4fQTTQAO\n9mw3XbuGp9GYHDh/Gg/mrtrMX7WZv+oyd9Vm/qqr0ZgsZZxBip0mQERcDizOzG0RcTXwt7QKoW2Z\n+WgpUUmSJEnSHBUqdjLzIWBl++ebu9pvBW4dTmiSJEmSNHs+VFSSJElSLVnsSJIkSaolix1JkiRJ\ntWSxI0mSJKmWLHYkSZIk1ZLFjiRJkqRastiRJEmSVEsWO5IkSZJqyWJHkiRJUi1Z7EiSJEmqJYsd\nSZIkSbVksSNJkiSplix2JEmSJNWSxY4kSZKkWrLYkSRJklRLC/utEBETwBZgKXAU2JCZ+7v6fwq4\nGjgOfDIzrx9SrJIkSZJUWJEjO+uARZm5EtgEbO7p/zDwJmAV8EsRcWq5IUqSJEnS4IoUO6uAnQCZ\nuRtY3tP/b8A3AC9tLzdLi06SJEmSZqlIsbMEONS1fDwiurf7D2APsBf4bGYeLjE+SZIkSZqVvtfs\nAIeBya7lBZl5AiAizgMuBV4DPAl8JiJ+LDP/fKYBG43Jmbqfb8HE1NtN166h8vWuLnNXbeav2sxf\ndZm7ajN/L2xFip1dwGXA9ohYQesITsch4CngWGY2I+JrtE5pm9GBA0cGCvL0E60z4w72bDddu4an\n0ZgcOH8aD+au2sxftZm/6jJ31Wb+qqusIrVIsbMDWBsRu9rL6yPicmBxZm6LiBuAuyLiGPCfwKdK\niUySJEmS5qBvsZOZTWBjT/O+rv6twNaS45IkSZKkOSlyZGcsLHjkvzh92eue13birFfNU0SSJEmS\nxlllip1RWLZsMQB79jzZt2/ZssU88sgEZ5118k7bU2031Tid7YqsX2XTzbXzWnbM5XWYKmdnnvky\nAB599IlZjzvd2IP011kd517HOXWryvyqEmdH1eKVNDPf0/VTmWLnxFmv4uCee57T1nukR5IkSZI6\nijxnR5IkSZIqx2JHkiRJUi1Z7EiSJEmqJYsdSZIkSbU00Ww2+69VruagT7Lt3IhguhsU9LZreHwS\ncXWZu2ozf9Vm/qrL3FWb+auuRmNyooxxPLIjSZIkqZYsdiRJkiTVksWOJEmSpFqy2JEkSZJUSxY7\nkiRJkmrJYkeSJElSLS3st0JETABbgKXAUWBDZu7v6n8D8JH24n8DV2Tm00OIVZIkSZIKK3JkZx2w\nKDNXApuAzT39NwDvyMzVwE7gNeWGKEmSJEmDK1LsrKJVxJCZu4HlnY6I+HbgMeDqiLgDOD0z7x9C\nnJIkSZI0kCLFzhLgUNfy8YjobPcK4ALgWmANsCYiLi41QkmSJEmahb7X7ACHgcmu5QWZeaL982PA\nA5m5DyAidtI68nPHTAM2GpMzdT/fgompt5uuXUPl611d5q7azF+1mb/qMnfVZv5e2IoUO7uAy4Dt\nEbEC2NvVtx94WUR8S/umBRcC2/oNeODAkYGCPP1EE4CDPdtN167haTQmB86fxoO5qzbzV23mr7rM\nXbWZv+oqq0gtUuzsANZGxK728vqIuBxYnJnbIuLngJsjAuALmXlbKZFJkiRJ0hz0LXYyswls7Gne\n19V/B3B+uWFJkiRJ0tz4UFFJkiRJtWSxI0mSJKmWLHYkSZIk1ZLFjiRJkqRastiRJEmSVEsWO5Ik\nSZJqyWJHkiRJUi2NXbGz+pbWI3vO2LLk2f82n/0wm89++DltU7W/csupM445yP6L9K2+5fxn2wbd\nxyDrV9l0c53N6zbTPnp909bGnMedbuxB+uusjnOv45y6VWV+VYmzo2rxSpqZ7+l66ftQ0VG77+C9\nz2t73/dPvW5ve5Nm4TEH2f90fd3LZe2jbqaba6e9jNdiqjGe/vqxOY873diD9NdZHedexzl1q8r8\n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\nix1JkiRJtfT/J7MLTc+mjJ4AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Request Latencies\n", + "outlier_plot(Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Tukey's Boxplots\n", + "\n", + "Show:\n", + "\n", + "* Median\n", + "* Box around 0.25 and 0.75 Quantiles\n", + "* \"whiskers\" from min to max\n", + "* points for outliers\n", + "\n", + "Allows visual clues:\n", + "\n", + "* Where is the data concentracted?\n", + "* How far is it spread?\n", + "* How skew is the data?" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAABWCAYAAAA5SoxGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACetJREFUeJzt3V+IJdldB/BvT8/+yfTM4gSmx4dR8xA4kyXiiyEiYaJI\nHiJoDIY8mAVdTSS+rGgYTVYi+2AWSSAYiYII0aArOMGEjQhJiA+CC25WnwKbObDk1Yd1pzVJ75+Z\n7bk+3LmzNTV1//TdrlT13c/nZW5VV536nlOnqu+v63bP1mQyCQAAAEfrxNABAAAANpFiCwAAoAeK\nLQAAgB4otgAAAHqg2AIAAOiBYgsAAKAHJ9fZ6dVXDyZ7ey8edRY20Nmzp2KusCrzhVWZKxyG+cKq\nzBUO49y5M1vLtlnrydbJk9vr7MYbkLnCYZgvrMpc4TDMF1ZlrnDUfIwQAACgB4otAACAHii2AAAA\nerDWH8gAYLnHH38se3vXho6xkba3T+Tg4Obt5f39/STJzs7OUJGY4+zZN+fRRx8bOgbAIBRbAD3Z\n27uWF154IVv3vGnoKBtvcuPlJMkrB0v/MBQ/RJMbLw0dAWBQii2AHm3d86acfusvDx1j4/3gua8m\nibEemdl5AXij8jtbAAAAPVBsAQAA9ECxBQAA0APFFgAAQA8UWwAAAD1QbAEAAPRAsQUAANADxRYA\nAEAPNr7YunLliVy58sTQMQAAgCM29vf6G19sPfPM03nmmaeHjgEAAByxsb/X3/hiCwAAYAiKLQAA\ngB4otgAAAHqg2AIAAOiBYgsAAKAHii0AAIAejL7Yunr12Vy9+uzSdQAAAGNycugAyzz55D8lSS5e\nfHDhOgAAgDEZ9ZOtq1efTa3fSa3fuf0kq2sdAADA2Iz6ydbsCdbs9cWLD3auW2R/fz/Xr7+Sy5cf\n6S0n821vn8jBwc2hY3BMbNp82du7lsm4f6YFvZocXM/e3suDfw/etHsL/TFXjp+9vWu59977ho4x\nl3cBAAAAPRj1k633ve9X8+lP/8nt1/PWLbKzs5OdnZ185jN/3l9Q5jp37kyef/77Q8fgmNi0+XL5\n8iO59r0Xh44Bg9navjdnHzg1+PfgTbu30B9z5fgZ+sn5MqMuti5efDClvO3263nrAAAAxmbUxVbS\n/fRqlSdaAAAAQxp9sdX19MoTLQAAYOz8gQwAAIAeKLYAAAB6oNgCAADogWILAACgB4otAACAHii2\nAAAAejD6P/3+er3jHe8cOgIAANCDsb/X3/hi64Mf/NDQEQAAgB6M/b2+jxECAAD0QLEFAADQA8UW\nAABADxRbAAAAPVBsAQAA9ECxBQAA0APFFgAAQA8UWwAAAD3Y+P/UGGBIkxsv5QfPfXXoGBtvcuOl\nJDHWIzM9L6eGjgEwGMUWQE/Onn3z0BE21vb2iRwc3Ly9vL8/SZLs7HhjPy6nXAfAG5piC6Anjz76\n2NARNta5c2fy/PPfHzoGACzkd7YAAAB6cCyKrUuX7v5YSNe6w+x/lNuvY3aM5rGOok/rZG9nabcx\nb/2q7a66zartH7bvq+Sf1+eZCxdOd7a1LPNsv1UzdmXuGqN2nubXFx2j3daFC6fvWN/++ipj2jUm\n7dfN5eaYtF/ff//dx+7KOdu+vU2zveaxL1w4nfPnT88dr67xvHTpVM6fn7a5u3u6M8dsv3bbze3O\nn3+t7WY7s21mx2i23x6DWf7d3Tv719yvnb99rlbdZ3bc2bHa49jM3e5rczya52PW76550Myzu3vn\nfs3td3dP3zGWW1t3jmkzUzNDO/+8+drs72y7ZtvNvjdfz9qZzYGu+dHVz0XXzWzMmts151hzTncd\ne9512Wyjfa20r592f+dt1z6f87ZvnptmG+35055f7WN29aPrupmd/9m6++/v7lPzmmpnnHdvXKRr\nbrTHu719l0X330Xbt/u3bPvmOHUdt+v+0P530fbN9csyrWKVcZl3Day6/2GyLFru+tqi8ZmnOb9X\n2eewc3YM1j0vq8y9MTgWHyO8enV7pXWH2f8ot1/H7BjNYx1Fn9bJ3s7SbmPe+lXbXXWbVds/bN9X\nyT+vzzPXr291trUs82y/VTMuyzxbbudZ1v6qx1j1fCzad1Eb88a1/XpZu7PtF52HVdYtWn5trOfn\nmGWeTLbuWn+Y8b5+ffHcas+jZe0t69NhztGyNrv6Opls3R63qa25x2zv39yvnXcy6V7flXGWYdl5\nWPfr7dftOTDr27x+Lu/Dndd4s/2u8V71/te+h3Qfu/ses8r9a5XtF43Lsjbm9aP7umm30XXffC3L\nZLL8fC0z797cdQ0vWv96vt8e9ntv1zW3bHmV62OV9Yd12L61l48qx7LjzNt2nfHpukZWaeso+9q3\ndbP2dW6P2rF4sgUAAHDcbE1mPyoEAADgyHiyBQAA0APFFgAAQA8UWwAAAD1QbAEAAPRAsQUAANAD\nxRYAAEAP1vpPjUspp5L8Q5KzSV5J8uu11v8+ymBshlLKA0n+PskDSe5J8rFa638Mm4qxK6W8P8kH\naq0fGjoL41JK2Uryl0l+KsnLST5ca/3usKkYs1LKO5P8aa3154fOwniVUk4m+UKStyS5N8mnaq3/\nPGgoRquUciLJXycpSW4m+Wit9dmubdd9svWRJP9Za313kieS/OGa7bD5fj/JN2utP5fk4SR/MWwc\nxq6U8mdJPpVka+gsjNKvJLmv1vqzST6R5LMD52HESimXM31DdN/QWRi9h5L8T631UpL3Jvn8wHkY\nt19KMqm1vivJJ5M8Pm/DtYqtWuvnMn0zlCQ/nmRvnXZ4Q/hskr+69fqeJC8NmIXj4akkvzN0CEbr\nXUm+liS11qeT/PSwcRi555K8f+gQHAtXMn3TnEzfH98YMAsjV2t9Mslv31p8SxbUQks/RlhK+c0k\nv5dkkulPmidJHq61/lcp5V+TvD3Je15nZjbAkrnyo0n+LskjA0ZkRBbMly+VUt49aDjG7IEk/9dY\nfrWUcqLWenOoQIxXrfUrpZSfGDoH41drfTFJSilnknwpyR8Nm4ixq7XeLKX8baafuPjAvO2WFlu1\n1i9k+hnWrq/9QimlJPmXJG9dLyqbYt5cKaX8ZKa/4/exWuu//9CDMUqL7i2wwPeSnGksK7SAI1FK\n+bEkX07y+VrrPw6dh/Grtf5GKWU3ybdKKW+rtd71Ca61PkZYSvl4KeWhW4v7SV59HTnZYKWUBzN9\nNP9rtdZvDJ0HOPaeSvKLSVJK+Zkk3x42DseE3wFloVLK+SRfT/IHtdYvDp2HcSulPFRK+fitxZeT\nHGT6hzLustZfI8z0p9FfLKX8VqYF28NrtsPmezzTX0z+3K2/Iva/tVafnwfW9ZUk7ymlPHVr2fcf\nVjEZOgCj94kkP5Lkk6WUP850zry31vrKsLEYqS8n+ZtSyr9lWk/97ry5sjWZuP8AAAAcNf+pMQAA\nQA8UWwAAAD1QbAEAAPRAsQUAANADxRYAAEAPFFsAAAA9UGwBAAD0QLEFAADQg/8H059/MWlBtjsA\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Normal Data\n", + "plt.figure(figsize=(15,1))\n", + "sns.boxplot(x=Z, vert=False)\n", + "sns.rugplot(Z)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nnzY8mORNI49fNmEuP5vk1Uk+PzLvL29PyZeUjfm8pdb6n8PvdyV5PPLp21MyKqX8SJI/SfLOkXlk\n1K+N+9GVSa4opXwxyTVJvhwZ9WljPvckec5wzLA/3ZhBPv05micH6yvprsRMOoaT0fbYmNGZLHi8\nMElz9pwkL0vy6+m6v9s3PO/hJJen28m/NzL9kXTNAov1SJKfTHJ/kr9Id1vW0sjP5dOTWuud6Q60\n50yTy+j0c/MyRxvzqbV+J0lKKa9KckOSP0233eXTk9GMSinLST6Z5F1J1kZmk1GPxhznnpfkVK31\ndUn+J8mNkVFvxuTzjXTjhPvS3Wb15cinN7XWR2uta6WU/Uk+k+SPYqzQlHEZ1Vr/L1nceGGS5uxk\nki8MO8EH0nWHo4P6/Um+m+4+ysvHTGexfi/J52utJV2H/lfp7ok9Rz7tODvy/YVyWR1O379hXhas\nlPKWdO+rfcPwnnD5tOOlSZ6f7v0yf5PkhaWUWyKj1pxM8rnh959L8vPpBiYyasNHk1xZa31hulus\nbol8elVK+fEk/5Tktlrr38ZYoTkbMrpjOG1h44VJmrO70907mVLKc5PsS/Kl4XvRkuRXkxxLcjzJ\nq0spu0spz0zygiT3TrB8ZnMqT3bk3013efUe+TTp30sph4bfb5bLv6R7P2GGX49tXBjzVUq5Nt1f\nwK6qtX57OPlrkU8Llmqt/1pr/ZnhPf5vTfL1Wuu7IqPWHMuT2/1Quiwc59pxMt1f75Pkf9N9cIt8\nejJ8n9IXkvx+rfW24eR7jBXaMS6jRY8XNv20xuEnjbymlPK1dJdar0/yrSSfHL7R7b+S/F2tdVBK\nuTVdM7eU7s2Mpyd76czgI0k+VUr5SrpP07wxyb9FPi16d5JPTJJLKeXjSW4rpRxL90lA1/RW9SVg\neMvcR5N8O8mdpZRBkn+utb5PPk0YnO8HtdbvyKgp7053/rk+3R8Or6m1fk9GzbguyR2llDNJTie5\nzj7Uqz9M1yC/p5Ty3nTHuncm+ZixQjM2ZrSS5KezwPHC0mBw3nMeAAAA28Q/oQYAAGiA5gwAAKAB\nmjMAAIAGaM4AAAAaoDkDAABogOYMAACgAZozAACABmjOAAAAGvADkpO23xBxJW4AAAAASUVORK5C\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Tukey Boxplots show outliers as 'points' outside the whiskers\n", + "\n", + "# Web-request dataset\n", + "plt.figure(figsize=(15,1))\n", + "sns.boxplot(x=X)\n", + "sns.rugplot(X)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2EAAABWCAYAAABGm563AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACrxJREFUeJzt3W2MHVUZwPH/0qVol4pbpSSmVowkp5AoCiKCWMBA1X6g\nvgUM4gtGTAi+RCIKNRiMgiYYRDSigRCrEk214hLlpUaNFEygKEZI2YPEQD+YoLaL2G2htFw/zNzb\n2e29u3cvM7M7M/9fstm5M2fOnHOeu9N55q1DrVYLSZIkSVI5DpnvBkiSJElSk5iESZIkSVKJTMIk\nSZIkqUQmYZIkSZJUIpMwSZIkSSqRSZgkSZIklWi434L79u1vTUzsLrItmkejo0swvvVkbOvN+NaX\nsa0341tfxrbejjxy6VAe9fR9JWx4eFEe29MCZXzry9jWm/GtL2Nbb8a3voyt+uHtiJIkSZJUIpMw\nSZIkSSqRSZgkSZIklajvF3MM4pprrmJiYieTk5MAjIyMTFk+OrqM9euvKrIJkiRJkrSgFJqETUzs\nZMeOHZ3Pz+0/8DKR1vN7ity0JEmSJC1IhSZhAEOHvrQzffgx53Smdz1+e9GbliRJkqQFx2fCJEmS\nJKlEJmGSJEmSVCKTMEmSJEkqkUmYJEmSJJXIJEySJEmSSmQSJkmSJEklMgmTJEmSpBKZhEmSJElS\niXJLwjZuvJWNG2/Nq7rC6pQkSZKk+ZRbErZ16/1s3Xp/XtUVVqckSZIkzSdvR5QkSZKkEpmESZIk\nSVKJTMIkSZIkqUQmYZIkSZJUIpMwSZIkSSqRSZgkSZIklWh4vhuQt/HxbQCsWnXcrMvGx7exffsT\nrFx5dKdMt/Vm2s5c16uLzZvvAGDNmrVT5hcxLt1i2mv7edU/SJmmaMJYNKGPWVXsbxXb3Fbltksq\nhvuF5qldEjY2tgno/iWevmxsbBPbtz/JypWv6ZTp98vfrmuu69XF2NgvgYOToCLGpVtMe20/r/oH\nKdMUTRiLJvQxq4r9rWKb26rcdknFcL/QPLVKwsbHtxHjo53p7Bd5+jKg87n9u9t6s21nLuvVxebN\nd7Bnz+7OdDsRKmJcusW01/bzqn+QMk3RhLFoQh+zqtjfKra5rcptl1QM9wvNlFsSNjk5yd69z3HZ\nZZ/pzJuY2EmLQxhatPig8q39e5mYeHZK+ekmJnayePFhfbchexVmbGzTtCsnm7pOd6tjti9/t/X7\nWa8u2leh2tPtJKiIcekW017bz6v+Qco0RRPGogl9zKpif6vY5rYqt11SMdwvNJMv5pAkSZKkEuWW\nhI2MjDA6uoxrr72h8zM6uqzrVTCAoUWLDyo//Wd0dBkjIyN9t2Hduvd3ne62bPryXuv1W6af9epi\n3br39ZjOf1y6xbTX9vOqf5AyTdGEsWhCH7Oq2N8qtrmtym2XVAz3C81Uq2fCVq06jhCO7UzPtiyE\nYwd6MUe2rrmsVxdr1qzt+mKMIsalW9x6bT+v+gcp0xRNGIsm9DGriv2tYpvbqtx2ScVwv9BMtUrC\nYOYzCN2ujk1/RX0e22mCXlegihiX7lfYXtwVsNnqH6RMUzRhLJrQx6wq9reKbW6rctslFcP9QvPU\nLgmb6QxCt6tjg55xaPqZil5XoIoYl2515vFq+pnqH6RMUzRhLJrQx6wq9reKbW6rctslFcP9QvP4\nYg5JkiRJKpFJmCRJkiSVyCRMkiRJkkpkEiZJkiRJJTIJkyRJkqQSmYRJkiRJUolye0X9SSednFdV\nhdYpSZIkSfMptyTs3HM/lFdVhdYpSZIkSfPJ2xElSZIkqUQmYZIkSZJUIpMwSZIkSSqRSZgkSZIk\nlcgkTJIkSZJKZBImSZIkSSUyCZMkSZKkEpmESZIkSVKJcvvPmntpPb+nM73r8dunzV9S9OYlSZIk\naUEpNAkbHV0GwOTkJAAjI9mka0lnuSRJkiQ1RaFJ2Pr1VxVZvSRJkiRVjs+ESZIkSVKJck3CVq9e\nwooVh7N8eX8/Rx019XevOgdpR7/LVq9e0pk3120Nul5drFgxc8zyHJdudfXafl71D1KmKZowFk3o\nY1YV+1vFNrdVue2SiuF+oVlyvR1xfHzRnMq3WlN/51HnbOtMX5b9PNdttcsP0sY62Lt3qOv8Isal\nW129tp9X/YOUaYomjEUT+phVxf5Wsc1tVW67pGK4X2gWb0eUJEmSpBINtWa6DCVJkiRJypVXwiRJ\nkiSpRCZhkiRJklQikzBJkiRJKpFJmCRJkiSVyCRMkiRJkkpkEiZJkiRJJZr1P2sOIQwB3wOOB54F\nPhFj/EfRDVN+QgjDwC3A0cBi4GpgG/BD4AXgkRjjJWnZi4BPAs8DV8cYfzMPTdYAQgjLgQeBs4D9\nGN/aCCFcDpwDHEqyP74H41t56b55A8m+eR9wEf7t1kII4WTgGzHGM0MIr6PPmIYQXgL8BFgOPAN8\nNMa4Yz76oO6mxfaNwA0kf7/PAR+JMf7b2FZXNr6ZeecDn4oxnpp+ziW+/VwJew9wWLrhK4DrBuiT\n5tcFwH9ijKuBdwHfJYnj+hjj6cAhIYR1IYSjgE8Dp6Tlvh5COHS+Gq3+pQdz3wd2p7OMb02EEE4H\nTkn3wWcAKzG+dbEWWBRjfBvwVeAajG3lhRAuA24CDktnzSWmFwN/S/+9/jFwZekdUE9dYns9cEmM\n8R3AbcAXjW11dYkvIYQ3AR/PfM4tvv0kYacBdwHEGO8H3txvZ7RgbOTAl2ERyRmbE2KMW9J5dwJn\nA28B7o0x7osxPgP8HXhD2Y3VQL4J3Aj8ExjC+NbJO4FHQgi/Am4Hfo3xrYvHgOH0jpMjSM6qGtvq\nexx4b+bziX3G9Hgyx1xp2bPKabL6ND2258UYH06nh0nuGDO21TUlviGEVwBfAz6bKZNbfPtJwl4G\n/DfzeV8IwWfJKiTGuDvGOBlCWAr8HPgSyYF62/9I4ryUqbHeRXJgoAUshPAx4F8xxt9yIK7Zv1Hj\nW22vBE4EPkBypu1WjG9d7AJeC4wDPyC5rcl9c8XFGG8jOdnZNpeYZue3y2qBmB7bGONTACGEU4FL\ngG9x8HGzsa2IbHzTXOdm4FJgMlMst/j2k0w9k1bcWSfG+EIf62kBCSG8Gvg9sCHG+DOSe9PblgJP\nk8T6ZV3ma2G7EDg7hPAHkrMxPwKOzCw3vtW2A7g7Pev2GMmZ1uwBuPGtrs8Bd8UYAwf+dhdnlhvb\neuj339sJph5zGecKCCGcR/Ks7tr0GSBjWw8nAMeQ3GX0U+C4EMJ15BjffpKw+0juWyeE8Fbg4ZmL\na6FJ71+9G/hCjHFDOvuhEMLqdPrdwBZgK3BaCGFxCOEIYBXwSOkN1pzEGE+PMZ6ZPkT6V+DDwJ3G\ntzbuJbnvnBDCq4AR4Hfps2JgfKtsJwfOnD5NcjvTQ8a2dv4yh/3xn0iPudLfW6ZXpoUjhHAByRWw\nM2KMT6azH8DYVt1QjPHBGOPr0+f9PghsizFeSo7xnfXtiCQPGp4dQrgv/XzhHDui+XcF8HLgyhDC\nl4EWyf2t30kfJnwU+EWMsRVCuIHkoG+I5EHivfPVaL0onwduMr7Vl7516e0hhAdI4nYx8ARws/Gt\nvOuBW0II95C8+fJy4M8Y27rpe38cQrgR2BBC2ELytr3z563VmlF6u9q3gSeB20IILeCPMcavGNvK\na/VaEGN8Kq/4DrVaPbcjSZIkScqZL9iQJEmSpBKZhEmSJElSiUzCJEmSJKlEJmGSJEmSVCKTMEmS\nJEkqkUmYJEmSJJXIJEySJEmSSmQSJkmSJEkl+j9mUcD+ecMhbQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Latency Dataset\n", + "plt.figure(figsize=(15,1))\n", + "sns.boxplot(x=Y, vert=False)\n", + "sns.rugplot(Y)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Demo:\n", + "- Global duration percentiles with Overlays: [demo](https://demo-hh2.circonus.com/trending/graphs/view/9e85beb8-4658-49f5-95e8-b6cf70ad5ca9#set-YVlpVTrN)\n", + "- Latency percentiles in CAQL [demo](https://demo-hh2.circonus.com/trending/graphs/edit/da4ac22a-55b9-6145-abbc-a0371919e876)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Outlier Scores\n", + "\n", + "The intuitive meaning of outlier is a value in a dataset, that is \"unlikely\" to be generated by the same process as the rest of the distribution.\n", + "\n", + "A simple outlier score:\n", + "\n", + "* Pick a summary statistic $M$: E.g. mean\n", + "* Pick a deviation measure $D$: E.g. MAD\n", + "\n", + "The outlier score of a value $x$ in context $X$ is defined as:\n", + "\n", + "$$OutlierScore(X,y) = \\frac{M(X) - y}{S(X)}$$\n", + "\n", + "It measures how many deviations a sample is away from the mean.\n", + "\n", + "* Good for well behaved datasets with a single mode\n", + "* Problematic for skew distributions\n", + "* Easy to use in practice" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Demo:\n", + "- Outlier Detection in Time Series https://demo-hh2.circonus.com/trending/graphs/view/c7602466-69f4-e6b3-ceae-95049da417c4\n", + "- Time range: August 30th - September 7th 2015" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Deviations Measures in Monitoring\n", + "\n", + "- It's useful to enrich line graphs by deviation measures (e.g. percentile aggregation)\n", + "- Jitter (demo?)\n", + "- Outlier detection in generated revenue [demo](https://demo-hh2.circonus.com/trending/graphs/edit/c7602466-69f4-e6b3-ceae-95049da417c4)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Takeaway\n", + "\n", + "* Don't use the standard-deviation if you can avoid it\n", + "* If you need a deviation measure use MAD or IQR:\n", + " - (+) Simple to calculate\n", + " - (+) Simple to interpret\n", + " - (-) Not mergable" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# (3) Measuring Distributions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Classical summary statistics good for describing the body of the distribution\n", + "* Need information about the tail of the distributions, e.g. for writing good SLAs\n", + "* Determine outliers in a dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Inverse Percentiles\n", + "\n", + "The inverse percentile y of a dataset $X$, is defined as:\n", + "\n", + "$$ IP(y, X) = \\text{(the percentage of samples in X that are lower than $y$)} = \\# \\{ i \\, | \\, x_i \\leq y \\} / \\# X \\cdot 100 $$\n", + "\n", + "**Properties**\n", + "\n", + "* $0 \\leq IP(y, X) \\leq 100$, dimensionless percentage value\n", + "* $IP(y,X)$ is monotonically increasing in $y$" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def IP(y,X):\n", + " lower_count = 0\n", + " for x in X:\n", + " if x <= y: lower_count += 1\n", + " return float(lower_count) / len(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\njX3D9PHLT7bszTKcyvo9l/e2Xl/WPd3lfdXX7fX3/vuyvxP9H51s3dNZZ7CdaqZTfb49v4dON8Ox\nx86aNbbP3z8n21Zfv0+P39+JvtdO9PmJvg4n29bJlp9s+lScLG9fcvWW7fjn3tvXKJMsvc3rb305\n7ma6rcEwFI89kNz/oyRp4OQlHUCSerNtW+4bPp5sOcD2PUd46rl9zCop4opVs35v+fHbeLPpE+3v\nZBlOZf2ey3tbry/rnu7yvurr9vp7/33ZX398bQY7fyZONdOpPt/W1lS/Zej52N6+P/uyrVNZfnyO\nk42dY5+f6Otwsm31lqM/xlUmYz2T40gmx8Vjz723r1EmWXqb19/6ctzNdFuDYSgeeyC5/0dJ0sCx\nKJI0YmzddZBvPLgNgA9cHcjL9aRJSZIkSeoLiyJJI8LXf/oC67fuJyeV4j2XLmDRrAlJR5IkSZKk\nYceiSNKwVhGrgGLWb93P7Klj+ciaJcyeWpx0LEmSJEkaliyKJA1LtfUtfPfnlVTEamABN10yn6vP\nne3bzSRJkiTpNFgUSRpW0uk0T2/dz7rHttPQ3M7CWeMBuO6CuckGkyRJkqQRwKJI0rDy+XueZeuu\nQxTm5/K+KxZxWfks/vnPkk4lSZIkSSODRZGkYeHxjXuAJWzddYilcyfyoWvKmDJhdNKxJEmSJGlE\nsSiSNGQdbWxl0/YaIPDdRyqBJaxdU8bqs6aTSqWSjidJkiRJI06vRVEIIQV8CVgBNAO3xRh39Vj+\nduBvgDbgGzHGOwcoq6QscKS+hY2V1VTEauIrR+hMp4HAysUl/BS4aPmMpCNKkiRJ0oiVyRlFNwCF\nMcYLQwjnAZ/rnkcIIa97uhxoAtaHEO6PMVYPVGBJI8+humY2xGoqYhU79tSS7p6/YMY4ykMpP/0c\nfOJdZ/F3f5RoTEmSJEka8TIpilYDDwHEGJ8JIazqsWwJsD3GWAcQQvglcDHww5NtrL6xlfqmtlNP\nLA0DhQ2O897UN7WxaXs1G7ZVs3tfHQApYNGs8ZSXlVK+uIRJ40YlG1KSJEmSskwmRdE4oLbHdHsI\nISfG2HmCZUeB8W+2sVv+5sE+h5Q0cuWkUiyZM5FVZaWsXDSF8WMLk44kSZIkSVkrk6KoDijuMX2s\nJDq2bFyPZcXAkTfb2E8++06vQCupT9JpgOLXP55seW+P/93nvU2feFlv++rr+j2X97ZeX9Y93eV9\nUVKSWfaB2n9f93ei/6OTrZvJ9oaKU810qs8303l9y3FM5t8/b76tzL9Pj9/fGz/+/jjP5Huxr8et\n/hhXJ8rY11y9ZTvx1+hkx8/MsvQ2r7/15bib6bYGw0Dvq6TkdL5/B///UToVpzrOpWyTk8E664E1\nACGE84EtPZa9CCwMIUwIIRTQ9bazX/V7SkmSJEmSJA24VPqNf8b7PT3uera8e9Zaui5eXRRjvDOE\ncB3wt3RdXuTrMcYvD2BeSZIkSZIkDZBeiyJJkiRJkiRlh0zeeiZJkiRJkqQsYFEkSZIkSZIkwKJI\nkiRJkiRJ3fIGa0c9Loq9AmgGbosx7hqs/Uv9LYRQAdR2T+4G/g/wTaAT2Bpj/OPu9f4b8IdAG/D3\nMcb/HPy0Ut+EEM4D/jHG+LYQwgIyHNshhFHAd4FSoA74UIzxYBLPQerNceP8bOCnQGX34n+PMd7j\nONdwFULIA/4DmAsUAH8PvIDHc40gJxnnr+LxXCNICCEH+BoQ6Dp+/xHQwgAezwfzjKIbgMIY44XA\np4HPDeK+pX4VQigEiDFe1v3vo3SN6b+KMV4C5IQQ3hlCmAr8CXABcA3wDyGE/MSCSxkIIXyKrh9G\nhd2z+jK2bweeizFeDHwH+JtBfwJSBk4wzsuBz/Y4rt/jONcw936gpnucXgP8Kx7PNfL0HOfX0jXO\nV+LxXCPL24F0jHE1XWP0/zDAx/PBLIpWAw8BxBifAVYN4r6l/rYCKAohPBxCeLT7r9IrY4xPdS9/\nELgSOBf4ZYyxPcZYB2wHlicTWcrYDuDGHtPlGY7tFfQ41neve8XgRJb67PfGOXBdCOHJEMLXQghj\ncZxreLub3/0ykAu0k/lrFce5houe4zyHrrMoyoHrPZ5rpIgx3k/XWUIAc4DDDPDxfDCLonH87m06\nAO3dp1BJw1EjcEeM8Wq6GtrvAakey4/SNeaLeeO4rwfGD1ZI6VTEGO+j6xeKY/oytnvOP7auNOSc\nYJw/A3yq+y9zu4C/5fdfuzjONWzEGBtjjA0hhGLgHuCv8XiuEeYE4/z/BX4D/IXHc40kMcbOEMI3\ngX8Bvs8AH88Hs6ipoyvg6/uOMXYO4v6l/lRJVzlEjHE7cBCY2mN5MXCErnE/7gTzpeGk57H6zcb2\nYd54rHe8azj5cYxx07HPgbPpelHlONewFUI4A3gc+FaMcR0ezzUCnWCcezzXiBRj/DCwGLgTGN1j\nUb8fzwezKFoPrAEIIZwPbBnEfUv97SPAZwFCCDPo+oZ8JIRwSffya4GngN8Cq0MIBSGE8UAZsDWB\nvNLp2BhCuLj7897G9tN0H+u7Pz51/MakIerhEMKxt8VfDlTgONcw1n2tioeBv4wxfqt79iaP5xpJ\nTjLOPZ5rRAkhvD+E8D+6J5uBDmBDH3737PM4T6XT6X58CifX465nx67PsjbGWPkmD5GGrO6Lgn2D\nrveIdgJ/SddZRXcC+cCLwH+LMaZDCB8FPkbX6YF/H2P8cTKppcyFEOYAd8UYLwwhLKLror+9ju0Q\nwmjgW8B0uu7G8L4YY1Uyz0J6c8eN83OALwKtwH7gD2OM9Y5zDVchhH8G/gDYRtf4TQN/Stc493iu\nEeEk4/yvgTvweK4RIoQwhq7fPafRdef6f6BrzGf0u+epjPNBK4okSZIkSZI0tHkxaUmSJEmSJAEW\nRZIkSZIkSepmUSRJkiRJkiTAokiSJEmSJEndLIok6f9vx44JAAAAEAatf2ofY0AMAAAAqEQRAAAA\nACeKAAAAAKhEEQAAAAA3j8t8Vz2R9aEAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Example\n", + "import matplotlib as mpl\n", + "mpl.rcParams['figure.figsize'] = (15,5)\n", + "X = np.loadtxt(\"DataSets/RequestRates.csv\", delimiter=\",\")[:,1]\n", + "\n", + "grid = np.linspace(0,3000,100)\n", + "plt.figure(figsize=(20,5))\n", + "plt.plot(grid, [IP(y,X) for y in grid])\n", + "plt.title(\"Inverse Percentiles\")\n", + "sns.rugplot(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Inverse Percentiles in Monitoring\n", + "\n", + "* Inverse Percentiles to Monitor SLAs (overlay)\n", + "* count_lower can be used to compute the number of offended users (slides)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Percentiles\n", + "\n", + "* Complement or Inverse to Inverse Percentiles:\n", + " - IP: The ratio of samples was below a value $y$ was $?\\%$\n", + " - Percentile: 90% of all queries where faster than $?$\n", + "\n", + "* The definition is a little involved so cover examples first\n", + "\n", + "Examples:\n", + "\n", + "* The minimum is a 0%-percentile\n", + "* A median is a 50%-percentile\n", + "* The maximum is a 100%-percentile\n", + "* Quartiles: $0,25,50,75,100$-percentiles\n", + "* Quantiles: The $r$-quantile is the $r*100$-percentile $0\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Remarks:\n", + "\n", + "* Quantiles always exists\n", + "* Non unique (like median)\n", + "* Lot's of ways to choose a quantile function, i.e. interpolate between $s_a$ and $s_b$ cf. \n", + " http://en.wikipedia.org/wiki/Quantile#Estimating_the_quantiles_of_a_population" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "# Computation of Quantiles\n", + "def percentile_range(p,X):\n", + " q = p/100.0\n", + " S = sorted(X)\n", + " n = len(X)\n", + " upper_d = int(math.ceil(q * (n + 1)))\n", + " lower_d = int(math.floor(q * (n + 1)))\n", + " # edge cases\n", + " if upper_d == 0: upper_d = 1\n", + " if upper_d == n+1: upper_d = n\n", + " if lower_d == 0: lower_d = 1\n", + " if lower_d == n+1: lower_d = n\n", + " return (S[lower_d-1], S[upper_d-1])\n", + "\n", + "def percentile(p,X):\n", + " a,b = percentile_range(p,X)\n", + " return (a+b)/2 # mid point percentile. One choice!" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "def mark_range(a,b):\n", + " plt.plot([a,a],[0.5,1],'r-')\n", + " plt.plot([b,b],[0.5,1],'r-')\n", + " plt.plot([a,b],[0.75,0.75],'r--')\n", + "\n", + "def plot_percentile_range(p,X):\n", + " plt.figure(figsize=(14,2))\n", + " sns.rugplot(X, color=\"green\", height=0.5)\n", + " a,b = percentile_range(p,X)\n", + " mark_range(a,b)\n", + " plt.title(\"{:n}%-Percentile Range: {:.3f} .. {:,.3f}\".format(p, a,b))\n", + " plt.ylim([0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_percentile_range(50,[1,2,3,4])" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\neIcAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_percentile_range(40,[1,2,3,4])" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nMtiRJEmS1EgGO5IkSZIaaWGvDBExBpwC7ATcCRyZmTe1pD8d+HCZ/A1waGbePYK6SpIkSVJtdUZ2\nDgI2zszFwFLgxLb0TwKHZeZewIXA9sOtoiRJkiT1r06wsydVEENmXg7sMpUQEY8FbgGOjYhLgC0z\n84YR1FOSJEmS+lIn2NkMuK1l+t6ImFruocDuwEnAfsB+EbHPUGsoSZIkSQOoE+ysBsZbl8nMteXv\nW4AbM/P6zLyXagRol/YCJEmSJGm29XxBAbAcWAKcHRG7AVe3pN0EPDgiHlleWvBMYFmvAicmxntl\n0SywH+YH+2Hu2Qfzg/0w99brPlgwBkzTBr3Sh2i97od5xH5ohjrBzrnA/hGxvEwfHhEHA4syc1lE\n/D3wxYgA+EFmXtCrwJUr1wxcYQ3HxMS4/TAP2A9zzz6YH+yHube+98GWaycBWNWlDXqlD8v63g/z\nhf0w94YVbPYMdjJzEji6bfb1LemXALsOpTaSJEmSNCT+qKgkSZKkRjLYkSRJktRIBjuSJEmSGslg\nR5IkSVIjGexIkiRJaiSDHUmSJEmNZLAjSZIkqZEMdiRJkiQ1ksHOLNjrrF3v93+dvP2UO2XrUzbv\nmKc9X6fpbuutU5/tTpsYeNn2fINufz/L9ZO/33IHNZP1zFYd+9XPfjbdcsPKO18NaxsGKWe6434m\n54R+bHfaBHudtStPOuVJI1lXv/tdr7yd8tU5x9atS6+y6qSN6rjo55zb7/m5U57p5k1dd+q0V902\nveu5B3HGY27vWsde6bNhJte9QdYx1+ZTXWZikONYw7NwriuwPvjZquvu93+dvP2UO2WSyVrltc+b\nbp116nP3fXcNvGx7vkG3v5/l+snfb7mDmsl6ZquO/epnPxskX79556thbcMg5XRbZqbnhH7cfd9d\nA9Wjrn73u175O+Xrta/P5BowSF+M6rjo55zb7/m5zrWqdd7UdadOe9Vt0z+88z0cecpJ/K5LHXul\nz4aZXPcGWcdcm091mYnZPKfqgRzZkSRJktRIBjuSJEmSGslgR5IkSVIjGexIkiRJaiSDHUmSJEmN\n1PNtbBExBpwC7ATcCRyZmTd1yHcacEtmvnXotZQkSZKkPtUZ2TkI2DgzFwNLgRPbM0TEK4AH/kiC\nJEmSJM2ROsHOnsCFAJl5ObBLa2JE7A48HTht6LWTJEmSpAHVCXY2A25rmb43IhYARMTDgHcArwbG\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_percentile_range(90,X)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# (4) Histograms\n", + "\n", + "* Basic Idea: Use area to compare sample ratios, instead of point counts\n", + "* Easier to answer questios like: \"How many voters are older than 30, when presented with a histogram, than a table or a rugplot.\"\n", + "* Both a visualization method and a data-storage format" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Building your own Histogram\n", + "\n", + "1. Define value range of histogram `bin_min`, `bin_max`\n", + "2. Divide range into bins `bin[k], ..., bin[k]`\n", + "3. The bins may have variying width \n", + "4. Count the number of samples in each bin `sample_count[k]`\n", + "5. Draw a rectangle for each bin with height:\n", + " - `h[k] = sample_count[k]` -- non normalized \n", + " - `h[k] = sample_count[k] / bin_width[k]` -- normalized case" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bins: [[500, 700], [700, 800], [800, 900], [900, 1000], [1000, 1500], [1500, 1800], [1800, 2000], [2000, 2200]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "X = np.loadtxt(\"DataSets/RequestRates.csv\", delimiter=\",\")[:,1]\n", + "\n", + "# Step 1: Represent bins via list of left-edges\n", + "bin_left = [\n", + " 500, 700, 800, 900, 1000, 1500, 1800, 2000, 2200\n", + "]\n", + "\n", + "bin_min = bin_left[0]\n", + "bin_max = bin_left[-1]\n", + "bins = [ [bin_left[i-1],bin_left[i]] for i in xrange(1, len(bin_left)) ]\n", + "\n", + "print \"Bins: \", bins" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counts: [0, 10, 8, 4, 25, 23, 4, 2]\n" + ] + } + ], + "source": [ + "# Step2: Count number of samples in bins\n", + "def count(X, bins):\n", + " def findBin(x, bins):\n", + " for i, bin in enumerate(bins):\n", + " left, right = bin\n", + " if left <= x and x < right:\n", + " return i\n", + " return None\n", + " \n", + " count = [0] * len(bins)\n", + " for x in X:\n", + " i = findBin(x, bins)\n", + " if i != None:\n", + " count[i] += 1\n", + "\n", + " return count\n", + "\n", + "sample_count = count(X, bins)\n", + "\n", + "print \"Counts:\", sample_count" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nmOStSf4oej5pK3v+jSQvGh5LFzM4lur55Hwqz4aEkzM4kzTuexU9Pz4re34o63wMnVrIa639/SSP\nVtUXMwh4K3///iSbM/ifee/I+gMZvFnm2L0ogwfX/+0MPgH4j9Hz9XYgyU8m+VaSf5/BpWwLI+N6\nPiFVdXsGB6YjjqXPo+uPzGUNK3teVd9NktbaRUnemeQ3Muilnk/IaM9baycl2Z7khiTfG5mm5xO0\nymvL2Ul2V9UVSf5fkvdEzydqlZ4/kMHx8/9kcHnaH0XPJ6aqDlbV91pri0k+neS9cQxdV6v1vKoe\nTdbvGDrNM3nXJLmitfalDBLp7yZZGhlfTPJEBteZbl5lPcfu8SRfGH4asDODTwhGg4SeT94vJbmz\nqlqe3c9PGRnX8/VzeOTno/V5z3D94oq5HIfW2lsyuN/3yuH9AXq+fl6Z5JwMroj5T0le0VrbFj1f\nb48n+fzw588nuSCDN1t6vn5+M8lrquoVGVyati16PlGttZcm+W9JPl5V/zmOoetuRc8/OVy3bsfQ\nqYW8qrq0qn5meOP4/0ryd5P8YWvtkuGUNyS5O8l/T3Jxa+2U1tqWJC9P8s1p1dmZezK4njettR9P\nclqS/zq8Vy/R8/WwO89+0vJEBqffv6HnU/E/j+H15I8zuH8yw3/evfJfxtpaa2/L4NPHy6rq28PV\nX4uer4eFqvp6Vf3V4f0bfyfJn1TVDdHz9XZ3nu3jJRn01mvL+no8g7MVyeAWn9Oj5xMzvO/rC0n+\nWVV9fLj6G46h62e1nq/3MXTq3665wi8n+Z3hDYX3J/lMVS231n4rg4CykMFNoD+YZZHzavhtPK9t\nrX0tg15en+ThJNv1fN18IMnHWmtfyeAbTd+T5H9Ez6dh7NeT1tqHkny8tXZ3Bt9o9daZVT2nhpcO\n/maSbye5vbW2nOTLVfWv9HxdLD/XQFV9V8/X1S9n8Bp+fQYf4r21qvbq+bp6R5JPttYOJflBknfY\nzyfqxgyC802ttZszeH15V5LfdgxdNyt7fnKSv5x1PIYuLC8/53EDAACAOeNh6AAAAB0R8gAAADoi\n5AEAAHREyAMAAOiIkAcAANARIQ8AAKAjQh4AAEBH/j9MtvMIuj6xUQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib import pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "%matplotlib inline\n", + "\n", + "# Step3: Plot bar chart\n", + "def my_hist(X, bins, normed=True, **kwargs):\n", + " bin_left = [ l for l, r in bins ]\n", + " bin_width = [ r-l for l,r in bins ]\n", + " bin_height = [ \n", + " float(c) / w if normed else c \n", + " for c,w in zip(count(X, bins), bin_width)\n", + " ]\n", + " plt.bar(bin_left,width=bin_width,height=bin_height, **kwargs)\n", + "\n", + "plt.figure(figsize=(15,5))\n", + "my_hist(X,bins)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def plot_hist(X, bin_min, bin_max, bin_width):\n", + " plt.figure(figsize=(15,5))\n", + " bins =[ [i, i+bin_width] for i in np.arange(bin_min, bin_max, bin_width) ]\n", + " my_hist(X,bins)\n", + " print \"Histogram with bin_width \", bin_width\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## How bin choices affect the apperance" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Histogram with bin_width 5\n" + ] + }, + { + "data": { + "image/png": "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\nQIOEOQAAgAYJcwAAAA0S5gAAABokzAEAADRImAMAAGiQMAcAANAgYQ4AAKBBwhwAAECDhDkAAIAG\nCXMAAAANEuYAAAAaJMwBAAA0SJgDAABokDAHAADQIGEOAACgQcIcAABAg4Q5AACABglzAAAADRLm\nAAAAGiTMAQAANEiYAwAAaJAwBwAA0CBhDgAAoEHCHAAAQIOEOQAAgAYJcwAAAA3aM26GUspSkjuT\nXJXk8SS31VofGJh+c5K3Jnkyyf211h+YUa0AAAD0dXln7qYkF9daDyS5I8nBjQmllOcl+cdJXlNr\nfXWS55dS3jCTSgEAADirS5i7NsmRJKm13pfk6oFpX01yoNb61f7wnvTevQMAAGCGxn7MMsllSU4M\nDD9VStlVaz1Ta11PcixJSik/mOTSWut/nkGdzXv66afz0EMPnH2cLGX37l254oqXZPfu3WOXSdJ5\n3q3m67Kd/fuvmniZ4W2O29+u+7bZerru53aO+2bLT6tX07LTbe7knJm1Ufu23eWn3etFNovzcDvr\n3G4dz1UP1s+cyYMPPpi1tdMTX5OmaWOb465to65jyfrZZUYtn+TsMg8//IWJ6hncTpeaRh2rWfRy\n1Dq71jHJ/WPcdjbGJ88+xutnzpx9PK4vW43b7FhvZ/pzZaf32+1sJ1m86/X5cC8ZNMn5dz7sb4u6\nhLmTSZYHhnfVWs9sDPT/pu4nk/zJJH+ly0ZXVpbHz3SeWV1dzVt/6mO5ZN/lefR/fzZfu/zCJMkH\n33VLrrzyyrHLPHbikU7zDq7z+PG9Z6fv3783KyvL54zbGH/y5CND29mb/fufPd9g38bVNm5/u+7b\nqPV0OR5d6xhn1HEdt52ute3EysryjrfZdd/mYdS+jTsnRy2fTL/XXc3jOjeL83A76xy3zKjr0OA5\nnUz/nBzc5ldOHcs7P/Clc7YzrWO32b6NsrHNr5x6dMtr26jr2OAyo66NSc5Z5oVf99LO9XS53o7r\n1TR6OVznqHV2rWPcMe66nXHH+CunjuXdH/1SLtn3f8f2Zatxm/V/O9NnabPXBdu533Y1z/3tYtHu\nrTu9F3U9/5LF2N8LUZcwdzTJG5LcXUq5Jsn9Q9M/kOQrtdabum702LFT3Ss8T6ytnc4l+y7P3he8\nOI+d+GIu2Xf52fGbHY/BZbrOOzjf2trpc6YPj9sYn+Sc7QyOH16+a23j9rfrvo1aT5fj0bWOcUYd\n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\nduOfL6X8iXTsSSnleUk+lOTyJCeTfE+t9dF57MP5bqhHfzbJe9N7Hn01yXfXWo/p0XwN9mhg3C1J\n/nat9UB/WI/mZOg5tJLk55I8P8nu9J5DD+rPfI24zv1ser1YrbXe1p9Hj+ag/xru59N7DXdRkh9L\n8nvxemEhbNKfh5O8LzN6rTD1d+ZKKa9J8sr+DfP6JF+f5GCSH6m1vibJrlLKXy6l/KEkP5jklUm+\nI8m7SilfM+16GOnGJLtrra9K8k+S/Hj0aO5KKX8vvRc1F/dHTdKT25P8bq31uiQfTPKO53wHLgAj\nevTTSd5Sa31tksNJfliP5mtEj1JK+dYk3zswrEdzMqI/P5nkQ7XW69M73t+kP/M1okfvTPIP+8f9\neaWU1+vRXL0pyZf6x/g7kvzzeL2wSEb1Z6avFWbxMctvT/KZUsovJflYkl9J8rJa67396b+e5IYk\nfy7JJ2qtT9VaTyb5fJ75LTtmazXJnv5vCO5L738E9Gj+fj/Jdw4Mv7xjT65Kcm2SIwPzvu65KfmC\nM9yjN9Za7+8/3pPk8ejRvJ3To1LKC5P80yRvHZhHj+Zn+Dn0qiRfV0r5T0luSXJP9Gfehnv06SQv\n6r9mWE7vNYMezc+/zTMv8Hen925P19dwejR7w/15MjN+rTCLMPei9H5U/K+lly4/PLSdU0kuS++C\ncGJg/On0ggWzdzrJNyT5XJL3p/cxsaWB6Xo0B7XWw+ldlDdM0pPB8RvzMmXDPaq1fjFJSikHkrwl\nyT9L79jr0ZwM9qiUsivJoSRvS/Llgdn0aE5GXOeuSLJWa70hyf9K8vboz1yN6NHn03ud8D/T++jX\nPdGjuam1PlZr/XIpZTnJv0vyD+L1wsIY1Z9a6yPJ7F4rzCLMPZrkN/pJczW99DkYAJaT/EF6nwO9\nbMR4Zu/vJjlSay3p/S/AL6T3ud4NerQYzgw83qonx/vjl4fm5TlQSnljen8bfGP/c+16tDheluQb\n0/t7n48k+eZSysHo0SJ5NMkv9x//cpKr03shoz+L4z1JXlVr/eb0PvZ1MHo0V6WUP5bkvyS5q9b6\nb+L1wkIZ6s9H++Nm9lphFmHuE+l99jOllD+a5NIkv9n/W7ok+QtJ7k3y35JcW0q5qJSyL8k3JfnM\nDOrh2dbyTOr/g/Te8v20Hi2c/1FKua7/eFxPfju9v4VM/997h1fG9JVS3pTe/7JdX2v9Qn/070SP\nFsFSrfW/11q/pf93Cn8jye/VWt8WPVok9+aZY35den1wnVssj6b3DkGS/J/0vqxGj+ak/7dWv5Hk\n79da7+qP/rTXC4thVH9m/Vph6t9m2f8mlleXUn4nvbd9b0/yUJJD/T/s+2ySu2ut66WU96YX/pbS\n+8PNJ6ZdDyP9dJKfL6V8PL1vHH17kk9FjxbNDyX5uS49KaX8bJK7Sin3pvdNSbfMreoLRP8jfO9J\n8oUkh0sp60l+q9b6j/RoIaxvNqHW+kU9Whg/lN695/b0/pPxllrrCf1ZKG9O8tFSypNJnkjyZs+h\nubojvUD9jlLKO9O71r01yfu8XlgIw/3ZneRPZYavFZbW1ze93wEAALCg/Gg4AABAg4Q5AACABglz\nAAAADRLmAAAAGiTMAQAANEiYAwAAaJAwBwAA0KD/D5FrePWpxDH8AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bin_min = 600\n", + "bin_max = 2200\n", + "plot_hist(X, bin_min, bin_max, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Histogram with bin_width 50\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAE5CAYAAAAtN+mQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHP5JREFUeJzt3X+QXeV9H+DPsjIkQiuB8Cozwc4o1KM3pE1JDdNijIF6\nYBI72KUzmUlhnKZ4sDPEbXA8SYviwW0ndeiUWPnlwUmjmDqkbkmYkMFhism0jgMKxU2bmeJEfi8d\nAaobBglWrKQIErTa/nHvwu120V7Q3rOXV8/zj/ac9xy9757vPT8+e869d2pxcTEAAAC04Yz1HgAA\nAABrR8gDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhmxYbYFSylSSO5NclOSlJDfVWvctW2Zj\nkoeSfLjW2hvMuzXJB5O8Jcmdtda71njsAAAALDPKnbzrkpxVa70syc4ku4YbSykXJ/lqkguG5l2Z\n5F2Dda5K8va1GjAAAACvbZSQd3mSB5Ok1vpYkkuWtZ+ZfhD8xtC870vy9VLK7ya5P8nvnfpQAQAA\nWM0oIW9zkvmh6eOllFfWq7U+Wmv9P0mmhpZ5a5KLk/xgkpuTfHENxgoAAMAqVn1PXpLDSWaGps+o\ntZ5YZZ3nk+yttR5P0iulvFRKeWut9bnXWmFxcXFxamrqtZoBAABatyaBaJSQtyfJtUnuLaVcmuTx\nEdZ5JMmPJ/n5Usq3J9mYfvB7TVNTUzl48MgI/zXrYXZ2Rn0mnBpNPjWabOoz+dRo8qnRZFOfyTc7\nO7P6QiMYJeTdl+SaUsqewfSNpZTrk5xda909tNzi0g+11gdKKe8ppXwt/TT6Y7XWxQAAADBWq4a8\nQTi7edns3grLvXfZ9K2nNjQAAABeL1+GDgAA0BAhDwAAoCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAA\nABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0\nRMgDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhgh5AAAADRHyAAAAGiLkAQAANETIAwAAaIiQ\nBwAA0BAhDwAAoCFCHgAAQEM2rLZAKWUqyZ1JLkryUpKbaq37li2zMclDST5ca+0Nzd+W5I+TXD08\nHwAAgPEY5U7edUnOqrVelmRnkl3DjaWUi5N8NckFy+ZvSPIrSY6tzVABAABYzSgh7/IkDyZJrfWx\nJJcsaz8z/SD4jWXzfy7J55L8+SmOEQAAgBGt+rhmks1J5oemj5dSzqi1nkiSWuujySuPdWbw8z9K\ncqDW+vullJ9ew/EyZGFhIU89tW/1BdfA1q0XddIPAKynLs+t27dfkOnp6U76Ak4vo4S8w0lmhqZf\nCXgncWOSE6WUa5J8b5LfKKV8sNZ64GQrzc7OnKyZZXq9Xm654/5s3LJtrP0cmz+Qu2/flB07doy1\nH06dfWjyqdFkU5/JN+4adXtuvaHJc6v9aLKpz+lhlJC3J8m1Se4tpVya5PHVVqi1Xrn0cynlK0l+\ndLWAlyQHDx4ZYTgsmZs7mo1btmXTued30p/6TLbZ2Rk1mnBqNNnUZ/J1UaMuz61zc0ebe83Zjyab\n+ky+tQrho4S8+5JcU0rZM5i+sZRyfZKza627h5ZbfI31X2s+AAAAa2zVkFdrXUxy87LZ/9/XIdRa\n3/sa6684HwAAgLXny9ABAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhgh5\nAAAADRHyAAAAGiLkAQAANETIAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAA\nABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0\nRMgDAABoyIbVFiilTCW5M8lFSV5KclOtdd+yZTYmeSjJh2utvVLKhiSfT7I9yZlJPl1r/dIajx0A\nAIBlRrmTd12Ss2qtlyXZmWTXcGMp5eIkX01ywdDsDyV5rtZ6RZL3Jfns2gwXAACAkxkl5F2e5MEk\nqbU+luSSZe1nph8EvzE077eS3DbUx8unNkwAAABGserjmkk2J5kfmj5eSjmj1noiSWqtjyavPNaZ\nwbxjg3kzSX47ySfXbMQAwKoWFhby1FP7Vl9wDWzffkGmp6c76QuA1Y0S8g4nmRmafiXgnUwp5e1J\nfifJZ2ut94wymNnZmdUX4hWHDm3qtD/1mXxqNPnUaLK1VJ9er5db7rg/G7dsG2s/x+YP5O7bb8iO\nHTvG2s+Scdeoy3Pr1q2bmnrNLWnxd2qJ+pweRgl5e5Jcm+TeUsqlSR5fbYVSyrcl+XKSj9VavzLq\nYA4ePDLqoiSZmzvaaX/qM9lmZ2fUaMKp0WRrrT5zc0ezccu2bDr3/E766mLbdVGjLs+tXW23LrW2\n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\n//6nx95H1xZPnOjk91pYWEgylenp8T+xvH37BZmenh57PwAAkIwW8jYnmR+aPl5KOaPWemKFtqOD\neW9N8h1Jrk1yQZL7k3zXah3Nzs6MOOzJ1uv1cssd92fjlm1j7ef5b+7NeW+7cKx9dO3FIwfzmXue\ny8Ytz4y1n+e/uTffOnPe2Gt0bP5A7r79huzYsWOs/SxpZR86dGhTp/1t3bqps22nRrSoi33Ia+6N\n6/IYl7RznGuV+pweRgl5h9O/G7dkKeAttW0eaptJ8kKS55PsrbUeT9IrpbxUSnlrrfW5k3V08OCR\n0Uc+webmjmbjlm3ZdO75Y+3n2PyzY/3/10tX266LfpL+66GL1/bs7ExT+1DX/anR69N1jZhsXexD\nXnNvXFfHuKSt41yL1GfyrVUIH+VZtT1J3p8kpZRLkzw+1LY3yTtKKeeUUs5M8p4kjyZ5JMn3D9b5\n9iQb0w9+AAAAjNEod/LuS3JNKWXPYPrGUsr1Sc6ute4upXwiyUNJppL8eq31mSQPlFLeU0r52mD+\nj9VaF8fxCwAAAPCqVUPeIJzdvGx2b6j9gSQPrLDerac8OgAAAF4XX4YOAADQECEPAACgIUIeAABA\nQ4Q8AACAhgh5AAAADRHyAAAAGiLkAQAANETIAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOEPAAAgIYI\neQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIA\nAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACgIRtWW6CUMpXkziQXJXkpyU211n1D7R9IcluSl5Pc\nVWvdPdS2LckfJ7m61tpb47EDAACwzCh38q5Lclat9bIkO5PsWmoopWwYTF+d5KokHy2lzA61/UqS\nY2s8ZgAAAF7DKCHv8iQPJkmt9bEklwy1XZjkiVrr4Vrry0keSXLFoO3nknwuyZ+v3XABAAA4mVUf\n10yyOcn80PTxUsoZtdYTK7QdSbKllPIjSQ7UWn+/lPLTazdcYCULCwvp9XqZmzs69r62b78g09PT\nY+8HeHNYPHEi+/c/PfZ+uuiDU+NcBJNjlJB3OMnM0PRSwFtq2zzUNpPkhSQ/nmSxlHJNku9N8hul\nlA/WWg+crKPZ2ZmTNb9pHDq0ab2HwATZunXT2F/bvV4vP7zzi9m4ZdtY+zk2fyB3335DduzYMdZ+\nut6HuqjREsc5WvPikYP5zD3PZeOWZ8baz/Pf3Jvz3nbhWPtoVVfHuNbORa1q5TzEyY0S8vYkuTbJ\nvaWUS5M8PtS2N8k7SinnpP/euyuS3FFr/Z2lBUopX0nyo6sFvCQ5ePDI6xn7xOriL1i8eczNHR37\na3tu7mg2btmWTeeeP9Z+lvrq4vfpUhe/U9I/sTrO0aIujj/H5p8d6//fsq6Oca2di1rU0nmoVWsV\nwkcJefcluaaUsmcwfWMp5fokZ9dad5dSPpHkoSRTSXbXWpf/KW9xTUYKAADAqlYNebXWxSQ3L5vd\nG2p/IMkDJ1n/vW94dAAAALwuvgwdAACgIUIeAABAQ4Q8AACAhgh5AAAADRHyAAAAGiLkAQAANETI\nAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcA\nANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACg\nIUIeAABAQ4Q8AACAhmxYbYFSylSSO5NclOSlJDfVWvcNtX8gyW1JXk5yV611dyllQ5LPJ9me5Mwk\nn661fmnthw8AAMCwUe7kXZfkrFrrZUl2Jtm11DAIc7uSXJ3kqiQfLaXMJvlQkudqrVckeV+Sz67x\nuAEAAFjBKCHv8iQPJkmt9bEklwy1XZjkiVrr4Vrry0keSXJFkt9K/+7eUh8vr9mIAQAAeE2rPq6Z\nZHOS+aHp46WUM2qtJ1ZoO5JkS631WJKUUmaS/HaST67ReOFNZfHEiezf//TY++mij1Z1VaMk2br1\norH3sbCwkKee2rf6gqfIaw5YL10dtxcWFpJMZXp6/B9hsX37BZmenh5rHwsLC+n1epmbOzr2frra\nbkk32+7NaJSQdzjJzND0UsBbats81DaT5IUkKaW8PcnvJPlsrfWeUQYzOzuz+kJvAocObVrvITAh\nXjxyMJ+557ls3PLMWPt5/pt7c97bLhxrH0u2bt009n21y32oqxodmz+Qu2/flB07doy1n16vl1vu\nuD8bt2wbaz9dvuaAU9PFcTvp7tjd5bn1W2fOG/vxtH9+uKGT88MP7/xiJ+eHLrZb0t22ezMaJeTt\nSXJtkntLKZcmeXyobW+Sd5RSzklyLP1HNe8opXxbki8n+Vit9SujDubgwSMjD3ySjfsvJLy5bNyy\nLZvOPX+sfRybf3as//+wubmjY99Xu96HuqjRki62XWuvOeDUdHHcXuqnK10d57o6P3R1bm1tuyXd\nvb67slZ/kBkl5N2X5JpSyp7B9I2llOuTnD34JM1PJHkoyVSS3bXWZ0opv5DknCS3lVI+lWQxyftq\nrX+5JqMGAABgRauGvFrrYpKbl83uDbU/kOSBZet8PMnH12KAAAAAjM6XoQMAADREyAMAAGiIkAcA\nANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACg\nIUIeAABAQ4Q8AACAhgh5AAAADRHyAAAAGiLkAQAANETIAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOE\nPAAAgIYIeQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcAANCQDastUEqZSnJnkouSvJTkplrrvqH2\nDyS5LcnLSe6qte5ebR0AAADGY5Q7edclOavWelmSnUl2LTWUUjYMpq9OclWSj5ZSZk+2DgAAAOMz\nSsi7PMmDSVJrfSzJJUNtFyZ5otZ6uNb6cpKHk1y5yjoAAACMyaqPaybZnGR+aPp4KeWMWuuJFdqO\nJtmSZOYk66yo1+tlbu7o6COfYPv3P51j8wfG3s+LR+aSTDXTT5d96eeNOTZ/IPv3Pz32frrah5Ju\nt92TTz459uOc449+uu5LP5PdT1fH7cTx541q7dza5XGuy9d3V2Zn37km/8/U4uLiSRcopXwmyaO1\n1nsH0/trrd8x+Pl7kvzrWusPDKZ3JXkkyWVJ/utK6wAAADA+ozyuuSfJ+5OklHJpkseH2vYmeUcp\n5ZxSyplJ3pPk0SR/dJJ1AAAAGJNR7uQtfVLm3xzMujHJxUnOHnyS5g8k+efp35f99Vrrr6y0Tq21\nN45fAAAAgFetGvIAAAB48/Bl6AAAAA0R8gAAABoi5AEAADREyAMAAGjIKF+GvmZKKbcm+WCSt6T/\n6Zt/mOTfJTmR5Ou11o8NlvtIko8meTnJp2utD3Q5ztNRKWVDki8k2Z7keJKPJFmI+kyEUsrfSf87\nKf9uKeWvZcS6lFK+JclvJtmW5HCSH6m1Pr8ev0PrltXoe5P8Uvr70l8m+Ye11oNqtH6G6zM074Yk\n/7jWetlgWn3W0bJ9aDbJryU5J8l0+vvQk2q0flY4xn0u/Tr0aq03DZZRn3UwuIb7fPrXcGcm+XSS\nP4trhYnxGjXan+SXM6Zrhc7u5JVSrkzyrsHJ9Kok35FkV5KfrrVemeSMUsrfK6V8W5J/kuRdSb4/\nye2llLd0Nc7T2PuTTNda353kZ5L8bNRnIpRSfir9i52zBrNeT11uTvI/a61XJLk7yW2d/wKngRVq\n9AtJPlZrfW+S+5L8MzVaPyvUJ6WUv5Xkw0PT6rOOVqjRv0nym7XWq9Lf5t+lRutnhfp8Ksm/GGzz\nbyml/ID6rKsPJXlusI2/P8ln41ph0qxUo7FeK3T5uOb3Jfl6KeV3k9yf5PeSvLPW+vCg/T8luSbJ\n307ySK31eK31cJIn8ur37TE+vSQbBt9xuCX9vx6oz2T4X0n+/tD0xSPW5aIklyd5cGjZq7sZ8mln\neY1+qNb6+ODnDUleihqtp/+nPqWU85L8qyS3DC2jPutr+T707iRvK6X8fpIbkvxB1Gg9La/PnyR5\n6+CaYSb9awb1WT+/lVcv+qfTvzM06jWcGnVjeY1ezpivFboMeW9N/0vUfzD9NPrvl/V/JMnm9A8W\n80Pzj6YfOhivo0m+M8k3kvxq+o+aTQ21q886qbXel/4Be8nrqcvw/KVlWWPLa1RrfTZJSimXJflY\nkp9Pf9ur0ToYrk8p5Ywku5N8IslfDC2mPutohePc9iRztdZrkvzvJLdGjdbNCvV5Iv3rhD9N//Gx\nP4j6rJta67Fa61+UUmaS/HaST8a1wkRZqUa11gPJ+K4Vugx5zyf58iCZ9tJPq8PhYCbJC+k/Z7p5\nhfmM108kebDWWtL/i8FvpP/M8BL1mRwnhn4+WV0ODebPLFuWDpRSfij99x6/f/DcvBpNhncmeUf6\n7yf6D0m+u5SyK+ozaZ5P8qXBz19Kckn6FzhqNBl+Mcm7a63fnf6jY7uiPuuqlPL2JP8lyRdqrf8x\nrhUmzrIa3TOYN7ZrhS5D3iPpP1uaUsq3Jzk7yX8evFcvSd6X5OEk/y3J5aWUM0spW5J8V5KvdzjO\n09VcXv0LwQvp3zb+E/WZSP+jlHLF4OfV6vJH6b/fMoN/H17+n7H2SikfSv+vclfVWp8ezP5a1Gi9\nTdVa/7jW+j2D90D8gyR/Vmv9RNRn0jycV7f7FenXwnFucjyf/t2EJPnz9D8gR33WyeB9XF9O8k9r\nrV8YzP4T1wqTY6UajftaobNP1xx8Msx7SilfS/8W8s1Jnkqye/CGwr1J7q21LpZSfin9UDiV/ptG\n/6qrcZ7GfiHJ50spf5j+p5/emuS/R30m0U8m+bVR6lJK+VySL5RSHk7/k5tuWLdRnyYGjwP+YpKn\nk9xXSllM8tVa679Uo3W3+FoNtdZn1Wei/GT655+b0/8D5A211nk1mhgfSXJPKeXlJH+V5CP2oXW1\nM/2gfVsp5VPpH+tuSfLLrhUmxvIaTSf56xnjtcLU4uJrnvMAAAB4k/Fl6AAAAA0R8gAAABoi5AEA\nADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBD/i96X4pnMSJqlAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_hist(X, bin_min, bin_max, 50)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Histogram with bin_width 2000\n" + ] + }, + { + "data": { + "image/png": "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\nZebmP0/ye0ne7dzJRtDdp6rqviQfSfLvs4bnzvUOfgczCXvp7kNJ/iTJK2fqC0meyuSe1W3LrIez\n4dTM8gvNyaPT9QtL+sJa+VR3f+X0cpJXZ/IfgLnJWVdVP5Tk80k+0d3/Mc6dbBDLzE3nTjaU7v7Z\nJD+aZE+S75spreq5c72D3z9K8qEkqaq/nMmAHq6qq6f1a5M8kuS/JdlZVedV1YVJfizJ19bheDk3\n/X5V7ZourzQnfzfJm6Z93zTtC2vloaq6Yrr8hkxufzc3Oeum3z95KMl7uvsT09Vfce5kvZ1hbjp3\nsiFU1duq6p9Nm88meT7Jl15EFnpR83PT4uLiKg9hftMvJd6byT2tp5K8J5OrfnuSvDzJ40l+vrsX\nq+rnkvzjTC5/fqC7P7U+R825oKp+OMl/6O6rqupHMnmgxopzsqq+L8knkvylTJ7K9Pe7+5vrMwpG\ntGRu/niSf53kO0m+keTm7j5hbnK2VdWvJfl7Sf5HJvNuMck7M5mfzp2smzPMzfcluTPOnayzqvr+\nTLLQX8zk2Su/mslcnSsLvdj5ua7BDwAAgLW33rd6AgAAsMYEPwAAgMEJfgAAAIMT/AAAAAYn+AEA\nAAxO8AMAABic4AcAADC4/wvbi+gE9iUG5AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_hist(X, bin_min, bin_max, 2000)\n", + "# -> Only the total count is displayed" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Common bin-width choices\n", + "\n", + "Remarks:\n", + "* Can convert `bin_count` and `bin_width` using relation $$ bin\\_max - bin\\_min = bin\\_count \\cdot bin\\_width.$$\n", + "\n", + "* Choices `bin_min=min(X)` and `bin_max=max(X)` are common. But: dependence on input data.\n", + "\n", + "Choices for bin-width:\n", + "\n", + "* Excel: Let $n$ be the number of samples, then:\n", + "\n", + " $$ bin\\_count = \\sqrt{n} $$\n", + "\n", + "* Scott's normal reference rule\n", + "\n", + " $$ bin\\_width = \\frac{3.5 \\sigma}{n^{1/3}} $$\n", + "\n", + " where $\\sigma$ is the standard deviation (cf. later).\n", + " This is optimal for random samples of normally distributed data, in a certain sense.\n", + "\n", + "* Freedman–Diaconis rule\n", + "\n", + " $$ bin\\_width = \\frac{2 IQR}{n^{1/3}} $$\n", + " \n", + " where IQR is the inter-quartile range (cf. later). Like Scott's rule but more robust agains outliers.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# A pragmatic choice: HDR Histograms\n", + "\n", + "Example: A decimal HDR Histogram with precision=2 has bin boundaries:\n", + " \n", + " .... 1.0, 1.1, 1.2, ... 1.9, 2.0, 2.1, ...., 9.9; --- bin width = 0.1\n", + " 10.0, 11.0, 12.0 ... 19.0, 20.0, 21.0 ...., 99 ; --- bin width = 1\n", + " ...\n", + "\n", + "** Properties: **\n", + "* Captures large part of float range\n", + "* Bin boundaries do not depend on data! -> Can aggregate counts!\n", + "* Bin width increase with growing values\n", + "* Allows compact memory representation\n", + "* Implementation available at http://hdrhistogram.org/" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "import math\n", + "def HDR_bin_width(x):\n", + " if x == 0: return 0\n", + " sign = x / abs(x)\n", + " return sign * 10 ** ( math.floor(math.log10(abs(x)) - 1 ) )\n", + "\n", + "def HDR_bin_left(x):\n", + " w = HDR_bin_width(x)\n", + " if w == 0: return 0\n", + " return math.floor(x / w) * w\n", + "\n", + "def HRD_bin_right(x):\n", + " return bin_left(x) + bin_width(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def HDR_hist(X):\n", + " count = {}\n", + " for x in X:\n", + " l = HDR_bin_left(x)\n", + " count[l] = count.get(l,0) + 1\n", + " bin_left = sorted(count.keys())\n", + " bin_width = [ HDR_bin_width(l) for l in bin_left ]\n", + " bin_height = [ abs(count[l] / HDR_bin_width(l))\n", + " for l in bin_left\n", + " ]\n", + " plt.figure(figsize=(15,5))\n", + " plt.bar(bin_left,width=bin_width,height=bin_height)" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\naP6lA/bzRVn0nqu/7qvOTMmswtL+3lBr/UZ/ekMWrlbT3zad0NtSysVJ3p3kbYvWGVlvxx3gnplk\n/6L5J0spvnfXmFrroVrrwVLKZJJ7k7wrC2/0j5nLQq8nc2K/D2ThTQXrVCnlV5M8Umv9XJ7q6eJ/\no3rbtuckeWmSf5iFT/j+JPrbJQeS/FiSbyf5T1m4FMtrc8Nqrfdl4UPSY1bTz8XLj63LOrK0v7XW\n7yVJKeXKJDcm+UBOfu+svw1Y3Nt+1rkryTuSHFy02sh6O+4w9XgWijq+v1rr0THvkzEopTwvyeeT\n3FNr/VgWrsc/ZjLJY1no9zOXWc769cYk15VSHszCp0B/lGR60eN627a9SR7of9q3NQuf7i5+466/\nbfv1JJ+ttZY89e/3vEWP62/7Bv2/dl9OfM+lx40opdyQhe8nX9//3pP+tu8lSV6QhaubPprk75RS\nbssIezvuALclC9fop5Tyc0m+sfLqrEf9a3YfSPKva6339Bd/rZRyVX/61UkeTvK/kryilHJeKWUq\nyQuTfPOMF8zAaq1X11qv7X/h9v8k+ZUkn9HbzvhCFq6zTynlh5NsSvLf+9+NS/S3dbN56lPbx7Jw\nCdbX9LdTvrqK1+O/SP89V//Ph5cOxvpSSnl9Fs68XVNr3dVf/OXob8smaq1fqbX+VP+7jf84yV/V\nWt+REfZ2rL9CmYUvZF5XStnSn3/jmPfHeNyS5FlJbi2l/GaS+Sxc0/u7/S9ffivJJ2qt86WUD2Xh\nTeNEFr54fWStimZo70xyp962r//rVn+/lPLlLPTtrUl2JrlLfzvh9iR3l1IeysKvjN6c5H9Hf7tk\n4NfjUsodSe4ppTychV80fN2aVc1p9S+z+2CSXUnuK6XMJ/mftdZ/r79Nmz/VA7XW742qtxPz86fc\nDwAAAOuIHxQBAABohAAHAADQCAEOAACgEQIcAABAIwQ4AACARghwAAAAjRDgAAAAGvH/ASWcpc6o\nlld+AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "Y = np.genfromtxt(\"DataSets/WebLatency.csv\", delimiter=\",\")[:,2][:200] - 85\n", + "HDR_hist(Y)\n", + "sns.rugplot(Y, color=\"red\")" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAE5CAYAAAAtN+mQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHClJREFUeJzt3XuQZNddH/DvPpCcfWitNbMpWw4RlrUHEUAJVsVikR9R\nIUKMcQR5EAtDSkKmShBQhcIBhbKTEMAUKinIuGRiJDuKHSdKnIiYUJbBiQ3yYkTikEIE+YzwarXY\nUVmrHXkfXsmWZiZ/dK/UGvXM3Nnpnu49+/n8s9P3ntP31/c3fed+tx930+LiYgAAAGjD5kkXAAAA\nwOgIeQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcAANCQrasNKKVsSnJ7kkuTPJXk+lrrgYH1fyfJ\nTydZSPKhWuu7VpsDAADAeHR5Je/qJOfWWvcluSnJradWlFI2J/nFJFcm2ZfkR0spu1eaAwAAwPh0\nCXlXJLk3SWqt9ye57NSKWutCkktqrSeSfG3//r660hwAAADGp0vIOy/J0YHbz/RfwUvSC3qllO9N\n8n+SfDLJydXmAAAAMB6rfiYvybEkOwdub+6/gvesWus9Se4ppdyV5IfSC3grzllqcXFxcdOmTd2q\nZs1mZ2fzgzd9KNt27Xl22cmjj+UD77wme/funWBlAABA30gCUZeQtz/JG5N8uJRyeZIHTq0opexM\n8ptJvrPW+tUkX04y35/zpmFzlrNp06YcPnx87Y+ATubmTmTbrj3Zcf4FL1jeZb/PzOzUnymnR9NP\nj6ab/kw/PZp+ejTd9Gf6zczsXH1QB11C3j1Jriql7O/fvraU8uYk22utd5RSPpjk90opX03yx0k+\n2B/3nYNzRlItAAAAK1o15NVaF5PcsGTx7MD6O5LcMWTq0jkAAACMmS9DAQAAaIiQBwAA0BAhDwAA\noCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBD\nhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhgh5\nAAAADRHyAAAAGiLkAQAANETIAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAA\nABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAasnW1AaWU\nTUluT3JpkqeSXF9rPTCw/s1JbkzydJIHaq0/2l/+mSRH+8MerrX+8IhrBwAAYIlVQ16Sq5OcW2vd\nV0p5dZJb+8tSSnlRkp9L8k211q+UUj5USnljkt9JklrrlWOqGwAAgCG6vF3ziiT3Jkmt9f4klw2s\n+0qSfbXWr/Rvb03v1b5Lk2wvpXyslPLxfjgEAABgzLq8kndennvbZZI8U0rZXGtdqLUuJjmcJKWU\nH0+yvdb68VLKNyW5udZ6Zynl4iQfLaXsrbUurLShmZmdp/kwWM0TT+wYunz37h2d97v+TD89mn56\nNN30Z/rp0fTTo+mmP2eHLiHvWJLB34bNg2Gt/5m9X05ycZLv6y+eTfJnSVJrfaiUciTJS5N8YaUN\nHT58vHvlrMnc3Illl3fZ7zMzO/VnyunR9NOj6aY/00+Ppp8eTTf9mX6jCuFd3q65P8kbkqSUcnmS\nB5asf296n9m7euBtm9cluaU/52XphcRHR1IxAAAAy+rySt49Sa4qpezv3762/42a25N8Jsm1Se4r\npXwiyWKS25LckeSuUsp9SRaSXLfaWzUBAABYv1VDXv9zdzcsWTzb4T5+4HSLAgAA4PS4GDoAAEBD\nhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0RMgDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhgh5\nAAAADRHyAAAAGiLkAQAANETIAwAAaIiQBwAA0BAhDwAAoCFCHgAAQEOEPAAAgIYIeQAAAA0R8gAA\nABoi5AEAADREyAMAAGiIkAcAANAQIQ8AAKAhQh4AAEBDhDwAAICGCHkAAAANEfIAAAAaIuQBAAA0\nRMgDAABoiJAHAADQECEPAACgIUIeAABAQ4Q8AACAhgh5AAAADRHyAAAAGiLkAQAANETIAwAAaMjW\n1QaUUjYluT3JpUmeSnJ9rfXAwPo3J7kxydNJHqi1/uhqcwAAABiPLq/kXZ3k3FrrviQ3Jbn11IpS\nyouS/FyS19VaX5PkxaWUN640BwAAgPHpEvKuSHJvktRa709y2cC6ryTZV2v9Sv/21vReuVtpDgAA\nAGOy6ts1k5yX5OjA7WdKKZtrrQu11sUkh5OklPLjSbbXWj9eSvn+5eaMrPJGzM/P5+DBF76T9cIL\nX5EtW7aMdduLCws5dOiRVbc9Pz+f2dnZzM2dmEidw6x3v01yvwMAwDh1CXnHkuwcuP28sNb//N0v\n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\nAACAhgh5AAAADeny7ZoAAIzQ4sJCDh16ZNJljNzu3ZdOugQgQh4AwIZ78vjh3HL349m2q53LCJ88\n+lg+8M4dOf/8l066FDjrCXkAABOwbdee7Dj/gkmXATTIZ/IAAAAaIuQBAAA0RMgDAABoiJAHAADQ\nECEPAACgIUIeAABAQ1xCAQCAdVtcWMjDDz+cubkTky5lZC688BXZsmXLpMuANRPyAABYtyePH847\n3vt4tu3aM+lSRuLk0cdy29velIsuunjSpcCaCXkAAIyEC7zDdPCZPAAAgIYIeQAAAA0R8gAAABoi\n5AEAADREyAMAAGiIkAcAANAQl1CABszPz2d2draZC9AeOvTIpEsAgKa0dq5wigvWDyfkQQMOHjyQ\nG2/+SDMXoD3y+QfzkpdfMukyAKAZrZ0rJC5YvxIhDxrR0gVoTx794qRLAIDmtHSuwMp8Jg8AAKAh\nQh4AAEBDhDwAAICGCHlT5N13/cSzP3/LD/z9Vce/756fX9P9Lx3/6f/ycy8Y86GPv2fo/S5d9p9v\n+3vrrutjd924rvnJ8/dZ0m2/LTd/rftz6bZHNXYU1ru9ja53rYbVt9LvZJf5oxw/7c5/7atHdl+n\nu2+Wm/fuu35ixfscRy/efddP5L7f+IVl739U21ztsQ3b5mrjB9cv9/Ny9zO4jbVsZ611rWXdeq2n\nzrX2puuywWPT0nHD/u6s9TGsNmaajl+ns79Hsa1pMcpj7zRZz/GA8fHFK1PkLx859OzP2w58Ll9e\nZfzXf+nRrOXrKb7+S48+7/awhH/RscOd5p4z/3Tn7SznnIVn1jU/ef4+S7rtt+Xmr3V/Lt32qMaO\nwnq3t9H1rtWw+lb6newyf5Tjp93Wzz44svs63X2z3LzV7m8cvRi8z2H3P6ptns4xYy37Y6XHsdLj\n6lJXl/vrun6cz6f11Nm1rq6/I6eWDR6blo4b9vdurY9htTHTdPw6nf09im1Ni1Eee6fJJI7brM4r\neQAAAA0R8gAAABri7ZoAG2BxYSEPP/xw5uZOTLqUzCT53OceWtd9HDr0yGiKAZhSiwsLIz3WjeLY\nux6O22cXIQ9gAzx5/HDe8d7Hs23XnkmXkk8kuem9f7Cu+zjy+QfzkpdfMpqCAKbQk8cP55a7H8+2\nXd2/K2Alozj2rofj9tlFyAPYINt27cmO8y+YdBlJsu46Th5dy9cUAZyZRn3cnuTfAMfts4vP5AEA\nADREyAMAAGiIkAcAANCQVT+TV0rZlOT2JJcmeSrJ9bXWAwPrvyfJ25M8neT9tdY7VpsDAADAeHR5\nJe/qJOfWWvcluSnJradWlFK29m9/R5LXJ/mRUsrMSnMAAAAYny4h74ok9yZJrfX+JJcNrLskyUO1\n1mO11qeT3JfkdavMAQAAYEy6XELhvCRHB24/U0rZXGtdGLLuRJJdSXauMIclTh597NmfTzzxhefd\nXm7cWu4zSZ48Pvfs/Xe5z8Fxa507fP6mTvUMW77a/jg1di37Z9j89c4dV51rremU03lco5y/HsN+\nZ5YaVt9aal7r41vv/ujymDbSKB/P6d7XSvNOd916rHRMGOU2u97XqXGrjR9cv9Kxd7XHtZbtnM74\ntcwdputzaD11rrU3XZcN28ZyfweHLetS1ySeM0ut9dg97rqm8bg97X9bT9d6jgfrMa5zqhZsWlxc\nXHFAKeWWJJ+utX64f/tQrfXr+j9/c5JfqrV+d//2rUk+lWRfkj8YNgcAAIDx6fJ2zf1J3pAkpZTL\nkzwwsO7BJK8spby4lHJOktck+XSS319hDgAAAGPS5ZW8U9+U+S39RdcmeVWS7f1v0vzuJP8svdd/\n76y1/tqwObXW2XE8AAAAAJ6zasgDAADgzOFi6AAAAA0R8gAAABoi5AEAADREyAMAAGhIl4uhj0wp\n5WeSvCnJ16T37Zu/l+TfJFlI8ie11h/rj3trkh9J8nSSX6i1/tZG1nk2KqVsTXJXkguTPJPkrUnm\noz9ToZTy6vSuSfk3SikXpWNfSikvSvLBJHuSHEvyD2utRybxGFq3pEd/Ncm70nsufSXJD9VaD+vR\n5Az2Z2DZNUn+Ua11X/+2/kzQkufQTJJfT/LiJFvSew49rEeTM+QY9570+jBba72+P0Z/JqB/Dve+\n9M7hzknyC0n+NM4VpsYyPTqU5FczpnOFDXslr5TyuiTf1v9j+vokX5fk1iT/tNb6uiSbSyl/u5Ty\nF5P8eJJvS/JdSd5ZSvmajarzLPaGJFtqrd+e5F8m+cXoz1QopbwtvZOdc/uL1tKXG5L8ca31tUk+\nkOTtG/4AzgJDevQrSX6s1nplknuS/LQeTc6Q/qSU8teSXDdwW38maEiPfjnJB2utr09vn3+DHk3O\nkP68I8k/7+/zF5VSvlt/JuotSR7v7+PvSvLuOFeYNsN6NNZzhY18u+bfTPInpZTfSPKRJP8tybfW\nWu/rr/9okquS/PUkn6q1PlNrPZbkoTx3vT3GZzbJ1v41Dnel978H+jMd/izJ9w7cflXHvlya5Iok\n9w6M/Y6NKfmss7RH319rfaD/89YkT0WPJul5/SmlvCTJzye5cWCM/kzW0ufQtyd5eSnld5Jck+ST\n0aNJWtqfP0rytf1zhp3pnTPoz+T8xzx30r8lvVeGup7D6dHGWNqjpzPmc4WNDHlfm95F1P9uemn0\n3y3Z/vEk56V3sDg6sPxEeqGD8TqR5OuTfDbJv07vrWabBtbrz4TUWu9J74B9ylr6Mrj81FhGbGmP\naq1fTJJSyr4kP5bkX6W37/VoAgb7U0rZnOSOJD+Z5MsDw/RngoYc5y5MMldrvSrJnyf5mejRxAzp\nz0PpnSf83/TePvbJ6M/E1FpP1lq/XErZmeQ/JfnZOFeYKsN6VGt9LBnfucJGhrwjST7WT6az6aXV\nwXCwM8mX0nuf6XlDljNe/zjJvbXWkt7/GPzb9N4zfIr+TI+FgZ9X6ssT/eU7l4xlA5RSvj+9zx6/\nof++eT2aDt+a5JXpfZ7o3yf5xlLKrdGfaXMkyW/2f/7NJJeld4KjR9PhtiTfXmv9xvTeOnZr9Gei\nSil/Kcn/SHJXrfU/xLnC1FnSo7v7y8Z2rrCRIe9T6b23NKWUlyXZnuS/9z+rlyR/K8l9Sf5nkitK\nKeeUUnYl+YYkf7KBdZ6t5vLc/xB8Kb2Xjf9If6bS/y6lvLb/82p9+f30Pm+Z/r/3Lb0zRq+U8pb0\n/lfu9bXWR/qL/zB6NGmbaq3/q9b6zf3PQPyDJH9aa/3J6M+0uS/P7ffXptcLx7npcSS9VxOS5P+l\n9wU5+jMh/c9xfSzJP6m13tVf/EfOFabHsB6N+1xhw75ds//NMK8ppfxhei8h35DkYJI7+h8ofDDJ\nh2uti6WUd6UXCjel96HRr25UnWexX0nyvlLK76X37ac/k+Qz0Z9p9FNJfr1LX0op70lyVynlvvS+\nuemaiVV9lui/HfC2JI8kuaeUspjkd2ut/0KPJm5xuRW11i/qz1T5qfT+/tyQ3n9AXlNrPapHU+Ot\nSe4upTyd5KtJ3uo5NFE3pRe0315KeUd6x7obk/yqc4WpsbRHW5L8lYzxXGHT4uKyf/MAAAA4w7gY\nOgAAQEOEPAAAgIYIeQAAAA0R8gAAABoi5AEAADREyAMAAGiIkAcAANCQ/w9A9LRflgYINQAAAABJ\nRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "HDR_hist(X)\n", + "sns.rugplot(X, color=\"red\")" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 200)" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA24AAAE5CAYAAADoRXMBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2U5HV9J/r3TM+A9MzQzJAZgjw4MnF+uns1OYnXxBwM\neVg3uudEJbpxY8zGmMi6h8Rxk3CD5up6DUQ2LEZcXRIfMFyz7iIsIHc90Vzknqx4iQGTu7uecH4Y\nh2YAWabngZ6e6WGYqe77R3cV1dVV3dVFz/QX+vU6h9NV9fs+fL6/37ce3nT39Jrp6ekAAABQrrUr\nXQAAAAALE9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACgcOsWOlhV1bokNybZnuS0JFcn+bsk\nf5pkKsm367q+fLbtu5JcluR4kqvruv7ySasaAABgFVnsO25vT7KvruufSPK6JJ9I8tEk76/r+pIk\na6uqemNVVeck+c0kr55t95GqqtafxLoBAABWjQW/45bki0lumb09lOREkh+u6/rrs4/9eZJ/nJnv\nvt1T1/WJJIeqqvpOklck+dbylwwAALC6LBjc6rqeTJKqqjZlJsD9XpJ/29ZkIsmZSTYlGW97/HCS\nkWWtFAAAYJVa7DtuqarqgiS3JflEXdf/qaqqP2w7vCnJk0kOZSbAdT6+oOnp6ek1a9YsrWKARTz4\n4IP55fd9IUny+Y+8LTt37syDDz6Yn3vHh3L6hrNy6yffmyR5y+Ufy62ffG/r+Fsu/6OcceY5Xfsl\nyQtfenGS5E+u/EfZuXPnnPn+xTV3zTvWHPPsC16eyfEncvTQ3px9wctb7ZLkl9/3hRyd2J9jh/fn\nrHNn+n34slfnin/7pVadb//d/zO//+7X5Jqbv9sa54wzz8nRif3J9IkcOzKeF7704kyOP5HpqUb+\n7N/887Y1faw1zs+940Nz1pCkVfeVb92RD37q3jlr73Vu28dsP4ed7ZrzzdQ8lmt/54354Kfuba13\n5JyL8mf/5p+31ti8PXOdRlprPHZ4f9dz35zjrHN35ujE/rz1ku/Pvn37kiTf933fly/dfzS//+7X\n5AN//PX8/rtfk1977x/kws3Hc+Kcn87vv/s1uf/++7Nv374cPHgwf/PYGdn1z17Zqv81r3lNHnro\noXzlK1/J1779VJJk1z97Zc4///w8+uijOf/88/OzP/uzHeflmf0zcw3vaF3vK9+6I+/5P25qrePK\nt+7INTd/d0nXovOctl/r7tfpj+bM322+zn155Vt3tPZer3EX2uvtz5/2OZq1Nq9v89p3Po/ecvnH\nWvukeR7b932yZs7zon3MJK290L5nFjr3zWPN516vupvPp39xzV3ZuPm8eedlIYcPPjbvNQOgQ1+B\naLF/nOScJF9Ncnld1//P7MN/W1XVT9R1/V+TvD7J3UnuS3J1VVWnJTkjyUuTfHvRCtesydjYRD91\nQrZu3WS/0LfhkW1JkgMHDmdsbCIHDhzO6RtG8oKNW3LgwOEkad1uHl+oX7vmsfb73Y61P95p7nzT\nyfSJ1tzj45Nz6mw+Nn990zl6aG/P+g4cODxnnPZ2nbWNj0/OW3uvunudw8527fO9YOOWtjlm1ttZ\nR2ednW07a2vO0Wx35MixTE4+nSQ5cuTYnPPW/Hr8eCNrZu+3t0+SiYmn5swzPj457/j4+GTra7c9\n0H4N242PT845H+3H+70W/ezFhcbsdayzXa9r2tm3215vr7tX3+Yauj2P5u6T+eex83nRz55Z6Nw3\njy1Wd/trxCAWek7x/OVzC/3aunVTX+0W+47b+5KcleQDVVV9MMl0kl1J/t3sPz7yQJJb67qerqrq\n40nuyUxifH9d10/3GhQAAID+LfY7bu9N8t4uh36yS9vPJvns8pQFAABAkz/ADQAAUDjBDQAAoHCC\nGwAAQOEENwAAgMIJbgAAAIUT3AAAAAonuAEAABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcA\nAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACgcIIbAABA4QQ3AACAwgluAAAA\nhRPcAAAACie4AQAAFE5wAwAAKJzgBgAAUDjBDQAAoHCCGwAAQOEENwAAgMIJbgAAAIUT3AAAAAon\nuAEAABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnAD\nAAAonOAGAABQOMENAACgcIIbAABA4QQ3AACAwgluAAAAhRPcAAAACie4AQAAFE5wAwAAKJzgBgAA\nUDjBDQAAoHCCGwAAQOEENwAAgMIJbgAAAIUT3AAAAAonuAEAABROcAMAACic4AYAAFA4wQ0AAKBw\nghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKt66fRlVV/WiSa+q6/qmqqn4oyX9J8uDs4Rvqur6lqqp3\nJbksyfEkV9d1/eWTUjEAAMAqs2hwq6rqiiS/nOTw7EM/kuS6uq7/qK3NOUl+M8kPJxlOck9VVX9R\n1/Xx5S8ZAABgdennO25/n+TSJJ+fvf8jSXZWVfWmzHzX7V8leVWSe+q6PpHkUFVV30nyiiTfWv6S\nAQAAVpdFf8etruvbk5xoe+ibSa6o6/qSJLuT/OskZyYZb2tzOMnIMtYJAACwavX1O24d7qjruhnS\n7kjy8SR/mZnw1rQpyZP9DLZ166YBSmC1sl/ox8GDj7dub9myMVu3bsrBgxvnPLbQ8YUebz/2zHzz\nx+t8vNsYvYyMDM9r03ysH521d5ur87H28TvX167bmN3ad1t7tzV0jrOYhc7vhg2n5+jR01q3k6Ot\nOZtf168fyonZ+832x44dSZJs2vSCOfOMjw9nePi0JE+1jo+MDGdiYuZrrz3Qba0L3e/3WvSzF/up\np9+9t9i4C9XWz57r9Txqr3U59sxC577zWK+6e70W9Guh5xTPb647y2mQ4PbVqqp+o67r+5P8TGZ+\nHPK+JFdXVXVakjOSvDTJt/sZbGxsYoASWI22bt1kv7BkBw4cztjYRA4cODznsYWOL/R4+7GFxut8\nvNsYvYyPT85r03ysH52191pDtznb+y9Ud6819xq/c45u7RY6J93m6mx/5MixTE4+3brdPmfz6/Hj\njayZvd/ePkkmJp6aM8/4+OS84+Pjk62vvfZAt7UudL/fa9HPXux3zF7a995i4y5UWz97rtfzqL3W\n5dgzC537zmMLneN+5uploecUz18+t9CvfgP+IMHtXyb5d1VVPZ3kfya5rK7rw1VVfTzJPUnWJHl/\nXddPLzQIAAAA/ekruNV1/XCSH5+9/bdJLu7S5rNJPrus1QEAAOAPcAMAAJROcAMAACic4AYAAFA4\nwQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACgcIIb\nAABA4QQ3AACAwgluAAAAhRPcAAAACie4AQAAFE5wAwAAKJzgBgAAUDjBDQAAoHCCGwAAQOEENwAA\ngMIJbgAAAIUT3AAAAAonuAEAABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4AAACF\nE9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACgcOtWugCAbhqNRkZHdw/Ud2TkjGWuBgBgZQlu\nQJFGR3dn17V3Znhk25L6TY7vzYcve/VJqgoAYGUIbkCxhke2ZePm81a6DACAFed33AAAAAonuAEA\nABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnADAAAo\nnOAGAABQOMENAACgcIIbAABA4QQ3AACAwgluAAAAhRPcAAAACie4AQAAFE5wAwAAKJzgBgAAUDjB\nDQAAoHCCGwAAQOEENwAAgMKt66dRVVU/muSauq5/qqqqHUn+NMlUkm/XdX35bJt3JbksyfEkV9d1\n/eWTUzIAAMDqsuh33KqquiLJp5OcPvvQR5O8v67rS5KsrarqjVVVnZPkN5O8Osnrknykqqr1J6lm\nAACAVaWf77j9fZJLk3x+9v6P1HX99dnbf57kH2fmu2/31HV9Ismhqqq+k+QVSb61zPUCK6TRaGR0\ndPdAfbdvvyhDQ0PLXFF/Go1Gvvvd72TPnofnHZuenmo93mhM9dVvemqmz/btFyVJRkd3t/q2H1to\nvdNTUxkd3Z3p6TW927TVNj09le9973tJerfvtab2+wvV0xy/cw3N695c7549D8+rrXm7/ZzMO29d\n1tBrnIXqHB3dnaefPp6hoaE89tgji56Pk6m5R5I1c2p55nwudn/NvL3Q7VijMZUdO35gwRoajUYa\njakMDQ1laGjtnP3c7fqed94F88Zqtmtei84xL7jgRc9cr0VqazQaeeyxR/s+j809M+heH0S369Lr\nedloNJ7VXADLYdHgVtf17VVVvajtofZXtIkkZybZlGS87fHDSUb6KWDr1k39NIMk9stKevDBB7Pr\n2jszPLJtSf0mx/fm8x95W3bu3LmkfgcPblxS+14OHz6QD37q3hyd2N96bMuWmbGPHTmY627+b0n+\nWz582asX7ZckRyfGctWn/y63/tA/TJJc9oHP5NrfeeO8Yzt37uy5hqMTY/nXH/9/kyQvfOnF846P\njAy3ajs6sT+ZPpEbvjjatW2nzjXNGadN8xw067nhi9/JC1968bw1PPjgg7nsA5/JrZ98b5LkAx+7\nJadvGJlTW3O+z3/kbUmSXdfeOW++Y0cOzltD5xq71dnrvJ117s55bTdsOD1Hj57Wup0czcjIcOuc\nJsn69UM5MXu/2f7YsSNJkk2bXjDn/IyPD2d4+LQkT7WOj4wMZ2Ji5uuhQ3vzziv+aF4tzfN5+oaR\nBe83z3f7Xuh27PQNZ+XWT753zjVrat+nxw7vz1nnzjzP2vdzt+vb3LOd57dZ58y1uHvemB/42C19\n1Xb48IFW2/Zz2m7Llo3ZunVT67Wl215vXrfOfkl67u1OnWM073e7Lt2el1u2bMyhQ3vnrWcpmmtl\n9XHdWU59/Y5bh/b/Lb0pyZNJDmUmwHU+vqixsYkBSmA12rp1k/2ygg4cOJzhkW3ZuPm8gfou9dod\nOHB4yfN0Mz4+ORs2p3P00N55YzeD6Pj45KL9ml6wcUtrjBds3DKnb/PY2NjEgmtofljsVfMztc3M\nv1D7Tp1r6raOztrax+9cQ/t6m+3ax2zO12zT67x1W8P8ceb36zZGt7ZHjhzL5OTTrdvt56D59fjx\nRtbM3m9vnyQTE0/NOT/j45Pzjo+PT7a+HjhwOKdvGOlaS+daF7q/2LH289+pfZ9m+kTP/dx5fTuP\nd7brNWa/tXW2TebvufY91muvd6tz/vN34T3T7bndud5e99vnW8pzsNsY3r9WH59b6Fe/AX+Qf1Xy\nb6qq+onZ269P8vUk9yW5uKqq06qqGkny0iTfHmBsAAAAOgzyHbffSfLp2X985IEkt9Z1PV1V1ceT\n3JOZH6V8f13XTy80CAAAAP3pK7jVdf1wkh+fvf2dJD/Zpc1nk3x2OYsDAADAH+AGAAAonuAGAABQ\nOMENAACgcIIbAABA4QQ3AACAwgluAAAAhRPcAAAACie4AQAAFK6vP8ANAMDzV6PRyOjo7oH6JWsy\nNLT07wVs335RhoaGltwPVivBDQBglRsd3Z1d196Z4ZFtS+q3/9EHcsams5fcb3J8b66/4g3ZseMl\nS+oHq5ngBgBAhke2ZePm85bUZ3L8iYH6AUvnd9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACg\ncIIbAABA4QQ3AACAwgluAAAAhRPcAAAACie4AQAAFE5wAwAAKJzgBgAAUDjBDQAAoHCCGwAAQOEE\nNwAAgMIJbgAAAIUT3AAAAAonuAEAABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4A\nAACFE9wAAAAKt26lCwAAYHWZnprKnj0PD9R3+/aLMjQ0tMwVQfkENwAATqmjE2O57uZ9GR55fEn9\nJsf35vor3pAdO15ykiqDcgluAACccsMj27Jx83krXQY8Z/gdNwAAgMIJbgAAAIUT3AAAAAonuAEA\nABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKt26lC4Dni0ajkdHR\n3QP13b79ogwNDS1zRd0NWueePQ8PNN/01NRAfQedD+D54LnyngKcOoIbLJPR0d3Zde2dGR7ZtqR+\nk+N7c/0Vb8iOHS85SZXNNWid+x99IGef/7Ilz3d0YizX3bwvwyOPn5L5AJ4PnivvKcCpI7jBMhoe\n2ZaNm89b6TIWNUidk+NPPGfmA3g+eK68pwCnht9xAwAAKJzgBgAAUDjBDQAAoHCCGwAAQOEENwAA\ngMIJbgAAAIUT3AAAAAonuAEAABRu4D/AXVXVt5KMz959KMkfJPnTJFNJvl3X9eXPujoAAAAG+45b\nVVWnJ0ld1z89+9+vJflokvfXdX1JkrVVVb1xGesEAABYtQb9jtsPJtlQVdVXkwwl+b0kP1zX9ddn\nj/95ktcm+dKzLxEAAGB1GzS4TSa5tq7rz1ZV9ZLMBLU1bccnkow82+IAAJ7LpqemsmfPw0vuN0gf\nems0Ghkd3T1Q3+3bL8rQ0NAyV7R8ns9rY65Bg9uDSf4+Seq6/k5VVfuT/HDb8U1JnuxnoK1bNw1Y\nAqtRyfvl4MGNA/fdsmXjKVvbs6nzuWhkZHjeY1u2zD8Hne269es1Rmfb5vUc9FwvNvdyjNPtHHQe\nb1/DYu37bXMybdhweo4ePa11OznaOgfNr+vXD+XE7P1m+2PHjiRJNm16QWusLVs2Znx8OMPDpyV5\nqnV8ZGQ4ExMzX0/lenvN1esaL7aHBtljvfr083zq1q6f50m/z9+FLPW5/Wzn63R0YizX3bwvwyOP\nL6nf/kcfyNnnv2ygOQd5T3kuvTcMsr4HH3wwu669M8Mj25bUb3J8bz7/kbdl586dS+rXdCre21dq\nbZx6gwa3dyZ5eZLLq6p6YZIzk/xFVVWX1HX9l0len+TufgYaG5sYsARWm61bNxW9Xw4cOPys+p6q\ntT2bOp+Lxscn5z3W7Rx0tuvWr9cYnW2b13PQc73Y3MsxzmK1da6hn7Ws9N46cuRYJiefbt1OnjkH\nza/HjzeyZvZ+e/skmZh4qnX7wIHDGR+fnHd8fHyy9fVUrrfXXL2u8WJ7aJA91qtPP8+nbu36eZ70\n+/xdyFKf2892vm6GR7Zl4+bzltRncvyJgecb5D1lpZ+/SzHo+ga5DoPOl5y6zy0rsTaWV78Bf9Dg\n9tkkn6uq6uuZ+Vck35Fkf5LPVFW1PskDSW4dcGwAAADaDBTc6ro+nuTtXQ795LOqBgAAgHn8AW4A\nAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnADAAAonOAGAABQOMENAACgcIIbAABA4QQ3AACAwq1b6QJ4\nbmo0Ghkd3T1Q3+3bL8rQ0NAyV7T6DHoN9ux5+CRUAwDAySS4MZDR0d3Zde2dGR7ZtqR+k+N7c/0V\nb8iOHS85SZWtHoNeg/2PPpCzz3/ZSaoKAICTQXBjYMMj27Jx83krXcaqNsg1mBx/4iRVAwDAyeJ3\n3AAAAAonuAEAABROcAMAACic4AYAAFA4wQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKJ7gB\nAAAUTnADAAAo3LqVLgBK02g0Mjq6e8n99ux5eKD5pqemBuo76HwAQH8GfY9Oki1bfnCZq2G1E9yg\nw+jo7uy69s4Mj2xbUr/9jz6Qs89/2ZLnOzoxlutu3pfhkcdPyXwAQH8GfY+eHN+bz39kYzZvPvck\nVcZqJLhBF8Mj27Jx83lL6jM5/sRzZj4AoD+DvEfDyeB33AAAAAonuAEAABROcAMAACic4AYAAFA4\nwQ0AAKBwghsAAEDhBDcAAIDCCW4AAACFE9wAAAAKJ7gBAAAUTnADAAAo3LqVLuBUaTQaGR3dPVDf\n7dsvytDQ0DJX1N2gdTYajSRrMjS09Cx+Ktc3PTWVPXseXnK/RqORffs2Znz86JL7LfW8DFIfAJRg\n0PdZ733La3pqKg899FAOHDi8pH6n8nPLoHsl8dl4paya4DY6uju7rr0zwyPbltRvcnxvrr/iDdmx\n4yUnqbK5Bq1z/6MP5IxNZxe/vqMTY7nu5n0ZHnl8Sf0GXd8g/fY/+kDOPv9lS5oHAErwbN5nvfct\nn6MTY/ngp/YV/bll0L3is/HKWTXBLUmGR7Zl4+bzVrqMRQ1S5+T4E9a3TP0mx59Y0hwAUJJB3y9Z\nXs+Fzy0+Oz63+B03AACAwgluAAAAhRPcAAAACie4AQAAFE5wAwAAKJzgBgAAUDjBDQAAoHCCGwAA\nQOEENwAAgMIJbgAAAIUT3AAAAAq3bqULKN301FT27Hl4yf0ajUaSNRkaWlo2HmSuZ2PQ9Z3qOgEA\nYDVbdcHtEze9J7/xKx/veb/T0YmxXHfzvgyPPJ4bb78q77z0f+9rnv2PPpDbv3lzfv3NH1pSffsf\nfSBnn/+yvts36//CXTfMmWuxdTUdnRjLj7zrw/PqXGyt3epsztn5tf34L1zyjtx4+1V5zztv6G+B\nbf0Wa7OU67pYm2419lrXQv062/7n6/9p3rzrljlj9XNOmv3ax+11TtrnbJ8nSevx5nyd9bSP0d5+\nofPwiZvek3OffDyPn3XunD7te3Pt2nVd19etvm79Oo8nyblPPt46J+3n56s37crQn63JNW//WG68\n/aps+b/X5YbXXpkv3HVDzp/Yn0c3np1z//t/yn//D19stX/szK2573WfTJJ87XOX5+Gzzp3T79JX\nvTn3fe1TWbNmbdZNnchDm7Zm7Hd/vrWOn/3tXbnhtVfm3ts+nB970+/lFb/0CznyV3+bJLnt3ptz\n0V1/nBNrh7J+qpHRs87NeYf2Zs8ZZyZJ3nXBy/OFu27IdONELrrrj/PwWee2avnqTbvyyMbNufRV\nb87/N3tsaupELjo0NmecCybHW7Xt3rA5F979mTlr+upNu/KaN70/933tU1k/PZUkeeovd7TOwb23\nfTi7N2zO0P1fytTUiWQ6c9aXJK/4pV9otb/t3ptz4d2faY35vZFzkiRPXPZfWu3b1/TQmVsz3TiR\nJBm6/0s579DeTE9P55HhkVx492fyyMbNOX9if743ck6mpk7k/In9+V9/5rJ87XOX58Taobzyp9+V\nr960K+umTuT4mrV5ZHhkznlrjnlwy5ZsOXAg66YaaQwN5UPTyR2/eEv+49c+lW/94p/krt33p3p6\nMrn/r3PLL96WXZ/+42zbN5YTa9dm3dRU9n97Zg+ftW8sT1/4ouz5yLX5xGf+JENTjfzQP3p3fuOK\n9+bI95+b4ydOZPO+sdz39W/mtntvbtVy6avenLs/d3l+7Oc/mCSta7b9ycfz3Q2b8/OvfmtrHc3r\nlEzP2wsvPjTWutaXvurNuefOa/I3s9ejeb7PO7Q366caOXT/BXP26Y23XzXTbvba3/25y5Mk3227\nvi8+NJZbf/G23Hj7Va37D591bl705OPZ3VbnIxs3Z7pxIu+64OW58farct/rPtnazw+duTWXvurN\n+Y9f+1Tr+dTcF0lyx+ueeX4l03lkw5a8+Mt/mL/+r3810+7ooaz78h9m/2P75+2ZZ/bJWGucr99x\nddZNNZIkf912LtasWdvah48Mj7T2wp4zzsyFd38m66ZO5NbX3daqpXn/xtuvmrfe5rX4+Ve/tXVu\nLjh8IOvvuDrfvPdbue3emzN0/5fyoicfzyNnX5gkuWD/nrzxt+7InR99U/acfWF+41c+ni999E15\n42/d0XptemTDWXNey/p5b/7P1//TZHoqj525bU6/zveC9vbdHl/otbybG2+/KmuH1rde09tfZ3tp\nXpsTQ+tbbTvn7fV5oL3tQu3b+5178Hv5m8u+2dd6eunnvDTbnDh+NL/+5g/Ne29drP9S62mO1fl5\nrlddC70/d9Pr/b7X549+PvOUZtCaO6/tO97wuyerxGdt1QW3F+3fs+D9boZHtmXj5vPy4icfz8bN\n5/U1z+T4E9lxaKzv9u39lqJZ/45DY10f70e3Ohdba7c6m3N2fu08/uInH++7tm7j9NNmkD7tutXY\na10L9etse1rjeNexFjsnzX69xu11rFfNzfk661nK+P1e7869udBYvfp1O96u/fycNnUimckmM+t8\nMnPG2zExlkyMzWn/4icfz32z99f26Hf69FQyG3p2TIylfVUjjz7S6pskw7u/myOzt3/gyMHZeRrP\n1NT2eOda22s5bepE69jazN0n88aZra15v3Oc1hraamxa21FPknRetfb27W1Pn55q1dL+qtC+pl57\noDlO83jn82Btnjlv7Wvo7Nd0zr5n7q9rNJ6Zf2Is30ry0qcnu7ZfPzVzXr7vfz4z/7rZ9a6femac\ndSdOtK51rzWs6ai/8zo119F+DrvthfZzcVpbDe3nO3lm73X2a177Zj2d17dzjm51dtuXnettfz51\nm6O53h1tz7lWu7Z1tY/ZzWkdbZO5z8n2fbFYLc31tLfrvC7dXpPbx+x8HVrT9lj7z9mc1jje87Vs\nIc3XtGYdzX6d7wWd7Tst5bNA+3xL6dt6jrbVsNh7ymKv6b3mXup6enm2nyuWq45u4y30PFhs7oWO\n9Xq/7/X5o5/PPKUZtOaTeW2Xm99xAwAAKJzgBgAAUDjBDQAAoHCCGwAAQOEENwAAgMIJbgAAAIUT\n3AAAAAonuAEAABRuWf8Ad1VVa5L8+yQ/mOSpJL9e1/Xu5ZwDAABgtVnu77i9KcnpdV3/eJL3Jfno\nMo8PAACw6ix3cLs4yVeSpK7rbyZ55TKPDwAAsOos649KJjkzyXjb/RNVVa2t63pqmecZyOT43iTJ\n4YOPzXm88367oxMHkqzpq+38fv237zVfP5pzNNfX+fji83Vvu5Tz0tmn82s/8y1e58Lnpdt1Xaxf\ntzr6OSdL6dfrfvNrv+ek+7nsvrb2tp23O+dbaE3tj7XP12+fXrcXa9/vGAsda38+dD43mo4dGV/w\nfrNf5+OdzUozAAAERklEQVTtnjp8YE7b5v1+9VPbQvMvptm3ed37nb9d+5raa3k2Yy5msfUvxxxL\nsdA16NwnRycOdG2/2HXstqZ+rn2vfTrovun1PFhqbUuZf6Hrudi17rUP+63l2Z63xV7D+jnWz/iL\n9Z/7nrKm67GF9DqPS6l3Ka/Ri9W51PPUj0E+J7X3ezafHxfTPlY/r2+LvT8v1Kffzx+99typfv1d\nypztNS/lGiz1/K+UNdPT08s2WFVV1yW5t67rW2fv76nr+sJlmwAAAGAVWu4flfxGkn+SJFVV/ViS\n/7HM4wMAAKw6y/2jkrcneW1VVd+Yvf+ryzw+AADAqrOsPyoJAADA8vMHuAEAAAonuAEAABROcAMA\nACic4AYAAFC45f5XJZekqqrhJF9IsjnJsSS/Utf14ytZE2WqqurMJH+WmT/yvj7Jb9d1/VcrWxWl\nq6rq0iRvqev6l1a6FspSVdWaJP8+yQ8meSrJr9d1vXtlq6JkVVX9aJJr6rr+qZWuhXJVVbUuyY1J\ntic5LcnVdV3/XytaFMWqqmptkk8nqZJMJXl3Xdd/16v9Sn/H7V1J7q/r+pIk/yHJ765wPZTrt5Lc\nVdf1T2bmz0x8cmXLoXRVVX0sydVJ1qx0LRTpTUlOr+v6x5O8L8lHV7geClZV1RWZ+XB1+krXQvHe\nnmRfXdc/keT1ST6xwvVQtp9LMl3X9cVJPpDkDxZqvKLBra7r6zPzwSpJLkxycAXLoWwfTfIns7fX\nJzm6grXw3PCNJP9ypYugWBcn+UqS1HX9zSSvXNlyKNzfJ7l0pYvgOeGLmfkAnsx8zj6+grVQuLqu\nv5Tkstm727NIFjplPypZVdU7k/yrJNOZ+T/g00l+ta7rb1VV9bUk/0uS156qeijXInvl+5N8Psl7\nVrBECrLAfrmlqqpLVrQ4SnZmkvG2+yeqqlpb1/XUShVEueq6vr2qqhetdB2Ur67rySSpqmpTkluS\n/N7KVkTp6rqeqqrqTzPzkyBvWajtKQtudV3fmJmf+e127GeqqqqSfDnJD5yqmihTr71SVdXLM/M7\nkb9d1/U9p7wwirTQawss4FCSTW33hTZgWVRVdUGS25J8oq7rm1e6HspX1/U7qqraluSvq6p6WV3X\nXX+ybEV/VLKqqiurqnr77N0jSU6sZD2Uq6qqf5CZHz94W13Xf7HS9QDPed9I8k+SpKqqH0vyP1a2\nHJ4j/M4sC6qq6pwkX03yv9V1fdNK10PZqqp6e1VVV87efSpJIzP/SElXK/qvSmbm/5LfVFXVr2Um\nRP7qCtdDuf4gM78Ufv3svwb3ZF3Xft8AGNTtSV5bVdU3Zu97/6Ef0ytdAMV7X5KzknygqqoPZmbP\nvL6u62MrWxaFui3J56qq+svM5LJdC+2VNdPTXoMAAABKttJ/DgAAAIBFCG4AAACFE9wAAAAKJ7gB\nAAAUTnADAAAonOAGAABQOMENAACgcP8/ebvUJrTcY/IAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Need re-binning near zero:\n", + "HDR_hist(Z)\n", + "sns.rugplot(Z, color=\"red\")\n", + "plt.ylim(0,200)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# (5) Mergability\n", + "\n", + "A summary statistic $S$ assigns (one or many) values to a dataset $X$. (E.g. mean value.)\n", + "\n", + "Let $X$ and $Y$ be two datasets of size $len(X)=n$ and $len(Y)=m$.\n", + "Denote the merged dataset by \n", + "\n", + "$$X .. Y = [X[1],...,X[n], Y[1],...,Y[m]].$$\n", + "\n", + "A summary statistic is _mergable_ if there is an algorithm that computes $S(X..Y)$ from $S(X)$ and $S(Y)$.\n", + "\n", + "Example:\n", + "- The sum is mergable: $sum(X..Y) = sum(X)+sum(Y)$.\n", + "\n", + "References: [Agrawal, et. al. - Mergeable Summaries (pdf)](https://www.cs.utah.edu/~jeffp/papers/merge-summ.pdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Exerciese:\n", + "- Show that the maximum is mergable\n", + "- Show that the median value is not mergable" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Mergability in Monitoring: Rollups\n", + "\n", + "It's a common practice in monitoring to rolled-up data to different time periods.\n", + "\n", + "Example:\n", + "- raw data arrives every second at monitoring agent\n", + "- the raw data is rolled-up into 1-minute aggregates at the agent and sumbitted downstream \n", + "- the 1-minute data is then further rolled-up into 5-minute aggregates\n", + "- the 5-minute aggregates are rolled-up into 1h aggregates\n", + "\n", + "There are two resons for that practice:\n", + "- Graphing Performance. Large time range graphs can be constructed from the stored aggregates.\n", + "- Storage costs. Many tools delete the one-minute data eventually and only the aggregates for historic data.\n", + "\n", + "For this proceedure to make sense you need either:\n", + "- Store all your raw data\n", + "- Use mergable summaries" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Mergability in Monitoring: Service Level Metrics\n", + "\n", + "When monitoring distributed systems, it's common to have many nodes being dedicated to a single service.\n", + "Service level metrics, that measure properties of the whole system are of great interested for operations and accounting.\n", + "\n", + "Examples of service level metrics include:\n", + "- Total requests served\n", + "- Latency Percentiles\n", + "- Average peer lags\n", + "\n", + "To collect those service level metrics we need to either:\n", + "\n", + "- Stream raw data to a central location and compute the metric there (e.g. statsd, logstash) -> Slow, expensive\n", + "- Use __mergable summaries__ (e.g. total request counts) that can be computed locally and merged downstream" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Mean values are not mergable (on the nose)\n", + "\n", + "The summary statistic $S(X)=mean(X)$ is not mergable.\n", + "\n", + "Proof: Assume contrary that mean is mergable, then there is a computable function $f$ so that:\n", + "* `X=[0], Y=[1]; mean(X..Y)=0.5`, hence `f(0,1)=0.5` and\n", + "* `X=[0,0,0], Y=[1]; mean(X..Y)=0.2`, hence `f(0,1)=0.2`\n", + "\n", + "A contradition." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# The mean values can be enriched to a mergable summary\n", + "\n", + "With a little trick, we can pimp up the mean statistic to something mergable.\n", + "\n", + "For two datasets $X,Y$ of length $n,m$, we can compute the mean value of the merged dataset as follows:\n", + "\n", + "$$mean(X..Y) = \\frac{n}{n+m} \\cdot mean(X) + \\frac{m}{n+m} \\cdot mean(Y)$$\n", + "\n", + "This shows, that the summary statistic $S(X)=(len(X),mean(X))$ is mergable.\n", + "\n", + "Remarks:\n", + "\n", + "* Expressions of the form $\\sum w_i X[i]$, with $\\sum w_i = 1$ are called _weighted means_.\n", + "\n", + "* Exercise: How do you aggregate a greater number of sample sets: $X_1, ..., X_k$ ?" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RHS 5.4\n", + "LHS 5.4\n" + ] + } + ], + "source": [ + "# Test\n", + "print \"RHS\", mean([1,2,3,10,11])\n", + "print \"LHS\", (3*mean([1,2,3]) + 2*mean([10,11]))/5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Median values are not mergable!\n", + "\n", + "Neither the weighted mean nor the median of medians are the median of the total sample set." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Mergability of Deviation Measures\n", + "\n", + "* The standard deviation is mergable. \n", + " More precisely the statistic $S(X)=(len(X),mean(X),stddev(X))$ is mergable.\n", + " \n", + " Hint: Reduce to the case that `T(X)=(len(X),sum(X),sum([x^2 for x in X]))` is mergable.\n", + "\n", + "* Neither max-deviation nor MAD are mergable on the nose." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Histograms: The Ulitmate Mergable Summary\n", + "\n", + "* HDR Histograms as Summary Statistic: \n", + " The value on a dataset $X$ is the sequence of bin,count pairs: \n", + " `H(X) = [(bin_1, count_1), ..., (bin_n, count_n)]`\n", + " \n", + " E.g. `H([1,2,101,102]) = [(1,1),(2,1),(100,2)]`\n", + " \n", + "* Hisotgrams are mergable: Just add the counts.\n", + "\n", + "* All summary statistics and deviations measures can be approximated from Histograms: \n", + " - mean, standard deviation\n", + " - min, max\n", + " - percentiles, median\n", + " \n", + "Example: [demo](https://demo-hh2.circonus.com/trending/graphs/edit/b4b3bce1-ce5b-418f-a8eb-adfa369a6bed)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Overview Monitoring Statistics\n", + "\n", + "```\n", + "| Type | Statistics | Robust | Mergable |\n", + "|--------------|----------------|--------|----------|\n", + "| Central | mean | no | yes |\n", + "| | median | yes | no |\n", + "| | truncated mean | yes | no |\n", + "|--------------|----------------|--------|----------|\n", + "| Deviation | stddev | no | yes |\n", + "| | mad | ~ | no |\n", + "| | IQR | yes | no |\n", + "|--------------|----------------|--------|----------|\n", + "| Distribution | Percentile | yes | no |\n", + "| | Histogram | yes | yes |\n", + "```" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python [Root]", + "language": "python", + "name": "Python [Root]" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + }, + "nbpresent": { + "slides": { + "0b94c017-b788-4858-ad04-4ff72722987d": { + "id": "0b94c017-b788-4858-ad04-4ff72722987d", + "layout": "grid", + "prev": null, + "regions": {}, + "theme": null + } + }, + "themes": {} + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}