├── PyData Workshop.ipynb └── README.md /PyData Workshop.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 333, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "Populating the interactive namespace from numpy and matplotlib\n" 15 | ] 16 | }, 17 | { 18 | "name": "stderr", 19 | "output_type": "stream", 20 | "text": [ 21 | "WARNING: pylab import has clobbered these variables: ['random']\n", 22 | "`%matplotlib` prevents importing * from pylab and numpy\n" 23 | ] 24 | } 25 | ], 26 | "source": [ 27 | "%pylab inline\n", 28 | "import numpy as np\n", 29 | "import random\n", 30 | "import scipy\n", 31 | "from statsmodels.stats import weightstats" 32 | ] 33 | }, 34 | { 35 | "cell_type": "markdown", 36 | "metadata": {}, 37 | "source": [ 38 | "# Statistics made simple through simulation\n", 39 | "\n", 40 | "## The 5 Step Modeling Approach\n", 41 | "\n", 42 | "1. Ask the question\n", 43 | "2. Select the modeling approach\n", 44 | "3. Formulate the model\n", 45 | "4. Solve the model\n", 46 | "5. Answer the question\n", 47 | "\n", 48 | "\n", 49 | "## Monte Carlo Simulation\n", 50 | "\n", 51 | "Pros\n", 52 | "* General method that can give approximate solutions to any probability modeling problem. (Mathematical Modeling, Meerschaert)\n", 53 | "* Intuitive models that are fairly straight-forward to grasp without much mathematical formalism.\n", 54 | "\n", 55 | "Cons\n", 56 | "* Solves via brute force and that can get very time intensive.\n", 57 | "* The simulation itself introduces extra variation into your solution\n", 58 | "\n", 59 | "To the last point while this is true, Meerschaert says:\n", 60 | "\n", 61 | "\"As a practical matter, there are many sources of error and variation in a modeling problem, and the additional variation produced by Monte Carlo simulation is not typically the most serious of these.\"\n", 62 | "\n", 63 | "He goes on to say that sensitivity analysis is your friend.\n", 64 | "\n", 65 | "We'll be using this term to be synonomous with Analytical Simulation. The core difference is a pure Monte Carlo simulation works in simplest terms with no higher level mathematical concepts. An analytical simulation may use probability distributions or other mathematical tooling as a shortcut.\n", 66 | "\n", 67 | "## Enough theory\n", 68 | "\n", 69 | "Easiest to explain with a simple example. Suppose you're in a room facing a large wall and large open window with a bowl full of marbles on a table behind you. \n", 70 | "\n", 71 | "How might you answer the question: \"What percentage of that wall is the window taking up?\"\n", 72 | "\n", 73 | "Process\n", 74 | "1. Count how many marbles are in the bowl.\n", 75 | "2. Close your eyes and throw marbles at the wall in a purely random way.\n", 76 | "3. Find the percentage of marbles that went through the window.\n", 77 | "\n", 78 | "The answer you get from step 3 will approximate how much of the wall the window takes up.\n", 79 | "\n", 80 | "Let's simulate this and see how it works." 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 41, 86 | "metadata": { 87 | "collapsed": true 88 | }, 89 | "outputs": [], 90 | "source": [ 91 | "wall_width = 20\n", 92 | "wall_height = 10\n", 93 | "\n", 94 | "window_lower_left = (5, 2.5)\n", 95 | "window_upper_right = (15, 7.5)\n", 96 | "\n", 97 | "number_of_marbles = 1000\n", 98 | "\n", 99 | "sample_widths = np.random.random(number_of_marbles) * wall_width\n", 100 | "sample_heights = np.random.random(number_of_marbles) * wall_height\n", 101 | "\n", 102 | "random_marbles_thrown = zip(sample_widths, sample_heights)" 103 | ] 104 | }, 105 | { 106 | "cell_type": "markdown", 107 | "metadata": {}, 108 | "source": [ 109 | "We pick an X and a Y to form a coordinate that we throw a marble at. We throw all of our marbles this way. Then we gather all of the marbles that hit the wall and didn't go through the window." 110 | ] 111 | }, 112 | { 113 | "cell_type": "code", 114 | "execution_count": 42, 115 | "metadata": { 116 | "collapsed": false 117 | }, 118 | "outputs": [ 119 | { 120 | "data": { 121 | "text/plain": [ 122 | "" 123 | ] 124 | }, 125 | "execution_count": 42, 126 | "metadata": {}, 127 | "output_type": "execute_result" 128 | }, 129 | { 130 | "data": { 131 | "image/png": "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\nSUVORK5CYII=\n", 132 | "text/plain": [ 133 | "" 134 | ] 135 | }, 136 | "metadata": {}, 137 | "output_type": "display_data" 138 | } 139 | ], 140 | "source": [ 141 | "marbles_that_hit_the_wall = filter(lambda x: (x[0] < window_lower_left[0] or x[0] > window_upper_right[0]) or\n", 142 | " (x[1] < window_lower_left[1] or x[1] > window_upper_right[1]), \n", 143 | " random_marbles_thrown)\n", 144 | "\n", 145 | "plt.scatter(x=map(lambda x: x[0], marbles_that_hit_the_wall), y=map(lambda x: x[1], marbles_that_hit_the_wall))" 146 | ] 147 | }, 148 | { 149 | "cell_type": "markdown", 150 | "metadata": {}, 151 | "source": [ 152 | "Next we find the percentage of marbles that went through the window to find what percentage of the wall the window takes up." 153 | ] 154 | }, 155 | { 156 | "cell_type": "code", 157 | "execution_count": 45, 158 | "metadata": { 159 | "collapsed": false 160 | }, 161 | "outputs": [ 162 | { 163 | "data": { 164 | "text/plain": [ 165 | "0.749" 166 | ] 167 | }, 168 | "execution_count": 45, 169 | "metadata": {}, 170 | "output_type": "execute_result" 171 | } 172 | ], 173 | "source": [ 174 | "len(marbles_that_hit_the_wall) / (1.0*number_of_marbles)" 175 | ] 176 | }, 177 | { 178 | "cell_type": "code", 179 | "execution_count": 49, 180 | "metadata": { 181 | "collapsed": false, 182 | "scrolled": true 183 | }, 184 | "outputs": [ 185 | { 186 | "data": { 187 | "text/plain": [ 188 | "0.251" 189 | ] 190 | }, 191 | "execution_count": 49, 192 | "metadata": {}, 193 | "output_type": "execute_result" 194 | } 195 | ], 196 | "source": [ 197 | "1 - len(marbles_that_hit_the_wall) / (1.0*number_of_marbles)" 198 | ] 199 | }, 200 | { 201 | "cell_type": "markdown", 202 | "metadata": {}, 203 | "source": [ 204 | "## FACT CHECK" 205 | ] 206 | }, 207 | { 208 | "cell_type": "markdown", 209 | "metadata": {}, 210 | "source": [ 211 | "It's pretty straight forward to do this manually with math." 212 | ] 213 | }, 214 | { 215 | "cell_type": "code", 216 | "execution_count": 48, 217 | "metadata": { 218 | "collapsed": false 219 | }, 220 | "outputs": [ 221 | { 222 | "data": { 223 | "text/plain": [ 224 | "0.25" 225 | ] 226 | }, 227 | "execution_count": 48, 228 | "metadata": {}, 229 | "output_type": "execute_result" 230 | } 231 | ], 232 | "source": [ 233 | "(10 * 5) / (1.0 * wall_height * wall_width)" 234 | ] 235 | }, 236 | { 237 | "cell_type": "markdown", 238 | "metadata": {}, 239 | "source": [ 240 | "## Simulating integration of an arbitrary function\n", 241 | "\n", 242 | "The same technique works when trying to evaluate a definite integral. Let's use a normal curve and find out how much area of the curve is between -1 and 1. Or in other words, within one standard deviation. Given what we've learned in stats 101 we would expect the answer to be ~0.682." 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "execution_count": 75, 248 | "metadata": { 249 | "collapsed": true 250 | }, 251 | "outputs": [], 252 | "source": [ 253 | "def normal(x):\n", 254 | " standard_deviation = 1.0\n", 255 | " mean = 0.0\n", 256 | " return np.exp(-((x-mean)**2)/(2.0 * standard_deviation)) / np.sqrt(2*np.pi)" 257 | ] 258 | }, 259 | { 260 | "cell_type": "code", 261 | "execution_count": 86, 262 | "metadata": { 263 | "collapsed": false 264 | }, 265 | "outputs": [ 266 | { 267 | "name": "stdout", 268 | "output_type": "stream", 269 | "text": [ 270 | "0.680116799628\n" 271 | ] 272 | } 273 | ], 274 | "source": [ 275 | "max_value = normal(0)\n", 276 | "x_values = np.random.random(5000) * 2.0 - 1 # Generate x values between -1 and 1.\n", 277 | "y_values = np.random.random(5000) * max_value\n", 278 | "\n", 279 | "points = zip(x_values, y_values)\n", 280 | "points_under_curve = filter(lambda x: x[1] <= normal(x[0]) , \n", 281 | " points)\n", 282 | "\n", 283 | "print(2.0 * max_value * len(points_under_curve) / (1.0 * len(points)))" 284 | ] 285 | }, 286 | { 287 | "cell_type": "markdown", 288 | "metadata": {}, 289 | "source": [ 290 | "+/- a standard deviation is ~68.2% of the area by the way. Our approximation comes very close." 291 | ] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "metadata": {}, 296 | "source": [ 297 | "And hey let's graph this for good measure. This is the region that is under the curve of our function." 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 89, 303 | "metadata": { 304 | "collapsed": false, 305 | "scrolled": true 306 | }, 307 | "outputs": [ 308 | { 309 | "data": { 310 | "text/plain": [ 311 | "" 312 | ] 313 | }, 314 | "execution_count": 89, 315 | "metadata": {}, 316 | "output_type": "execute_result" 317 | }, 318 | { 319 | "data": { 320 | "image/png": "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\n", 321 | "text/plain": [ 322 | "" 323 | ] 324 | }, 325 | "metadata": {}, 326 | "output_type": "display_data" 327 | } 328 | ], 329 | "source": [ 330 | "plt.scatter(x=map(lambda x: x[0], points_under_curve), y=map(lambda y: y[1], points_under_curve), s=0.2)" 331 | ] 332 | }, 333 | { 334 | "cell_type": "markdown", 335 | "metadata": {}, 336 | "source": [ 337 | "The basic idea is to form a rectangular window around the function you want to integrate, randomly place points in the window, then see what percent are below your curve. After this, you can multiply the known area of the rectangle with the percentage of the points that were under your curve to get your answer." 338 | ] 339 | }, 340 | { 341 | "cell_type": "markdown", 342 | "metadata": {}, 343 | "source": [ 344 | "## Key Moral: Simulation empowers us to explore statistics and probability instead of consulting an oracle." 345 | ] 346 | }, 347 | { 348 | "cell_type": "markdown", 349 | "metadata": {}, 350 | "source": [ 351 | "## Statistical tests that make no (read: fewer) assumptions" 352 | ] 353 | }, 354 | { 355 | "cell_type": "markdown", 356 | "metadata": {}, 357 | "source": [ 358 | "Let's say we have two samples of data and we want to know how likely it is that the mean of the population of sample A is greater than the mean of the population of sample B. Let's not T-test. Let's choose an even more flexible test- bootstrapping." 359 | ] 360 | }, 361 | { 362 | "cell_type": "code", 363 | "execution_count": 123, 364 | "metadata": { 365 | "collapsed": false 366 | }, 367 | "outputs": [ 368 | { 369 | "data": { 370 | "text/plain": [ 371 | "''" 372 | ] 373 | }, 374 | "execution_count": 123, 375 | "metadata": {}, 376 | "output_type": "execute_result" 377 | }, 378 | { 379 | "data": { 380 | "image/png": "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\nmHWrYXdVnwAAAABJRU5ErkJggg==\n", 381 | "text/plain": [ 382 | "" 383 | ] 384 | }, 385 | "metadata": {}, 386 | "output_type": "display_data" 387 | } 388 | ], 389 | "source": [ 390 | "sample_a = np.random.gamma(3.5, 5, 40)\n", 391 | "sample_b = np.random.gamma(4.5, 5, 20)\n", 392 | "\n", 393 | "sample_a_samples = [np.random.choice(sample_a, 40).mean() for i in range(10000)]\n", 394 | "sample_b_samples = [np.random.choice(sample_b, 20).mean() for i in range(10000)]\n", 395 | "\n", 396 | "plt.hist(sample_a_samples, bins=50, alpha=.8)\n", 397 | "plt.hist(sample_b_samples, bins=50, alpha=.8)\n", 398 | "''" 399 | ] 400 | }, 401 | { 402 | "cell_type": "markdown", 403 | "metadata": {}, 404 | "source": [ 405 | "Key take aways here: We've come up with a distribution of possible population means by resampling from observed data." 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": 124, 411 | "metadata": { 412 | "collapsed": false 413 | }, 414 | "outputs": [ 415 | { 416 | "data": { 417 | "text/plain": [ 418 | "''" 419 | ] 420 | }, 421 | "execution_count": 124, 422 | "metadata": {}, 423 | "output_type": "execute_result" 424 | }, 425 | { 426 | "data": { 427 | "image/png": "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\nqWM2NMr6AAAAAElFTkSuQmCC\n", 428 | "text/plain": [ 429 | "" 430 | ] 431 | }, 432 | "metadata": {}, 433 | "output_type": "display_data" 434 | } 435 | ], 436 | "source": [ 437 | "random_pairings = zip(sample_a_samples, sample_b_samples)\n", 438 | "difference_of_pairings = map(lambda x: x[0] - x[1], random_pairings)\n", 439 | "\n", 440 | "plt.hist(difference_of_pairings, bins=20)\n", 441 | "''" 442 | ] 443 | }, 444 | { 445 | "cell_type": "code", 446 | "execution_count": 114, 447 | "metadata": { 448 | "collapsed": false 449 | }, 450 | "outputs": [ 451 | { 452 | "name": "stdout", 453 | "output_type": "stream", 454 | "text": [ 455 | "95% Credible region: -13.1169462263 to -3.10525291921\n" 456 | ] 457 | } 458 | ], 459 | "source": [ 460 | "difference_of_pairings = sorted(difference_of_pairings)\n", 461 | "print('95% Credible region: {0} to {1}'.format(difference_of_pairings[25], difference_of_pairings[-25]))" 462 | ] 463 | }, 464 | { 465 | "cell_type": "markdown", 466 | "metadata": {}, 467 | "source": [ 468 | "There is 95% probability that the true value lies in the above range. So there is evidence that the population of sample_a has an average that is lower." 469 | ] 470 | }, 471 | { 472 | "cell_type": "markdown", 473 | "metadata": {}, 474 | "source": [ 475 | "## Parametric Tests\n", 476 | "\n", 477 | "Now let's say we want to determine if a coin is fair. We can solve this using bootstrapping or by using a parametric distribution. First we'll start with the bootstrapping approach." 478 | ] 479 | }, 480 | { 481 | "cell_type": "code", 482 | "execution_count": 132, 483 | "metadata": { 484 | "collapsed": false 485 | }, 486 | "outputs": [ 487 | { 488 | "data": { 489 | "text/plain": [ 490 | "''" 491 | ] 492 | }, 493 | "execution_count": 132, 494 | "metadata": {}, 495 | "output_type": "execute_result" 496 | }, 497 | { 498 | "data": { 499 | "image/png": "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\nc1qvKc48ugAAAABJRU5ErkJggg==\n", 500 | "text/plain": [ 501 | "" 502 | ] 503 | }, 504 | "metadata": {}, 505 | "output_type": "display_data" 506 | } 507 | ], 508 | "source": [ 509 | "sample_coin_flips = [0,0,0,0,1,1,0,0,0,0]\n", 510 | "sample_coin_flip_averages = [np.random.choice(sample_coin_flips, len(sample_coin_flips)).mean() for i in range(10000)]\n", 511 | "plt.hist(sample_coin_flip_averages, bins=6)\n", 512 | "''" 513 | ] 514 | }, 515 | { 516 | "cell_type": "code", 517 | "execution_count": 140, 518 | "metadata": { 519 | "collapsed": false 520 | }, 521 | "outputs": [ 522 | { 523 | "data": { 524 | "text/plain": [ 525 | "''" 526 | ] 527 | }, 528 | "execution_count": 140, 529 | "metadata": {}, 530 | "output_type": "execute_result" 531 | }, 532 | { 533 | "data": { 534 | "image/png": "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\n", 535 | "text/plain": [ 536 | "" 537 | ] 538 | }, 539 | "metadata": {}, 540 | "output_type": "display_data" 541 | } 542 | ], 543 | "source": [ 544 | "possibilities = [np.random.beta(sum(sample_coin_flips), 10-sum(sample_coin_flips)) for i in range(15000)]\n", 545 | "plt.hist(possibilities, bins=100)\n", 546 | "''" 547 | ] 548 | }, 549 | { 550 | "cell_type": "code", 551 | "execution_count": 156, 552 | "metadata": { 553 | "collapsed": false 554 | }, 555 | "outputs": [ 556 | { 557 | "data": { 558 | "text/plain": [ 559 | "''" 560 | ] 561 | }, 562 | "execution_count": 156, 563 | "metadata": {}, 564 | "output_type": "execute_result" 565 | }, 566 | { 567 | "data": { 568 | "image/png": "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\n", 569 | "text/plain": [ 570 | "" 571 | ] 572 | }, 573 | "metadata": {}, 574 | "output_type": "display_data" 575 | } 576 | ], 577 | "source": [ 578 | "coin_flip_values = [0,1]\n", 579 | "sample_coin_flips = [8,2]\n", 580 | "sample_coin_flip_averages = [(np.random.dirichlet(sample_coin_flips) * coin_flip_values).sum() for i in range(15000)]\n", 581 | "plt.hist(sample_coin_flip_averages, bins=100)\n", 582 | "''" 583 | ] 584 | }, 585 | { 586 | "cell_type": "code", 587 | "execution_count": 152, 588 | "metadata": { 589 | "collapsed": false 590 | }, 591 | "outputs": [ 592 | { 593 | "data": { 594 | "text/plain": [ 595 | "0.0312727360328348" 596 | ] 597 | }, 598 | "execution_count": 152, 599 | "metadata": {}, 600 | "output_type": "execute_result" 601 | } 602 | ], 603 | "source": [ 604 | "(np.random.dirichlet(sample_coin_flips) * coin_flip_values).sum()" 605 | ] 606 | }, 607 | { 608 | "cell_type": "markdown", 609 | "metadata": {}, 610 | "source": [ 611 | "## Split Test Conversion\n", 612 | "\n", 613 | "What can we say about the below split test? Also a great opportunity to explore the affects of sample size on test results." 614 | ] 615 | }, 616 | { 617 | "cell_type": "code", 618 | "execution_count": 171, 619 | "metadata": { 620 | "collapsed": false 621 | }, 622 | "outputs": [ 623 | { 624 | "data": { 625 | "text/plain": [ 626 | "''" 627 | ] 628 | }, 629 | "execution_count": 171, 630 | "metadata": {}, 631 | "output_type": "execute_result" 632 | }, 633 | { 634 | "data": { 635 | "image/png": "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\n", 636 | "text/plain": [ 637 | "" 638 | ] 639 | }, 640 | "metadata": {}, 641 | "output_type": "display_data" 642 | } 643 | ], 644 | "source": [ 645 | "variant_a_orders = 23\n", 646 | "variant_a_visits = 144\n", 647 | "\n", 648 | "variant_b_orders = 21\n", 649 | "variant_b_visits = 115\n", 650 | "\n", 651 | "variant_a_samples = [np.random.beta(variant_a_orders, variant_a_visits) for i in range(10000)]\n", 652 | "variant_b_samples = [np.random.beta(variant_b_orders, variant_b_visits) for i in range(10000)]\n", 653 | "\n", 654 | "plt.hist(variant_a_samples, bins=100, alpha=.8)\n", 655 | "plt.hist(variant_b_samples, bins=100, alpha=.8)\n", 656 | "''" 657 | ] 658 | }, 659 | { 660 | "cell_type": "code", 661 | "execution_count": 172, 662 | "metadata": { 663 | "collapsed": false 664 | }, 665 | "outputs": [ 666 | { 667 | "name": "stdout", 668 | "output_type": "stream", 669 | "text": [ 670 | "95% chance the true change is between -0.135451127774% points and 0.0934575475419% points.\n" 671 | ] 672 | }, 673 | { 674 | "data": { 675 | "image/png": "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\n", 676 | "text/plain": [ 677 | "" 678 | ] 679 | }, 680 | "metadata": {}, 681 | "output_type": "display_data" 682 | } 683 | ], 684 | "source": [ 685 | "variant_a_improvement = sorted(map(lambda x: x[0] - x[1], zip(variant_a_samples, variant_b_samples)))\n", 686 | "\n", 687 | "plt.hist(variant_a_improvement, bins = 100)\n", 688 | "print('95% chance the true change is between {0}% points and {1}% points.'.format(variant_a_improvement[25], variant_a_improvement[-25]))" 689 | ] 690 | }, 691 | { 692 | "cell_type": "markdown", 693 | "metadata": {}, 694 | "source": [ 695 | "## Exploring unintuitive probability puzzles\n", 696 | "\n", 697 | "Monty Hall is a classic example. You're probably familiar but I'll repeat. \n", 698 | "\n", 699 | "Scenario:\n", 700 | "\n", 701 | "You're asked to choose one of three doors in order to win a car that's behind one of them. After you pick a door, the game show host opens one door that is not a winner (it has a goat behind it) and then asks if you want to switch your door and stick with the one you chose.\n", 702 | "\n", 703 | "What's the optimal strategy to win the car? Stick or switch? Spoiler Alert! You want to switch. Does that seem crazy?\n", 704 | "\n", 705 | "Let's simulate both strategies and see which is better." 706 | ] 707 | }, 708 | { 709 | "cell_type": "code", 710 | "execution_count": 203, 711 | "metadata": { 712 | "collapsed": false 713 | }, 714 | "outputs": [ 715 | { 716 | "name": "stdout", 717 | "output_type": "stream", 718 | "text": [ 719 | "Games won with switching strategy: 6713\n", 720 | "Games won with sticking strategy: 3388\n" 721 | ] 722 | } 723 | ], 724 | "source": [ 725 | "def simulate_game(switch = True, iteration_count = 1000):\n", 726 | " wins = 0\n", 727 | " for i in range(iteration_count):\n", 728 | " prizes = ['goat','car','goat']\n", 729 | " random.shuffle(prizes)\n", 730 | " doors = {\n", 731 | " 1: prizes[0],\n", 732 | " 2: prizes[1],\n", 733 | " 3: prizes[2]\n", 734 | " }\n", 735 | " chosen_door = np.random.choice([1,2,3])\n", 736 | " \n", 737 | " # Host chooses which door to open\n", 738 | " for key, value in doors.iteritems():\n", 739 | " if key != chosen_door and doors[key] != 'car':\n", 740 | " del doors[key]\n", 741 | " break\n", 742 | " \n", 743 | " # Does the contestant switch or stick??\n", 744 | " if switch:\n", 745 | " for key, value in doors.iteritems():\n", 746 | " if key != chosen_door:\n", 747 | " chosen_door = key\n", 748 | " break\n", 749 | " \n", 750 | " if doors[chosen_door] == 'car':\n", 751 | " wins += 1\n", 752 | " return wins\n", 753 | "\n", 754 | "print('Games won with switching strategy: {0}'.format(simulate_game(switch = True, iteration_count=10000)))\n", 755 | "print('Games won with sticking strategy: {0}'.format(simulate_game(switch = False, iteration_count=10000)))" 756 | ] 757 | }, 758 | { 759 | "cell_type": "markdown", 760 | "metadata": {}, 761 | "source": [ 762 | "## Continuing our statistical exploration\n", 763 | "\n", 764 | "How do we calculate sample size? I bet the answer is math isn't it? Nope. Simulation. Here's how." 765 | ] 766 | }, 767 | { 768 | "cell_type": "code", 769 | "execution_count": 230, 770 | "metadata": { 771 | "collapsed": false 772 | }, 773 | "outputs": [ 774 | { 775 | "data": { 776 | "text/plain": [ 777 | "''" 778 | ] 779 | }, 780 | "execution_count": 230, 781 | "metadata": {}, 782 | "output_type": "execute_result" 783 | }, 784 | { 785 | "data": { 786 | "image/png": "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\nYII=\n", 787 | "text/plain": [ 788 | "" 789 | ] 790 | }, 791 | "metadata": {}, 792 | "output_type": "display_data" 793 | } 794 | ], 795 | "source": [ 796 | "p_values = []\n", 797 | "\n", 798 | "for i in range(10000):\n", 799 | " control = np.random.normal(1.2,1,80)\n", 800 | " variant = np.random.normal(1.0,1,80)\n", 801 | " t_stat, p_value, df = statsmodels.stats.weightstats.ttest_ind(control, variant, alternative='two-sided')\n", 802 | " p_values.append(p_value)\n", 803 | "\n", 804 | "plt.hist(p_values, bins=50)\n", 805 | "''" 806 | ] 807 | }, 808 | { 809 | "cell_type": "markdown", 810 | "metadata": {}, 811 | "source": [ 812 | "Let's look at power of our test as a function of sample size again using simulation.\n" 813 | ] 814 | }, 815 | { 816 | "cell_type": "code", 817 | "execution_count": 249, 818 | "metadata": { 819 | "collapsed": false 820 | }, 821 | "outputs": [ 822 | { 823 | "data": { 824 | "text/plain": [ 825 | "[]" 826 | ] 827 | }, 828 | "execution_count": 249, 829 | "metadata": {}, 830 | "output_type": "execute_result" 831 | }, 832 | { 833 | "data": { 834 | "image/png": "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\nKMzMrFH/D4dV92qx46ZWAAAAAElFTkSuQmCC\n", 835 | "text/plain": [ 836 | "" 837 | ] 838 | }, 839 | "metadata": {}, 840 | "output_type": "display_data" 841 | } 842 | ], 843 | "source": [ 844 | "percentage_of_runs_correct = []\n", 845 | "sample_sizes = list(xrange(30, 1500, 20))\n", 846 | "for sample_size in xrange(30, 1500, 20):\n", 847 | " correct_test = 0\n", 848 | " runs = 1000\n", 849 | " for i in range(runs):\n", 850 | " control = np.random.normal(1.15,1,sample_size)\n", 851 | " variant = np.random.normal(1.0,1,sample_size)\n", 852 | " t_stat, p_value, df = statsmodels.stats.weightstats.ttest_ind(control, variant, alternative='two-sided')\n", 853 | " if p_value <= 0.05:\n", 854 | " correct_test += 1\n", 855 | " percentage_of_runs_correct.append(correct_test/(1.0*runs))\n", 856 | " \n", 857 | "fig = plt.figure()\n", 858 | "fig.suptitle('Power Analysis by Sample Size')\n", 859 | "plt.xlabel('sample size')\n", 860 | "plt.ylabel('test power')\n", 861 | "plt.plot(sample_sizes, percentage_of_runs_correct)" 862 | ] 863 | }, 864 | { 865 | "cell_type": "markdown", 866 | "metadata": {}, 867 | "source": [ 868 | "Now you can play with different factors in your experiment and tangibly see how they affect your experiment design." 869 | ] 870 | }, 871 | { 872 | "cell_type": "markdown", 873 | "metadata": {}, 874 | "source": [ 875 | "How about asking a question like: How does the conversion rate of our population affect our ability to detect improvements?" 876 | ] 877 | }, 878 | { 879 | "cell_type": "code", 880 | "execution_count": 279, 881 | "metadata": { 882 | "collapsed": false 883 | }, 884 | "outputs": [ 885 | { 886 | "data": { 887 | "text/plain": [ 888 | "''" 889 | ] 890 | }, 891 | "execution_count": 279, 892 | "metadata": {}, 893 | "output_type": "execute_result" 894 | }, 895 | { 896 | "data": { 897 | "image/png": "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\n", 898 | "text/plain": [ 899 | "" 900 | ] 901 | }, 902 | "metadata": {}, 903 | "output_type": "display_data" 904 | } 905 | ], 906 | "source": [ 907 | "p_values = []\n", 908 | "success_rates = []\n", 909 | "population_rates = list(xrange(0,100,5))\n", 910 | "\n", 911 | "for population_rate in population_rates:\n", 912 | " sims_to_run = 500\n", 913 | " number_of_trials = 1000\n", 914 | " total_success = 0\n", 915 | " successes = np.random.binomial(number_of_trials, 1.04 * population_rate/100., sims_to_run)\n", 916 | " for success in successes:\n", 917 | " p_value = scipy.stats.binom_test(success, number_of_trials, population_rate/100.)\n", 918 | " p_values.append(p_value)\n", 919 | " if p_value <= 0.05:\n", 920 | " total_success += 1\n", 921 | " success_rates.append(total_success/(1.0*sims_to_run))\n", 922 | "plt.plot(population_rates, success_rates)\n", 923 | "''" 924 | ] 925 | }, 926 | { 927 | "cell_type": "markdown", 928 | "metadata": {}, 929 | "source": [ 930 | "What if instead of using a percentage lift we used percentage points?" 931 | ] 932 | }, 933 | { 934 | "cell_type": "code", 935 | "execution_count": 282, 936 | "metadata": { 937 | "collapsed": false 938 | }, 939 | "outputs": [ 940 | { 941 | "data": { 942 | "text/plain": [ 943 | "''" 944 | ] 945 | }, 946 | "execution_count": 282, 947 | "metadata": {}, 948 | "output_type": "execute_result" 949 | }, 950 | { 951 | "data": { 952 | "image/png": "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\nFAAAAABJRU5ErkJggg==\n", 953 | "text/plain": [ 954 | "" 955 | ] 956 | }, 957 | "metadata": {}, 958 | "output_type": "display_data" 959 | } 960 | ], 961 | "source": [ 962 | "p_values = []\n", 963 | "success_rates = []\n", 964 | "population_rates = list(xrange(0,100,5))\n", 965 | "\n", 966 | "for population_rate in population_rates:\n", 967 | " sims_to_run = 500\n", 968 | " number_of_trials = 1000\n", 969 | " total_success = 0\n", 970 | " successes = np.random.binomial(number_of_trials, 0.02 + population_rate/100., sims_to_run)\n", 971 | " for success in successes:\n", 972 | " p_value = scipy.stats.binom_test(success, number_of_trials, population_rate/100.)\n", 973 | " p_values.append(p_value)\n", 974 | " if p_value <= 0.05:\n", 975 | " total_success += 1\n", 976 | " success_rates.append(total_success/(1.0*sims_to_run))\n", 977 | "plt.plot(population_rates, success_rates)\n", 978 | "''" 979 | ] 980 | }, 981 | { 982 | "cell_type": "markdown", 983 | "metadata": {}, 984 | "source": [ 985 | "Why? The variance is higher in the middle. The left and right edges are more consistent so a deviation from that consistency is easier to detect." 986 | ] 987 | }, 988 | { 989 | "cell_type": "markdown", 990 | "metadata": {}, 991 | "source": [ 992 | "## Extra Credit: Touching on Bayesian Statistics" 993 | ] 994 | }, 995 | { 996 | "cell_type": "markdown", 997 | "metadata": {}, 998 | "source": [ 999 | "We can use some of these ideas along with probability to tackle problems with non-obvious solutions." 1000 | ] 1001 | }, 1002 | { 1003 | "cell_type": "markdown", 1004 | "metadata": {}, 1005 | "source": [ 1006 | "You're given 5 dice (d6, d8, d12, d20, d22). One of these die are rolled (but you don't know which). You're told it rolled a 7, what's the probability the die is 8-sided?" 1007 | ] 1008 | }, 1009 | { 1010 | "cell_type": "markdown", 1011 | "metadata": {}, 1012 | "source": [ 1013 | "First, we call out our hypotheses and make sure they add up to 100%." 1014 | ] 1015 | }, 1016 | { 1017 | "cell_type": "code", 1018 | "execution_count": 319, 1019 | "metadata": { 1020 | "collapsed": false 1021 | }, 1022 | "outputs": [ 1023 | { 1024 | "data": { 1025 | "text/plain": [ 1026 | "{6: 0.2, 8: 0.2, 12: 0.2, 20: 0.2, 22: 0.2}" 1027 | ] 1028 | }, 1029 | "execution_count": 319, 1030 | "metadata": {}, 1031 | "output_type": "execute_result" 1032 | } 1033 | ], 1034 | "source": [ 1035 | "hypotheses = {\n", 1036 | " 6: 1,\n", 1037 | " 8: 1,\n", 1038 | " 12:1,\n", 1039 | " 20:1,\n", 1040 | " 22:1\n", 1041 | "}\n", 1042 | "\n", 1043 | "# Normalize\n", 1044 | "total_possibilities = sum(hypotheses.values())\n", 1045 | "for key, value in hypotheses.iteritems():\n", 1046 | " hypotheses[key] = hypotheses[key]/(1.0*total_possibilities)\n", 1047 | "\n", 1048 | "hypotheses" 1049 | ] 1050 | }, 1051 | { 1052 | "cell_type": "markdown", 1053 | "metadata": {}, 1054 | "source": [ 1055 | "Now we need to be able to come up with our likelihood function and update our hypotheses using Bayes magic." 1056 | ] 1057 | }, 1058 | { 1059 | "cell_type": "code", 1060 | "execution_count": 320, 1061 | "metadata": { 1062 | "collapsed": true 1063 | }, 1064 | "outputs": [], 1065 | "source": [ 1066 | "def die_rolled(rolled_value, hypotheses):\n", 1067 | " for die_sides, value in hypotheses.iteritems():\n", 1068 | " if die_sides < rolled_value:\n", 1069 | " likelihood_of_event_given_die = 0\n", 1070 | " else:\n", 1071 | " likelihood_of_event_given_die = 1/(1.0*die_sides)\n", 1072 | " hypotheses[die_sides] *= likelihood_of_event_given_die\n", 1073 | " \n", 1074 | " # normalize\n", 1075 | " possibility_total = sum(hypotheses.values())\n", 1076 | " for key, value in hypotheses.iteritems():\n", 1077 | " hypotheses[key] = value/(1.0*possibility_total)\n", 1078 | " return hypotheses" 1079 | ] 1080 | }, 1081 | { 1082 | "cell_type": "code", 1083 | "execution_count": 321, 1084 | "metadata": { 1085 | "collapsed": false 1086 | }, 1087 | "outputs": [ 1088 | { 1089 | "data": { 1090 | "text/plain": [ 1091 | "{6: 0.35426731078904994,\n", 1092 | " 8: 0.26570048309178745,\n", 1093 | " 12: 0.17713365539452497,\n", 1094 | " 20: 0.106280193236715,\n", 1095 | " 22: 0.096618357487922718}" 1096 | ] 1097 | }, 1098 | "execution_count": 321, 1099 | "metadata": {}, 1100 | "output_type": "execute_result" 1101 | } 1102 | ], 1103 | "source": [ 1104 | "die_rolled(5, hypotheses)" 1105 | ] 1106 | }, 1107 | { 1108 | "cell_type": "code", 1109 | "execution_count": 322, 1110 | "metadata": { 1111 | "collapsed": false 1112 | }, 1113 | "outputs": [ 1114 | { 1115 | "data": { 1116 | "text/plain": [ 1117 | "{6: 0.50584755594109587,\n", 1118 | " 8: 0.28453925021686649,\n", 1119 | " 12: 0.12646188898527397,\n", 1120 | " 20: 0.045526280034698649,\n", 1121 | " 22: 0.037625024822064992}" 1122 | ] 1123 | }, 1124 | "execution_count": 322, 1125 | "metadata": {}, 1126 | "output_type": "execute_result" 1127 | } 1128 | ], 1129 | "source": [ 1130 | "die_rolled(6, hypotheses)" 1131 | ] 1132 | }, 1133 | { 1134 | "cell_type": "code", 1135 | "execution_count": 323, 1136 | "metadata": { 1137 | "collapsed": false 1138 | }, 1139 | "outputs": [ 1140 | { 1141 | "data": { 1142 | "text/plain": [ 1143 | "{6: 0.0,\n", 1144 | " 8: 0.0,\n", 1145 | " 12: 0.72553987580240009,\n", 1146 | " 20: 0.15671661317331853,\n", 1147 | " 22: 0.11774351102428135}" 1148 | ] 1149 | }, 1150 | "execution_count": 323, 1151 | "metadata": {}, 1152 | "output_type": "execute_result" 1153 | } 1154 | ], 1155 | "source": [ 1156 | "die_rolled(9, hypotheses)" 1157 | ] 1158 | }, 1159 | { 1160 | "cell_type": "markdown", 1161 | "metadata": {}, 1162 | "source": [ 1163 | "## A simple introduction to PyMC" 1164 | ] 1165 | }, 1166 | { 1167 | "cell_type": "code", 1168 | "execution_count": 331, 1169 | "metadata": { 1170 | "collapsed": false 1171 | }, 1172 | "outputs": [ 1173 | { 1174 | "name": "stdout", 1175 | "output_type": "stream", 1176 | "text": [ 1177 | " [-----------------100%-----------------] 18000 of 18000 complete in 0.7 sec\n", 1178 | "conversion_rate:\n", 1179 | " \n", 1180 | "\tMean SD MC Error 95% HPD interval\n", 1181 | "\t------------------------------------------------------------------\n", 1182 | "\t0.374 0.161 0.003 [ 0.083 0.684]\n", 1183 | "\t\n", 1184 | "\t\n", 1185 | "\tPosterior quantiles:\n", 1186 | "\t\n", 1187 | "\t2.5 25 50 75 97.5\n", 1188 | "\t |---------------|===============|===============|---------------|\n", 1189 | "\t0.101 0.256 0.362 0.485 0.714\n", 1190 | "\t\n" 1191 | ] 1192 | } 1193 | ], 1194 | "source": [ 1195 | "import pymc\n", 1196 | "\n", 1197 | "conversion_rate = pymc.Uniform('conversion_rate', lower=0, upper=1.0)\n", 1198 | "observations = pymc.Bernoulli(\"observations\", conversion_rate, value=[0,0,0,1,0,1], observed=True)\n", 1199 | "mcmc = pymc.MCMC([conversion_rate, observations])\n", 1200 | "mcmc.sample(18000, 1000)\n", 1201 | "mcmc.summary()" 1202 | ] 1203 | }, 1204 | { 1205 | "cell_type": "markdown", 1206 | "metadata": {}, 1207 | "source": [ 1208 | "# Extra Extra Credit: Let's Simulate a Product Funnel" 1209 | ] 1210 | }, 1211 | { 1212 | "cell_type": "markdown", 1213 | "metadata": {}, 1214 | "source": [ 1215 | "We want to understand how much our conversion rates can fluctuate day to day and not be a cause for alarm. Said another way, we want to establish control limits of a sort for our conversion metric. Let's set up a simple model for this:" 1216 | ] 1217 | }, 1218 | { 1219 | "cell_type": "markdown", 1220 | "metadata": {}, 1221 | "source": [ 1222 | "Visits\n", 1223 | "\n", 1224 | "* New\n", 1225 | " * SEO\n", 1226 | " * Have a conversion rate around 2%\n", 1227 | " * Receive 1,000,000 visits a day\n", 1228 | " * SEM\n", 1229 | " * Have a conversion rate around 7%\n", 1230 | " * Receive 100,000 visits a day\n", 1231 | " * Other\n", 1232 | " * Have a conversion rate around 3%\n", 1233 | " * Receive 650,000 visits a day\n", 1234 | "* Return\n", 1235 | " * Have a conversion rate around 20%\n", 1236 | " * Receive 50,000 visits a day\n", 1237 | "\n", 1238 | "\n" 1239 | ] 1240 | }, 1241 | { 1242 | "cell_type": "markdown", 1243 | "metadata": {}, 1244 | "source": [ 1245 | "## Simple modeling approach" 1246 | ] 1247 | }, 1248 | { 1249 | "cell_type": "code", 1250 | "execution_count": 343, 1251 | "metadata": { 1252 | "collapsed": false 1253 | }, 1254 | "outputs": [ 1255 | { 1256 | "data": { 1257 | "text/plain": [ 1258 | "''" 1259 | ] 1260 | }, 1261 | "execution_count": 343, 1262 | "metadata": {}, 1263 | "output_type": "execute_result" 1264 | }, 1265 | { 1266 | "data": { 1267 | "image/png": "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\n", 1268 | "text/plain": [ 1269 | "" 1270 | ] 1271 | }, 1272 | "metadata": {}, 1273 | "output_type": "display_data" 1274 | } 1275 | ], 1276 | "source": [ 1277 | "# Our model inputs\n", 1278 | "seo_conversion_rate = 0.02\n", 1279 | "seo_visits_per_day = 1000000\n", 1280 | "\n", 1281 | "sem_conversion_rate = 0.07\n", 1282 | "sem_visits_per_day = 100000\n", 1283 | "\n", 1284 | "other_conversion_rate = 0.03\n", 1285 | "other_visits_per_day = 650000\n", 1286 | "\n", 1287 | "return_conversion_rate = 0.2\n", 1288 | "return_visits_per_day = 50000\n", 1289 | "\n", 1290 | "orders_per_day = []\n", 1291 | "for random_day in range(5000):\n", 1292 | " days_orders = 0\n", 1293 | " \n", 1294 | " sampled_seo_visits_per_day = np.random.normal(seo_visits_per_day, seo_visits_per_day * 0.1)\n", 1295 | " seo_conversions = np.random.binomial(sampled_seo_visits_per_day, seo_conversion_rate)\n", 1296 | " \n", 1297 | " sampled_sem_visits_per_day = np.random.normal(sem_visits_per_day, sem_visits_per_day * 0.1)\n", 1298 | " sem_conversions = np.random.binomial(sampled_sem_visits_per_day, sem_conversion_rate)\n", 1299 | " \n", 1300 | " sampled_other_visits_per_day = np.random.normal(other_visits_per_day, other_visits_per_day * 0.1)\n", 1301 | " other_conversions = np.random.binomial(sampled_other_visits_per_day, other_conversion_rate)\n", 1302 | " \n", 1303 | " sampled_return_visits_per_day = np.random.normal(return_visits_per_day, return_visits_per_day * 0.1)\n", 1304 | " return_conversions = np.random.binomial(sampled_return_visits_per_day, return_conversion_rate)\n", 1305 | " \n", 1306 | " orders_per_day.append(seo_conversions + sem_conversions + other_conversions + return_conversions)\n", 1307 | " \n", 1308 | "plt.hist(orders_per_day, bins=50)\n", 1309 | "''" 1310 | ] 1311 | }, 1312 | { 1313 | "cell_type": "code", 1314 | "execution_count": 342, 1315 | "metadata": { 1316 | "collapsed": false 1317 | }, 1318 | "outputs": [ 1319 | { 1320 | "data": { 1321 | "text/plain": [ 1322 | "56500.0" 1323 | ] 1324 | }, 1325 | "execution_count": 342, 1326 | "metadata": {}, 1327 | "output_type": "execute_result" 1328 | } 1329 | ], 1330 | "source": [ 1331 | "seo_conversion_rate * seo_visits_per_day + \\\n", 1332 | "sem_conversion_rate * sem_visits_per_day + \\\n", 1333 | "other_conversion_rate * other_visits_per_day + \\\n", 1334 | "return_conversion_rate * return_visits_per_day" 1335 | ] 1336 | }, 1337 | { 1338 | "cell_type": "code", 1339 | "execution_count": null, 1340 | "metadata": { 1341 | "collapsed": true 1342 | }, 1343 | "outputs": [], 1344 | "source": [] 1345 | } 1346 | ], 1347 | "metadata": { 1348 | "kernelspec": { 1349 | "display_name": "Python 2", 1350 | "language": "python", 1351 | "name": "python2" 1352 | }, 1353 | "language_info": { 1354 | "codemirror_mode": { 1355 | "name": "ipython", 1356 | "version": 2 1357 | }, 1358 | "file_extension": ".py", 1359 | "mimetype": "text/x-python", 1360 | "name": "python", 1361 | "nbconvert_exporter": "python", 1362 | "pygments_lexer": "ipython2", 1363 | "version": "2.7.6" 1364 | } 1365 | }, 1366 | "nbformat": 4, 1367 | "nbformat_minor": 0 1368 | } 1369 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simplified statistics through simulation 2 | ## Presenter: Justin Bozonier 3 | 4 | Please come to this session with the following installed along with their dependencies: 5 | Full IPython installation (including IPython notebooks) 6 | 7 | - numpy 8 | - matplotlib 9 | - statsmodels 10 | - IPython --------------------------------------------------------------------------------