Created
June 30, 2015 17:48
-
-
Save diego898/eaa5abca27669ac16fbf to your computer and use it in GitHub Desktop.
Homework 6 Solutions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Homework 6 Solutions\n", | |
"\n", | |
"Welcome to your **sixth** IPython notebook! Please *edit* this document with your answers and upload to TED.\n", | |
"Solutions to HW5 IPython are on Ted!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
":0: FutureWarning: IPython widgets are experimental and may change in the future.\n" | |
] | |
} | |
], | |
"source": [ | |
"# load numerical packages\n", | |
"from __future__ import division\n", | |
"import numpy as np \n", | |
"import scipy as sp\n", | |
"import matplotlib.pyplot as plt \n", | |
"import seaborn as sns\n", | |
"import pandas as pd\n", | |
"import math\n", | |
"from IPython.html.widgets import interact, fixed\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**NOTE:** Please run the following cell before skipping to any section. **Do not** change it without knowing what you're doing." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Problem 1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this problem, we're going to use the excellent **pandas** library to manage and manipulate data. We will see how to compute some descriptive statistics, make box-plots, histograms, etc., all a part of exploratory data analysis. Pandas can easily read csv files, excel files, etc. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Below, we will load the famous iris dataset. While it was introduced in 1936, it is still one of the most popular example data sets in the machine learning community. Wikipedia describes the data set as follows: \"The data set consists of 50 samples from each of three species of Iris (Iris setosa, Iris virginica and Iris versicolor). Four features were measured from each sample: the length and the width of the sepals and petals, in centimetres.\" Here is an illustration what the four features measure:\n", | |
"\n", | |
"\n", | |
"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>SepalLength</th>\n", | |
" <th>SepalWidth</th>\n", | |
" <th>PetalLength</th>\n", | |
" <th>PetalWidth</th>\n", | |
" <th>Name</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>5.1</td>\n", | |
" <td>3.5</td>\n", | |
" <td>1.4</td>\n", | |
" <td>0.2</td>\n", | |
" <td>Iris-setosa</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>4.9</td>\n", | |
" <td>3.0</td>\n", | |
" <td>1.4</td>\n", | |
" <td>0.2</td>\n", | |
" <td>Iris-setosa</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>4.7</td>\n", | |
" <td>3.2</td>\n", | |
" <td>1.3</td>\n", | |
" <td>0.2</td>\n", | |
" <td>Iris-setosa</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>4.6</td>\n", | |
" <td>3.1</td>\n", | |
" <td>1.5</td>\n", | |
" <td>0.2</td>\n", | |
" <td>Iris-setosa</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>5.0</td>\n", | |
" <td>3.6</td>\n", | |
" <td>1.4</td>\n", | |
" <td>0.2</td>\n", | |
" <td>Iris-setosa</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" SepalLength SepalWidth PetalLength PetalWidth Name\n", | |
"0 5.1 3.5 1.4 0.2 Iris-setosa\n", | |
"1 4.9 3.0 1.4 0.2 Iris-setosa\n", | |
"2 4.7 3.2 1.3 0.2 Iris-setosa\n", | |
"3 4.6 3.1 1.5 0.2 Iris-setosa\n", | |
"4 5.0 3.6 1.4 0.2 Iris-setosa" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# load the data\n", | |
"iris_df = pd.read_csv('iris.csv')\n", | |
"\n", | |
"# output the first few rows so we can see what it looks like\n", | |
"iris_df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>SepalLength</th>\n", | |
" <th>SepalWidth</th>\n", | |
" <th>PetalLength</th>\n", | |
" <th>PetalWidth</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>150.000000</td>\n", | |
" <td>150.000000</td>\n", | |
" <td>150.000000</td>\n", | |
" <td>150.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>mean</th>\n", | |
" <td>5.843333</td>\n", | |
" <td>3.054000</td>\n", | |
" <td>3.758667</td>\n", | |
" <td>1.198667</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>std</th>\n", | |
" <td>0.828066</td>\n", | |
" <td>0.433594</td>\n", | |
" <td>1.764420</td>\n", | |
" <td>0.763161</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>min</th>\n", | |
" <td>4.300000</td>\n", | |
" <td>2.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>0.100000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25%</th>\n", | |
" <td>5.100000</td>\n", | |
" <td>2.800000</td>\n", | |
" <td>1.600000</td>\n", | |
" <td>0.300000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>50%</th>\n", | |
" <td>5.800000</td>\n", | |
" <td>3.000000</td>\n", | |
" <td>4.350000</td>\n", | |
" <td>1.300000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>75%</th>\n", | |
" <td>6.400000</td>\n", | |
" <td>3.300000</td>\n", | |
" <td>5.100000</td>\n", | |
" <td>1.800000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>max</th>\n", | |
" <td>7.900000</td>\n", | |
" <td>4.400000</td>\n", | |
" <td>6.900000</td>\n", | |
" <td>2.500000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" SepalLength SepalWidth PetalLength PetalWidth\n", | |
"count 150.000000 150.000000 150.000000 150.000000\n", | |
"mean 5.843333 3.054000 3.758667 1.198667\n", | |
"std 0.828066 0.433594 1.764420 0.763161\n", | |
"min 4.300000 2.000000 1.000000 0.100000\n", | |
"25% 5.100000 2.800000 1.600000 0.300000\n", | |
"50% 5.800000 3.000000 4.350000 1.300000\n", | |
"75% 6.400000 3.300000 5.100000 1.800000\n", | |
"max 7.900000 4.400000 6.900000 2.500000" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# calculate some descriptive statistics\n", | |
"iris_df.describe()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Lets make a scatter plot of two features:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nJwAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x112d74810>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(iris_df['SepalLength'], iris_df['SepalWidth']);\n", | |
"plt.xlabel('Sepal Length');\n", | |
"plt.ylabel('Sepal Width');" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now lets make a boxplot!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAERCAYAAABy/XBZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGUVJREFUeJzt3X2UHXWd5/F3p9OKIUknhPg0hgAjflGXXVDRMyYmgDJ4\nRJzF1UVweVBngKOjjspMEEVdfBgyqCuzOsAEWMLuiOswowhZBXEIJMFR4Sg+IF8G5WkQtYGkCYRA\nP+0fVQ2XJrl9k77VN931fp3DIbeq7q++99bt+6lf1a1fdY2MjCBJqp8ZnS5AktQZBoAk1ZQBIEk1\nZQBIUk0ZAJJUUwaAJNXUzKpXEBHPBW4GXp+ZtzdM/xDwHqCvnHRK43xJUrUqDYCI6AEuAB7dxuxX\nAMdn5o+rrEGStG1VHwI6BzgPuH8b814JnBER6yLi9IrrkCSNUVkARMRJQF9mXlNO6hqzyGXAKcBh\nwNKIOLKqWiRJz1RlD+BdwOERcR1wILC6PB8w6tzMfCgzB4A1wEEV1iJJGqNrMsYCKkPgyZO8EdEL\n/BR4GbAF+DpwUWZ+p1k7g4NDIzNndlddriRNJ2OPvjyp8l8BNRYREccCszNzVXnc/zrgceDa8b78\nATZu3FJ1jZI0rSxcOGe78yalB9AufX2bp06xkrQLWLhwznZ7AF4IJkk1ZQBIUk0ZAJJUUwaAJNWU\nASBJNTWZPwOd8jZsuIH1669ve7v9/ZsA6O2d1/a2AZYuXc6SJcsqaVvS1GUPYBfQ399Pf39/p8uQ\nVDNeB7ALWLny0wCsWHFmhyuRNN14HYAk6RkMAEmqKQNAkmrKAJCkmjIAJKmmDABJqikDQJJqygCQ\npJoyACSppgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCkmjIAJKmmDABJqikDQJJqygCQ\npJoyACSppgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCkmjIAJKmmZla9goh4LnAz8PrM\nvL1h+lHAmcAgcHFmXlh1LZKkp1TaA4iIHuAC4NFtTP8icDiwHDi5DApJ0iSp+hDQOcB5wP1jpr8U\nuCMz+zNzAFgPLKu4FklSg8oCICJOAvoy85pyUlfD7LlAf8PjzUBvVbVIkp6pynMA7wJGIuINwIHA\n6oh4S2b+nuLLf07DsnOAjeM1OH/+LGbO7K6k2E7q6Sle08KFc8ZZUpLap7IAyMzlo/+OiOuAU8ov\nf4DbgP0iYj7F+YFlFIeLmtq4cUsVpXbcwMAQAH19mztciaTpptmOZeW/AmrQFRHHArMzc1VEfBi4\nmuIw1EWZOfY8gSSpQpMSAJl56Og/G6ZdBVw1GeuXJD2TF4JJUk0ZAJJUUwaAJNWUASBJNWUASFJN\nGQCSVFMGgCTVlAEgSTVlAEhSTRkAklRTBoAk1ZQBIKnWhoeHGR4e7nQZHWEASKq11asv5NJLL+p0\nGR1hAEiqrQce6GP9+utZt24tDz74QKfLmXQGgKTa6urqGn+haWwybwgjSbuUBQv2ZOnS5XR1dbFg\nwZ6dLmfSGQCSau3EE/+00yV0jAEgqdZmzKjvkfD6vnJJqjkDQJJqygCQpJoyACSppgwASaopA0CS\naqprZGSk0zW0rK9vc0vFfvWrl3LvvXdXXU7b3HNPUeteey3ucCU7ZtGixRx33AmdLkNSEwsXztnu\n5c7T8jqAe++9m/y3O+jebV6nS2nJ8FA3AHfcO3XGIhnauqnTJUiaoGkZAADdu81j9t6HdLqMaeuR\nu9Z2ugRJE+Q5AEmqKQNAkmrKAJCkmjIAJKmmpu1JYEnTx4YNN7B+/fWVtN3fX/yirbe3/b8aXLp0\nOUuWLGt7u+1iD0BSrfX399Pf39/pMjrCHoCkXd6SJcsq25NeufLTAKxYcWYl7e/K7AFIUk0ZAJJU\nU5UeAoqIbmAV8BJgBDg1M3/RMP9DwHuAvnLSKZl5e5U1SZIK4wZARLwaOA3YExgdVGgkMw9rof03\nA8OZuTQilgOfBf5zw/xXAMdn5o93rGxJ0kS10gO4FPifwK0Ue/E0/L+pzLwiIq4qH+4NbByzyCuB\nMyLi+cCazDy7lXYlSRPXSgBsycyv7OwKMnMoIi4BjgbeNmb2ZcBXgM3ANyLiyMxcs7PrkiS1brsB\nEBF7URzy+XFEfBj4JjA4Oj8z72l1JZl5UkSsAH4QES/NzMfKWedm5sPl+tYABwEGgCRNgmY9gBt4\n6lDPYcD7x8zfZ7zGI+J44EWZ+dfAY8DwaJsR0Qv8NCJeBmwp13FRs/bmz5/FzJnd462Wnp7xl9HE\n9fR0s3DhnE6XIU3I6PdFHT/L2w2AzNwbICL2yMyHGudFxN4ttn85cElEXA/0AB8Ejo6I2Zm5KiJO\nB64DHgeuzczvNGts48YtLa10YGCoxfI0EQMDQ/T1be50GdKEjH5fTNfPcrNga3YIaBHFdQJrIuJN\nDbN6KA7T7D/eistDPcc0mX8ZxXkASdIka3YI6CzgEOCFQOMoTIPAVdt6giRp6mh2COhdABGxIjNX\nTl5JkqTJ0OwQ0CcpTth2RcQnxs7PzLOqLEySVK1mYwE9Wv53EMUVvQ9TXMj1eiCqL02SVKVmh4A+\nDxARbweWZebW8vEFwPrJKU+SVJVWrgTeA2j8Yf1zgN5qymmP/v5NDG3dxCN3re10KdPW0NZN9PdP\nrdtJVHVXqTrfUUpTWyt/wRcAN5dj+swA3gJ8vtKqpClk9G5SVQSAVKVxAyAzv1BeyLWc4qTwf8nM\nWyqvbAJ6e+fR9/Ags/c+pNOlTFuP3LV2yn3hVXVXqTrfUUpT23ZPAkfEUeX/TwReBjwAPAgcGBEn\nTE55kqSqNOsBvAq4EjiUbQ//fGklFUmSJkWzALgzIl6QmSdNVjGSpMnTLACOAD4dEQ8DVwPfBdY2\nDOUsSZrCtnsOIDOPzcxFFBeB3QK8lWI8/++Vo3hKkqawZlcCA5CZdwLfohgAbg2wkCIMJElTWLOx\ngF5LcRjoCIov/X8BrgHOGXt/AEnS1NPsHMB6imP/f56ZN01SPZKkSdIsAN5Csfe/OiIepAiDazLz\nR5NSmSSpUs0Gg7uK8sYvEbEP8MfA6RHxcuCWzNzunb4kSbu+cU8CR8RuwGJgT2A3YIBtXxgmSZpC\nmp0E/hLwWmBf4EaKk8CnZ+bPJqk2SVKFmp0D+D3wfuCmzByapHokSZOkWQD0AG8EjogIgK6GeSPe\nElKSprZmAdBFeU9gnv7lL0maBpr9CuhT25oeETOAfaoqSJI0Oca9IUxEvB/4LLA7T/UEfgm8vMK6\nJEkVa+WWkB8BDqQIgY8ChwD7V1iTpCnqq1+9lHvvvbvTZeyQe+4p6h29s9tUsGjRYo47buL35Wol\nAH6fmb+OiFuAAzLzkojYMOE1S5p27r33bu68/TYWdLfy1bJreNbwMAAP/+qODlfSmgeHBtvWVitb\n6ZGIOBT4GfAnEXET8Py2VSBpWlnQPZOj5u3R6TKmrSs3tW8sznGvBAY+QDEu0LeBBcBtwJfbVoEk\nqSPG7QFk5s8j4q8ozgOcBbw9M4crr2yChrZu4pG71na6jJYMD24FYMbM3TpcSeuGtm6iGB1E0lTV\nyq+ADgdWA/dT9BjmRcQxmfnDqovbWYsWLe50CTtk9CTUXoum0hfqnlPufZb0dK2cA/gS8KbM/AlA\nRLwKOB94VZWFTUQ7zo5PptFfH6xYcWaHK5FUJ62cA9g6+uUPUN4cxiuDJWmKa6UHcGNEnEex1z8E\nvBP4dUS8GmBXPhQkSdq+VgLgAIoxgb5UPh4dI2hl+fjQCuqSJFWslV8BHTIJdUiSJlkrvwLaG1hF\nMQDcMuAfgHdn5p3VliZJqlIrh4AuAD4PnA38liIAVlOEQVMR0U0RHi+hOGx0amb+omH+UcCZwCBw\ncWZeuKMvQJK0c1r5FdCemXk1QGYOl1/SvS22/2ZgODOXAh+nGFAOgIjoAb4IHA4sB06OiOfuSPGS\npJ3XSgBsiYgXjT6IiKXA1lYaz8wrgFPKh3sDGxtmvxS4IzP7M3MAWE8LvQpJUnu0cgjow8AaYN9y\nRNA9gLe3uoLMHIqIS4Cjgbc1zJoL9Dc83kzrPQtJ0gQ1DYDyGP2twMHACoqffK4BbtqRlWTmSRGx\nAvhBRLw0Mx+j+PKf07DYHJ7eQ1ANOZ785GnXmPKN+vs38dDgYFtHrNTTPTg4yEj/pra0td0AiIjT\ngHcAJ1LcAOajFCODvpzipPBfjNd4RBwPvCgz/xp4DBimOBkMxaii+0XEfOBRisM/5zRrb/78Wcyc\n2T3eaqecnp7iNS1cOGecJae/3/7237n9V8nM3md1upSWDXcPAfDrB6bOD+MG+5+gp6e77Z+57u5W\njiprorq7Z7Rl2zXrAZwA/FFmPhoRZwNXZOaFEdFFcUvIVlwOXBIR1wM9wAeBoyNidmauiogPA1dT\nnIu4KDPvb9bYxo1bWlzt1DIwUHyB9PVt7nAlnTcwMMTM3mcx73V/0OlSprVN6+5jYGCo7Z+52bPn\nMjzz994PoEJXbnqI2bPntrztmgVFswAYzsxHy38fCpwHkJkjETGy/ac9pTzUc0yT+VcBV7XSliSp\nvZoFwGB5eGZ34CCKPXUiYi9gYBJqkyRVqNkBu7OBHwM/AC7MzPsj4u3Av1CcA5AkTWHb7QFk5uUR\n8X2KC8FuKSdvAf40M9dORnGSpOo0/RloZt4H3NfweE3lFUmSJoW/2ZKkmjIAJKmmDABJqikDQJJq\nygCQpJoyACSppgwASaopA0CSasoAkKSaauWOYNKk6e/fxGD/42xad9/4C2unDfY/Tn9Pe24qMtaD\nQ1PrhjBbhocBmDVjauwPPzg0yNw2tWUASGqbRYsWd7qEHbapvKPb8/eaGrXPpX3vswGgXUpv7zwe\nHNjoDWEqtmndffT2zmt7u+2+xeRkGL2V54oVZ3a4ksk3Nfo8kqS2MwAkqaYMAEmqKQNAkmrKAJCk\nmjIAJKmmDABJqikDQJJqygCQpJoyACSppgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCk\nmjIAJKmmDABJqikDQJJqygCQpJqaWVXDEdEDXAwsBp4NfCYzr2yY/yHgPUBfOemUzLy9qnokSU9X\nWQAA7wT6MvP4iJgP/AS4smH+K4DjM/PHFdagKWiw/wk2rbuv02W0bPjxIQBmPLu7w5W0brD/Cdiz\n01Wo06oMgH8ELi//PQMYHDP/lcAZEfF8YE1mnl1hLZoiFi1a3OkSdtg999wNwF57TqHa95ya77Xa\nq7IAyMxHASJiDkUYfGzMIpcBXwE2A9+IiCMzc01V9WhqOO64Ezpdwg5bufLTAKxYcWaHK5m+Nmy4\ngfXrr6+k7dEAH92O7bR06XKWLFnW9nbbpcoeABGxCPhn4CuZ+bUxs8/NzIfL5dYABwFNA2D+/FnM\nnDl1utmt6ukpXtPChXM6XIl2htuvenPnPufJ97ndFizYA6CS9ufOfc4u/bmo8iTw84BrgPdm5nVj\n5vUCP42IlwFbgMOAi8Zrc+PGLVWU2nEDA8Ux5L6+zR2uRDvD7Ve9Aw44mAMOOLjTZeyUTn8umgVQ\nlT2AM4Be4BMR8Yly2ipg98xcFRGnA9cBjwPXZuZ3KqxFkjRGlecAPgh8sMn8yyjOA0iSOsALwSSp\npgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCkmjIAJKmmDABJqikDQJJqygCQpJoyACSp\npiq9Icx0U9Vdiaq8IxHs+nclktQZBsAuoLe3t9MlSKohA2AHLFmyzD1pSdOG5wAkqaYMAEmqKQNA\nkmrKAJCkmjIAJNXayMgIIyMjnS6jIwwASbW2YcMN3Hjjuk6X0RH+DFRSbW3Z8iiXX34ZAAcd9Cpm\nzZrV4Yomlz0ASTXW1ekCOsoegKTamjVrFm9727F0dXXVbu8fDABJNVfnq/sNAEm11tVV38NAngOQ\npJoyACSppgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCkmqr0SuCI6AEuBhYDzwY+k5lX\nNsw/CjgTGAQuzswLq6xHkvSUqnsA7wT6MnMZ8Ebgy6MzynD4InA4sBw4OSKeW3E9kqRS1QHwj8An\nGtY12DDvpcAdmdmfmQPAeqC+ozJJ0iSr9BBQZj4KEBFzKMLgYw2z5wL9DY83A71V1iNJekrlo4FG\nxCLgn4GvZObXGmb1A3MaHs8BNlZdj+prw4YbWL/++ra3e889dwOwcuWn29720qXLaz1csarVVeXN\nkCPiecBa4L2Zed2YeT3AL4DXAI8CNwJHZeb9lRUkSXpS1QFwLvB2IBsmrwJ2z8xVEfFminMEM4CL\nMvO8yoqRJD1NpQEgSdp1eSGYJNWUASBJNWUASFJNGQCSVFMGwA6KiL0j4vtjph0REX9WwbqOjogX\ntLvd6W4yt1ELtayIiIN38DlrIyKqqmmqqGI77sj2GG9dEXFiOZ7ZlFX5hWB1kJlXV9T0B4BbAa+N\nmKAKt9F46125E08bKf/TGBPdjjuyPcZbV2aunkgtuwIDYMeNAETEdcDvgT2Ay4D9gE9RDHkxF5gF\nfCwzv9v45Ih4K/BXwADwG+Ad5fIXlW1B8cW/GDgQWB0RryunHUMxntINmXl6RCwBvgA8AWwB3kbR\nq7uQYliNF1JcgX1+u9+EXdxOb6PyAsVbgf+YmY9FxGkU7/k/ARcAzwEeA06m+Pu5EngA+H8UFzSe\nAAwDP8rMD0bEJeW6bwD+F7AX8Czgz4Gby2n7AN3AFzPz6w21zAP+D8VV8jOBj2fmdRHxc4pra57I\nzGPb9abtgqrYjv8J+BrwAuDdQBfwSYpt8D7gIYq/p/9bNrU/cH75nHuAPwR+mJnvjYhPAfdn5gUR\n8WXgYIpt+0ngKuDvgReV6/pWZp7Z3rdn4jwENDFfzczDgaHy8R8CC4CjgGPZdsC+A/ibzHwdxYdk\nLnAGcG1mHgacApyXmWuAn1B8oexPcUHdH2Xma4H9IuJI4E8oPpjLgfOA+WUNl2XmEcARwIfb/qqn\nlh3aRuXAhP9EEaaUy1wKfB7428w8lCJ0z6b4gnoecHhmngOcBLyv3Ea/jIhuntqTPxX4dTnvHRRX\nwJ8M/C4zlwBvAD4TEQvK5buAjwNXZ+Zyiu1/UTlvd+Csaf7lP1a7tuOoEeCh8u/wpxQ7Za8F/pji\n/R1rP4rAeDXwpnKUg9GAOhpYkJmvAQ4FXgUsAr6fmW+k2Nan7vQrr5A9gInJpz3IvDUiLqDYS+kB\n/rbcS/9Mucg5FF/IH42IDwC/BL4JHAAcGhHHlMvNb2i2CwjgXzNz9MO/Dng58DmKAfa+B9wH/IBi\nT+kvyp7Gw2UddbYz2+hC4LyIuA24LTMfiogDgDMiYgXFNnmiXP7OzBwd5fZdwGkRsQ/w/XK5US8B\nvl3WcAdwbrnXeG057ZGIuJXii23U/sD/Luf/JiIebhgy/WmvqwbatR231eaLgVszcytARNy4jfXf\n0TC45f3Abg3zXkKxvcnMTcAnImIucHBEHErxd/jsnXvZ1TIAdlwXT/1hP+04bUT8B2BOZr65PHm7\nITP3pdgrGF3mLOBTmdkXEecDR1MEwU2ZeVlE/AHF3goUhxJmALcBHyn3KIcphs1eDfw34JLM/MuI\nOJ1ij7KXYs/j/PLDd2QF78GubkLbqFyuC/hL4O/KSb8EPp+Z3y/beE05fbjhaX8GnJqZj0fEdyj2\nKGl4/sHAtyJiX+C/A/8KvA74Zjli7gHAnWOeswy4pfxczAMe3MZ6p6sqtmOj0ffwDmD/iNiNIthf\nTfE316jZOZlfUvTQiIheilD6NrApM0+NiBdT/G3ucjwEtONGxvzXOP3fgEMi4nrg6xR3Oxvrh8BV\nEXEtxeGDK4HPAv+1PNb5LZ768N1I8UV/X9neBoq9/Dsz84qyrQvLtg4tl70SeF9EXE3RPd5cHg+t\nk4luIygOtxyYmWvLx6cBn4yIteW8nze0OepnwLqI+B7wO4ptNbrMBcC+5fNXA/+D4hjxgohYB1xH\nuWPQ8JzPAYeVtX4DOLnsBdblBHEV23Fs+2TmA8BKip71tynO8ww0LrON9T/578z8FrCx3I7fAc6l\n6JW/MSK+C5wO3LQr/qLPsYAk1VrZs16RmZ8rewzXA2dk5voOl1Y5ewCSaq3sVe0eETdT9LpvrsOX\nP9gDkKTasgcgSTVlAEhSTRkAklRTBoAk1ZQBIDUoR6Acjog3jJl+V0Ts1am6pCoYANIzDQCrImJ2\nwzR/Lqdpx6EgpGf6DXANxaBvpzRM74mIVRTjMD2PYiyZtwLPpxjT6VcUwzncBKylGBxuPnB0Zt5W\njkP/RYrRKx8ATsnMu6p/OdK22QOQtu004Igxh4JeCGwtR/R8McWQAW8q5x0AnEUxcN/BwOJyucuA\nk8vhOC4Ejs3MV1IEwapJeSXSdtgDkLYhMzeXd4NaVY4ECnA3xeiS76MYqXM/nho6+LeZeQtARPw7\nxVgwo8/Zh2LEyH2BKxtGpJxT+QuRmrAHIG1HeYOR71LsrUNx/4V/AB4BLqa4ycvoaJVPjHn66BDR\no/O7Ke4HcFBmHgS8kmKkT6ljDACpuY9Q3CTkhRQ3bfl6eSvA31F8gXe32M5twB4RsbR8/G6KMJE6\nxgCQnunJX/xk5maKcf5nUty57diI+BHF8M5XUBzeaXYP3xGKIYOfoBgz/gsRcQvFnd7eXdkrkFrg\nYHCSVFP2ACSppgwASaopA0CSasoAkKSaMgAkqaYMAEmqKQNAkmrKAJCkmvr/5sRwInzWA3sAAAAA\nSUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x112bd50d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sns.boxplot(iris_df['SepalWidth'], iris_df['Name']);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, lets load the 'tips' data that Dr. Coleman discussed in class, and have you guys generate the figures he showed!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>total_bill</th>\n", | |
" <th>tip</th>\n", | |
" <th>sex</th>\n", | |
" <th>smoker</th>\n", | |
" <th>day</th>\n", | |
" <th>time</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>16.99</td>\n", | |
" <td>1.01</td>\n", | |
" <td>Female</td>\n", | |
" <td>No</td>\n", | |
" <td>Sun</td>\n", | |
" <td>Dinner</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>10.34</td>\n", | |
" <td>1.66</td>\n", | |
" <td>Male</td>\n", | |
" <td>No</td>\n", | |
" <td>Sun</td>\n", | |
" <td>Dinner</td>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>21.01</td>\n", | |
" <td>3.50</td>\n", | |
" <td>Male</td>\n", | |
" <td>No</td>\n", | |
" <td>Sun</td>\n", | |
" <td>Dinner</td>\n", | |
" <td>3</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>23.68</td>\n", | |
" <td>3.31</td>\n", | |
" <td>Male</td>\n", | |
" <td>No</td>\n", | |
" <td>Sun</td>\n", | |
" <td>Dinner</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>24.59</td>\n", | |
" <td>3.61</td>\n", | |
" <td>Female</td>\n", | |
" <td>No</td>\n", | |
" <td>Sun</td>\n", | |
" <td>Dinner</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" total_bill tip sex smoker day time size\n", | |
"0 16.99 1.01 Female No Sun Dinner 2\n", | |
"1 10.34 1.66 Male No Sun Dinner 3\n", | |
"2 21.01 3.50 Male No Sun Dinner 3\n", | |
"3 23.68 3.31 Male No Sun Dinner 2\n", | |
"4 24.59 3.61 Female No Sun Dinner 4" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"tips = sns.load_dataset(\"tips\")\n", | |
"tips.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Describe the data \n", | |
"\n", | |
"# EDIT HERE" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Plot two different scatter plots\n", | |
"\n", | |
"# EDIT HERE" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Plot two different box plots\n", | |
"\n", | |
"# EDIT HERE" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"# Problem 2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this problem were going to replicating the figures in the lecture notes for **Example 3.2**: Rat Learning Experiment. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Example 3.2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In our learning experiment, we observed $Y = 22$ correct responses from the animal in $40$ trials. We derived the pmf of the $22$ observations in $40$ trials as the binomial distribution:\n", | |
"\n", | |
"\\begin{equation}\n", | |
" P_Y(22;p) = \\binom{40}{22} p^{22} (1-p)^{18}\n", | |
"\\end{equation}\n", | |
"\n", | |
"\n", | |
"In general, for the binomial pmf with $n$ trials, $Y = k$ correct observations, and probability of a correct response of $p$, the likelihood is:\n", | |
"\n", | |
"\\begin{equation}\n", | |
" L(p) = P_Y(k;p) = \\binom{n}{k} p^{k} (1-p)^{k}\n", | |
"\\end{equation}\n", | |
"\n", | |
"Lets go ahead and plot them for different values of $k$ and $p$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def bin_likelihood(n=40,k=5,p=0.5):\n", | |
" prob_y = 0\n", | |
" \n", | |
" prob_y = sp.misc.comb(n,k) * (p**k) * (1-p)**(n-k)\n", | |
" \n", | |
" return prob_y\n", | |
"\n", | |
"def plot_bin_likelihood(k):\n", | |
" n = 40\n", | |
" p = np.linspace(0,1)\n", | |
" prob_y = bin_likelihood(n,k,p)\n", | |
" plt.plot(p,prob_y);" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1150e7750>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"interact(plot_bin_likelihood, k=(5,35,5));" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Problem 3" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this problem, wer're going to actually try and compute the **real** MLE estimate of the tips data set we went over in class." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"# load data\n", | |
"tips_df = sns.load_dataset('tips')\n", | |
"\n", | |
"# get our 'x' vals\n", | |
"x = tips['total_bill'].values\n", | |
"\n", | |
"# get our 'y' vals\n", | |
"y = tips['tip'].values" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"As we showed in class, if we have the linear model of $y = \\beta x + \\alpha$, what we're actually inerested in is finding the **slope** that minimizes some function of the **residuals** or **error**. For a candidate slope $\\beta$, the residual for a single point $i$ is: \n", | |
"\n", | |
"\\begin{equation}\n", | |
" e_i = y_i - \\alpha - x_i \\beta\n", | |
"\\end{equation}\n", | |
"\n", | |
"What we're interested in doing is finding the $\\beta$ that minimizes the \"sum-of-squares\" error:\n", | |
"\n", | |
"\\begin{equation}\n", | |
" S(\\beta) = \\sum_{i=1}^n e_i^2 = \\sum_{i=1}^n (y_i - \\alpha - x_i \\beta)^2\n", | |
"\\end{equation}\n", | |
"\n", | |
"Lets first fix $\\alpha=1$ and plot this function for different values of $\\beta$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def s_beta(x,y,alpha,beta):\n", | |
" n = len(x)\n", | |
" mysum = 0\n", | |
" for i in range(n):\n", | |
" x_i = x[i]\n", | |
" y_i = y[i]\n", | |
" e_i = y_i - alpha - x_i * beta\n", | |
" e_i_squared = e_i ** 2\n", | |
" mysum = mysum + e_i_squared\n", | |
" return mysum" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1151ab410>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"beta_vals = np.linspace(-0.5,0.5)\n", | |
"s_vals = np.zeros_like(beta_vals)\n", | |
"alpha = 1\n", | |
"for i in range(len(s_vals)):\n", | |
" curr_beta = beta_vals[i]\n", | |
" s_vals[i] = s_beta(x,y,alpha,curr_beta)\n", | |
"\n", | |
"plt.plot(beta_vals, s_vals);\n", | |
"plt.xlabel(r'$\\beta$');\n", | |
"plt.ylabel(r'$S(\\beta)$');" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"So visually, we can see the minimum is somwhere between $0$ and $0.2$. That makes sense, we dont expect people to be tipping over 20% on average! Now lets go ahead and calculate the true value. Remember, this closed-form formula comes from linear-algebra, all we need to do is implement it:\n", | |
"\n", | |
"\\begin{equation}\n", | |
" \\hat{\\beta} = \\frac{\\sum_{i=1}^n (x_i - \\bar{x}) (y_i - \\bar{y}) } {\\sum_{i=1}^n (x_i - \\bar{x})^2}\n", | |
" = \\frac{\\text{Cov(x,y)}}{\\text{Var}(x)}\n", | |
"\\end{equation}\n", | |
"\n", | |
"and $\\hat{\\alpha}$ is: \n", | |
"\\begin{equation}\n", | |
" \\hat{\\alpha} = \\bar{y} - \\hat{\\beta}\\bar{x}\n", | |
"\\end{equation}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def calc_slope_and_intercept(x, y):\n", | |
" \n", | |
" # initialize return values\n", | |
" beta_hat = 0\n", | |
" alpha_hat = 0\n", | |
" \n", | |
" # calculate means\n", | |
" x_bar = np.mean(x)\n", | |
" y_bar = np.mean(y)\n", | |
" \n", | |
" # calculate beta_hat\n", | |
" numerator = np.sum((x - x_bar)*(y-y_bar))\n", | |
" denominator = np.sum((x - x_bar)**2)\n", | |
" beta_hat = numerator/denominator\n", | |
" \n", | |
" # calculate alpha_hat \n", | |
" alpha_hat = y_bar - beta_hat*x_bar\n", | |
" \n", | |
" # return both\n", | |
" return beta_hat, alpha_hat" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"estimated beta: 0.105024517384\n", | |
"estimaed alpha: 0.920269613555\n" | |
] | |
} | |
], | |
"source": [ | |
"# calculate slope and intercept for the tip data\n", | |
"beta_hat, alpha_hat = calc_slope_and_intercept(x,y)\n", | |
"print \"estimated beta:\", beta_hat\n", | |
"print \"estimaed alpha: \", alpha_hat\n", | |
"\n", | |
"# calculate our estimated line\n", | |
"y_hat = beta_hat * x + alpha_hat " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1151213d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# lets plot our estimate\n", | |
"plt.scatter(x,y);\n", | |
"plt.xlabel('Total Bill');\n", | |
"plt.ylabel('Tips');\n", | |
"plt.plot(x, y_hat, 'r');" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we can use built in functions to calcualte and plot the true OLS values and see how they compare! " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"\n", | |
"-------------------------Summary of Regression Analysis-------------------------\n", | |
"\n", | |
"Formula: Y ~ <x> + <intercept>\n", | |
"\n", | |
"Number of Observations: 244\n", | |
"Number of Degrees of Freedom: 2\n", | |
"\n", | |
"R-squared: 0.4566\n", | |
"Adj R-squared: 0.4544\n", | |
"\n", | |
"Rmse: 1.0220\n", | |
"\n", | |
"F-stat (1, 242): 203.3577, p-value: 0.0000\n", | |
"\n", | |
"Degrees of Freedom: model 1, resid 242\n", | |
"\n", | |
"-----------------------Summary of Estimated Coefficients------------------------\n", | |
" Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%\n", | |
"--------------------------------------------------------------------------------\n", | |
" x 0.1050 0.0074 14.26 0.0000 0.0906 0.1195\n", | |
" intercept 0.9203 0.1597 5.76 0.0000 0.6072 1.2333\n", | |
"---------------------------------End of Summary---------------------------------" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"from pandas.stats.api import ols\n", | |
"res = ols(y=tips['tip'], x=tips['total_bill'])\n", | |
"res" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"So we did pretty good! Lets compare the true plot vs our plot:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nQUV5WUr7k0wJyySbprkcaA86ZAn6+gwwJFFti8jAVF293hcg2wAbtbVVVFev7+k0ERGJwtnYHAiQ\nAbaazgGVUU5oTXIYd9DXxUBjLCc5HMWJ6U0KZeOYQOPKJNk4JoDi4siMcXGxPWvH21vZ+jpk47iy\ncUygcWWaYcMGYcu1RhxzDB+Uoh4lVzKD5L8ZhnGFaZrrgBuBtbGc5HSeTmyvkszhKM66MYHGlUmy\ncUzgHVdFxUzKyxdTW1sFQHn5EioqFmb0eOP5j28mvw5dycaf52wcE2hcmcbhKCbH7eaSScNDyi1y\n3O6MHW9v76fJCJL9K1h8A/i1YRh5wLvA75PQtogMIHa7nWXLFlJdvQqAykrVI4uI9EdFeRkzJ48C\nwFFSkOLeJFdCg2TTNPcBc3xffwBcmcj2RETsdjtVVdeluhsiIlljoAXHftpMREREREQkjIJkERER\nEZEwCpJFRERERMIoSBYRERERCaMgWUREREQkjIJkEREREZEwCpJFRERERMIoSBYRERERCaMgWURE\nREQkjIJkEREREZEwCpJFRERERMIoSBYRERERCaMgWUREREQkjIJkEREREZEwCpJFRERERMIoSBYR\nERERCaMgWUREREQkTG6qOyAi0hWXy0V19XoAKivnYbfbU9wjEZHM5mxsBsBRUpDinqQ/BckikpZc\nLhd33rmC2trPArBixWKWLVuoQFlEpI9qavex1XQCMMNwUFFeltL+pDuVW4hIWqquXu8LkG2Ajdra\nqkBWWUREesfZ2BwIkAG2ms5AVlmiU5AsIiIiIhJGQbKIpKXKynmUly8GWoFWysuXUFk5L9XdEhHJ\nSI6SAmYYjsD3MwyH6pJ7oJpkEUlLdrudZcsWUl29CoDKStUji4j0R0V5GTMnjwI0cS8WCpJFJG3Z\n7Xaqqq5LdTdERLKGguPYqdxCRERERCSMgmQRERERkTAKkkVEREREwihIFhEREREJoyBZRERERCSM\ngmQRERERkTAKkkVEREREwihIFhEREREJoyBZRERERCSMgmQRERERkTAKkkVEREREwihIFhEREREJ\noyBZRERERCSMgmQRERERkTAKkkVEREREwihIFhEREREJoyBZRERERCRMbjIbMwzDCjwNfAxwA/eZ\npmkmsw8iIiIiIj1Jdib5OmCQaZqfAB4Dvp/k9kVEREREepTsILkZGGIYhgUYArQmuX0RERERkR4l\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x115121150>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# setup subplot figure\n", | |
"f, (ax1, ax2) = plt.subplots(1, 2, sharey=True, figsize=(10,5))\n", | |
"\n", | |
"# plot our estimate on the first subplot\n", | |
"ax1.scatter(x,y);\n", | |
"ax1.set_xlabel('Total Bill');\n", | |
"ax1.set_ylabel('Tips');\n", | |
"ax1.plot(x, y_hat, 'r');\n", | |
"ax1.set_title(\"Our Estimated OLS\")\n", | |
"\n", | |
"# plot the true regression plot on the second subplot\n", | |
"sns.regplot(\"total_bill\", \"tip\", tips, ax=ax2, ci=0).set_ylabel(\"\")\n", | |
"ax2.set_title(\"True OLS\")\n", | |
"\n", | |
"# tighten things up\n", | |
"f.tight_layout()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.10" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SepalLength | SepalWidth | PetalLength | PetalWidth | Name | |
---|---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa | |
4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa | |
4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa | |
4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa | |
5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa | |
5.4 | 3.9 | 1.7 | 0.4 | Iris-setosa | |
4.6 | 3.4 | 1.4 | 0.3 | Iris-setosa | |
5.0 | 3.4 | 1.5 | 0.2 | Iris-setosa | |
4.4 | 2.9 | 1.4 | 0.2 | Iris-setosa | |
4.9 | 3.1 | 1.5 | 0.1 | Iris-setosa | |
5.4 | 3.7 | 1.5 | 0.2 | Iris-setosa | |
4.8 | 3.4 | 1.6 | 0.2 | Iris-setosa | |
4.8 | 3.0 | 1.4 | 0.1 | Iris-setosa | |
4.3 | 3.0 | 1.1 | 0.1 | Iris-setosa | |
5.8 | 4.0 | 1.2 | 0.2 | Iris-setosa | |
5.7 | 4.4 | 1.5 | 0.4 | Iris-setosa | |
5.4 | 3.9 | 1.3 | 0.4 | Iris-setosa | |
5.1 | 3.5 | 1.4 | 0.3 | Iris-setosa | |
5.7 | 3.8 | 1.7 | 0.3 | Iris-setosa | |
5.1 | 3.8 | 1.5 | 0.3 | Iris-setosa | |
5.4 | 3.4 | 1.7 | 0.2 | Iris-setosa | |
5.1 | 3.7 | 1.5 | 0.4 | Iris-setosa | |
4.6 | 3.6 | 1.0 | 0.2 | Iris-setosa | |
5.1 | 3.3 | 1.7 | 0.5 | Iris-setosa | |
4.8 | 3.4 | 1.9 | 0.2 | Iris-setosa | |
5.0 | 3.0 | 1.6 | 0.2 | Iris-setosa | |
5.0 | 3.4 | 1.6 | 0.4 | Iris-setosa | |
5.2 | 3.5 | 1.5 | 0.2 | Iris-setosa | |
5.2 | 3.4 | 1.4 | 0.2 | Iris-setosa | |
4.7 | 3.2 | 1.6 | 0.2 | Iris-setosa | |
4.8 | 3.1 | 1.6 | 0.2 | Iris-setosa | |
5.4 | 3.4 | 1.5 | 0.4 | Iris-setosa | |
5.2 | 4.1 | 1.5 | 0.1 | Iris-setosa | |
5.5 | 4.2 | 1.4 | 0.2 | Iris-setosa | |
4.9 | 3.1 | 1.5 | 0.1 | Iris-setosa | |
5.0 | 3.2 | 1.2 | 0.2 | Iris-setosa | |
5.5 | 3.5 | 1.3 | 0.2 | Iris-setosa | |
4.9 | 3.1 | 1.5 | 0.1 | Iris-setosa | |
4.4 | 3.0 | 1.3 | 0.2 | Iris-setosa | |
5.1 | 3.4 | 1.5 | 0.2 | Iris-setosa | |
5.0 | 3.5 | 1.3 | 0.3 | Iris-setosa | |
4.5 | 2.3 | 1.3 | 0.3 | Iris-setosa | |
4.4 | 3.2 | 1.3 | 0.2 | Iris-setosa | |
5.0 | 3.5 | 1.6 | 0.6 | Iris-setosa | |
5.1 | 3.8 | 1.9 | 0.4 | Iris-setosa | |
4.8 | 3.0 | 1.4 | 0.3 | Iris-setosa | |
5.1 | 3.8 | 1.6 | 0.2 | Iris-setosa | |
4.6 | 3.2 | 1.4 | 0.2 | Iris-setosa | |
5.3 | 3.7 | 1.5 | 0.2 | Iris-setosa | |
5.0 | 3.3 | 1.4 | 0.2 | Iris-setosa | |
7.0 | 3.2 | 4.7 | 1.4 | Iris-versicolor | |
6.4 | 3.2 | 4.5 | 1.5 | Iris-versicolor | |
6.9 | 3.1 | 4.9 | 1.5 | Iris-versicolor | |
5.5 | 2.3 | 4.0 | 1.3 | Iris-versicolor | |
6.5 | 2.8 | 4.6 | 1.5 | Iris-versicolor | |
5.7 | 2.8 | 4.5 | 1.3 | Iris-versicolor | |
6.3 | 3.3 | 4.7 | 1.6 | Iris-versicolor | |
4.9 | 2.4 | 3.3 | 1.0 | Iris-versicolor | |
6.6 | 2.9 | 4.6 | 1.3 | Iris-versicolor | |
5.2 | 2.7 | 3.9 | 1.4 | Iris-versicolor | |
5.0 | 2.0 | 3.5 | 1.0 | Iris-versicolor | |
5.9 | 3.0 | 4.2 | 1.5 | Iris-versicolor | |
6.0 | 2.2 | 4.0 | 1.0 | Iris-versicolor | |
6.1 | 2.9 | 4.7 | 1.4 | Iris-versicolor | |
5.6 | 2.9 | 3.6 | 1.3 | Iris-versicolor | |
6.7 | 3.1 | 4.4 | 1.4 | Iris-versicolor | |
5.6 | 3.0 | 4.5 | 1.5 | Iris-versicolor | |
5.8 | 2.7 | 4.1 | 1.0 | Iris-versicolor | |
6.2 | 2.2 | 4.5 | 1.5 | Iris-versicolor | |
5.6 | 2.5 | 3.9 | 1.1 | Iris-versicolor | |
5.9 | 3.2 | 4.8 | 1.8 | Iris-versicolor | |
6.1 | 2.8 | 4.0 | 1.3 | Iris-versicolor | |
6.3 | 2.5 | 4.9 | 1.5 | Iris-versicolor | |
6.1 | 2.8 | 4.7 | 1.2 | Iris-versicolor | |
6.4 | 2.9 | 4.3 | 1.3 | Iris-versicolor | |
6.6 | 3.0 | 4.4 | 1.4 | Iris-versicolor | |
6.8 | 2.8 | 4.8 | 1.4 | Iris-versicolor | |
6.7 | 3.0 | 5.0 | 1.7 | Iris-versicolor | |
6.0 | 2.9 | 4.5 | 1.5 | Iris-versicolor | |
5.7 | 2.6 | 3.5 | 1.0 | Iris-versicolor | |
5.5 | 2.4 | 3.8 | 1.1 | Iris-versicolor | |
5.5 | 2.4 | 3.7 | 1.0 | Iris-versicolor | |
5.8 | 2.7 | 3.9 | 1.2 | Iris-versicolor | |
6.0 | 2.7 | 5.1 | 1.6 | Iris-versicolor | |
5.4 | 3.0 | 4.5 | 1.5 | Iris-versicolor | |
6.0 | 3.4 | 4.5 | 1.6 | Iris-versicolor | |
6.7 | 3.1 | 4.7 | 1.5 | Iris-versicolor | |
6.3 | 2.3 | 4.4 | 1.3 | Iris-versicolor | |
5.6 | 3.0 | 4.1 | 1.3 | Iris-versicolor | |
5.5 | 2.5 | 4.0 | 1.3 | Iris-versicolor | |
5.5 | 2.6 | 4.4 | 1.2 | Iris-versicolor | |
6.1 | 3.0 | 4.6 | 1.4 | Iris-versicolor | |
5.8 | 2.6 | 4.0 | 1.2 | Iris-versicolor | |
5.0 | 2.3 | 3.3 | 1.0 | Iris-versicolor | |
5.6 | 2.7 | 4.2 | 1.3 | Iris-versicolor | |
5.7 | 3.0 | 4.2 | 1.2 | Iris-versicolor | |
5.7 | 2.9 | 4.2 | 1.3 | Iris-versicolor | |
6.2 | 2.9 | 4.3 | 1.3 | Iris-versicolor | |
5.1 | 2.5 | 3.0 | 1.1 | Iris-versicolor | |
5.7 | 2.8 | 4.1 | 1.3 | Iris-versicolor | |
6.3 | 3.3 | 6.0 | 2.5 | Iris-virginica | |
5.8 | 2.7 | 5.1 | 1.9 | Iris-virginica | |
7.1 | 3.0 | 5.9 | 2.1 | Iris-virginica | |
6.3 | 2.9 | 5.6 | 1.8 | Iris-virginica | |
6.5 | 3.0 | 5.8 | 2.2 | Iris-virginica | |
7.6 | 3.0 | 6.6 | 2.1 | Iris-virginica | |
4.9 | 2.5 | 4.5 | 1.7 | Iris-virginica | |
7.3 | 2.9 | 6.3 | 1.8 | Iris-virginica | |
6.7 | 2.5 | 5.8 | 1.8 | Iris-virginica | |
7.2 | 3.6 | 6.1 | 2.5 | Iris-virginica | |
6.5 | 3.2 | 5.1 | 2.0 | Iris-virginica | |
6.4 | 2.7 | 5.3 | 1.9 | Iris-virginica | |
6.8 | 3.0 | 5.5 | 2.1 | Iris-virginica | |
5.7 | 2.5 | 5.0 | 2.0 | Iris-virginica | |
5.8 | 2.8 | 5.1 | 2.4 | Iris-virginica | |
6.4 | 3.2 | 5.3 | 2.3 | Iris-virginica | |
6.5 | 3.0 | 5.5 | 1.8 | Iris-virginica | |
7.7 | 3.8 | 6.7 | 2.2 | Iris-virginica | |
7.7 | 2.6 | 6.9 | 2.3 | Iris-virginica | |
6.0 | 2.2 | 5.0 | 1.5 | Iris-virginica | |
6.9 | 3.2 | 5.7 | 2.3 | Iris-virginica | |
5.6 | 2.8 | 4.9 | 2.0 | Iris-virginica | |
7.7 | 2.8 | 6.7 | 2.0 | Iris-virginica | |
6.3 | 2.7 | 4.9 | 1.8 | Iris-virginica | |
6.7 | 3.3 | 5.7 | 2.1 | Iris-virginica | |
7.2 | 3.2 | 6.0 | 1.8 | Iris-virginica | |
6.2 | 2.8 | 4.8 | 1.8 | Iris-virginica | |
6.1 | 3.0 | 4.9 | 1.8 | Iris-virginica | |
6.4 | 2.8 | 5.6 | 2.1 | Iris-virginica | |
7.2 | 3.0 | 5.8 | 1.6 | Iris-virginica | |
7.4 | 2.8 | 6.1 | 1.9 | Iris-virginica | |
7.9 | 3.8 | 6.4 | 2.0 | Iris-virginica | |
6.4 | 2.8 | 5.6 | 2.2 | Iris-virginica | |
6.3 | 2.8 | 5.1 | 1.5 | Iris-virginica | |
6.1 | 2.6 | 5.6 | 1.4 | Iris-virginica | |
7.7 | 3.0 | 6.1 | 2.3 | Iris-virginica | |
6.3 | 3.4 | 5.6 | 2.4 | Iris-virginica | |
6.4 | 3.1 | 5.5 | 1.8 | Iris-virginica | |
6.0 | 3.0 | 4.8 | 1.8 | Iris-virginica | |
6.9 | 3.1 | 5.4 | 2.1 | Iris-virginica | |
6.7 | 3.1 | 5.6 | 2.4 | Iris-virginica | |
6.9 | 3.1 | 5.1 | 2.3 | Iris-virginica | |
5.8 | 2.7 | 5.1 | 1.9 | Iris-virginica | |
6.8 | 3.2 | 5.9 | 2.3 | Iris-virginica | |
6.7 | 3.3 | 5.7 | 2.5 | Iris-virginica | |
6.7 | 3.0 | 5.2 | 2.3 | Iris-virginica | |
6.3 | 2.5 | 5.0 | 1.9 | Iris-virginica | |
6.5 | 3.0 | 5.2 | 2.0 | Iris-virginica | |
6.2 | 3.4 | 5.4 | 2.3 | Iris-virginica | |
5.9 | 3.0 | 5.1 | 1.8 | Iris-virginica |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment