{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Exploring Click Logs and Testing Statistical Hypotheses\n", "\n", "For class today, you read a chapter on Exploratory Data Analysis from the book \"Doing Data Science.\" Today, we'll be walking through an analysis of the same data presented in that chapter and extending it with Multiple Hypothesis testing.\n", "\n", "## Statistical Hypothesis Testing\n", "Hypothesis testing is a powerful tool used in statistical analysis to support claims like \"Drug X is better than Drug Y\", or \"Campers who attend a safety course led by a talking bear are effective at preventing forest fires.\" You'll see questions about whether or not an experiment was effective or results from two processes are different all over the place in your data science career.\n", "\n", "Hypothesis testing allows us to answer these questions with statistical rigor. Generally, we establish a \"null hypothesis\", and then conduct a test which will tell us, given the data, whether or not we can *reject* this null hypothesis. Usually, the null hypothesis is something like \"These two drugs are the *same*.\" or \"This measure's mean is no different than zero.\"\n", "\n", "We're going to work with one such tool, namely the Student's Two-Sample t-Test. \n", "\n", "### Historical Anecdote\n", "This was not a test designed for students, instead, it was designed by a statistician William Gosset who [published](http://www.york.ac.uk/depts/maths/histstat/student.pdf) under the pseudonym \"Student,\" while working for the Guinness brewing company.\n", "\n", "### Back to Statistics\n", "\n", "Student's t-Test is used when comparing samples of normally distributed variables. This assumption of normality is important, but not strict. If the data is very much not normally distributed, a non-parameteric method (that is, distribution agnostic) like the Wilcoxon signed-rank test can be used. We are looking at Welch's t-Test, a variant of the classic Student's test which allows for two samples of different size, and possibly different variance.\n", "\n", "To perform a t-Test, we compute a \"t statistic\" or \"t score\" with the two samples as input, the formula is:\n", "\n", "$t = \\frac{mean(X_1) - mean(X_2)}{s_{X_1-X_2}}$\n", "\n", "where $s_{X_1-X_2} = \\sqrt{\\frac{s^2_1}{n_1} - \\frac{s^2_2}{n_2}}$, and $s_i$ is the sample standard deviation of sample $i$ and $n_i$ is the size of sample $i$.\n", "\n", "This score comes from a T-distribution, which looks like a normal distribution but with fatter tails. If the two samples are similar, the t-statistic will be close to 0. If they're not, the t-statistic will be high in absolute value. \n", "\n", "Take a moment and think about the math. Under what conditions is the statistic highest? When the means are very different and their respective sample standard deviations are very small.\n", "\n", "We'll use Welch's t-Test, an adaptation of the two-sample independent Student's t-test that takes into account samples that may have unequal sizes and variances (which, we can see from our distribution above, may be true in our data set!)\n", "\n", "Since the t-statistic comes from a statistical distribution, we can map this value to a probability of sampling that value under the null hypothesis. The probability of realizing a high t-statistic when two samples come from the same distribution is very small, thus it's p-value is also small. \n", "\n", "![T-stat](http://upload.wikimedia.org/wikipedia/commons/4/41/Student_t_pdf.svg)\n", "Courtesy of Wikipedia, the probability density function for the Student's t-Distribution. V indicates the number of samples in our distribution.\n", "\n", "So, the output of a T-test is usually a pair of statistics, the \"t score\", and a \"p value\". The p value has a natural interpretation as a probability. We can say: \"With $100 \\times (1-p)$ percent confidence, I reject the null hypothesis that these two samples are the same.\" Meaning, that when p is very small, the two samples are statistically likely to be different.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Lab Work\n", "\n", "##Setup - Install Scipy\n", "\n", "You'll need to install a python package to your VM using the following command at the shell: `sudo apt-get install python-scipy`\n", "\n", "##Setup - Data Loading\n", "\n", "We'll be working with a single day's worth of session log data from the New York Times website. The data is available [here](http://stat.columbia.edu/~rachel/datasets/nyt1.csv) as well as in the class github repo. The data has been nicely cleaned and aggregated for us (no janitor work!) Load up a single day's data into a `DataFrame`, and summarize it." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "\n", "data = pd.read_csv(\"nyt1.csv\")\n", "data.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
AgeGenderImpressionsClicksSigned_In
count 458441.000000 458441.000000 458441.000000 458441.000000 458441.000000
mean 29.482551 0.367037 5.007316 0.092594 0.700930
std 23.607034 0.481997 2.239349 0.309973 0.457851
min 0.000000 0.000000 0.000000 0.000000 0.000000
25% 0.000000 0.000000 3.000000 0.000000 0.000000
50% 31.000000 0.000000 5.000000 0.000000 1.000000
75% 48.000000 1.000000 6.000000 0.000000 1.000000
max 108.000000 1.000000 20.000000 4.000000 1.000000
\n", "

8 rows \u00d7 5 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ " Age Gender Impressions Clicks \\\n", "count 458441.000000 458441.000000 458441.000000 458441.000000 \n", "mean 29.482551 0.367037 5.007316 0.092594 \n", "std 23.607034 0.481997 2.239349 0.309973 \n", "min 0.000000 0.000000 0.000000 0.000000 \n", "25% 0.000000 0.000000 3.000000 0.000000 \n", "50% 31.000000 0.000000 5.000000 0.000000 \n", "75% 48.000000 1.000000 6.000000 0.000000 \n", "max 108.000000 1.000000 20.000000 4.000000 \n", "\n", " Signed_In \n", "count 458441.000000 \n", "mean 0.700930 \n", "std 0.457851 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 1.000000 \n", "75% 1.000000 \n", "max 1.000000 \n", "\n", "[8 rows x 5 columns]" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "print data.shape\n", "data.head()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(458441, 5)\n" ] }, { "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", "
AgeGenderImpressionsClicksSigned_In
0 36 0 3 0 1
1 73 1 3 0 1
2 30 0 3 0 1
3 49 1 3 0 1
4 47 1 11 0 1
\n", "

5 rows \u00d7 5 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ " Age Gender Impressions Clicks Signed_In\n", "0 36 0 3 0 1\n", "1 73 1 3 0 1\n", "2 30 0 3 0 1\n", "3 49 1 3 0 1\n", "4 47 1 11 0 1\n", "\n", "[5 rows x 5 columns]" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the data contains roughly 450,000 rows, and 5 columns. These columns are Age, Gender, Impressions (the number of pages the user viewed), Clicks (the number of ads a user clicked on), and whether or not the user was signed in.\n", "\n", "Let's plot the data to get a sense of the distributions." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "data.hist(figsize=(10,8))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "array([[,\n", " ,\n", " ],\n", " [,\n", " ,\n", " ]], dtype=object)" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ngbS0tM5dSSKiFrCz1oVuXML/86Lk1oqUNRoNJk+ejMWLF8PZ2RmHDh3CunXrWpz37rvvxnvvvYdn\nn30WTk5O0Ol0ytWlNTU1eOmll3D77bdj0KBBuHDhAlJTUwEA27Ztg7+/P/r06YO5c+ciJydHuS3C\nzTGys7Nx4sQJDB48GI8++iiWLFmC+++/v9H6NbdurcUmakufPn2Qn5+PUaNGoXfv3rjnnnswYsQI\nvPbaawD+s50NGDAA//M//4P58+djwIABOHr0KEaOHNloW25t/1uzZg1qa2vh5+cHJycnPP7440pn\n76mnnsK4ceMQGBiIkSNHYtKkSSZdYMDbeBBRh7VW0DZt2jQZOHCg+Pv7K235+fkSEhIiQUFBMnLk\nSCkoKFCeW7p0qXh5eYmPj49s27ZNad+/f7/4+/uLl5eXPP/880r71atXJSYmRry8vGTUqFFy4sQJ\n5bnMzEzR6XSi0+kkKyvL7OI8W5WQkCB/+tOfrJ0GteDKlSsSGhoqgYGBMmzYMFmwYIGINFxs4ebm\nJkFBQRIUFCRbtmxR5uF+0nWuX78ugwcPFr1eb+1UiIhM1mpnbffu3XLw4MFGnbX77rtPcnNzRURk\ny5YtEhYWJiINV/4FBgZKbW2tFBcXi6enp9TX14uISEhIiHK10/jx42Xr1q0iIvLWW29JUlKSiIjk\n5ORIbGysiIiUlZXJnXfeKRUVFVJRUaH8bY/i4+PZWVO5S5cuiYjItWvXZNSoUbJnzx5JSUmR1157\nrclruZ9Y3rZt26SiokKuXr0qr7zyigwePFiuXr1q7bSIiEzW6mnQsWPHon///o3aBg0apNwTqLKy\nUqmd2rRpE+Li4tCzZ094eHjAy8sL+fn5MBqNqKqqQmhoKABg6tSp2LhxIwBg8+bNiI+PBwBMmjRJ\nGY5p27ZtiIqKgqOjIxwdHREZGdnoxpX2hHc/V78bVxTW1tbi+vXryj4jzdQocj+xvL1798LLywu3\n3347PvnkE2zcuNHiIx307t0bffr0afL44osvLBqXiOxDh8cmSktLw7333os//vGPqK+vx969ewE0\nXDI/evRo5XVarRYlJSXo2bNno6sF3dzclCLhkpIS5VJ4BwcH9OvXD2VlZU0uv7+xLHu0evVqa6dA\nbaivr8ddd92F48ePIykpCcOHD8eGDRvw5ptvYs2aNRg5ciRee+01ODo6cj/pAosWLcKiRYu6NCZv\n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\nRnAAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "What can you say about the distributions of these fields?\n", "\n", "Some observations.\n", "\n", "1. Age - looks like a bell curve, but with a bunch of 0 values. How many new york times visitors do you think are 0? Do you think that 0 represents some kind of default value? Maybe some finer granularity plotting will help us here.\n", "2. Gender - Ok, it's binary, but would we expect this much of a skew (64/36) in the distribution of genders of readers on sites like the New York Times? Do you think something similar to age is happening here?\n", "3. Clicks - looks like it's discrete valued, with the vast majority of the values with 0 clicks.\n", "4. Impressions - kind of looks like a bell curve, but not quite - maybe plotting at finer granularity will help.\n", "5. Signed In - Looks like another binary variable with more people signed in than not. Can you think of why this might be?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DIY\n", "\n", "1. Plot these histograms at finer granularity by setting the number of histogram bins to 50. What kind of distribution does it look like Impressions follows?\n", "2. Does the behavior for age look more clear?\n", "3. Plot a histogram (or summarize the distribution otherwise - maybe a groupby and a describe?) of gender for sessions where the user is signed in (Signed_In == 1) vs not. Do you notice any differences?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "data.groupby('Signed_In').Gender.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 53, "text": [ "Signed_In \n", "0 count 136177.000000\n", " mean 0.000000\n", " std 0.000000\n", " min 0.000000\n", " 25% 0.000000\n", " 50% 0.000000\n", " 75% 0.000000\n", " max 0.000000\n", "1 count 319198.000000\n", " mean 0.523644\n", " std 0.499441\n", " min 0.000000\n", " 25% 0.000000\n", " 50% 1.000000\n", " 75% 1.000000\n", " max 1.000000\n", "dtype: float64" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining New Variables for Analysis\n", "\n", "Let's create two new columns of interest. The first is Click Thru Rate (CTR), this is a measure commonly used in online advertising to measure the effectiveness of an Ad Campaign. We will use it to measure differences in behavior between groups of users.\n", "\n", "The second thing we'll do is use pandas' `cut` method to turn a continuous variable (Age), into a discrete one - AgeGroup. This makes things like plotting and measuring differences between groups easier.\n", "\n", "Before doing any of this, though, we'll copy our data to a new data frame where we remove the cases where there are 0 impressions, because this will cause a divide by zero and possibly bias our analysis. The number of rows affected by this filter is small but non-trivial - these rows may warrant further investigation later!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "data1 = data[data.Impressions > 0]\n", "data1['CTR'] = data1['Clicks']/data1['Impressions']\n", "data1['AgeGroup'] = pd.cut(data1['Age'], [-1,0,18,24,34,44,54,64,1000])\n", "data1.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
AgeGenderImpressionsClicksSigned_InCTRAgeGroup
0 36 0 3 0 1 0 (34, 44]
1 73 1 3 0 1 0 (64, 1000]
2 30 0 3 0 1 0 (24, 34]
3 49 1 3 0 1 0 (44, 54]
4 47 1 11 0 1 0 (44, 54]
\n", "

5 rows \u00d7 7 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ " Age Gender Impressions Clicks Signed_In CTR AgeGroup\n", "0 36 0 3 0 1 0 (34, 44]\n", "1 73 1 3 0 1 0 (64, 1000]\n", "2 30 0 3 0 1 0 (24, 34]\n", "3 49 1 3 0 1 0 (44, 54]\n", "4 47 1 11 0 1 0 (44, 54]\n", "\n", "[5 rows x 7 columns]" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exploring New Metrics" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print data1.shape\n", "data1.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(455375, 7)\n" ] }, { "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", "
AgeGenderImpressionsClicksSigned_InCTR
count 455375.000000 455375.000000 455375.000000 455375.000000 455375.000000 455375.000000
mean 29.484010 0.367051 5.041030 0.093218 0.700956 0.018471
std 23.606697 0.482001 2.208731 0.310922 0.457839 0.069034
min 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000
25% 0.000000 0.000000 3.000000 0.000000 0.000000 0.000000
50% 31.000000 0.000000 5.000000 0.000000 1.000000 0.000000
75% 48.000000 1.000000 6.000000 0.000000 1.000000 0.000000
max 108.000000 1.000000 20.000000 4.000000 1.000000 1.000000
\n", "

8 rows \u00d7 6 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ " Age Gender Impressions Clicks \\\n", "count 455375.000000 455375.000000 455375.000000 455375.000000 \n", "mean 29.484010 0.367051 5.041030 0.093218 \n", "std 23.606697 0.482001 2.208731 0.310922 \n", "min 0.000000 0.000000 1.000000 0.000000 \n", "25% 0.000000 0.000000 3.000000 0.000000 \n", "50% 31.000000 0.000000 5.000000 0.000000 \n", "75% 48.000000 1.000000 6.000000 0.000000 \n", "max 108.000000 1.000000 20.000000 4.000000 \n", "\n", " Signed_In CTR \n", "count 455375.000000 455375.000000 \n", "mean 0.700956 0.018471 \n", "std 0.457839 0.069034 \n", "min 0.000000 0.000000 \n", "25% 0.000000 0.000000 \n", "50% 1.000000 0.000000 \n", "75% 1.000000 0.000000 \n", "max 1.000000 1.000000 \n", "\n", "[8 rows x 6 columns]" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's plot total impressions and clicks by Age Group and whether or not the user is signed in." ] }, { "cell_type": "code", "collapsed": false, "input": [ "impressionsByAgeSignIn = data1.groupby(['AgeGroup','Signed_In'])['Clicks'].sum()\n", "impressionsByAgeSignIn.plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n7wNqXvANDg5GRESEdewzaNAgRERE4LbbbtMX1iLXDhVm7Nix6pNPPlGlpaV17rtw4YJKTk5WY8aM\n0VB21R//+EcVGhqqEhIS1Jo1a9SaNWvUkiVLVGhoqFq8eLHWNqWU+uijj5Srq6vy8fFRX3zxherX\nr58aMWKE8vDwUImJibrzbJSUlKi5c+eq2NhY1bt3b905dUjvU0p+o+S+6OholZGRUe99ffr0admY\nWhxy5v/TTz9hxYoVWLduHdq2bYtevXpBKYWioiJUVVVh6tSp+O1vfws3NzetnQcPHsSGDRts3vot\nNjYWgYGBWruuqKiogLOzM9q0aWOd/ffr10/71+16pL7F3xXS+wD5jRL7iouL0b59e9x+++26U2w4\n5OJfW1FREY4dOwag5jrvVy5RTE13+PDheq9Gqovkt5psbW8zCch+q0lpbzMpmrb/c2hUXV1tl8c0\np9YwmroeT09P3QlKKaW2bNmiPDw8lKurq4qJiVFHjx613ifh3caSk5PVHXfcofr166dSUlJUnz59\n1H333ae8vLzUxo0bdecppZR666236vxydXVVy5YtU8uWLdOdp+Lj462//+abb5SXl5eKjo5WHh4e\n6osvvtBYJp9Dnu0THR2N8ePHY8KECXUu8fD9998jJSUFX375pdbrqv/1r3/FihUrsGDBguuOphIT\nE7X1ST2DobZ58+bhH//4BwIDA7F+/XrExMRg9erVuOuuu3SnAQAWL16M/fv3o6ysDEFBQdi9ezf8\n/f1x7NgxTJ48WesVH69YsGABxo0bZx01KqVQXV2NkpISzWU1vvvuO+vvX3vtNaSkpGDgwIE4evQo\nJk+ejHHjxmmsk80hxz7l5eX429/+hqSkJOzfvx+dO3eGUgoXLlxAcHAwHnnkETz88MN6X4mvReJo\nqnPnznjrrbfQrl07ODk5WbcrpfDCCy/gzJkzGutqhISE2JznfeDAAetbTS5atEj7z3XU/tmSoKAg\nHDhwoN77dDp+/Dh+97vfoV+/fta3muzbt6/17C7dan+drv2aSfkaiqXzvx0SVFVVqaKiIlVUVKSq\nqqp051hJH01JPYOhtoiICFVYWGiz7cSJEyokJER17NhRU9VVYWFh6vLly0oppbKysqzbKysrbd6Y\nXILPP/9c3XXXXeqTTz5R3t7eunOs2rdvr4KDg1VwcLDq2LGjKi4uVkrV/LuW9jW81quvvqoSEhLU\n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\njs9OuKAAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 60 }, { "cell_type": "markdown", "metadata": {}, "source": [ "By Now, we understand that we need to treat groups differently. Let's take our data and divide it into CTRs by age group for those users that *have clicked* on something (CTR > 0) **and** are signed in (Signed_In > 0)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "loggedInCTRsByAgeGroup = data1[(data1.CTR > 0) & (data1.Signed_In > 0)].groupby('AgeGroup').CTR\n", "\n", "loggedInCTRsByAgeGroup.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 102, "text": [ "AgeGroup \n", "(0, 18] count 2371.000000\n", " mean 0.214738\n", " std 0.122203\n", " min 0.058824\n", " 25% 0.142857\n", " 50% 0.200000\n", " 75% 0.250000\n", " max 1.000000\n", "(18, 24] count 1669.000000\n", " mean 0.203926\n", " std 0.116896\n", " min 0.066667\n", " 25% 0.125000\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "(24, 34] count 2870.000000\n", " mean 0.204344\n", " std 0.111438\n", " min 0.066667\n", " 25% 0.142857\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "(34, 44] count 3592.000000\n", " mean 0.201586\n", " std 0.112516\n", " min 0.066667\n", " 25% 0.142857\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "(44, 54] count 3139.000000\n", " mean 0.202531\n", " std 0.108735\n", " min 0.062500\n", " 25% 0.142857\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "(54, 64] count 4337.000000\n", " mean 0.208181\n", " std 0.117601\n", " min 0.062500\n", " 25% 0.142857\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "(64, 1000] count 4084.000000\n", " mean 0.208385\n", " std 0.110372\n", " min 0.062500\n", " 25% 0.142857\n", " 50% 0.166667\n", " 75% 0.250000\n", " max 1.000000\n", "Length: 56, dtype: float64" ] } ], "prompt_number": 102 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hypothesis Testing\n", "\n", "Now that we have several samples of user's click-through behavior. What's a question that we can ask ourselves about these samples?\n", "\n", "One question we might ask is \"Which groups of users is **most different**?\" Or, more precisely: Are any groups of users different? If any groups are different, which ones are?\n", "\n", "First, we'll collect our groups as separate lists, then, we'll run a T-Test between each pair of groups. Finally, we'll collect the p-values for each pair of groups into a `DataFrame`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.stats import ttest_ind\n", "\n", "groups = [s for s in loggedInCTRsByAgeGroup]\n", "\n", "def run_pairwise_tests(groups):\n", " for g in groups:\n", " for g2 in groups:\n", " if g[0] < g2[0]:\n", " yield g[0], g2[0], ttest_ind(g[1], g2[1], equal_var=False)[1]\n", " \n", "testResults = pd.DataFrame(run_pairwise_tests(groups))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 105 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DIY\n", "\n", "1. The object `testResults` contains the p-value for the T-test between CTR samples of all pairs of age groups in our data set. Using this sample, what pairs of groups are different at the 95% confidence level? Which groups are most likely to be different, according to these p-values?\n", "2. What about the other end of the spectrum? Which are least likely to be different? Do these results make intuitive sense to you?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "testResults[testResults[2] < 0.05].sort(columns=[2])" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
012
2 (0, 18] (34, 44] 0.000028
3 (0, 18] (44, 54] 0.000121
1 (0, 18] (24, 34] 0.001439
0 (0, 18] (18, 24] 0.004526
17 (34, 44] (64, 1000] 0.007703
16 (34, 44] (54, 64] 0.010931
19 (44, 54] (64, 1000] 0.024254
18 (44, 54] (54, 64] 0.032186
4 (0, 18] (54, 64] 0.033328
5 (0, 18] (64, 1000] 0.037107
\n", "

10 rows \u00d7 3 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 108, "text": [ " 0 1 2\n", "2 (0, 18] (34, 44] 0.000028\n", "3 (0, 18] (44, 54] 0.000121\n", "1 (0, 18] (24, 34] 0.001439\n", "0 (0, 18] (18, 24] 0.004526\n", "17 (34, 44] (64, 1000] 0.007703\n", "16 (34, 44] (54, 64] 0.010931\n", "19 (44, 54] (64, 1000] 0.024254\n", "18 (44, 54] (54, 64] 0.032186\n", "4 (0, 18] (54, 64] 0.033328\n", "5 (0, 18] (64, 1000] 0.037107\n", "\n", "[10 rows x 3 columns]" ] } ], "prompt_number": 108 } ], "metadata": {} } ] }