{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Metric_DefinitionBaseline_Val
0Unique cookies to view course overview page pe...40000.000000
1Unique cookies to click \"Start free trial\" per...3200.000000
2Enrollments per day:660.000000
3Click-through-probability on \"Start free trial\":0.080000
4Probability of enrolling, given click:0.206250
5Probability of payment, given enroll:0.530000
6Probability of payment, given click0.109313
\n", "
" ], "text/plain": [ " Metric_Definition Baseline_Val\n", "0 Unique cookies to view course overview page pe... 40000.000000\n", "1 Unique cookies to click \"Start free trial\" per... 3200.000000\n", "2 Enrollments per day: 660.000000\n", "3 Click-through-probability on \"Start free trial\": 0.080000\n", "4 Probability of enrolling, given click: 0.206250\n", "5 Probability of payment, given enroll: 0.530000\n", "6 Probability of payment, given click 0.109313" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd, numpy as np\n", "df = pd.read_csv('data/Final_Project_Baseline_Values.csv', \n", " index_col = False, \n", " header = None, \n", " names= ['Metric_Definition', 'Baseline_Val'] )\n", "df" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Metric_DefinitionBaseline_ValMetric
0Unique cookies to view course overview page pe...40000.000000Cookies
1Unique cookies to click \"Start free trial\" per...3200.000000Clicks
2Enrollments per day:660.000000Enrollments (Clicks * Gross_Conversion)
3Click-through-probability on \"Start free trial\":0.080000CTP (Clicks/Cookies)
4Probability of enrolling, given click:0.206250Gross_Conversion (Enrollments/Clicks)
5Probability of payment, given enroll:0.530000Retention (Paid/Enrollments)
6Probability of payment, given click0.109313Net_Conversion(Paid/Clicks)
\n", "
" ], "text/plain": [ " Metric_Definition Baseline_Val \\\n", "0 Unique cookies to view course overview page pe... 40000.000000 \n", "1 Unique cookies to click \"Start free trial\" per... 3200.000000 \n", "2 Enrollments per day: 660.000000 \n", "3 Click-through-probability on \"Start free trial\": 0.080000 \n", "4 Probability of enrolling, given click: 0.206250 \n", "5 Probability of payment, given enroll: 0.530000 \n", "6 Probability of payment, given click 0.109313 \n", "\n", " Metric \n", "0 Cookies \n", "1 Clicks \n", "2 Enrollments (Clicks * Gross_Conversion) \n", "3 CTP (Clicks/Cookies) \n", "4 Gross_Conversion (Enrollments/Clicks) \n", "5 Retention (Paid/Enrollments) \n", "6 Net_Conversion(Paid/Clicks) " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Labelling the metrics for ease of reference\n", "df['Metric'] = ['Cookies', 'Clicks', 'Enrollments (Clicks * Gross_Conversion)',\n", " 'CTP (Clicks/Cookies)', \n", " 'Gross_Conversion (Enrollments/Clicks)', \n", " 'Retention (Paid/Enrollments)','Net_Conversion(Paid/Clicks)']\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Metric_DefinitionBaseline_ValMetricdmin
0Unique cookies to view course overview page pe...40000.000000Cookies3000.0000
1Unique cookies to click \"Start free trial\" per...3200.000000Clicks240.0000
2Enrollments per day:660.000000Enrollments (Clicks * Gross_Conversion)50.0000
3Click-through-probability on \"Start free trial\":0.080000CTP (Clicks/Cookies)0.0100
4Probability of enrolling, given click:0.206250Gross_Conversion (Enrollments/Clicks)0.0100
5Probability of payment, given enroll:0.530000Retention (Paid/Enrollments)0.0100
6Probability of payment, given click0.109313Net_Conversion(Paid/Clicks)0.0075
\n", "
" ], "text/plain": [ " Metric_Definition Baseline_Val \\\n", "0 Unique cookies to view course overview page pe... 40000.000000 \n", "1 Unique cookies to click \"Start free trial\" per... 3200.000000 \n", "2 Enrollments per day: 660.000000 \n", "3 Click-through-probability on \"Start free trial\": 0.080000 \n", "4 Probability of enrolling, given click: 0.206250 \n", "5 Probability of payment, given enroll: 0.530000 \n", "6 Probability of payment, given click 0.109313 \n", "\n", " Metric dmin \n", "0 Cookies 3000.0000 \n", "1 Clicks 240.0000 \n", "2 Enrollments (Clicks * Gross_Conversion) 50.0000 \n", "3 CTP (Clicks/Cookies) 0.0100 \n", "4 Gross_Conversion (Enrollments/Clicks) 0.0100 \n", "5 Retention (Paid/Enrollments) 0.0100 \n", "6 Net_Conversion(Paid/Clicks) 0.0075 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Add Practical Significance level column\n", "df['dmin'] = [3000,240,50,0.01,0.01,0.01,0.0075]\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scaling collected data:\n", "For all the calculations to follow we need to scale our collected counts estimates of metrics with the sample size we specified for variance estimation. In this case, from 40000 unique cookies to visit the course overview page per day, to 5000." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Measuring Standard Deviation\n", "$$SD= \\sqrt \\frac{\\ \\hat{p}(1−\\hat{p})}{\\ n}$$\n", "\n", "In order to estimate variance analytically, we can assume metrics which are probabilities ( $\\hat{p}$ ) are binomially distributed, so we can use this formula for the standard deviation: \n", "\n", "This assumption is only valid when the unit of diversion of the experiment is equal to the unit of analysis (the denominator of the metric formula). In the cases when this is not valid, the actual variance might be different and it is recommended to estimate it empirically.\n", "\n", "For each metric, we need to plug two variables into the formula: \n", "
$ \\hat{p} $ = baseline probability of the event to occur\n", "
n = sample size" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Metric_DefinitionBaseline_ValMetricdminSD
0Unique cookies to view course overview page pe...40000.000000Cookies3000.0000NA
1Unique cookies to click \"Start free trial\" per...3200.000000Clicks240.0000NA
2Enrollments per day:660.000000Enrollments (Clicks * Gross_Conversion)50.0000NA
3Click-through-probability on \"Start free trial\":0.080000CTP (Clicks/Cookies)0.0100NA
4Probability of enrolling, given click:0.206250Gross_Conversion (Enrollments/Clicks)0.01000.0202
5Probability of payment, given enroll:0.530000Retention (Paid/Enrollments)0.01000.05495
6Probability of payment, given click0.109313Net_Conversion(Paid/Clicks)0.00750.0156
\n", "
" ], "text/plain": [ " Metric_Definition Baseline_Val \\\n", "0 Unique cookies to view course overview page pe... 40000.000000 \n", "1 Unique cookies to click \"Start free trial\" per... 3200.000000 \n", "2 Enrollments per day: 660.000000 \n", "3 Click-through-probability on \"Start free trial\": 0.080000 \n", "4 Probability of enrolling, given click: 0.206250 \n", "5 Probability of payment, given enroll: 0.530000 \n", "6 Probability of payment, given click 0.109313 \n", "\n", " Metric dmin SD \n", "0 Cookies 3000.0000 NA \n", "1 Clicks 240.0000 NA \n", "2 Enrollments (Clicks * Gross_Conversion) 50.0000 NA \n", "3 CTP (Clicks/Cookies) 0.0100 NA \n", "4 Gross_Conversion (Enrollments/Clicks) 0.0100 0.0202 \n", "5 Retention (Paid/Enrollments) 0.0100 0.05495 \n", "6 Net_Conversion(Paid/Clicks) 0.0075 0.0156 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Predetermined from baseline values\n", "ctp = 0.08 \n", "gross_conv = 0.206250\n", "retention = 0.53\n", "net_conv = 0.109313\n", "\n", "#scale data based on sample size 5000:\n", "sum_cookies = 5000\n", "sum_clicks = ctp * sum_cookies # n size for Gross Conversion & Net Conversion\n", "sum_enrolled = sum_clicks * gross_conv # n size for Retention\n", "\n", "# Calculate SD for evaluation metrics:\n", "sd_gross_conv = round(np.sqrt((gross_conv * (1-gross_conv))/sum_clicks),4)\n", "sd_retention = round(np.sqrt((retention * (1-retention))/sum_enrolled),5)\n", "sd_net_conv = round(np.sqrt((net_conv * (1-net_conv))/sum_clicks),4)\n", "\n", "df[\"SD\"] = ['NA','NA', 'NA', 'NA', sd_gross_conv, sd_retention, sd_net_conv]\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sizing\n", "To calculate the sample size required for the experiment, the largest sample size required for one of the evaluation metrics will effectively be the size to go with. I plug in the following values into the [online calculator](http://www.evanmiller.org/ab-testing/sample-size.html) for sample size:\n", "- Baseline conversion rate: probability of each metric\n", "- Minimum detectable effect: dmin of each metric\n", "- beta: 0.2\n", "- alpha: 0.05" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df_eval = df.iloc[4: , 1:]\n", "df_eval.set_index(['Metric'], inplace = True)\n", "df_eval.rename(columns = {'Baseline_Val': 'p'} , inplace = True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pdminSDsample_size
Metric
Gross_Conversion (Enrollments/Clicks)0.2062500.01000.020225835
Retention (Paid/Enrollments)0.5300000.01000.0549539155
Net_Conversion(Paid/Clicks)0.1093130.00750.015627413
\n", "
" ], "text/plain": [ " p dmin SD sample_size\n", "Metric \n", "Gross_Conversion (Enrollments/Clicks) 0.206250 0.0100 0.0202 25835\n", "Retention (Paid/Enrollments) 0.530000 0.0100 0.05495 39155\n", "Net_Conversion(Paid/Clicks) 0.109313 0.0075 0.0156 27413" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Sample size using the online calculator\n", "df_eval ['sample_size'] = [25835, 39155, 27413]\n", "df_eval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Total pageviews required = Total unique cookies accessing course overview page \n", "\n", "- Gross Conversion\n", "
Total cookies required in order to have **25835 clicks** per group (control and experiment):\n", "
$$ \\frac {Clicks * 2}{\\ ctp} $$\n", "\n", "\n", "- Retention\n", "
Total cookies required in order to have **39155 enrollments** per group (control and experiment):\n", "
$$ \\frac{Enrollments * 2}{\\ GrossConversion * ctp} $$\n", "\n", "- Net Conversion\n", "
Total cookies required in order to have **27413 clicks** per group (control and experiment):\n", "
$$ \\frac{Clicks * 2}{\\ ctp} $$" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pdminSDsample_sizepage_views
Metric
Gross_Conversion (Enrollments/Clicks)0.2062500.01000.020225835645875
Retention (Paid/Enrollments)0.5300000.01000.05495391554746061
Net_Conversion(Paid/Clicks)0.1093130.00750.015627413685325
\n", "
" ], "text/plain": [ " p dmin SD sample_size \\\n", "Metric \n", "Gross_Conversion (Enrollments/Clicks) 0.206250 0.0100 0.0202 25835 \n", "Retention (Paid/Enrollments) 0.530000 0.0100 0.05495 39155 \n", "Net_Conversion(Paid/Clicks) 0.109313 0.0075 0.0156 27413 \n", "\n", " page_views \n", "Metric \n", "Gross_Conversion (Enrollments/Clicks) 645875 \n", "Retention (Paid/Enrollments) 4746061 \n", "Net_Conversion(Paid/Clicks) 685325 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pageviews_gc = round(25835 * 2 / 0.08) \n", "pageviews_ret = round(39155 * 2 / (0.206250 * 0.08))\n", "pageviews_nc = round(27413 * 2 / 0.08)\n", "df_eval ['page_views'] = [pageviews_gc,pageviews_ret,pageviews_nc]\n", "df_eval" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Duration vs Exposure\n", "4 million page views is significantly beyond the estimated 40K views we get on average daily. That would take us at least 100 days to collect the data, and typically any experiments taking longer than a few weeks is not reasonable, hence I decided to drop Retention as a metric. **Net Conversion** has the largest number of page views of the remaining 2 evaluation metrics.\n", "\n", "Now, let's calculate the duration at different exposure rates:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Duration at 100% exposure: 17 days\n", "Duration at 75% exposure: 23 days\n", "Duration at 50% exposure: 34 days\n" ] } ], "source": [ "Duration100 = round(pageviews_nc / 40000)\n", "Duration75 = round(pageviews_nc / (40000 * 0.75))\n", "Duration50 = round(pageviews_nc / (40000 * 0.5))\n", "print ('Duration at 100% exposure: {} days'.format(Duration100))\n", "print ('Duration at 75% exposure: {} days'.format(Duration75))\n", "print ('Duration at 50% exposure: {} days'.format(Duration50))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I decided to go with **75% exposure** since a 3 week duration to run the experiment is a reasonable length. 50% exposure rate with over a month long duration is not necessary as the risk is low since we do not expect a big drop in net conversion which may impact the company's revenue. I personally try to avoid 100% exposure as I find that sometimes there are some business risks or technolgy issues resulting from running the experiment, and it is always good to hold back some traffic from the change.\n", "\n", "There are similar analysis using different exposure rates than mine with good justifications as well, so definitely do your own reasoning to choose the right exposure." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyzing results from the experiment\n", "### 1. Sanity Check\n", "\n", "Before analyzing results from the experiment, sanity checks should be performed. These checks help to verify if the experiment was conducted as expected and that other factors did not influence the data which we collected. This also makes sure that data collection was correct.\n", "\n", "For invariant metrics we expect equal diversion into the experiment and control group. We will test this at the 95% confidence interval.\n", "\n", "Two of these metrics are simple counts like number of cookies or number of clicks and the third is a probability (CTP). We will use two different ways of checking whether these observed values are within expectations.\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DatePageviewsClicksEnrollmentsPayments
0Sat, Oct 117723687134.070.0
1Sun, Oct 129102779147.070.0
2Mon, Oct 1310511909167.095.0
3Tue, Oct 149871836156.0105.0
4Wed, Oct 1510014837163.064.0
\n", "
" ], "text/plain": [ " Date Pageviews Clicks Enrollments Payments\n", "0 Sat, Oct 11 7723 687 134.0 70.0\n", "1 Sun, Oct 12 9102 779 147.0 70.0\n", "2 Mon, Oct 13 10511 909 167.0 95.0\n", "3 Tue, Oct 14 9871 836 156.0 105.0\n", "4 Wed, Oct 15 10014 837 163.0 64.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load experiment results into dataframe\n", "df_ctr = pd.read_csv('data/Final_Project_Results_Control.csv')\n", "df_ctr.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DatePageviewsClicksEnrollmentsPayments
0Sat, Oct 117716686105.034.0
1Sun, Oct 129288785116.091.0
2Mon, Oct 1310480884145.079.0
3Tue, Oct 149867827138.092.0
4Wed, Oct 159793832140.094.0
\n", "
" ], "text/plain": [ " Date Pageviews Clicks Enrollments Payments\n", "0 Sat, Oct 11 7716 686 105.0 34.0\n", "1 Sun, Oct 12 9288 785 116.0 91.0\n", "2 Mon, Oct 13 10480 884 145.0 79.0\n", "3 Tue, Oct 14 9867 827 138.0 92.0\n", "4 Wed, Oct 15 9793 832 140.0 94.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_exp = pd.read_csv('data/Final_Project_Results_Experiment.csv')\n", "df_exp.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Assigning variable names to total of each columns in the experiment results\n", "pageviews_exp = df_exp['Pageviews'].sum()\n", "pageviews_ctr = df_ctr['Pageviews'].sum()\n", "clicks_exp = df_exp['Clicks'].sum()\n", "clicks_ctr = df_ctr['Clicks'].sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.1 Sanity Checks for differences between counts \n", "I use binomial distribution (p = 0.5) to determine the probability for Number of Cookies and Number of Clicks is within the margin of error at 95% confidence interval since the cookies are randomly assigned to either control or experiment group.\n", "\n", "What we want to test is whether our observed fraction, $\\hat {p}$ (number of samples in control or experiment group divided by total number of samples in both groups) is not significantly different than p=0.5 . If the observed $\\hat {p}$ is **within** the margin of error range acceptable at a 95% confidence level, **we passed the sanity checks!** =)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControl
Number of Cookies344660345543
Number of Clicks2832528378
\n", "
" ], "text/plain": [ " Experiment Control\n", "Number of Cookies 344660 345543\n", "Number of Clicks 28325 28378" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_inv = pd.DataFrame({\n", " 'Experiment': [pageviews_exp, clicks_exp],\n", " 'Control': [pageviews_ctr, clicks_ctr]\n", " }, index = ['Number of Cookies', 'Number of Clicks'])\n", "df_inv" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlSDMOELower_BoundUpper_Bound
Number of Cookies3446603455430.0006020.0011800.4988200.501180
Number of Clicks28325283780.0021000.0041160.4958840.504116
\n", "
" ], "text/plain": [ " Experiment Control SD MOE Lower_Bound \\\n", "Number of Cookies 344660 345543 0.000602 0.001180 0.498820 \n", "Number of Clicks 28325 28378 0.002100 0.004116 0.495884 \n", "\n", " Upper_Bound \n", "Number of Cookies 0.501180 \n", "Number of Clicks 0.504116 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = 0.5\n", "alpha = 0.05\n", "\n", "#Standard Deviation using binomial probability p = 0.5\n", "sd_cookies = np.sqrt((0.5*(1-0.5))/(pageviews_exp + pageviews_ctr))\n", "sd_clicks = np.sqrt((0.5*(1-0.5))/(clicks_exp + clicks_ctr))\n", "df_inv['SD'] = [sd_cookies, sd_clicks]\n", "\n", "#Margin of Error = Z score * Standard Deviation\n", "#z score is 1.96 at 95% confidence interval\n", "moe_cookies = 1.96 * sd_cookies\n", "moe_clicks = 1.96 * sd_clicks\n", "df_inv['MOE'] = [1.96 * sd_cookies, 1.96 * sd_clicks]\n", "\n", "#Lower and Upper Bound (p +- MOE)\n", "df_inv['Lower_Bound'] = [0.5 - moe_cookies, 0.5 - moe_clicks]\n", "df_inv['Upper_Bound'] = [0.5 + moe_cookies, 0.5 + moe_clicks]\n", "\n", "df_inv" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlSDMOELower_BoundUpper_Boundp_observedPass_Sanity
Number of Cookies3446603455430.0006020.0011800.4988200.5011800.499360True
Number of Clicks28325283780.0021000.0041160.4958840.5041160.499533True
\n", "
" ], "text/plain": [ " Experiment Control SD MOE Lower_Bound \\\n", "Number of Cookies 344660 345543 0.000602 0.001180 0.498820 \n", "Number of Clicks 28325 28378 0.002100 0.004116 0.495884 \n", "\n", " Upper_Bound p_observed Pass_Sanity \n", "Number of Cookies 0.501180 0.499360 True \n", "Number of Clicks 0.504116 0.499533 True " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# observed fraction, p_observed using either experiment or control group (I ran the calcs with experiment group)\n", "p_observed_cookies = pageviews_exp/(pageviews_exp+pageviews_ctr)\n", "p_observed_clicks = clicks_exp/(clicks_exp+clicks_ctr)\n", "\n", "df_inv['p_observed'] = [p_observed_cookies,p_observed_clicks]\n", "df_inv[\"Pass_Sanity\"] = df_inv.apply(lambda x: (x['p_observed'] > x['Lower_Bound']) \n", " and (x['p_observed'] < x['Upper_Bound']),axis = 'columns' )\n", "df_inv" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlSDMOELower_BoundUpper_Boundp_observedPass_Sanity
Number of Cookies3446603455430.0006020.0011800.4988200.5011800.500640True
Number of Clicks28325283780.0021000.0041160.4958840.5041160.500467True
\n", "
" ], "text/plain": [ " Experiment Control SD MOE Lower_Bound \\\n", "Number of Cookies 344660 345543 0.000602 0.001180 0.498820 \n", "Number of Clicks 28325 28378 0.002100 0.004116 0.495884 \n", "\n", " Upper_Bound p_observed Pass_Sanity \n", "Number of Cookies 0.501180 0.500640 True \n", "Number of Clicks 0.504116 0.500467 True " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Same calc as above but using control group to calc observed fraction , p_observed :\n", "p_observed_cookies = pageviews_ctr/(pageviews_exp+pageviews_ctr)\n", "p_observed_clicks = clicks_ctr/(clicks_exp+clicks_ctr)\n", "\n", "df_inv['p_observed'] = [p_observed_cookies,p_observed_clicks]\n", "\n", "df_inv[\"Pass_Sanity\"] = df_inv.apply(lambda x: (x['p_observed'] > x['Lower_Bound']) \n", " and (x['p_observed'] < x['Upper_Bound']),axis = 'columns' )\n", "df_inv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I ran both sets of calculations to show you that the result is the same: **Observed fraction is within bounds, passing sanity checks for both metrics.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.2 Sanity Checks for differences between probabilities\n", "**Click-through-probability of the Free Trial Button**\n", "\n", "In this case, we want to make sure the proportion of clicks given a pageview (our observed CTP) is about the same in both groups (since this was not expected to change due to the experiment). In order to check this out we will calculate the CTP in each group and calculate a confidence interval for the expected difference between them.\n", "In other words, we expect to see no difference ( CTPexp−CTPcont=0 ), with an acceptable margin of error, dictated by our calculated confidence interval. **The changes we should notice are for the calculation of the standard error, which in this case is a pooled standard error.**\n", "\n", "$$ SD_{pool}= \\sqrt {\\hat {p_{pool}}(1−\\hat {p_{pool}})(\\frac{\\ 1}{Ncont}+\\frac{\\ 1}{Nexp})}$$\n", "\n", "$$ \\hat {p_{pool}} = \\frac{\\ X_{cont} + X_{exp}}{N_{cont}+ N_{exp}} $$\n", "\n", "We should understand that CTP is a proportion in a population (amount of events x in a population n) like the amount of clicks out of the amount of pageviews." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CTP_ExperimentCTP_ControlPpoolDiff_in_CTPSDpoolMOEpool
Click through Probability0.08220.08210.08220.00010.00070.0014
\n", "
" ], "text/plain": [ " CTP_Experiment CTP_Control Ppool Diff_in_CTP \\\n", "Click through Probability 0.0822 0.0821 0.0822 0.0001 \n", "\n", " SDpool MOEpool \n", "Click through Probability 0.0007 0.0014 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# CTP probability per group\n", "ctp_ctr = round(clicks_ctr/pageviews_ctr,4)\n", "ctp_exp = round(clicks_exp/pageviews_exp,4)\n", "\n", "ctp_diff = round(ctp_exp - ctp_ctr,4)\n", "\n", "#pooled CTP probability\n", "ctp_pool = round((clicks_ctr + clicks_exp) / (pageviews_ctr + pageviews_exp),4)\n", "SD_pool = round(np.sqrt ( (ctp_pool*(1-ctp_pool)/pageviews_ctr) + (ctp_pool*(1-ctp_pool)/pageviews_exp)),4)\n", "MOE = round(1.96* SD_pool,4)\n", "\n", "df_ctp = pd.DataFrame({\n", " 'CTP_Experiment': [ctp_exp],\n", " 'CTP_Control': [ctp_ctr],\n", " 'Ppool': [ctp_pool],\n", " 'Diff_in_CTP': [ctp_diff],\n", " 'SDpool':[SD_pool],\n", " 'MOEpool': [MOE]\n", " }, index = ['Click through Probability'])\n", "df_ctp" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CTP_ExperimentCTP_ControlPpoolDiff_in_CTPSDpoolMOEpoolLower_BoundUpper_BoundPass_Sanity
Click through Probability0.08220.08210.08220.00010.00070.00140.08070.0835True
\n", "
" ], "text/plain": [ " CTP_Experiment CTP_Control Ppool Diff_in_CTP \\\n", "Click through Probability 0.0822 0.0821 0.0822 0.0001 \n", "\n", " SDpool MOEpool Lower_Bound Upper_Bound \\\n", "Click through Probability 0.0007 0.0014 0.0807 0.0835 \n", "\n", " Pass_Sanity \n", "Click through Probability True " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Lower & Upper Bound with p using either ctp control or experiment group (let's use ctp control as example)\n", "df_ctp['Lower_Bound'] = round(ctp_ctr - MOE, 4)\n", "df_ctp['Upper_Bound'] = round(ctp_ctr + MOE,4)\n", "df_ctp[\"Pass_Sanity\"] = df_ctp.apply(lambda x: (x['CTP_Control'] > x['Lower_Bound']) \n", " and (x['CTP_Control'] < x['Upper_Bound']),axis = 'columns' )\n", "df_ctp" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CTP_ExperimentCTP_ControlPpoolDiff_in_CTPSDpoolMOEpoolLower_BoundUpper_BoundPass_Sanity
Click through Probability0.08220.08210.08220.00010.00070.00140.08080.0836True
\n", "
" ], "text/plain": [ " CTP_Experiment CTP_Control Ppool Diff_in_CTP \\\n", "Click through Probability 0.0822 0.0821 0.0822 0.0001 \n", "\n", " SDpool MOEpool Lower_Bound Upper_Bound \\\n", "Click through Probability 0.0007 0.0014 0.0808 0.0836 \n", "\n", " Pass_Sanity \n", "Click through Probability True " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#If we use ctp experiment instead:\n", "df_ctp['Lower_Bound'] = round(ctp_exp - MOE, 4)\n", "df_ctp['Upper_Bound'] = round(ctp_exp + MOE,4)\n", "df_ctp[\"Pass_Sanity\"] = df_ctp.apply(lambda x: (x['CTP_Experiment'] > x['Lower_Bound']) \n", " and (x['CTP_Experiment'] < x['Upper_Bound']),axis = 'columns' )\n", "df_ctp" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**We passed the sanity checks **for click through probability metric as the CTP for either groups are within bounds. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Check for Practical and Statistical Significance\n", "Based on the experiment results, we have 23 days of enrollment, so to calculate the probability of the evaluation metrics, the data points should be retrieved from those 23 days only. \n", "\n", "The next step is looking at the changes between the control and experiment groups with regard to our evaluation metrics to make sure the difference is there, that it is statistically significant and most importantly practically significant (the difference is \"big\" enough to make the experimented change beneficial to the company).\n", "\n", "Now, all that is left is to measure for each evaluation metric, the difference between the values from both groups. Then, we compute the confidence interval for that difference and test whether or not this confidence interval is both statistically and practically significant." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Date 37\n", "Pageviews 37\n", "Clicks 37\n", "Enrollments 23\n", "Payments 23\n", "dtype: int64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_ctr.notnull().sum()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Date 37\n", "Pageviews 37\n", "Clicks 37\n", "Enrollments 23\n", "Payments 23\n", "dtype: int64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_exp.notnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the experiment results, we have 23 days of enrollment and payment data, so to calculate the probability of the evaluation metrics, we should use the corresponding pageviews and clicks from those days, and not all of them." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "cond = (df_exp['Enrollments'].notnull()) & (df_exp['Payments'].notnull())\n", "df_exp23 = df_exp[cond]\n", "cond = (df_ctr['Enrollments'].notnull()) & (df_ctr['Payments'].notnull())\n", "df_ctr23 = df_ctr[cond]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControl
Pageviews211362.0212163.0
Clicks17260.017293.0
Enrollments3423.03785.0
Payments1945.02033.0
\n", "
" ], "text/plain": [ " Experiment Control\n", "Pageviews 211362.0 212163.0\n", "Clicks 17260.0 17293.0\n", "Enrollments 3423.0 3785.0\n", "Payments 1945.0 2033.0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_23 = pd.DataFrame({\n", " 'Experiment': df_exp23[['Pageviews','Clicks','Enrollments','Payments']].sum(), \n", " 'Control': df_ctr23[['Pageviews','Clicks','Enrollments','Payments']].sum()\n", " } )\n", "\n", "df_23" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "df_23.loc['Gross_Conversion'] = df_23.loc['Enrollments']/df_23.loc['Clicks']\n", "df_23.loc['Net_Conversion'] = df_23.loc['Payments']/df_23.loc['Clicks']" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlTotal
Pageviews211362.000000212163.000000423525.0
Clicks17260.00000017293.00000034553.0
Enrollments3423.0000003785.0000007208.0
Payments1945.0000002033.0000003978.0
Gross_Conversion0.1983200.218875NaN
Net_Conversion0.1126880.117562NaN
\n", "
" ], "text/plain": [ " Experiment Control Total\n", "Pageviews 211362.000000 212163.000000 423525.0\n", "Clicks 17260.000000 17293.000000 34553.0\n", "Enrollments 3423.000000 3785.000000 7208.0\n", "Payments 1945.000000 2033.000000 3978.0\n", "Gross_Conversion 0.198320 0.218875 NaN\n", "Net_Conversion 0.112688 0.117562 NaN" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_23['Total'] = df_23['Experiment'].iloc[:4] + df_23['Control'].iloc[:4] \n", "df_23" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just in case you need to refer back to the formula to calculate pooled probability and std deviation pool:\n", "$$ SD_{pool}= \\sqrt {\\hat {p_{pool}}(1−\\hat{p_{pool}})(\\frac{\\ 1}{Ncont}+\\frac{\\ 1}{Nexp})}$$\n", "\n", "$$ \\hat {p_{pool}} = \\frac{\\ X_{cont} + X_{exp}}{N_{cont}+ N_{exp}} $$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlTotalPpooldminSDpoolMOE
Pageviews211362.000000212163.000000423525.0NaN3000.0000NaNNaN
Clicks17260.00000017293.00000034553.0NaN240.0000NaNNaN
Enrollments3423.0000003785.0000007208.0NaN50.0000NaNNaN
Payments1945.0000002033.0000003978.0NaNNaNNaNNaN
Gross_Conversion0.1983200.218875NaN0.2086070.01000.0043720.008569
Net_Conversion0.1126880.117562NaN0.1151270.00750.0034340.006731
\n", "
" ], "text/plain": [ " Experiment Control Total Ppool dmin \\\n", "Pageviews 211362.000000 212163.000000 423525.0 NaN 3000.0000 \n", "Clicks 17260.000000 17293.000000 34553.0 NaN 240.0000 \n", "Enrollments 3423.000000 3785.000000 7208.0 NaN 50.0000 \n", "Payments 1945.000000 2033.000000 3978.0 NaN NaN \n", "Gross_Conversion 0.198320 0.218875 NaN 0.208607 0.0100 \n", "Net_Conversion 0.112688 0.117562 NaN 0.115127 0.0075 \n", "\n", " SDpool MOE \n", "Pageviews NaN NaN \n", "Clicks NaN NaN \n", "Enrollments NaN NaN \n", "Payments NaN NaN \n", "Gross_Conversion 0.004372 0.008569 \n", "Net_Conversion 0.003434 0.006731 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Add Ppool as a row:\n", "df_23['Ppool'] = np.nan\n", "Ppool_gc = df_23.loc['Enrollments']['Total'] / df_23.loc['Clicks']['Total']\n", "Ppool_nc = df_23.loc['Payments']['Total'] / df_23.loc['Clicks']['Total']\n", "df_23['Ppool'].loc['Gross_Conversion'] = Ppool_gc\n", "df_23['Ppool'].loc['Net_Conversion'] = Ppool_nc\n", "\n", "df_23['dmin'] = [3000,240,50,np.nan,0.01,0.0075]\n", "\n", "# Std Deviation pool\n", "SDpool_gc = round(np.sqrt( (Ppool_gc*(1-Ppool_gc)/df_23.loc['Clicks']['Experiment']) + \n", " (Ppool_gc*(1-Ppool_gc)/df_23.loc['Clicks']['Control'])\n", " ),6)\n", "SDpool_nc = round(np.sqrt( (Ppool_nc*(1-Ppool_nc)/df_23.loc['Clicks']['Experiment']) + \n", " (Ppool_nc*(1-Ppool_nc)/df_23.loc['Clicks']['Control'])\n", " ),6)\n", "df_23['SDpool'] = [np.nan,np.nan,np.nan,np.nan, SDpool_gc, SDpool_nc]\n", "\n", "# Add Margin of Error at 95% Confidence Interval, z-score is 1.96\n", "df_23['MOE'] = 1.96 * df_23['SDpool']\n", "df_23" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.1 Practical Significance Test:\n", "To determine the practical significance level, the probability of difference(Pdiff) between the control and experiment group has to be larger than dmin.
\n", "Compute difference between Gross Conversion Experiment and Control group. Repeat the same for Net Conversion. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlTotalPpooldminSDpoolMOEPdiff
Pageviews211362.000000212163.000000423525.0NaN3000.0000NaNNaNNaN
Clicks17260.00000017293.00000034553.0NaN240.0000NaNNaNNaN
Enrollments3423.0000003785.0000007208.0NaN50.0000NaNNaNNaN
Payments1945.0000002033.0000003978.0NaNNaNNaNNaNNaN
Gross_Conversion0.1983200.218875NaN0.2086070.01000.0043720.008569-0.020555
Net_Conversion0.1126880.117562NaN0.1151270.00750.0034340.006731-0.004874
\n", "
" ], "text/plain": [ " Experiment Control Total Ppool dmin \\\n", "Pageviews 211362.000000 212163.000000 423525.0 NaN 3000.0000 \n", "Clicks 17260.000000 17293.000000 34553.0 NaN 240.0000 \n", "Enrollments 3423.000000 3785.000000 7208.0 NaN 50.0000 \n", "Payments 1945.000000 2033.000000 3978.0 NaN NaN \n", "Gross_Conversion 0.198320 0.218875 NaN 0.208607 0.0100 \n", "Net_Conversion 0.112688 0.117562 NaN 0.115127 0.0075 \n", "\n", " SDpool MOE Pdiff \n", "Pageviews NaN NaN NaN \n", "Clicks NaN NaN NaN \n", "Enrollments NaN NaN NaN \n", "Payments NaN NaN NaN \n", "Gross_Conversion 0.004372 0.008569 -0.020555 \n", "Net_Conversion 0.003434 0.006731 -0.004874 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_23['Pdiff'] = df_23['Experiment'] - df_23['Control']\n", "df_23['Pdiff'].iloc[:4] = np.nan\n", "df_23" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Gross Conversion metric is practically significant** as the probability difference between experiment and control group, **Pdiff is -2%**, which is greater than the 1% dmin change.
\n", "**Net Conversion metric is NOT practically significant** as the probability difference between experiment and control group, **Pdiff is -0.4%**, which is lower than the 0.75% dmin change." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2 Statistical Significance Test:\n", "Statistically significant means a result is unlikely due to chance. The p-value is the probability of obtaining the difference we saw from a sample (or a larger one) if there really isn’t a difference for all users.

\n", "Statistical significance doesn’t mean practical significance. Only by considering context can we determine whether a difference is practically significant; that is, whether it requires action.

\n", "It is statistically significant if:\n", "* The confidence interval does not cross zero.\n", "* The observed p difference is not small, within CI range.\n", "* The observed p difference is less than alpha (A conventional (and arbitrary) threshold to indicate it is highly unlikely result occured by chance)\n", "\n", "With large sample sizes, you’re virtually certain to see statistically significant results, in such situations it’s important to interpret the size of the difference.
\n", "Small sample sizes often do not yield statistical significance; when they do, the differences themselves tend also to be practically significant; that is, meaningful enough to warrant action.\n", "\n", "*refer further details here: https://measuringu.com/statistically-significant/*" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ExperimentControlTotalPpooldminSDpoolMOEPdiffLowerUpper
Pageviews211362.000000212163.000000423525.0NaN3000.0000NaNNaNNaNNaNNaN
Clicks17260.00000017293.00000034553.0NaN240.0000NaNNaNNaNNaNNaN
Enrollments3423.0000003785.0000007208.0NaN50.0000NaNNaNNaNNaNNaN
Payments1945.0000002033.0000003978.0NaNNaNNaNNaNNaNNaNNaN
Gross_Conversion0.1983200.218875NaN0.2086070.01000.0043720.008569-0.020555-0.029124-0.011986
Net_Conversion0.1126880.117562NaN0.1151270.00750.0034340.006731-0.004874-0.0116040.001857
\n", "
" ], "text/plain": [ " Experiment Control Total Ppool dmin \\\n", "Pageviews 211362.000000 212163.000000 423525.0 NaN 3000.0000 \n", "Clicks 17260.000000 17293.000000 34553.0 NaN 240.0000 \n", "Enrollments 3423.000000 3785.000000 7208.0 NaN 50.0000 \n", "Payments 1945.000000 2033.000000 3978.0 NaN NaN \n", "Gross_Conversion 0.198320 0.218875 NaN 0.208607 0.0100 \n", "Net_Conversion 0.112688 0.117562 NaN 0.115127 0.0075 \n", "\n", " SDpool MOE Pdiff Lower Upper \n", "Pageviews NaN NaN NaN NaN NaN \n", "Clicks NaN NaN NaN NaN NaN \n", "Enrollments NaN NaN NaN NaN NaN \n", "Payments NaN NaN NaN NaN NaN \n", "Gross_Conversion 0.004372 0.008569 -0.020555 -0.029124 -0.011986 \n", "Net_Conversion 0.003434 0.006731 -0.004874 -0.011604 0.001857 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Find the confidence interval range\n", "df_23['Lower'] = df_23['Pdiff'] - df_23['MOE'] \n", "df_23['Upper'] = df_23['Pdiff'] + df_23['MOE'] \n", "df_23" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Gross Conversion metric is statistically significant** since **Pdiff is -0.02**, which is within the 95% confidence interval range: [-0.029124, -0.011986] and the CI does not include 0.
\n", "**Net Conversion metric is NOT statistically significant** since **Pdiff is -0.004**, which is a very small decrease and as such is not statistically significant. The 95% confidence interval range: [-0.011604, 0.001857] indicates the CI does include 0." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Sign Test\n", "\n", "In a sign test, we check if the trend of change we observed (increase or decrease) was evident in the daily data. \n", "\n", "Based on above results analysis, I expect to see experiment group with lower gross conversion rate and net conversion rate than the control group. Compute the Gross Conversion and Net Conversion daily per group, then count how many days each metric was lower in the experiment group and this will be the number of successes for the binomial test to calculate the two-tail P value. \n", "\n", "I use an [online binomial tool](https://www.graphpad.com/quickcalcs/binomial1/) to calculate the two-tail P value. You can implement the calculations behind it by referring to [Tammy Rotem's kaggle solution](https://www.kaggle.com/tammyrotem/ab-tests-with-python/notebook)." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DatePageviews_xClicks_xEnrollments_xPayments_xPageviews_yClicks_yEnrollments_yPayments_yGC_expNC_expGC_ctrNC_ctr
0Sat, Oct 117716686105.034.07723687134.070.00.1530610.0495630.1950510.101892
1Sun, Oct 129288785116.091.09102779147.070.00.1477710.1159240.1887030.089859
2Mon, Oct 1310480884145.079.010511909167.095.00.1640270.0893670.1837180.104510
3Tue, Oct 149867827138.092.09871836156.0105.00.1668680.1112450.1866030.125598
4Wed, Oct 159793832140.094.010014837163.064.00.1682690.1129810.1947430.076464
\n", "
" ], "text/plain": [ " Date Pageviews_x Clicks_x Enrollments_x Payments_x Pageviews_y \\\n", "0 Sat, Oct 11 7716 686 105.0 34.0 7723 \n", "1 Sun, Oct 12 9288 785 116.0 91.0 9102 \n", "2 Mon, Oct 13 10480 884 145.0 79.0 10511 \n", "3 Tue, Oct 14 9867 827 138.0 92.0 9871 \n", "4 Wed, Oct 15 9793 832 140.0 94.0 10014 \n", "\n", " Clicks_y Enrollments_y Payments_y GC_exp NC_exp GC_ctr NC_ctr \n", "0 687 134.0 70.0 0.153061 0.049563 0.195051 0.101892 \n", "1 779 147.0 70.0 0.147771 0.115924 0.188703 0.089859 \n", "2 909 167.0 95.0 0.164027 0.089367 0.183718 0.104510 \n", "3 836 156.0 105.0 0.166868 0.111245 0.186603 0.125598 \n", "4 837 163.0 64.0 0.168269 0.112981 0.194743 0.076464 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Merge both groups of data with date as join using the 23 day worth of data established previously:\n", "df_sign = pd.merge(df_exp23, df_ctr23, on = 'Date')\n", "\n", "#Experiment group:\n", "df_sign['GC_exp'] = df_sign['Enrollments_x']/df_sign['Clicks_x']\n", "df_sign['NC_exp'] = df_sign['Payments_x']/df_sign['Clicks_x']\n", "\n", "#Control group:\n", "df_sign['GC_ctr'] = df_sign['Enrollments_y']/df_sign['Clicks_y']\n", "df_sign['NC_ctr'] = df_sign['Payments_y']/df_sign['Clicks_y']\n", "\n", "df_sign.head()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateGC_expGC_ctrNC_expNC_ctr
0Sat, Oct 110.1530610.1950510.0495630.101892
1Sun, Oct 120.1477710.1887030.1159240.089859
2Mon, Oct 130.1640270.1837180.0893670.104510
3Tue, Oct 140.1668680.1866030.1112450.125598
4Wed, Oct 150.1682690.1947430.1129810.076464
\n", "
" ], "text/plain": [ " Date GC_exp GC_ctr NC_exp NC_ctr\n", "0 Sat, Oct 11 0.153061 0.195051 0.049563 0.101892\n", "1 Sun, Oct 12 0.147771 0.188703 0.115924 0.089859\n", "2 Mon, Oct 13 0.164027 0.183718 0.089367 0.104510\n", "3 Tue, Oct 14 0.166868 0.186603 0.111245 0.125598\n", "4 Wed, Oct 15 0.168269 0.194743 0.112981 0.076464" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Select only relevant columns for easier read across:\n", "df_sign = df_sign[['Date','GC_exp', 'GC_ctr', 'NC_exp', 'NC_ctr']]\n", "df_sign.head()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True 19\n", "False 4\n", "Name: GC_sign_result, dtype: int64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Gross conversion sign test: True (pass or success) if GC Experiment is lower \n", "df_sign['GC_sign_result'] = df_sign['GC_exp'] < df_sign['GC_ctr']\n", "df_sign['GC_sign_result'].value_counts()\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True 13\n", "False 10\n", "Name: NC_sign_result, dtype: int64" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Net conversion sign test: True (pass or success) if NC Experiment is lower \n", "df_sign['NC_sign_result'] = df_sign['NC_exp'] < df_sign['NC_ctr']\n", "df_sign['NC_sign_result'].value_counts()" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "#### Gross Conversion comparison: 4 failures, 19 successes\n", "![image.png](attachment:image.png)\n", "\n", "So, P-Value of the test is 0.0026. Since the probability to pass the test daily is 1-0.0026 = 0.9974 which is greater than 95%, this result does not happen by chance (statistically significant) and **it passes the sign test**." ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "#### Net Conversion comparison: 10 failures , 13 successes\n", "![image.png](attachment:image.png)\n", "\n", "So, P-Value of the test is 0.6776. Since the probability to pass the test daily is 1-0.6776 = 0.3224 which is lower than 95% , **it does NOT pass the sign test.** The experiment will not have statistical significance impact on Net Conversion." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }