Created
April 22, 2016 21:25
-
-
Save maxberggren/3034a696722f2ed8fb36bc1241a9ec17 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import numpy as np\n", | |
| "import pymc3 as pm\n", | |
| "import pandas as pd" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Working data\n", | |
| "bins_A = [207763, 223077, 210613, 181571, 168385, 159171, 146068, 128502,\n", | |
| " 110505, 94379, 79315, 67084, 57527, 48867, 41862]\n", | |
| "bins_B = [219812, 228003, 208490, 182409, 173357, 164470, 151033, 132412,\n", | |
| " 113750, 95835, 81206, 67876, 58057, 49005, 41808]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Not working data\n", | |
| "bins_A = [1750102, 286721, 122232, 53109, 35203, 23628, 16135,\n", | |
| " 18991, 24309, 11363, 9732, 8494, 5911, 4374,\n", | |
| " 3526, 2462, 2186, 1909, 1811, 1684]\n", | |
| "bins_B = [1726921, 279424, 111627, 48393, 29513, 20356, 13086,\n", | |
| " 18364, 23361, 10805, 8752, 10323, 6007, 4252,\n", | |
| " 3039, 2172, 1829, 1670, 1617, 1569]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Applied stickbreaking-transform to p_A and added transformed p_A_stickbreaking to model.\n", | |
| "Applied stickbreaking-transform to p_B and added transformed p_B_stickbreaking to model.\n", | |
| " [-----------------100%-----------------] 2000 of 2000 complete in 15.8 sec" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "clicks = range(1, len(bins_A)+1)\n", | |
| "\n", | |
| "with pm.Model() as model:\n", | |
| " # Start with uniform probability over the bins\n", | |
| " p_A = pm.Dirichlet(\"p_A\", np.ones(len(bins_A)), shape=len(bins_A))\n", | |
| " p_B = pm.Dirichlet(\"p_B\", np.ones(len(bins_B)), shape=len(bins_B))\n", | |
| "\n", | |
| " # A multimodal dist. using the probabilitys of bins\n", | |
| " obs_A = pm.Multinomial(\"obs_A\", p=p_A, n=sum(bins_A), observed=bins_A)\n", | |
| " obs_B = pm.Multinomial(\"obs_B\", p=p_B, n=sum(bins_B), observed=bins_B)\n", | |
| "\n", | |
| " percent_better = pm.Deterministic('percent_better', pm.dot(p_B, clicks)/pm.dot(p_A, clicks)*100.0 - 100 ) \n", | |
| " \n", | |
| " start = pm.find_MAP()\n", | |
| " step = pm.NUTS(state=start)\n", | |
| " trace = pm.sample(2000, step, start=start, njobs=3)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "\n", | |
| "p_A_stickbreaking:\n", | |
| "\n", | |
| " Mean SD MC Error 95% HPD interval\n", | |
| " -------------------------------------------------------------------\n", | |
| " \n", | |
| " 3.960 0.001 0.000 [3.957, 3.963]\n", | |
| " 2.699 0.002 0.000 [2.694, 2.704]\n", | |
| " 2.224 0.004 0.000 [2.217, 2.231]\n", | |
| " 1.599 0.005 0.000 [1.589, 1.609]\n", | |
| " 1.353 0.006 0.000 [1.342, 1.366]\n", | |
| " 1.075 0.007 0.000 [1.061, 1.089]\n", | |
| " 0.774 0.009 0.000 [0.757, 0.790]\n", | |
| " 1.075 0.008 0.000 [1.060, 1.091]\n", | |
| " 1.610 0.008 0.000 [1.595, 1.626]\n", | |
| " 0.993 0.010 0.000 [0.973, 1.012]\n", | |
| " 0.996 0.011 0.000 [0.975, 1.019]\n", | |
| " 1.046 0.012 0.000 [1.024, 1.074]\n", | |
| " 0.835 0.015 0.000 [0.805, 0.863]\n", | |
| " 0.659 0.017 0.000 [0.625, 0.692]\n", | |
| " 0.562 0.019 0.000 [0.524, 0.601]\n", | |
| " 0.260 0.024 0.000 [0.215, 0.306]\n", | |
| " 0.193 0.025 0.000 [0.142, 0.241]\n", | |
| " 0.089 0.029 0.001 [0.030, 0.145]\n", | |
| " 0.073 0.034 0.001 [0.006, 0.137]\n", | |
| "\n", | |
| " Posterior quantiles:\n", | |
| " 2.5 25 50 75 97.5\n", | |
| " |--------------|==============|==============|--------------|\n", | |
| " \n", | |
| " 3.957 3.959 3.960 3.961 3.963\n", | |
| " 2.695 2.698 2.699 2.701 2.704\n", | |
| " 2.217 2.221 2.224 2.226 2.231\n", | |
| " 1.589 1.595 1.599 1.602 1.609\n", | |
| " 1.341 1.349 1.353 1.357 1.365\n", | |
| " 1.061 1.070 1.075 1.080 1.089\n", | |
| " 0.757 0.768 0.774 0.779 0.790\n", | |
| " 1.060 1.070 1.075 1.080 1.091\n", | |
| " 1.595 1.605 1.610 1.615 1.626\n", | |
| " 0.973 0.986 0.993 1.000 1.013\n", | |
| " 0.973 0.988 0.996 1.003 1.018\n", | |
| " 1.022 1.038 1.047 1.055 1.071\n", | |
| " 0.805 0.825 0.835 0.845 0.864\n", | |
| " 0.625 0.647 0.659 0.670 0.693\n", | |
| " 0.522 0.549 0.562 0.575 0.600\n", | |
| " 0.213 0.244 0.260 0.276 0.306\n", | |
| " 0.144 0.176 0.193 0.210 0.244\n", | |
| " 0.032 0.069 0.088 0.108 0.147\n", | |
| " 0.008 0.049 0.073 0.096 0.141\n", | |
| "\n", | |
| "\n", | |
| "p_B_stickbreaking:\n", | |
| "\n", | |
| " Mean SD MC Error 95% HPD interval\n", | |
| " -------------------------------------------------------------------\n", | |
| " \n", | |
| " 4.008 0.001 0.000 [4.005, 4.011]\n", | |
| " 2.765 0.003 0.000 [2.760, 2.770]\n", | |
| " 2.225 0.004 0.000 [2.218, 2.232]\n", | |
| " 1.597 0.005 0.000 [1.587, 1.608]\n", | |
| " 1.247 0.007 0.000 [1.235, 1.261]\n", | |
| " 0.981 0.008 0.000 [0.967, 0.996]\n", | |
| " 0.596 0.009 0.000 [0.578, 0.614]\n", | |
| " 1.072 0.008 0.000 [1.056, 1.088]\n", | |
| " 1.597 0.008 0.000 [1.582, 1.612]\n", | |
| " 0.963 0.011 0.000 [0.941, 0.983]\n", | |
| " 0.886 0.012 0.000 [0.862, 0.907]\n", | |
| " 1.316 0.012 0.000 [1.292, 1.339]\n", | |
| " 0.957 0.015 0.000 [0.928, 0.987]\n", | |
| " 0.763 0.017 0.000 [0.730, 0.798]\n", | |
| " 0.540 0.021 0.000 [0.500, 0.581]\n", | |
| " 0.262 0.025 0.000 [0.213, 0.311]\n", | |
| " 0.121 0.027 0.000 [0.067, 0.172]\n", | |
| " 0.047 0.030 0.001 [-0.013, 0.104]\n", | |
| " 0.030 0.036 0.001 [-0.042, 0.097]\n", | |
| "\n", | |
| " Posterior quantiles:\n", | |
| " 2.5 25 50 75 97.5\n", | |
| " |--------------|==============|==============|--------------|\n", | |
| " \n", | |
| " 4.005 4.007 4.008 4.009 4.011\n", | |
| " 2.760 2.763 2.765 2.767 2.770\n", | |
| " 2.217 2.222 2.225 2.227 2.232\n", | |
| " 1.587 1.594 1.597 1.601 1.608\n", | |
| " 1.234 1.242 1.247 1.251 1.260\n", | |
| " 0.966 0.976 0.981 0.986 0.996\n", | |
| " 0.578 0.589 0.596 0.602 0.613\n", | |
| " 1.056 1.067 1.072 1.078 1.089\n", | |
| " 1.582 1.592 1.597 1.602 1.612\n", | |
| " 0.942 0.956 0.963 0.970 0.984\n", | |
| " 0.863 0.878 0.886 0.894 0.909\n", | |
| " 1.292 1.307 1.316 1.324 1.339\n", | |
| " 0.928 0.947 0.957 0.967 0.987\n", | |
| " 0.727 0.751 0.762 0.775 0.797\n", | |
| " 0.498 0.526 0.540 0.554 0.581\n", | |
| " 0.212 0.246 0.261 0.279 0.311\n", | |
| " 0.068 0.103 0.122 0.140 0.174\n", | |
| " -0.012 0.027 0.046 0.068 0.107\n", | |
| " -0.041 0.007 0.030 0.052 0.097\n", | |
| "\n", | |
| "\n", | |
| "p_A:\n", | |
| "\n", | |
| " Mean SD MC Error 95% HPD interval\n", | |
| " -------------------------------------------------------------------\n", | |
| " \n", | |
| " 0.734 0.000 0.000 [0.734, 0.735]\n", | |
| " 0.120 0.000 0.000 [0.120, 0.121]\n", | |
| " 0.051 0.000 0.000 [0.051, 0.052]\n", | |
| " 0.022 0.000 0.000 [0.022, 0.022]\n", | |
| " 0.015 0.000 0.000 [0.015, 0.015]\n", | |
| " 0.010 0.000 0.000 [0.010, 0.010]\n", | |
| " 0.007 0.000 0.000 [0.007, 0.007]\n", | |
| " 0.008 0.000 0.000 [0.008, 0.008]\n", | |
| " 0.010 0.000 0.000 [0.010, 0.010]\n", | |
| " 0.005 0.000 0.000 [0.005, 0.005]\n", | |
| " 0.004 0.000 0.000 [0.004, 0.004]\n", | |
| " 0.004 0.000 0.000 [0.003, 0.004]\n", | |
| " 0.002 0.000 0.000 [0.002, 0.003]\n", | |
| " 0.002 0.000 0.000 [0.002, 0.002]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.002]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| "\n", | |
| " Posterior quantiles:\n", | |
| " 2.5 25 50 75 97.5\n", | |
| " |--------------|==============|==============|--------------|\n", | |
| " \n", | |
| " 0.734 0.734 0.734 0.734 0.735\n", | |
| " 0.120 0.120 0.120 0.120 0.121\n", | |
| " 0.051 0.051 0.051 0.051 0.052\n", | |
| " 0.022 0.022 0.022 0.022 0.022\n", | |
| " 0.015 0.015 0.015 0.015 0.015\n", | |
| " 0.010 0.010 0.010 0.010 0.010\n", | |
| " 0.007 0.007 0.007 0.007 0.007\n", | |
| " 0.008 0.008 0.008 0.008 0.008\n", | |
| " 0.010 0.010 0.010 0.010 0.010\n", | |
| " 0.005 0.005 0.005 0.005 0.005\n", | |
| " 0.004 0.004 0.004 0.004 0.004\n", | |
| " 0.003 0.004 0.004 0.004 0.004\n", | |
| " 0.002 0.002 0.002 0.003 0.003\n", | |
| " 0.002 0.002 0.002 0.002 0.002\n", | |
| " 0.001 0.001 0.001 0.001 0.002\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| "\n", | |
| "\n", | |
| "p_B:\n", | |
| "\n", | |
| " Mean SD MC Error 95% HPD interval\n", | |
| " -------------------------------------------------------------------\n", | |
| " \n", | |
| " 0.743 0.000 0.000 [0.743, 0.744]\n", | |
| " 0.120 0.000 0.000 [0.120, 0.121]\n", | |
| " 0.048 0.000 0.000 [0.048, 0.048]\n", | |
| " 0.021 0.000 0.000 [0.021, 0.021]\n", | |
| " 0.013 0.000 0.000 [0.013, 0.013]\n", | |
| " 0.009 0.000 0.000 [0.009, 0.009]\n", | |
| " 0.006 0.000 0.000 [0.006, 0.006]\n", | |
| " 0.008 0.000 0.000 [0.008, 0.008]\n", | |
| " 0.010 0.000 0.000 [0.010, 0.010]\n", | |
| " 0.005 0.000 0.000 [0.005, 0.005]\n", | |
| " 0.004 0.000 0.000 [0.004, 0.004]\n", | |
| " 0.004 0.000 0.000 [0.004, 0.005]\n", | |
| " 0.003 0.000 0.000 [0.003, 0.003]\n", | |
| " 0.002 0.000 0.000 [0.002, 0.002]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| " 0.001 0.000 0.000 [0.001, 0.001]\n", | |
| "\n", | |
| " Posterior quantiles:\n", | |
| " 2.5 25 50 75 97.5\n", | |
| " |--------------|==============|==============|--------------|\n", | |
| " \n", | |
| " 0.743 0.743 0.743 0.744 0.744\n", | |
| " 0.120 0.120 0.120 0.120 0.121\n", | |
| " 0.048 0.048 0.048 0.048 0.048\n", | |
| " 0.021 0.021 0.021 0.021 0.021\n", | |
| " 0.013 0.013 0.013 0.013 0.013\n", | |
| " 0.009 0.009 0.009 0.009 0.009\n", | |
| " 0.006 0.006 0.006 0.006 0.006\n", | |
| " 0.008 0.008 0.008 0.008 0.008\n", | |
| " 0.010 0.010 0.010 0.010 0.010\n", | |
| " 0.005 0.005 0.005 0.005 0.005\n", | |
| " 0.004 0.004 0.004 0.004 0.004\n", | |
| " 0.004 0.004 0.004 0.004 0.005\n", | |
| " 0.003 0.003 0.003 0.003 0.003\n", | |
| " 0.002 0.002 0.002 0.002 0.002\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| " 0.001 0.001 0.001 0.001 0.001\n", | |
| "\n", | |
| "\n", | |
| "percent_better:\n", | |
| "\n", | |
| " Mean SD MC Error 95% HPD interval\n", | |
| " -------------------------------------------------------------------\n", | |
| " \n", | |
| " -1.924 0.104 0.001 [-2.129, -1.719]\n", | |
| "\n", | |
| " Posterior quantiles:\n", | |
| " 2.5 25 50 75 97.5\n", | |
| " |--------------|==============|==============|--------------|\n", | |
| " \n", | |
| " -2.128 -1.994 -1.923 -1.856 -1.714\n", | |
| "\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "pm.plots.summary(trace[1000:])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 2", | |
| "language": "python", | |
| "name": "python2" | |
| }, | |
| "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" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 0 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I stay in China,it is my lucky that browsed your code. my email is [email protected],we can chat AI and ML.