/
Optimizing sample sizes in AB testing.ipynb
1584 lines (1584 loc) · 476 KB
/
Optimizing sample sizes in AB testing.ipynb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Optimizing sample sizes in A/B testing"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from os import path\n",
"import pickle\n",
"\n",
"from matplotlib.colors import LinearSegmentedColormap\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import scipy\n",
"from scipy.optimize import minimize\n",
"from scipy.stats import multivariate_normal, norm\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib import rc\n",
"rc('text', usetex=True)\n",
"plt.rc('font', family='sans-serif')\n",
"plt.rc('font', size=16)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"figures_path = '/Users/chrissaid/Dropbox/Blog/csaid.github.io/assets/2020_optimizing_sample_sizes'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def plot_heatmap(D, d, Z, show_colorbar=False, show_quad_text=False, show_sigma_c=False, title=''):\n",
" amp = max(np.abs(Z.min()), np.abs(Z.max()))\n",
" pcol = plt.pcolormesh(D, d, Z, cmap=custom_colormap, vmin=-amp, vmax=amp)\n",
" if show_colorbar:\n",
" plt.colorbar()\n",
" if show_quad_text:\n",
" c = np.max(d) / 2\n",
" plt.text(c, c, 'Good\\n Ship B, where $ \\mu_B > \\mu_A $', ha='center', fontsize=10)\n",
" plt.text(-c, c, 'Bad\\n Ship B, where $ \\mu_A > \\mu_B $', ha='center', fontsize=10)\n",
" plt.text(0, -c, 'Neutral\\n Keep A', ha='center', fontsize=10)\n",
" if show_sigma_c:\n",
" plt.errorbar([2], [2], show_sigma_c, capsize=2, color='k')\n",
" plt.text(2.2, 2, '$\\pm \\sigma_c$', va='center')\n",
" plt.xlabel(\"$\\displaystyle \\Delta = \\mu_B - \\mu_A $\");\n",
" plt.ylabel(\"$\\displaystyle \\delta = \\overline{X}_B - \\overline{X}_A $\");\n",
" plt.title(title)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def ws(c, frac_to_white=0.5):\n",
" \"\"\"\n",
" Shifts color to white\n",
" \"\"\"\n",
" return (1-frac_to_white) * c + (frac_to_white) * 1\n",
"\n",
"cdict = {'red': [\n",
" [0.0, ws(237/255.), ws(237/255.)],\n",
" [0.5, 1.0, 1.0],\n",
" [1.0, 58/255., 58/255.],\n",
" ],\n",
" 'green': [\n",
" [0.0, ws(38/255.), ws(38/255.)],\n",
" [0.5, 1.0, 1.0],\n",
" [1.0, 195/255., 195/255.],\n",
" ],\n",
" 'blue': [\n",
" [0.0, ws(133/255.), ws(133/255.)],\n",
" [0.5, 1.0, 1.0],\n",
" [1.0, 242/255., 242/255.],\n",
" ],\n",
" }\n",
"custom_colormap = LinearSegmentedColormap('custom_colormap', segmentdata=cdict, N=256)\n",
"\n",
"blue = np.array([58., 195., 242.]) / 255\n",
"pink = np.array([237., 38., 133.]) / 255\n",
"orange = np.array([245, 128, 50]) / 255\n",
"yellow = np.array([241, 211, 33]) / 255\n",
"gray = np.array([150, 150, 150]) / 255"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bivariate normal distribution.\n",
"Here we define the bivariate normal distribution over `D`, the true difference in group means, and `d`, the observed difference in group means."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def var_of_group_mean_diff(var_X, n):\n",
" \"\"\"\n",
" Assuming two groups each with variance var_X\n",
" and sample size n, returns the variance of the difference \n",
" in means.\n",
" \"\"\"\n",
" return 2 * var_X / n\n",
"\n",
"def corr_from_var_and_conditional_var(var_x, var_c):\n",
" \"\"\"\n",
" For a bivariate normal distribution over x and y:\n",
" - var_x: the marginal variance of x\n",
" - var_c: the variance of y, conditional on x\n",
" Returns: the correlation rho between x and y.\n",
" \"\"\"\n",
" return np.sqrt(1 - var_c/(var_x + var_c))\n",
"\n",
"def get_cov_matrix(var_D, var_X, n):\n",
" \"\"\"\n",
" var_D: Variance on your Gaussian prior on D, the true difference in means\n",
" var_X: The variance of your observations, X, assumed to be be the\n",
" same in both groups\n",
" n: Sample size of a group.\n",
" \"\"\"\n",
" var_c = var_of_group_mean_diff(var_X, n)\n",
" var_d = var_c + var_D\n",
" rho = corr_from_var_and_conditional_var(var_D, var_c)\n",
" cov = rho * np.sqrt(var_D) * np.sqrt(var_d)\n",
" return [[var_D, cov], [cov, var_d]]\n",
"\n",
"def get_pdf(cov_matrix, D, d):\n",
" pos = np.empty(D.shape + (2,))\n",
" pos[:, :, 0] = D; \n",
" pos[:, :, 1] = d\n",
" rv = multivariate_normal([0, 0], cov_matrix)\n",
" pdf = rv.pdf(pos)\n",
" return pdf"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def get_lims_and_steps(var_D, var_X, n):\n",
" D_lim = np.sqrt(var_D) * 4\n",
" d_lim = np.sqrt(var_X/n + var_D) * 4\n",
" D_step=D_lim/100\n",
" d_step=d_lim/100\n",
" return D_lim, d_lim, D_step, d_step"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"var_D = 5\n",
"D = np.arange(-6, 6, .1)\n",
"univariate_pdf = norm.pdf(D)\n",
"plt.figure(figsize=[7,3])\n",
"plt.plot(D, univariate_pdf, color=blue)\n",
"plt.xlabel(\"$\\displaystyle \\Delta = \\mu_B - \\mu_A $\");\n",
"plt.ylabel('Density');\n",
"plt.tight_layout()\n",
"sns.despine()\n",
"plt.savefig(path.join(figures_path, 'univariate_normal.png'), dpi=150)\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"var_X = 400\n",
"n = 500\n",
"D_lim, d_lim, D_step, d_step = get_lims_and_steps(var_D, var_X, n)\n",
"D, d = np.meshgrid(np.arange(-D_lim, D_lim, D_step), np.arange(-d_lim, d_lim, d_step))\n",
"cov_matrix = get_cov_matrix(var_D=var_D, var_X=var_X, n=n)\n",
"pdf = get_pdf(cov_matrix, D, d)\n",
"\n",
"var_c = var_of_group_mean_diff(var_X, n)\n",
"plot_heatmap(D, d, pdf, show_colorbar=False, show_quad_text=False, show_sigma_c=np.sqrt(var_c))\n",
"plt.savefig(path.join(figures_path, 'bivariate_normal.png'), dpi=150)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1224x360 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def plot_multiple_pdfs():\n",
" fig, axes = plt.subplots(1, 3, figsize=[17, 5])\n",
" for i, n in enumerate([200, 500, 2000]):\n",
" var_c = var_of_group_mean_diff(var_X, n)\n",
" cov_matrix_for_n = get_cov_matrix(var_D=var_D, var_X=var_X, n=n)\n",
" pdf_for_n = get_pdf(cov_matrix_for_n, D, d)\n",
" plt.sca(axes[i])\n",
" plot_heatmap(D, d, pdf_for_n, show_colorbar=False, show_quad_text=False, show_sigma_c=np.sqrt(var_c), title=f'n={n}')\n",
"plot_multiple_pdfs()\n",
"plt.tight_layout()\n",
"plt.savefig(path.join(figures_path, 'three_bivariate_normals.png'), dpi=150)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lift Outcomes"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def get_lift_matrix(D, d):\n",
" return np.where(d>0, D, 0)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEPCAYAAABLIROyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deXxU9bk/8M9D21trNUyi1mrZMthbN7RZXCpaFYIV7aKYAKLVViEpiP5qrYTF6q1aIcGliygJaKu3IktAb+ueBLUILpBJ2LH+mGFzaavJJERt773y3D/OmWT2nCRnZs7JfN6+5mXO/j0T8n3Odz2iqiAiouwzKNMJICKizGAAICLKUgwARERZigGAiChLMQAQEWUpBgAioiz1+UwnIFWOPsKjw/K+2r1CYveR0Mo422LWSbydEp07yXkj1kuC9f08pldpNVcmOCT2VBL3x/i7WLm/xNeOex5L31HYQpL9oztAa9RKTbRP9DqN3Wbl3N0/a8R5kp7D0vkSX1uT7RP6OUk6er4vjdlXow7o8b4SpCPRvhq1IuH5kqSj8+3mD1X1mNgrWpd7Von+T3urpX0/frv5RVW9uD/Xs8OADQDD8r6K9bOWdOdgAmCQRORoEvp5kJkJde0bvRzn2EFhGVfM/tJ9DKLWhx8bfn6R2Ot1J7Q7PwulI+LaUctRxyZPK5KeTwZFpQth5w8dmyCtGCTmoYm+5zj3HXY+SXS9ROkOu08JBZbw34EAah6vChxCdybzmSoOATgUlol8Zu4T2t9Y1ojjEdovLEPpXjbWHApbF3HurmXFIfP8oe2Hos5vrNOo5e79/zf0s4auF5nOrvuMObdG3Ev3fcY/X+g+Q2k9hOjvQpPcJ6LuU7u+m/Bzh/aPvu/QfWrYtUP7dB+vEeeL+A5j7lO7ltedm7MX/fS/7a0oWPqqpX1fOy/n6P5ezw4DNgAQEaVbssK3EzEAEBHZxG2NqgwAREQ2YQmAiCgLCYBBSXspOA8DABGRHQT4nLvyfwYAIiI7hHdScwsGACIim7ARmIgoS7EEQESUhYxGYHdhACAisskglgCIiLKPgL2AiIiylnAcABFRFhJWARERZSVB8tnKnYgBgIjIJuwFRESUpTgOgIgoC7EXEBFRFmMVEBFRFop+k6sbMAAQEdnEZfk/AwARkV0GuawVmAGAiMgGwhfCEBFlL5fl/wwARER2YSMwEVEW4lQQRERZjCUAIqIs5bL8nwGAiMgOAuDzLosADABERDbhC2GIiLIQp4IgIspiLsv/GQCIiGzBV0ISEWUnvg+AiCiLuSz/ZwBwq698twilF45Ha0c7IILldz1o6bgla55A3mAPrhj33RSnkJzmyXvmIrCtGVBg2KkFKJt7T5/O8+byR/DFwbkYdfEEm1PofqwCorTIP34oHrrlbkAEjU0bMGPhPDx0668ynSxyqEdmz0D+qEJMnHsPDinwwV5/ppM04LhxKgi3vcGM4hhbPBqB9/ZnOhnkUB+3B7Ft3VqMuWpq17qvDPdmMEUD1yCx9nEKlgAGgDkPV2Hq968EAPjf3Ye5i6vQ3tmBKy68BFMvvwrBg+24aOYUeI8fhmBnB6ZNuCrDKaZ08m9pwqnnjUm4ffGMKfikI4jDczyYtmgZAODRG6bg044gvpTjwbUPLsOnHUEs/uElyBs6Ap92tOOMydenK/kuIhjksjIAA4BLBd7bj8l33IiWd7ZjTNFoXHHheACA92vDsPxXDwEAzvrx9zD18quw9OknMe3yqzDt8im49z8XZzLZlGEftwfxyKzp+Me+AO547g28sPg+nPHdUhRcMgFNz63BumVL8XFHOwouNdY1P7cGG55cik86gvjWldfjzEnX4+Xa+zJ9G47kxl5ArAJyqfzjh2L5L3+HXU++jGnfvxLjb76ma9u9f1yMOYsWIPDePgDA7gN7MfbMczOVVMow72lF2LZuLQDgy4M9mLn4ya5tezY34aTRRulg2KnfxK7X1mLfliZ841xj3ZBTvom/rl+Lj/YF8PVzEpciCIAYbwWz8nEKBoABoOAbp3a1Adz7RA3yjx+G+TfMRt6RHgDAyCHD0fjWawCAj9rbMpZOyowvD/bgzEsnYO0TS2O2jTi9CDvXG8Fh12trMfy0Igw7rQhvv2as++v6tRg6qghHDcvHOxuMdZ8EW9OXeBcRGBmqlY9TsArIpQLv7ceM+25Da0c7Au/vx6Jb7wZgNAhf+YuZaNz4Wte+Uy+7EhfNnILGN9ch2NmB4pNPz1SyKUOunHsPnrxnLqqmjEdnWxuOGZYPALj4J7fg4elT8PxDC3H0sHxMW7QMnymw9IYpqF+8EEcPzce1Dy5DZ3sbFv/wErz9WiM+7WjH8aOKMnxHzmTX072IlALwAqgD0AqgHECdqtrafUtU1c7zOUbhsBN1/awl3b+R0ExNYb8hCf08SMw+XKF9o5fjHBs6Ju7+EjkzlET+X2Kuh8iyYfSsUtJ9LQmlI+LaUctRxyZPK5KeTwZFpSt8vHvo2ARpxSAxD030Pce577DzSaLrJUp32H0K4vwOBFDzeFXgkPl/APhMFYcAHDKXFcBn5j6h/Y1ljTgeof0U0JhlY82hsHUR5+5aVhwyzx/afijq/MY6jVru3v9/Qz9r6HqR6ey6z5hza8S9dN9n/POF7jOU1kOI/i40yX0i6j6167sJP3do/+j7Dt2nhl07tE/38RpxvojvMOY+tWt53bk5TapajH4YMqpIb3pqvaV9K7/+paTXE5FyADXmYhDANFWt60/64nFSacQR5q16EOf88hqc8x/XYM3GRgBA855dmLf8dxH7NW59Ezcstdbv/qtXj8YND9+JKdU/w5Tqn/Urfc1/3Y45NdX9OgelzoLbZuOyc8/AhPPOwAtPrwYA7Gjx4f7bZ0fs9+YrDbjnp9MtnfMHJxyDB26Zjruun4y7rp/cr/Tt2dqMlffM7dc5KDGx+LEoF8BIVc1NReYPuKAKKF1FIQBYu+MttH/aiQ13PA4IEPykM+G+Y0edhbGnnWXpvPnHDsGi6bcbg7Y2v44Zi36Jh2beYVeyM65h/asoGX1+ppORca+tbcDB9iCefm0jDinQHkzc3nLWBSU44/wSS+c9bng+br7vYRxShe/VRvz25zNw470P2ZXsjNv/xloMPdv9DcxGLyD7WnhVNQjj6T9l3FACyANQBWA3gAAAfyoyfyA2w/d8+UjbrzH29G8h8MHAGrSVN9iDhTW/hW/b5kwnJaM62iP/VnM8HtuvUXj+WHywN2D7eTPpsJxcND96P/6xsznTSek3OweCiUi5iJSa/5+VkvSm4qQpkPKiEABMKB4D356dOOeX1+CRV56K2NayZxdmPvIrnHPb1Qh+fBDNgZ2Yt+y3aA7sxLfmTMENtXfjpBu/B//fDiS9xrzH7se0iycm3Wf8nOsAAMHODpx47TgAQPM72zF3yUIjLe9sx4z7bsNZ5ZcheLADADD5FzMx/uZrsPrl59D89jbMqJqLyfNmwP/uPkyeMx0Xz7wKqxufTXhN386tWF3/DADg3kcXIdjRnjSN4QpPPR23VtyE1vYgFtb8Fv59exJfZ2sL6p55GgCwcNGvEWxP6QNOWl1yeSm2+ppw2blnYMWjtRHbdm5uxp3/bzomf/tMdASD2Nniw+/umI1dm3245oIzseDm6Sgr+gbe3ZP82WbpnXMw/pqpSfe5c5IxJuTj9iBuGn0iACCwtRlPmlU/e7c147HZM/DLS87GJ+b3XztjCn599SXwPbcG+7c1Y/m8G/DoDVPw4T4//jBzCmquvRSbn1+T8JrvbW/G9heM7RuW3o9/dlj/vR5zcgEKrvsZ/tXehpbf34+OA4kDXOvOFuxrMP42dz72AP77oHP+/fSyF9DRIrIp7FMedboGACtVtU5VawGMjLNPv7kiAKhqMFVP/dE23P4Y7i6diTUb12LmH+Z3rW/7uAMPXj8PF556JnyBHRHH5H9lCBaV34ZfXXUTHqlfHXPOwN8OYEr1LTipYjyCHx/EhNEXJU3D2MJz0OjbgLpXn0fBCScj2NmBRt8GlF1wCQCgtaMdD91yN8YUnYOmt7fi3mU1KDljNJ5/4HGsMjP5urXPYvHsBVjz8nMYe+Z5eOHBJ7DKzODjWfvGOhScNAoAsGn7ZnhyBkds9+3YgiUr/zNpuktGn49bK25C87YtmL3gP+Lu07juVRSOMnohbWzxwTPYeEoOtgdxUen30fDqy2h4ZS1qH3s06bWc6k/rN+LWu+bjhafrcPtN3XX87W1tuP03D+OsC8ZgR/OmiGOOH+HF7Acexow77sF//WFJzDnf3xvAnddNxrVnnIjO9nac970rkqbhtG+PxZa/NOL1P9ch/9QCYyqI1xpx9vfKAACdwTZcu+AhnHzuGOzZ2oQXFt+Hk84dg5/+8Tk0PWM8XzU/uxqT5z+Ezc8/hX8fPQYVjz2Lzc8mfvbyb1iL404pMNK7rQmH5Ri/1392BLFi6nex5/W12PP6WmxZ9UjCcww5ewy++eOf4cOdLXjz17fF3eeDt15G3onfBAC07mjCvx0ZWcoK7mrB3qcy92+nF+MAPlTV4rBPxBODqvrNKqCQegCVdqfXFQEgHUWhcGNOORPP3vo7+AI7u9YV5p8EAMg7YjCCnxyM2D/3iBzjuFFnoznsmJD8Y4dg2az7sLPmeUz9ThnG/yL5E9yEc7+DRt8G+N7ZjlmTy1H36vNobNqAgq+fAgAo+sapAICjcjwIdnbA/+4+NGxcjxkL56G9swMdH3eidMyl8ByZA/+BvWh8ax2mz5+DYGcHggfjP9lv2r4Z3iHDE6apadtm+LZvSZpuAFj93J/g37cH5VN+FHf7xhYfvMPzY9Z7BnvgHT4CJedfiOKCQvg2u7c6YPSFJfj9n17CtuamrnWnFBjdJj15R+Fge+TvYLAnFwBQfP5YvL0l9r6PG56P2x9djsc27sKl107D3LLxSa//re9OwNZ1jfBv8eGymbPwxp/rsG1dI/JHGRl0/mmFAIAjcvPwaXs7/rHXj52vrcUTc27AJx1BfNrZgYJLr8DhOR58uM+Pv65fi7rbZuLTg+34NMGT/btbm5A3NPb3eliOB54hIzDiW2Pw1VMK8bcdyX+v/vqncPBAACeVxp9q4qPtTThiSOx1QoI7fQjuakl6jVSyYxyAiHhEREUkPLoFYbSF2srxjcAwikKtoWgoIjUiUh4dMc1t5TAaiTE099heX6h57y54Dj8S+V8ZgsDf37V8XFunUQ3TtHs78o8dknTfgpEnI9BDNZH3uKEIvL8f+ccNRcHXT8GS51bCc0Ti9ojCb5yK3ByPMR2ECJrf2d697cRRxvTPJZcaKxI0UoWqknw7tyJ/yDD4dmxB4cmnAQBWv/hnTJv4Q3zn+sRVVw3rX0Xzts244pIf4IpLv59wv1DVkm9LC7zDR8C3pQWFpxfAt6UFnsGD4dvcgpX/tRoL7rgr4TmcaluzDzkeD742wov9AesF1lBj8a7mJnxtROLMDQC+floB3u+hDeDY4V78bW8Axw7PR/6oAtT/cQkOz0ncHjF8VAG+5MlD0SUToGr0FAoZemoBDvPkYdTFlwOI7O4a7p/mg8X725vhGZKP97c346unFOCDHc344pEefLCjGbueX43zbr47bhr2v7EWf9/RAu+4yzGixLjWZ3Eu9D+dxnVad7XgiK/lo21XCzxmieDdxqcw4vLrcKAx8b+/VBKxdSqI6qgSgBeA7bUgjg8Acap+6mE0CscEADMo1ALGOIC+XG/m4wvQ9rGRGT5xwwJLxwT+fgBT7p+FwN/fxfO318Ru/9sB3PDwnWjrbEfggwNYNKO7B9D426bi+V/FjtDMPXIwvMcNBQC0dQQxtmh0wutP/f6VmHz7TCz905MYfEQOKq+d0b3tsim4ct4MLHl6GTxH5GB5VexcQL6dW9HaEUTjG8ZAsXD+/XvR2h5Ew4a/JLz+wprfYqxZ/ZNsJIxvawvagm1o+MvLMW0MjX95GeXXXAdvvhf+/Xuw8uk1qPjRdQnP5VTzbvwJgm1Ghv6bx5dbOua9PX7M/dFkvLvXj9889VLM9vf3BvDALdPR0daK9/cGcNPCRV3bbps4HnetfD7mmCM8uTjWnPGzM9iGUeeNTXj9b0+ZisUzpmDdsqU4/EgPxk2/tWvbOVdOxaMzp2DDk0vxpSMH4+rfLYtN//ZmfNreht0b1na1KYTsef1lfHPi9fAMzUdw/x789cXVOCXq6b750fsx5OwLUfDjn0WMA4j20c4W/Ku9DR+8+XJM3X/ngQD+u6MNf3/r5YT3mQ52dAJS1aCIfBS1ugwpqAJy9EAwswjUBiA3rARQAqBeVZN+1ekaCNYc2ImljWuwqPy2Pg0Em/v7+3DPdbdkdCDYkjVPwDtkOMaefV7E+fz792JJ3R+x4Oe/QLCjHRddV4blv17SXYXTy4Fgtcse66rmCT8+2NGOiVOvwawbb0awox2bWnyYffPPkevxYKAPBNu12Yc1v69F5QMP92kg2O/vmoMf/WJ+RgeCvbX8EXiG5mPkOWMiBoJ92hHE6p9ejTOv/xn+1dGO97c14YypP8cXzHr73g4Ee3v1ozj8a/k49swLI77XgwcCCDz1KE6ZeRf+dbAN62d8D0XzH8eXjs9P60CwEacV6bw/b7C0b/mIw3oaCOaBUZsRBDASwMZUdIBxfAkAaSoKZUrZecnrc9PBf2AvppVeHbPeO3Q4FtxiNMZ5cgbjrdUvoVfDWKKvszeA8h/+KGa9Z7AHL636U1emXnoZ3zRl1Xk/SN6jLB1a9/lRNCm2zv6wHA8mP/JMV4b+79+5PGIkcG8dPBCAd8J1iH5mPWJIPkbdeBcOKfBvR3rw7cfXAUhckkglu4YBmHleykd8OroEAAAiMktVq8OW6wHU9BQNORVE9zKnguje12klAGOZU0GEn9utU0GMOK1Ib3/mdUv7Xj/8i/2+nh3cUAKoNXv+hIpCPWb+RESZYONA4LRwfABIV1GIiKg/BMDnGQCIiLKPoD8tZJnBAEBEZBNXjKwNwwBARGQHYRsAEVFWErivBGBrekWEHbiJKGv1YjI4R+h1CUBErgCQD+AoGIOyPOb/jwIwGMDn7EwgEZFb2PlCmHToaxXQZADLAWyCMSq3RFUXisg021JGROQiWVEFpKqrzRFs7caiNsN4WxdUNXYycyKiLDHgq4BCVHWJiOSLyK2IP0MsEVFWcVsJoF+9gFQ1AGChiIw1q39UVWPnNiYiGuCip/ByA1sClqo2mtU/mZ+akIgoE8R4IYyVj1PElABE5DNV7WtPHttfWEBE5AZunAoiXgmg6x5EZERvTmY2CBMRZaVBYu3jFPECQHiDbkW6EkJE5HZi8eMUPbUBlItI4reRm3pbUiAiGmiMRmCx9HGKngLAHgBzLZyHdf9ElPUGVAlAVYtUdY6I3CoiOdHbRWSMiLwE4+XFRERZzW29gCx1A1XVhQAmhap6RGSqiLwDoN7cJZCS1BERuURoKggrH6dIOhBMRHJUtcNcbACwSkQKYbyfdwmM9/MGRGRsitNJROR4TurhY0VPI4GXiMgKAHMAFMJ40l8IoF5VG0M7hf9MRJStXJb/Jx8HAKAMwCoYGX+xqp6gqrMBo/4/DekjInIFsTgGwEmlhJ7GAfgA5KnqxPBBXuYTfxtfAENE1M1tvYB6qgKar6rt8TaoarOIwJwNNE9V59ifPCIidxDIwHohjKqu7mF7s4gIgI0w2gmIiLKWk6p3rOj3S+FV1ScibAQmoqznsvw/bgDoyz1U9TchRERu5sb3AcQEAFXty2siWQIgoqznsvy//1VARERkdAP9vMsiAAMAEZFNXNYJiAGAiMguTprnxwoGACIim4jLWgH6HLBEZL6dCSEicrNQLyA3TQXRpxKAiAwG4LE5LUREruagvN0SVgEREdlA4KyXvVjBAEBEZBMnVe9YwQBARGQTl+X/DABERHYQhzXwWsEAQERkE44DICLKQkYjsLuKAP0JAO66UyKiFHNZ/t+3AKCq7SJSb3diiIjcLGuqgHp6WxgRUbbJihIAERFFEmRRCYCIiCKxBEBElIUEwOcynYheckUAEJFZAPwA8gBAVWszmyIioig2DwRLR77XpyorERljd0KSXKsKgF9V68wvYKSIlKbr+kREVoTaAKx8ejxXmvK9XgcAEVkJYLaIvGgu3yoiL4rI5XYnzlSuqnVhy/UAKlJ0LSKiPhMRSx8L0pLv9aUKaKOqLhQRr/lSGD+AWgDTRURUdY1diRORwjirWwGU2HUNIiK72NELKJ35Xl/SuxsAVNUPYJOqLlHV1ap6EYAzbE2dUffVGrUuCAAiwhfSEJGjiFj79CBt+V5fAoA37Oe2qG3+fqQlHg/MBpAwoS8mej1EpFxENonIpg87gzYnhYgosdALYax8etCrfK8/+lIF9BMRqQDgA+AXkVZVbTG3fWRf0gCYUS9K6AuIjpChVvJaACguLtbDZp5nc3LILbSH7SJmlz3zj/Hzlqe2cllHb7LErgFcvfjXcbSIbApbrg3r5dOrfK8/+hIAylS1WUTyYdRJzRWRAgDtMP7ubGsDgHGz0UUeDwCoKh/xichZtKdHjy4fqmpxgm1py/d6HQBUtdn8fwDAEvMTqptaYGfiVNUnItE3nAegwc7rEBHZwnL+n+QUacz3bJu6woxMVXadL0xtVP/XcQBqUnAdIqL+UbX26Vla8r2YEoCIfKaqfRrRbJYKbKWqlSIyy/wyvAB2R/WPJSLKPAVwyIYiANKX78WrAupqxxCREaq6x+6L9paqVmc6DUREPbIn/zdOlYZ8L14VUPgtcMQtEZElavk/p+ipDaBcRI7s6SQiMsKW1BARuZla/DhETwFgD4C5Fs5T2f+kEBG5nH2NwGmRNACoapGqzjEnfMuJ3i4iY0TkJQDlKUshEZEbWH36d07+b60bqKouBDApVNUjIlNF5B0YM9QBgO29f4iIXOeQWvs4RNKBYCKSo6od5mIDgFXmTHVBGAPAalQ1ICJjU5xOIiKyWU8jgZeIyAoAcwAUwnjSXwigXlUbQzuF/0xElLUcVL9vRbwqoPD5jMoArIKR8Rer6gmqOhtI71vBiIhcYQC0AYQnzwcgT1UnhuYAArqe+NtEZEKqE0hE5AoK1/UC6qkKaL6qtsfbYM4IChG5FUaQmGN/8oiIXMQ5ebslSQOAqq7uYXuzGC+43AijnYCIKEs5q4ePFX15H0AEc+pSNgITEbmsCJB0MrheSMU00ERE7uGs6n1LYgKAqvb6HQHsBkpEBNdFgH5XARERkcld+T8DABGRbbKtEZiIiNA9DsBFel3fHz4raLwZQomIyB368lL4qgQ/ExFlMYujgB1USuhLFZAk+JmIKLs5J2+3pC8BQBP8TESU3Rz0dG9Ff0sAREQEGI/D7AVERJSl3JX/MwAQEdnHXRGAAYCIyCYuawJgACAisk0WBACX3SIRUTo4q4+/FRwHQERkBxf2AurL1M8/ifczERG5S1+mgiDKuEEiqK2t7Vq+aNw4BIPBlFzL5/OhsrIyJeemAcZlU0EwAJArFRYWoramps/H19XV2ZgaIpNa/DgEAwC5Ul5eHsaWlKChoaFPx69cscLmFBGBJQCidKmoqEB1VeyEtBPLynDRuHGoq6uDz+dDRUUFAKC6uhp1dXWorKxEQ0MDJpaVIRgMdu0zsawMr7zyStfx4VVMRD0KNQJb+TgExwGQa3m9Xng8Hvj9/q511dXVKBk3DuXl5ZhYVobZc+bEHFdVVYVmnw8rV63qWrdq5Ur4AwF4PB5ccMEFAIDioiKUl5en/D5oAHFO3m5J0gAgIhsBjFXVjqj1IwC0Rq8nSrfZc+agKqwUsHv3brS1tqKpqQnBYBAdHdb+iZZNnAiPxwPACCIfffRRRGAh6pnDKvgt6KkKqC08kxeRxSLyGQAfgKCIbBSRMSlNIVEShYWFaNq0qWu5qKgIEydNQk1NDV6qr8ewYcO6tu3evbvH81VXV8Pr9aKqqgp5eXkpSTMNYAOsEbgeAESkQET+P4ykn6Cqeao6CMAkABeJyIQUp5MoofKKiq7G4PLycqxcsQIXjRuHiWVl8Hq9aNq0CRUVFQhEPdFfNG5czFN+SUkJZldWdrUbEPWKyxqBRZMkRkTGAigE4AVQCwCq2hxnvwmquiZVieyL4uJi3Rj2ZEhElMggkSZVLe7POYpOOV3fXPmipX2/cOpx/b6eHZK2AahqI4DG0LKIDBaR+QDmR9X/e1OUPiIi93BQDx8retUNVFXbYZQE6sz6/4dFZAUAtpZRWhUXFXX9HAwGUzISuKGhAXm5ubaekwY4l1UB9bobqKoGYNT758OoHvKZ64gyYmJZGRbX1HT14rHLqlWrUFJSAp/Ph8LCQlvPTeQEfR4IpqoBVV3NzJ8yaWJZGWZVVsLrtb8WMuD3Y+KkSVjBUcNklctKABwJTK5VWVkJn8+HkpKSiPXhI4Gjl30+H4qLilBRUYETRo5M2Ne/oaEBJePGoaSkBKs5bxBZYbULqHPyfwYAciefzwfA6AJaXV3dtT40Evil+nqsXLEiZhkwRhDX1NRgQVUVahJMKBeq/vF4PPB4PF3XI0rM4tO/g0oAnAqCXCk0WAvonrLB4/HEjATesX07Pvnkk4iRwbnmAK+SkpKEM4o2Rk0yt2LFCrYDUM8OZToBvcMAQK4U3uC7oKoKlZWVqKmpQVFREfLy8lBaWgoAqK2tjVj2+Xxoa20FAGzatAn5cdoOfD4frigt7QowwWAQxUVFEVNOEMXnnKd7KxxdBSQipSIyS0S8IuIJ/ZzpdJGzlJSUIOD3w+fzxYwEjl4GAL/fb0wUV1kZN1NfsWIFJk2a1LXs8Xjg9Xo5NxD1zGVtAElHAmeaiJQDCJXRgwCmqaqlFjmOBKZ4fD4fampqEtb9U3ayZSTwSafpm48/Y2nfL5w53PkjgR0iF0CeqvLxi4iczbnP03E5PgCoahDG0z9RvxUWFvLpn1JGXTYVhOMDgFkN1AogD4BHVat72LccQMQ0wEREaeHgKvV4HN0IDKABwEpVrVPVWgAjzUw+LlWtVdViVS0+5phj0pdKIqIM6U9nmbQHADOBCT/h+6qq36wCCiIw1R4AAAbxSURBVKkHUJneFBMRWWB1EJj9pYQ8AFUAdgMIAPBbbTNNaxWQiJQCGNfDPkFVrTSDQRuA3LAgEASnniYip8pcDVCfOsukNQCYXTh7M7FKdVQJwAtOPU1ETpWhNoC+dpZxbCOwqgZF5KOo1WVgFRAROZX1XkBHi0j4QKVas52zT3rTWSacYwOAqVZEZsGIbCMB1FgdCEZElFa9G+X7oY0DwRoAtIZqS0SkRkTKrQQURwcA84YsRTIiosyzpwooukNMzFXCqsbj1PvXw2gUdncAICJyFRvy/3R2lmEAICKyiw2NwOnsLMMAQERkC037VBD97SzDAEBEZIfMTfXc584yDABERHbJwDiA/nSWcfpcQERElCIsARAR2cVdk4EyABAR2cZl00EzABAR2UHRm6kgHIEBgIjILu7K/xkAiIjs464IwABARGQXd+X/DABERPZIydu+UooBgIjILu7K/xkAiIhsoUj7XED9xQBARGQXl1UBcSoIIqIsxRIAEZFdXFYCYAAgIrKLu/J/BgAiIltwKggiomzFcQBERNnLXfk/AwARkX3cFQEYAIiI7OKu/J8BgIjIFgq2ARARZa1DmU5A7zAAEBHZRF1WAuBUEEREWYolACIiu7isBMAAQERkBwV7ARERZSeOBCYiyl6cC4iIKAuxCoiIKJu5KwIwABAR2cVd+T8DABGRbdgITESUpdgITESUhdgITESUnRTKuYCIiMgdWAIgIrKLy0oADABERHZxV/7PAEBEZAsFewEREWUtl1UBidtara0SkX8A2JvpdKTR0QA+zHQiXILflXXZ8l0NV9Vj+nMCEXkBxvdlxYeqenF/rmeHARsAso2IbFLV4kynww34XVnH72pgYzdQIqIsxQBARJSlGAAGjtpMJ8BF+F1Zx+9qAGMbABFRlmIJgIgoSzEAEBFlKQ4Eo6whIrMA+AHkAYCqsn47DhEpBeAFUAegFUA5gDpV9Wc0YWQ7lgAGEBEpFZFZIuIVEU/o50ynywlEpAqAX1XrzIx/pJnRUaw8AFUAdgMIwPjemPkPQAwAAwv/cBMrV9W6sOV6ABWZSowL5AIYqaq5Ud8bDSCsAhp4cgHkMePvJiKFcVa3AihJd1rcQlWDAIKZTgelFgPAAMM/3LjyYGT44YIAICIe8zujMCJSDuM7ywPgUdXqDCeJUoABYIDhH25cHpgNv2FCASEPDJjRGgC0hgKjiNSISDkbzQcetgEMLA0AVkY1dJZnOlEOEC+DDwWE6JJB1lNVf1SpqB5AZabSQ6nDEoDDiYgn2fbwP9Q49f71MBqFs/3JrRVGKSCcB4j8/qjr31sbgNyw7yYIo1soDTAMAA5mdlMc18M+QVWt5B9uYqrqE5HojD4PRomJYlVHBUYvjPETNMAwADiY2f2uN13w+IebWK2IlIZ1aRwHoCaTCXIiVQ2KyEdRq8vAKqABiZPBDSAiMiu80VdE6gHUsB+3IWwksBdAkI2a8ZmlyXIYJciRADby39DAxAAwgPAPl4h6gwGAiChLsRsoEVGWYgAgIspSDABERFmKAYBsZU5D3dTTADYiyjwGALJbaIbNORlNBRH1iL2AyDbmU3+xuViPyFHJROQwLAGQnUpUtUFVGwD4wFIAkaMxAJAtzKf/8Kf9SgCz0tkWYL4Ksz5qXcbbI5yaLiLOBUR2mRg+tYKqNoiIH0YpIOk8MiJidU6eyh6qlEoRNveR+T5kb/gx5tvBVsGYByg0LcQZqlpmMQ190WO6woXeVcxR3JRqDADUb+aTbLxJ5yoBrBKR+ckyblW169280RO8lSBqxk9zZlBEz5kkIiVm1VWM3kzJ3dd0RZkDYEUP5yTqNwYAssPEeBOrqWqd1VKATUpgzFwZMg5GY3QX8+nbF7WMJJm/5Sm5+5OusHOVw8j8j0p2TSI7sBcQ9Yv5dFySqLrCzEBXIUmPIDuqgEJVO6o6MmxdG4AioPtlOWYGOxJGBuyBUf2TsuBkNV3mei+A0AvsJ6W4WoqIJQDqt3IYc+0nqiZpgFE9VAUgblWPTVVAJQhrhBaREhjvRPabQSiU0Y4DMF9VfeZ+edHTaNvMaroAoFRVq82gwQZiSjmWAKjPwt5CZlXKxgWISBOMVz+ugpGptsIIOPUA/GEZ/u6op/FSABWqmrSaJw3pKoHx9B9qmK4ITydRKjAA0IAgIqqq0sM+HgCNqloUti6lL82xki5zv/LwdhQRaVPV3FSkiSiE4wDI9cynZ18P+3hhVENBREpFpFxEqpDazN9KugrjjBEoB+AJdQclShWWAMj1zAwTTnvFo1PTRRTCAEBElKVYBURElKUYAIiIshQDABFRlmIAICLKUgwARERZigGAiChLMQAQEWUpBgAioiz1f/jURiK1ZZplAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lift_matrix = get_lift_matrix(D, d)\n",
"plot_heatmap(D, d, lift_matrix, show_colorbar=True, show_quad_text=True)\n",
"plt.savefig(path.join(figures_path, 'lift_matrix.png'), dpi=150)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def get_product(lift_matrix, pdf):\n",
" return lift_matrix * pdf"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"product = get_product(lift_matrix, pdf)\n",
"plot_heatmap(D, d, product, show_colorbar=True, show_quad_text=False)\n",
"plt.savefig(path.join(figures_path, 'product_matrix.png'), dpi=150)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x288 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 3, figsize=[16, 4])\n",
"plt.sca(axes[0]); plot_heatmap(D, d, pdf, title='Outcome Probabilities')\n",
"plt.sca(axes[1]); plot_heatmap(D, d, lift_matrix, title='Outcome Lifts')\n",
"plt.sca(axes[2]); plot_heatmap(D, d, product, title='Probability-weighted Outcome Lifts')\n",
"plt.tight_layout()\n",
"plt.savefig(path.join(figures_path, 'product_stages.png'), dpi=150)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1152x288 with 3 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def plot_multiple_prob_weighted_outcome_lift_matrices():\n",
" fig, axes = plt.subplots(1, 3, figsize=[16, 4])\n",
" for i, n in enumerate([200, 500, 2000]):\n",
" cov_matrix_for_n = get_cov_matrix(var_D=var_D, var_X=400, n=n)\n",
" pdf_for_n = get_pdf(cov_matrix_for_n, D, d)\n",
" product_for_n = get_product(lift_matrix, pdf_for_n)\n",
" plt.sca(axes[i])\n",
" plot_heatmap(D, d, product_for_n, title=f'n={n}')\n",
"plot_multiple_prob_weighted_outcome_lift_matrices()\n",
"plt.tight_layout()\n",
"plt.savefig(path.join(figures_path, 'three_products.png'), dpi=150)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Estimating expected per-user lift, $\\hat{L}$\n",
"Note that these are your estimates before even starting the experiment. Once you have actually run the experiment and measured $ \\delta $, your estimates will change."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def get_pdf_and_lift_matrix(var_D, var_X, n):\n",
" D_lim, d_lim, D_step, d_step = get_lims_and_steps(var_D, var_X, n)\n",
" D, d = np.meshgrid(np.arange(-D_lim, D_lim, D_step), np.arange(-d_lim, d_lim, d_step))\n",
"\n",
" cov_matrix = get_cov_matrix(var_D=var_D, var_X=var_X, n=n)\n",
" pdf = get_pdf(cov_matrix, D, d)\n",
" lift_matrix = get_lift_matrix(D, d)\n",
" return pdf, lift_matrix, D_step, d_step"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The numeric solution"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def get_lift_numerically(var_D, var_X, n):\n",
" \"\"\"\n",
" Integrate the probability-weighted outcome lift_matrices the easy way.\n",
" \"\"\"\n",
" \n",
" pdf, lift_matrix, D_step, d_step = get_pdf_and_lift_matrix(var_D, var_X, n)\n",
"\n",
" auc = pdf.sum() * D_step * d_step\n",
" \n",
" if auc < 0.99 or auc > 1.01:\n",
" raise ValueError('Area under probability distribution not equal to 1. Consider expanding your grid')\n",
" return (lift_matrix * pdf).sum() * D_step * d_step"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The closed-form solution"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def get_lift_via_closed_form(var_D, var_X, n):\n",
" var_c = var_of_group_mean_diff(var_X, n)\n",
" return var_D / np.sqrt(2*np.pi*(var_D + var_c))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The simulation solution"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"def get_lift_via_simulations_continuous(var_D, var_X, n, niter=20000):\n",
" if n == 0:\n",
" return 0\n",
" lifts = np.empty(niter)\n",
" for i in range(niter):\n",
" D_i = np.sqrt(var_D) * np.random.randn()\n",
" xA = np.sqrt(var_X) * np.random.randn(n) - D_i/2\n",
" xB = np.sqrt(var_X) * np.random.randn(n) + D_i/2\n",
" d_i = xB.mean() - xA.mean()\n",
" if d_i > 0: \n",
" lift_i = D_i\n",
" else:\n",
" lift_i = 0\n",
" lifts[i] = lift_i\n",
" return (np.array(lifts)).mean()\n",
"\n",
"def get_lift_via_simulations_binary(var_D, p, n, niter=40000):\n",
" if n == 0:\n",
" return 0\n",
" lifts = np.empty(niter)\n",
" for i in range(niter):\n",
" D_i = np.sqrt(var_D) * np.random.randn()\n",
"\n",
" # Conversion rates\n",
" xA = np.random.binomial(n, p - D_i/2) / n\n",
" xB = np.random.binomial(n, p + D_i/2) / n \n",
" \n",
" d_i = xB - xA\n",
" if d_i > 0: \n",
" lift_i = D_i\n",
" else:\n",
" lift_i = 0\n",
" lifts[i] = lift_i\n",
" return (np.array(lifts)).mean()"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [],
"source": [
"def get_max_expected_lift(var_D):\n",
" return np.sqrt(var_D) / np.sqrt(2 * np.pi)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tests"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [],
"source": [
"def assert_method_close_to_avg(avg_of_methods, lift_from_method):\n",
" assert lift_from_method / avg_of_methods > 0.97 and lift_from_method / avg_of_methods < 1.03\n",
"\n",
"def run_through_asserts(numeric_lift, closed_form_lift, simulated_lift):\n",
" avg_of_methods = np.average([numeric_lift, closed_form_lift, simulated_lift])\n",
"\n",
" assert_method_close_to_avg(avg_of_methods, numeric_lift)\n",
" assert_method_close_to_avg(avg_of_methods, closed_form_lift)\n",
" assert_method_close_to_avg(avg_of_methods, simulated_lift)\n",
" \n",
"def assert_methods_close(var_D, var_X, n):\n",
" \n",
" numeric_lift = get_lift_numerically(var_D, var_X, n)\n",
" closed_form_lift = get_lift_via_closed_form(var_D, var_X, n)\n",
" simulated_lift = get_lift_via_simulations_continuous(var_D, var_X, n)\n",
" \n",
" run_through_asserts(numeric_lift, closed_form_lift, simulated_lift)\n",
" \n",
"def assert_methods_close_conversion(var_D, p, n):\n",
" var_X = p * (1 - p)\n",
" \n",
" numeric_lift = get_lift_numerically(var_D, var_X, n)\n",
" closed_form_lift = get_lift_via_closed_form(var_D, var_X, n)\n",
" simulated_lift = get_lift_via_simulations_binary(var_D, p, n)\n",
" \n",
" run_through_asserts(numeric_lift, closed_form_lift, simulated_lift)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"### Test continuous cases\n",
"assert_methods_close(var_D=5, var_X=400, n=200)\n",
"assert_methods_close(var_D=15, var_X=400, n=200)\n",
"assert_methods_close(var_D=5, var_X=400, n=1000)\n",
"assert_methods_close(var_D=5, var_X=100, n=200)\n",
"assert_methods_close(var_D=5, var_X=800, n=200)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"### Test binary outcome cases\n",
"assert_methods_close_conversion(var_D=(.01)**2, p=0.2, n=1000)\n",
"assert_methods_close_conversion(var_D=(.02)**2, p=0.2, n=1000)\n",
"assert_methods_close_conversion(var_D=(.01)**2, p=0.2, n=1000)\n",
"assert_methods_close_conversion(var_D=(.02)**2, p=0.1, n=5000)\n",
"assert_methods_close_conversion(var_D=(.02)**2, p=0.5, n=1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Demonstration of Closed Form Lift vs Simulated Lift"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"def plot_lift_by_n(ns, lifts_via_closed_form, lifts_via_simulation):\n",
" plt.figure(figsize=[7, 4])\n",
" plt.plot(ns, lifts_via_closed_form, label='Closed Form', color=gray)\n",
" plt.plot(ns, lifts_via_simulation, label='Simulation', color=blue)\n",
" plt.xlabel('$n$')\n",
" plt.ylabel('$\\hat{L}$')\n",
" plt.legend()\n",
" sns.despine()\n",
" plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Continuous"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/chrissaid/opt/miniconda3/lib/python3.7/site-packages/ipykernel_launcher.py:7: RuntimeWarning: divide by zero encountered in long_scalars\n",
" import sys\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"var_D = 2, \n",
"var_X = 100\n",
"ns = np.arange(0, 1000, 50)\n",
"\n",
"lifts_via_closed_form = [get_lift_via_closed_form(\n",
" var_D, var_X, n) for n in ns]\n",
"\n",
"lifts_via_simulation = [get_lift_via_simulations_continuous(\n",
" var_D, var_X, n, niter=5000) for n in ns]\n",
"\n",
"plot_lift_by_n(ns, lifts_via_closed_form, lifts_via_simulation)\n",
"plt.savefig(path.join(figures_path, 'lift_by_n_continuous.png'), dpi=150)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Binary"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/chrissaid/opt/miniconda3/lib/python3.7/site-packages/ipykernel_launcher.py:7: RuntimeWarning: divide by zero encountered in true_divide\n",
" import sys\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"var_D = (0.01)**2, \n",
"p = 0.1\n",
"ns = np.arange(0, 1000, 50)\n",
"\n",
"lifts_via_closed_form = [get_lift_via_closed_form(\n",
" var_D, var_X=p*(1-p), n=n) for n in ns]\n",
"\n",
"lifts_via_simulation = [get_lift_via_simulations_binary(\n",
" var_D, p, n, niter=5000) for n in ns]\n",
"\n",
"plot_lift_by_n(ns, lifts_via_closed_form, lifts_via_simulation)\n",
"plt.savefig(path.join(figures_path, 'lift_by_n_binary.png'), dpi=150)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Aggregate time-discounted lift"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Analytic functions"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"def discount_function(t, M, L, r):\n",
" return L * M * np.exp(-r*t)\n",
"\n",
"def integral_of_discount_function(t, M, L, r):\n",
" return -L * M * np.exp(-r*t)/r\n",
"\n",
"def value_from_t1_to_t2(t1, t2, M, L, r):\n",
" return integral_of_discount_function(t2, M, L, r) - integral_of_discount_function(t1, M, L, r)\n",
"\n",
"def get_agg_lift_via_closed_form(var_D, var_X, m, tau, r, M):\n",
" \"\"\"\n",
" Function for estimating L_a.\n",
" \n",
" var_D: Variance on your Gaussian prior on D, the true difference in means\n",
" var_X: The variance of your observations, X, assumed to be be the\n",
" same in both groups\n",
" m: Number of bucketed sessions per day and per bucket.\n",
" tau: Duration of experiment, in days. Assumes you ship the winning bucket immediately after experiment ends.\n",
" r: daily (not annual) discount rate\n",
" M: The total number of sessions per day on your product\n",
" niter: Number of iterations\n",
" \"\"\"\n",
" \n",
" L = get_lift_via_closed_form(var_D=var_D, var_X=var_X, n=m*tau)\n",
" return value_from_t1_to_t2(t1=tau, t2=np.inf, M=M, L=L, r=r)\n",
"\n",
"def get_neg_agg_lift_via_closed_form_tau_first(tau, var_D, var_X, m, r):\n",
" return -get_agg_lift_via_closed_form(var_D=var_D, var_X=var_X, m=m, tau=tau, r=r, M=1)\n",
"\n",
"def find_optimal_tau(var_D, var_X, m, r):\n",
" \"\"\"\n",
" var_D: Variance on your Gaussian prior on D, the true difference in means\n",
" var_X: The variance of your observations, X, assumed to be be the\n",
" same in both groups\n",
" m: Number of bucketed sessions per day and per bucket.\n",
" r: daily (not annual) discount rate\n",
"\n",
" Returns tau, the optimal duration of the experiment, in days\n",
" \"\"\"\n",
" res = minimize(get_neg_agg_lift_via_closed_form_tau_first, x0=(40), \n",
" args=(var_D, var_X, m, r), bounds=((1, None),))\n",
" return res.x[0]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Simulation functions"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"def get_last_date(t1, r, frac=0.99):\n",
" \"\"\"\n",
" returns a date t2 such that the area from t1 to t2 is 0.99 of\n",
" the area from t1 to infinity.\n",
" \n",
" r is the discount rate in days\n",
" \"\"\"\n",
" \n",
" return -int((np.log((1-frac) * np.exp(-r*t1)/r) + np.log(r)) / r)\n",
"\n",
"\n",
"def run_experiment(D_i, var_X, n):\n",
" # big d or D means B is better\n",
" xA = np.sqrt(var_X) * np.random.randn(n) - D_i/2\n",
" xB = np.sqrt(var_X) * np.random.randn(n) + D_i/2\n",
" d_i = xB.mean() - xA.mean()\n",
"\n",
" return d_i\n",
" \n",
"def accrue_benefit(D_i, d_i, M, tau, r, frac=0.98):\n",
" \n",
" if d_i < 0:\n",
" return 0 # Keep running A\n",
"\n",
" else:\n",
" lift = D_i # Ship B\n",
" \n",
" tau_2 = get_last_date(tau, r, frac=frac) # only simulate the post-experiment period as far out as you need to\n",
" days = np.repeat(np.arange(tau, tau_2), M)\n",
" total_M = (tau_2 - tau) * M\n",
"\n",
" df = pd.DataFrame({\n",
" 'day': days,\n",
" 'x': np.sqrt(var_X) * np.random.randn(total_M) + lift,\n",
" })\n",
"\n",
" df = df.assign(\n",
" x_discounted = discount_function(t=df['day'], \n",
" M=1, # because just one session per row\n",
" L=df['x'], \n",
" r=r)\n",
" )\n",
"\n",
" return df['x_discounted'].sum() / frac\n",
" \n",
"\n",
"def run_experiment_and_accrue_benefit(var_D, var_X, m, tau, r, M):\n",
" if tau == 0:\n",
" return 0\n",
" # The true difference in this universe\n",
" D_i = np.sqrt(var_D) * np.random.randn()\n",
" d_i = run_experiment(D_i, var_X, n=m*tau)\n",
" benefit = accrue_benefit(D_i, d_i, M, tau, r)\n",
"\n",
" return benefit\n",
"\n",
"def get_agg_lift_via_simulations(var_D, var_X, m, tau, r, M, niter):\n",
" \"\"\"\n",
" Function for estimating L_a.\n",
" \n",
" var_D: Variance on your Gaussian prior on D, the true difference in means\n",
" var_X: The variance of your observations, X, assumed to be be the\n",
" same in both groups\n",
" m: Number of bucketed sessions per day and per bucket.\n",
" tau: Duration of experiment, in days. Assumes you ship the winning bucket immediately after experiment ends.\n",
" r is daily (not annual) discount rate\n",
" M: The total number of sessions per day on your product\n",
" niter: Number of iterations\n",
" \"\"\" \n",
" benefits = np.empty(niter)\n",
" for i in range(niter):\n",
" benefits[i] = run_experiment_and_accrue_benefit(var_D, var_X, m, tau, r, M)\n",
" \n",
" return benefits.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Examples"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"26286.915279571378"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_agg_lift_via_closed_form(var_D=1, var_X=100, m=100, tau=20, r=1/365, M=200)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"27936.48067573018"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_agg_lift_via_simulations(var_D=1, var_X=100, m=100, tau=20, r=1/365, M=200, niter=1000)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"18.131356106493758"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"find_optimal_tau(var_D=1, var_X=100, m=100, r=1/365)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"207.35881632536388"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p = 0.1\n",
"get_agg_lift_via_closed_form(var_D=0.01**2, var_X=p*(1-p), m=100, tau=25, r=1/365, M=200)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"49.005707657352445"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"find_optimal_tau(var_D=0.01**2, var_X=p*(1-p), m=100, r=1/365)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Comparing the closed form solutions and simulations for multiple sample sizes"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"var_D = 1\n",
"var_X = 500\n",