ml-finance-python
python scripts for finance machine learning
git clone https://9o.is/git/ml-finance-python.git
notebook.ipynb
(284196B)
1 {
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Residuals Analysis\n",
8 "\n",
9 "By Chris Fenaroli and Max Margenot \n",
10 "\n",
11 "Part of the Quantopian Lecture Series:\n",
12 "\n",
13 "* [www.quantopian.com/lectures](https://www.quantopian.com/lectures)\n",
14 "* [github.com/quantopian/research_public](https://github.com/quantopian/research_public)\n",
15 "\n",
16 "\n",
17 "---\n",
18 "\n",
19 "\n",
20 "\n",
21 "## Linear Regression\n",
22 "\n",
23 "Linear regression is one of our most fundamental modeling techniques. We use it to estimate a linear relationship between a set of independent variables $X_i$ and a dependent outcome variable $y$. Our model takes the form of:\n",
24 "\n",
25 "$$ y_i = \\beta_{0} 1 + \\beta_{i, 1} x_{i, 1} + \\dots + \\beta_{i, p} x_{i, p} + \\epsilon_i = x_i'\\beta + \\epsilon_i $$\n",
26 "\n",
27 "For $i \\in \\{1, \\dots, n\\}$, where $n$ is the number of observations. We write this in vector form as:\n",
28 "\n",
29 "$$ y = X\\beta + \\epsilon $$\n",
30 "\n",
31 "Where $y$ is a $n \\times 1$ vector, $X$ is a $n \\times p$ matrix, $\\beta$ is a $p \\times 1$ vector of coefficients, and $\\epsilon$ is a standard normal error term. Typically we call a model with $p = 1$ a simple linear regression and a model with $p > 1$ a multiple linear regression. More background information on regressions can be found in the lectures on [simple linear regression](https://www.quantopian.com/lectures#Linear-Regression) and [multiple linear regression](https://www.quantopian.com/lectures#Multiple-Linear-Regression).\n",
32 "\n",
33 "Whenever we build a model, there will be gaps between what a model predicts and what is observed in the sample. The differences between these values are known as the residuals of the model and can be used to check for some of the basic assumptions that go into the model. The key assumptions to check for are:\n",
34 "\n",
35 "* **Linear Fit:** The underlying relationship should be linear\n",
36 "* **Homoscedastic:** The data should have no trend in the variance\n",
37 "* **Independent and Identically Distributed:** The residuals of the regression should be independent and identically distributed (i.i.d.) and show no signs of serial correlation\n",
38 "\n",
39 "We can use the residuals to help diagnose whether the relationship we have estimated is real or spurious.\n",
40 "\n",
41 "Statistical error is a similar metric associated with regression analysis with one important difference: While residuals quantify the gap between a regression model predictions and the observed sample, statistical error is the difference between a regression model and the unobservable expected value. We use residuals in an attempt to estimate this error."
42 ]
43 },
44 {
45 "cell_type": "code",
46 "execution_count": 1,
47 "metadata": {},
48 "outputs": [],
49 "source": [
50 "# Import libraries\n",
51 "import numpy as np\n",
52 "import pandas as pd\n",
53 "from statsmodels import regression\n",
54 "import statsmodels.api as sm\n",
55 "import statsmodels.stats.diagnostic as smd\n",
56 "import scipy.stats as stats\n",
57 "import matplotlib.pyplot as plt\n",
58 "import math"
59 ]
60 },
61 {
62 "cell_type": "markdown",
63 "metadata": {},
64 "source": [
65 "# Simple Linear Regression\n",
66 "\n",
67 "First we'll define a function that performs linear regression and plots the results."
68 ]
69 },
70 {
71 "cell_type": "code",
72 "execution_count": 2,
73 "metadata": {},
74 "outputs": [],
75 "source": [
76 "def linreg(X,Y):\n",
77 " # Running the linear regression\n",
78 " X = sm.add_constant(X)\n",
79 " model = sm.OLS(Y, X).fit()\n",
80 " B0 = model.params[0]\n",
81 " B1 = model.params[1]\n",
82 " X = X[:, 1]\n",
83 "\n",
84 " # Return summary of the regression and plot results\n",
85 " X2 = np.linspace(X.min(), X.max(), 100)\n",
86 " Y_hat = X2 * B1 + B0\n",
87 " plt.scatter(X, Y, alpha=1) # Plot the raw data\n",
88 " plt.plot(X2, Y_hat, 'r', alpha=1); # Add the regression line, colored in red\n",
89 " plt.xlabel('X Value')\n",
90 " plt.ylabel('Y Value')\n",
91 " return model, B0, B1"
92 ]
93 },
94 {
95 "cell_type": "markdown",
96 "metadata": {},
97 "source": [
98 "Let's define a toy relationship between $X$ and $Y$ that we can model with a linear regression. Here we define the relationship and construct a model on it, drawing the determined line of best fit with the regression parameters."
99 ]
100 },
101 {
102 "cell_type": "code",
103 "execution_count": 3,
104 "metadata": {
105 "scrolled": false
106 },
107 "outputs": [
108 {
109 "name": "stdout",
110 "output_type": "stream",
111 "text": [
112 "Line of best fit: Y = 9.7469046901 + 0.50511977846*X\n"
113 ]
114 },
115 {
116 "data": {
117 "image/png": "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\ngwYN0ieffHLT+pYtWzryYREAhg/fqaamNyTZ1NTk1bBhS+XxUIoAAAAQePy+fQ7WcOO22txmGwAA\nAIGPUoQOwW22AQAAYBaG3pIbf1+lpYkaNmyprlzpqdDQn1RammD0SAAAAECbKEXoELGxA+XxDPz1\n1pYvGj0OAAAAcEtsnwMAAABgaZQidIjy8m/lcqVryJBquVyLVVn5rdEjAQAAAG1i+xw6BLfkBgAA\ngFlwpQgdgltyAwAAwCwoRegQ3JIbAAAAZsH2OXQIbskNAAAAs6AUoUNwS24AAACYBdvnAAAAAFga\npQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAA\nAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGK\nAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACA\npVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgA\nAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFga\npQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApQUZ8aAZGRmqrq6WzWZTamqqBgwY\nYMQYAAAAAOD/UlRRUaETJ04oLy9Px44dU1pamvLy8vw9BgAAAABIMmD7XFlZmUaPHi1J6tOnjxoa\nGtTY2OjvMQAAAABAkgGlqK6uTm632/dxly5dVFdX5+8xAAAAAECSQa8p+m9er/e2x1RWVvphEnQU\n8jM38jMvsjM38jMvsjM38rMmv5eiqKioVleGzp07p8jIyFseHxsb64+xAAAAAFiU37fPxcfHq6io\nSJJ0+PBhdevWTS6Xy99jAAAAAIAkA64UxcTEqF+/fnruuefkcDiUnp7u7xEAAAAAwMfmvZMX9QAA\nAADA35Tft88BAAAAQCChFAEAAACwNEoRAAAAAEsz/H2K2nL9+nWlpaXp559/VktLixYsWKDBgwfr\nyJEjWrZsmex2u6Kjo7V06VKjR0U7MjIyVF1dLZvNptTUVA0YMMDokXAbmZmZqqqq0vXr1/Xyyy9r\nwIABmj9/vrxeryIjI5WZmang4GCjx8QtXL16VePHj9ecOXM0dOhQsjORwsJC5eTkKCgoSK+++qqi\noyebxGcAAAlhSURBVKPJzwQ8Ho9SUlJ06dIlXbt2TXPmzFHfvn3JLsAdOXJEc+fOVXJyspKSknT2\n7Nk2MyssLFRubq4cDoemTJmihIQEo0eHbs7vzJkzSk1N1S+//KLg4GCtXbtWXbt2/cP5BeSVoo8/\n/lihoaHavn27VqxYoYyMDEnSqlWrtGTJEm3fvl0NDQ0qLS01eFLcSkVFhU6cOKG8vDytWLFCK1eu\nNHok3MaBAwf0ww8/KC8vT5s3b9aqVauUlZWlqVOnatu2bXrggQe0a9cuo8dEO9avX6977rlHkpSV\nlaVp06aRnQlcvHhR7777rvLy8rRx40bt27eP/Exi9+7d6t27t3Jzc5WVlaWVK1fyfTPANTU1ac2a\nNYqPj/ettXW+NTU1af369dq6datyc3O1detWNTQ0GDg5pFvnl5iYqA8//FCjRo3S+++//6fyC8hS\nNHHiRC1atEiS5Ha7fX+BOXXqlPr16ydJGjlypPbv32/kmGhHWVmZRo8eLUnq06ePGhoa1NjYaPBU\naM+QIUOUlZUlSbr77rvl8XhUUVGhkSNHSpJGjBjBORfAjh8/rh9//FFPPPGEvF6vKioqNGLECElk\nF+j279+v+Ph4hYWFKSIiQm+++abKy8vJzwTcbrcuXLggSbp06ZLcbjffNwNcSEiINm7cqIiICN9a\nW+dbdXW1Bg4cqPDwcIWEhGjw4MGqqqoyamz8qq38li5dqieffFLSjXPy4sWLfyq/gCxFQUFBCgkJ\nkSRt3bpVEyZM0IULF3x/AZVuPOna2lqjRsRt1NXVye12+z7u0qWL6urqDJwIt2O32xUWFiZJ2rlz\np4YPH66mpibfto+uXbtyzgWwzMxMLVy40Pcx2ZnH6dOn1dTUpFmzZmnq1KkqKyvTlStXyM8Exo0b\np7Nnz2rs2LGaPn26UlJSOPcCnN1ul9PpbLX2+8zOnTun+vr6Vr/H8HtnYGgrv7CwMNntdrW0tGj7\n9u0aP378Tb+H3kl+hr+mqKCgQDt37pTNZpPX65XNZtPcuXMVHx+vjz76SN999502bNig+vp6o0fF\n/4C3wzKPkpIS7dq1Szk5ORo7dqxvnQwD1549ezRkyBB17969zc+TXWDzer2+LXSnT5/W9OnTW2VG\nfoGrsLBQ9957rzZt2qSjR48qLS2t1efJznxulRlZBraWlhbNnz9fcXFxGjp0qD799NNWn7+T/Awv\nRVOmTNGUKVNuWi8oKNAXX3yh9evXy+FwtLpELUk1NTWKiory56j4A6KiolpdGTp37pwiIyMNnAh3\norS0VJs2bVJOTo46deqk8PBwNTc3y+l0cs4FsC+//FKnTp1ScXGxampqFBwcLJfLRXYmERERoZiY\nGNntdvXo0UPh4eEKCgoiPxOoqqrSsGHDJEnR0dGqqalRWFgY2ZnM73/WdevWTVFRUa2uLNTU1Cgm\nJsbAKdGeRYsWqVevXpo9e7Yk/an8AnL73MmTJ5Wfn6/s7Gzf5cygoCD17t3btx+wuLjY940IgSc+\nPl5FRUWSpMOHD6tbt25yuVwGT4X2XL58WWvXrtWGDRt01113SZLi4uJ8ORYVFXHOBah169apoKBA\n+fn5SkhI0Jw5cxQXF6e9e/dKIrtAFx8frwMHDsjr9erChQvyeDzkZxIPPvigvvnmG0k3tkG6XC49\n9thjZGcybf2sGzhwoA4dOqTLly+rsbFRX3/9tWJjYw2eFG0pLCyU0+nUK6+84lsbNGjQH87P5g3A\n64Hr1q3T559/rvvuu8+3pW7Lli06ceKE0tPT5fV6NWjQIKWkpBg9Ktrx9ttvq7y8XA6HQ+np6YqO\njjZ6JLRjx44dys7OVs+ePX3n3Zo1a5SWlqbm5mZ1795dGRkZcjgcRo+KdmRnZ+v+++/X448/rgUL\nFpCdSezYsUMFBQWy2WyaPXu2+vfvT34m4PF4lJqaqvr6el2/fl3z5s1Tr169lJKSQnYBqrq6WosX\nL9b58+flcDjUuXNn5eTkaOHChTdlVlxcrPfee092u13Tpk3TU089ZfT4ltdWfi0tLQoJCVF4eLhs\nNpv69u2r9PT0P5xfQJYiAAAAAPCXgNw+BwAAAAD+QikCAAAAYGmUIgAAAACWRikCAAAAYGmUIgAA\nAACWRikCAAAAYGmUIgCAXxw6dEhjxoxRY2Ojb2358uXKzMxsddyuXbtavQnfb5YsWaJNmzbd8v/f\nvXu35s+f/9cNDACwDEoRAMAv+vfvr0mTJmn16tWSpIMHD6qiokLz5s1rddy4ceN08OBBXbx40bfW\n3Nys4uJiPfvss+0+hs1m++sHBwD87VGKAAB+M3PmTH3//ffat2+f3njjDa1Zs0ZOp7PVMS6XS2PG\njNFnn33mWyspKVFMTIwiIiJUX1+vF198UcnJyZo8ebL27Nlz0+OMHDlSJ0+elCSVl5fr+eeflySd\nOXNGM2fOVHJyshITE1VWVtaBzxYAYBZBRg8AALAOh8Oh1atXa9KkSUpOTtbDDz/c5nGTJ0/W8uXL\nlZSUJEnas2ePEhMTJUm1tbVKSkrSqFGjVFtbqwkTJmjSpEntPu5vV5CWLVuml156SY8++qjq6uqU\nmJiokpIS2e38jRAArIxSBADwq6NHj6pHjx6qqqq65TGPPPKIrl69qmPHjqlz5846evSoRowYIUmK\njIzU5s2blZOTI4fDoUuXLt3xYx84cEAej8f3sdPpVH19vSIjI//8EwIAmB6lCADgN7W1tVq3bp22\nbdum1atXKzc3V9OnT2/z2ISEBO3evVsREREaP368HA6HJOmdd95Rz5499dZbb8nj8Sg2Nvamr/3v\n1xZdu3bN92+n06ns7Gx17tz5L35mAAAzY78AAMBvFi9erNmzZysyMlJpaWn64IMPfK/9+b2JEydq\n37592rt3rxISEnzrdXV16tu3rySpsLBQdrtdzc3Nrb62U6dOOnPmjCTpq6++8q3Hxsb6Xqt0/vx5\nrVq16i99fgAAc6IUAQD8Ij8/XzabTU8//bQkye1267XXXtOiRYvaPN7tduuhhx6Sw+FQr169fOtT\np05VVlaWkpOT5XK5NHToUL3++uutrg698MILSk1N1YwZM+RyuXzraWlpKikpUVJSkmbOnKm4uLgO\nerYAADOxeb1er9FDAAAAAIBRuFIEAAAAwNIoRQAAAAAsjVIEAAAAwNIoRQAAAAAsjVIEAAAAwNIo\nRQAAAAAsjVIEAAAAwNL+AzvFmPj3wCkzAAAAAElFTkSuQmCC\n",
118 "text/plain": [
119 "<matplotlib.figure.Figure at 0x7f95500cbe10>"
120 ]
121 },
122 "metadata": {},
123 "output_type": "display_data"
124 }
125 ],
126 "source": [
127 "n = 50\n",
128 "X = np.random.randint(0, 100, n)\n",
129 "epsilon = np.random.normal(0, 1, n)\n",
130 "\n",
131 "Y = 10 + 0.5 * X + epsilon\n",
132 "\n",
133 "linreg(X,Y)[0];\n",
134 "print \"Line of best fit: Y = {0} + {1}*X\".format(linreg(X, Y)[1], linreg(X, Y)[2])"
135 ]
136 },
137 {
138 "cell_type": "markdown",
139 "metadata": {},
140 "source": [
141 "This toy example has some generated noise, but all real data will also have noise. This is inherent in sampling from any sort of wild data-generating process. As a result, our line of best fit will never exactly fit the data (which is why it is only \"best\", not \"perfect\"). Having a model that fits every single observation that you have is a sure sign of [overfitting](https://www.quantopian.com/lectures/the-dangers-of-overfitting).\n",
142 "\n",
143 "For all fit models, there will be a difference between what the regression model predicts and what was observed, which is where residuals come in."
144 ]
145 },
146 {
147 "cell_type": "markdown",
148 "metadata": {},
149 "source": [
150 "## Residuals\n",
151 "\n",
152 "The definition of a residual is the difference between what is observed in the sample and what is predicted by the regression. For any residual $r_i$, we express this as \n",
153 "\n",
154 "$$r_i = Y_i - \\hat{Y_i}$$\n",
155 "\n",
156 "Where $Y_i$ is the observed $Y$-value and $\\hat{Y}_i$ is the predicted Y-value. We plot these differences on the following graph:"
157 ]
158 },
159 {
160 "cell_type": "code",
161 "execution_count": 4,
162 "metadata": {
163 "scrolled": false
164 },
165 "outputs": [
166 {
167 "data": {
168 "image/png": "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\nuQG73a6amhpJ0smTJ2W32/m56eK8vb21bt06BQYGOve1db6VlJTo5ptvlp+fn7y9vTVkyBAVFxcb\nVTa+01b/Fi9erHvuuUdSyzlZW1v7i/rnkqHIw8ND3t7ekqSNGzdqzJgxqqmpcX4CKrW86IqKCqNK\nxE+orKyU3W53bnfr1k2VlZUGVoSfYrVa5ePjI0l6++23dffdd6uhocE57aN79+6ccy4sJSVF8+bN\nc27TO/dx9OhRNTQ0aNq0aZo8ebIKCwv17bff0j83cO+99+r48eMaOXKkpkyZorlz53LuuTir1Sov\nL69W+37csxMnTqiqqqrV+xjed7qGtvrn4+Mjq9Wq5uZmbd26VaNHj77gfejl9M/wa4q2bdumt99+\nWxaLRQ6HQxaLRTNmzFBERIS2bNmizz77TK+88oqqqqqMLhW/ArfDch8FBQXKyclRRkaGRo4c6dxP\nD13Xjh07dOutt6pnz55tfp3euTaHw+GcQnf06FFNmTKlVc/on+vKzc3VNddco/Xr1+vQoUNKTExs\n9XV6534u1jN66dqam5s1e/ZshYeHa+jQoXrvvfdaff1y+md4KBo/frzGjx9/wf5t27bpH//4h9au\nXSubzdZqiFqSysvLFRwc3JGl4mcIDg5uNTJ04sQJBQUFGVgRLsfu3bu1fv16ZWRkyN/fX35+fmps\nbJSXlxfnnAv75z//qSNHjig/P1/l5eXy9PSUr68vvXMTgYGBGjx4sKxWq0JCQuTn5ycPDw/65waK\ni4t15513SpL69++v8vJy+fj40Ds38+PfdT169FBwcHCrkYXy8nINHjzYwCpxKfPnz1doaKji4+Ml\n6Rf1zyWnz33zzTfKyspSWlqaczjTw8NDffr0cc4HzM/Pd/4gguuJiIhQXl6eJOnTTz9Vjx495Ovr\na3BVuJQzZ85o5cqVeuWVV3T11VdLksLDw519zMvL45xzUatXr9a2bduUlZWl6OhoTZ8+XeHh4frg\ngw8k0TtXFxERob1798rhcKimpkb19fX0z0389re/1ccffyypZRqkr6+vbr/9dnrnZtr6XXfzzTfr\n4MGDOnPmjOrq6vTvf/9bYWFhBleKtuTm5srLy0tPP/20c9+gQYN+dv8sDhccD1y9erX+9re/6dpr\nr3VOqduwYYMOHz6sRYsWyeFwaNCgQZo7d67RpeISXnrpJe3bt082m02LFi1S//79jS4Jl5Cdna20\ntDT17t3bed4lJycrMTFRjY2N6tmzp5KSkmSz2YwuFZeQlpam6667TnfccYfmzJlD79xEdna2tm3b\nJovFovj4eA0YMID+uYH6+nolJCSoqqpKTU1NmjlzpkJDQzV37lx656JKSkq0YMECVVdXy2azqWvX\nrsrIyNC8efMu6Fl+fr5ee+01Wa1WxcbG6r777jO6fNNrq3/Nzc3y9vaWn5+fLBaL+vXrp0WLFv3s\n/rlkKAIAAACAjuKS0+cAAAAAoKMQigAAAACYGqEIAAAAgKkRigAAAACYGqEIAAAAgKkRigAAAACY\nGqEIANAhDh48qBEjRqiurs65b+nSpUpJSWl1XE5OTqub8H1v4cKFWr9+/UUff/v27Zo9e/aVKxgA\nYBqEIgBAhxgwYIDGjRunFStWSJL279+voqIizZw5s9Vx9957r/bv36/a2lrnvsbGRuXn5+vBBx+8\n5HNYLJYrXzgAoNMjFAEAOszUqVP1n//8R7t27dLzzz+v5ORkeXl5tTrG19dXI0aM0Pvvv+/cV1BQ\noMGDByswMFBVVVV6/PHHFRcXp4ceekg7duy44HmioqL0zTffSJL27dunRx55RJJ07NgxTZ06VXFx\ncYqJiVFhYWE7vloAgLvwMLoAAIB52Gw2rVixQuPGjVNcXJxuuOGGNo976KGHtHTpUk2aNEmStGPH\nDsXExEiSKioqNGnSJA0bNkwVFRUaM2aMxo0bd8nn/X4EacmSJXriiSd02223qbKyUjExMSooKJDV\nymeEAGBmhCIAQIc6dOiQQkJCVFxcfNFjbrnlFp09e1ZffPGFunbtqkOHDikyMlKSFBQUpFdffVUZ\nGRmy2Ww6efLkZT/33r17VV9f79z28vJSVVWVgoKCfvkLAgC4PUIRAKDDVFRUaPXq1dq8ebNWrFih\nTZs2acqUKW0eGx0dre3btyswMFCjR4+WzWaTJK1Zs0a9e/fWqlWrVF9fr7CwsAu+94fXFp07d875\nby8vL6Wlpalr165X+JUBANwZ8wUAAB1mwYIFio+PV1BQkBITE/XGG284r/35sbFjx2rXrl364IMP\nFB0d7dxfWVmpfv36SZJyc3NltVrV2NjY6nv9/f117NgxSdJHH33k3B8WFua8Vqm6ulrLly+/oq8P\nAOCeCEUAgA6RlZUli8Wi+++/X5Jkt9s1a9YszZ8/v83j7Xa7rr/+etlsNoWGhjr3T548WampqYqL\ni5Ovr6+GDh2q5557rtXo0GOPPaaEhAQ9+eST8vX1de5PTExUQUGBJk2apKlTpyo8PLydXi0AwJ1Y\nHA6Hw+giAAAAAMAojBQBAAAAMDVCEQAAAABTIxQBAAAAMDVCEQAAAABTIxQBAAAAMDVCEQAAAABT\nIxQBAAAAMLX/A2mdRVYU2mCNAAAAAElFTkSuQmCC\n",
169 "text/plain": [
170 "<matplotlib.figure.Figure at 0x7f95500cb090>"
171 ]
172 },
173 "metadata": {},
174 "output_type": "display_data"
175 }
176 ],
177 "source": [
178 "model, B0, B1 = linreg(X,Y)\n",
179 "\n",
180 "residuals = model.resid\n",
181 "plt.errorbar(X,Y,xerr=0,yerr=[residuals,0*residuals],linestyle=\"None\",color='Green');"
182 ]
183 },
184 {
185 "cell_type": "markdown",
186 "metadata": {},
187 "source": [
188 "We can pull the residuals directly out of the fit model."
189 ]
190 },
191 {
192 "cell_type": "code",
193 "execution_count": 5,
194 "metadata": {
195 "scrolled": true
196 },
197 "outputs": [
198 {
199 "name": "stdout",
200 "output_type": "stream",
201 "text": [
202 "[ 0.4616126 1.55896771 1.00595323 -0.92969553 -0.97642556 1.91867126\n",
203 " -0.19036639 2.45196655 0.95088289 0.72254804 -0.49832712 -0.38443602\n",
204 " -0.08126784 0.10741945 -1.77071504 -0.793265 -0.21592237 -1.0917219\n",
205 " 0.36573601 1.67416585 1.13164385 0.51603258 1.07430432 -0.46318056\n",
206 " -0.02875667 -0.36153253 0.12337483 -1.46223406 -1.59525781 0.17736508\n",
207 " -0.15310837 0.50982731 -1.62994098 -0.35550632 0.52423832 -0.07132131\n",
208 " -1.27189472 -0.06552032 0.30683582 -0.84899309 0.63629516 0.67761994\n",
209 " -0.32525429 -0.00386061 1.10690629 0.42042294 -1.48185375 -0.89396672\n",
210 " -0.12733034 -0.3511348 ]\n"
211 ]
212 }
213 ],
214 "source": [
215 "residuals = model.resid\n",
216 "print residuals"
217 ]
218 },
219 {
220 "cell_type": "markdown",
221 "metadata": {},
222 "source": [
223 "# Diagnosing Residuals\n",
224 "\n",
225 "Many of the assumptions that are necessary to have a valid linear regression model can be checked by identifying patterns in the residuals of that model. We can make a quick visual check by looking at the residual plot of a given model.\n",
226 "\n",
227 "With a residual plot, we look at the predicted values of the model versus the residuals themselves. What we want to see is just a cloud of unrelated points, like so:"
228 ]
229 },
230 {
231 "cell_type": "code",
232 "execution_count": 6,
233 "metadata": {
234 "scrolled": false
235 },
236 "outputs": [
237 {
238 "data": {
239 "image/png": "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\nMVdddVUuvfTSvP71r9/2uPHHaOvs7Mydd96Zk08+ebvxZuwxWq6++urMnj07z3/+8//g88Yeo+mA\nAw7Ihz5HyCawAAAIUUlEQVT0ocybNy/33ntvjjnmmDz++OPbnh/O+BOEmNB22223bNq0KVOnTs0v\nfvGL7LXXXlWXxAR2yy235Itf/GIuvfTSTJ8+3fijKe64447sueee2WeffTJz5sxs3rzZ2KMpbr75\n5vz85z/P9ddfn1/84hd5xjOekWc+85nGHk2x9957Z968eUmS/fbbL895znNyxx137NT40xrHhHb4\n4YfnuuuuS5Jcd911edWrXlVxRUxUAwMDOf/883PxxRfnWc96VhLjj+b40Y9+lC9/+ctJko0bN+bh\nhx/O4YcfnmuvvTaJscfoueCCC7JixYosX74873znO3PiiScaezTNqlWrsmTJkiRJT09Penp68va3\nv32nxl+tYd6SCeL222/PmWeemd7e3kyePDl77LFHLr300px++unZtGlTnv/85+ecc87J5MmTqy6V\nCairqytLlizJC1/4wjQajdRqtZx77rk544wzjD9G1WOPPZZPfOITuf/++/PYY4/lpJNOysEHH5xT\nTz3V2KNplixZkn333Td//ud/buzRFA899FA+/vGP51e/+lUajUZOPPHEzJw5M6eddtqwx58gBAAA\nFEdrHAAAUBxBCAAAKI4gBAAAFEcQAgAAiiMIAQAAxRGEAACA4ghCAGznvvvuyyGHHJJjjjkm7373\nu7No0aKcfPLJGRgY+KPfc8WKFVm8eHGS5OMf/3geeOCBJ33tbbfdlp///OfDfu/BwcHMnDlzu8ce\neuihtLa2pq+vb7vH169fnze84Q07fL+ZM2dm8+bNwz4/AOOTIATAE+y555752te+lqVLl+aKK67I\nXnvtlYsuumhE3vvzn/989tprryd9fuXKlbn33nuH/X5bb2D7u3bbbbe87nWvy7e+9a3tHr/66qvz\nrne9a4fv9/vvBcDENKXqAgAY+2bPnp3ly5cnSV7zmtdk/vz5ueeee/KFL3wh11xzTS6//PIkSUtL\nS84+++zsscceufzyy9PZ2Zl99tknz33uc7e912te85p89atfzb777puzzz47d9xxR2q1Wo499thM\nmTIl1157bX7yk59k8eLF2X///fOZz3wmjz76aB5++OF87GMfy+GHH57u7u6ccsop2XXXXfOKV7zi\nD9b8jne8I3/7t3+bo48+OkmyadOm3HDDDdvC0Re+8IXceuutmTx5cvbee++cf/75292BfMmSJRkc\nHMxHPvKR7ereb7/9csEFF2T9+vV57LHHMnv27Jxyyil54IEHcvLJJydJHnvssbS1teXtb3/7CP9O\nADBSBCEAdmhwcDDXX399Zs+eve2xF77whTn55JNz//3355JLLsmVV16ZZzzjGfna176Wiy++OCee\neGK+8IUv5IYbbsjuu++e9vb27LHHHtu97ze/+c309PRk+fLl6e/vzymnnJKOjo7MnDkzJ554Yl7x\nilfkgx/8YI477ri0trZm48aNWbBgQW688cYsWbIk73znO7Nw4cLccMMNf7DuWbNm5dFHH81dd92V\nF73oRfnOd76Tww47LHvuuWcGBwez6667ZtmyZZk0aVKOO+64fO9738vcuXOf9Oewdabo2muvzQMP\nPJClS5cmST70oQ/lX/7lX3L33XfnwAMPzFlnnZVNmzalq6vr6f7oARhFghAAT9DT05NjjjkmjUYj\nyZZQ8Z73vGfb84ceemiSLet5fvnLX+a4445Lo9HIb37zm+y77765++67s++++2b33XdPkrziFa/I\nnXfeud05fvzjH6e1tTVJ8qxnPSsXX3zxtue2nnfNmjV5+OGHtz0+derUbNy4MT/96U9z/PHHJ0le\n+cpXPun38Y53vCNf//rXc8opp+Tqq6/OwoULkySTJ0/OpEmTctRRR2XKlCnp7u7Ogw8+OKyfzZo1\na3Lbbbdt+/k89NBDue+++zJ37twcf/zxWbx4cebOnbvtXACMTYIQAE+wdY3Qk5k6deq2/7/sZS/b\nLsQk2dbuttUf2nygVqttCzxPZtq0aVmyZMkTZpOSZNKkLctcBwcHn/Tr3/KWt2TBggU59thj89Of\n/nTbjM/69euzcuXKrFy5MtOmTcuHP/zhHdaRbGmtS7Z8z21tbXnve9/7hNdcc801+eEPf5jVq1fn\nq1/9aq644oqnfF8AqmGzBACe4KkCylaHHHJIfvKTn2Tjxo1JtrSN3XTTTdl///3z85//PAMDA2k0\nGvnBD37whK899NBDc8sttyRJ+vv7s2DBgjz++OOZNGlSHn/88STJYYcdlm9/+9tJkt7e3nzuc59L\nkrzoRS/K+vXrkyS33nrrk9b3nOc8Jy95yUvyd3/3d3nTm960LTz19PTkBS94QaZNm5b77rsv//7v\n/74t6Gz93qdPn577778/SfLf//3f6e3tTbJlduz666/fFsD+8R//Mffcc0++9a1v5cc//nEOP/zw\nfPrTn879999v9zmAMcyMEABPsKOd0373ub322itnnHFGPvjBD+aZz3xmdtlll5x77rnZfffdc/zx\nx2fRokXZb7/9su++++aRRx7Z7uvnzZuX2267LQsXLszmzZvzvve9L1OmTMmcOXNy1lln5ROf+ETO\nPPPMfPKTn8y3v/3t/OY3v8kJJ5yQJGlvb89pp52W6667Loceeuh2mxz8vne+851pb2/Ptddeu+2x\nOXPm5Etf+lIWLVqUAw88MB/+8Idz0UUXpbW1dbv6Vq5cmaOPPjoHH3xwDjrooCTJ61//+tx+++1Z\nuHBhJk+enIMPPjj77bdfHn744Zx11lnbZsve//73bwteAIw9tcZwL/sBAABMEC5VAQAAxRGEAACA\n4ghCAABAcQQhAACgOIIQAABQHEEIAAAojiAEAAAU5/8DyB8tpQ7H5ZEAAAAASUVORK5CYII=\n",
240 "text/plain": [
241 "<matplotlib.figure.Figure at 0x7f9539f2d090>"
242 ]
243 },
244 "metadata": {},
245 "output_type": "display_data"
246 }
247 ],
248 "source": [
249 "plt.scatter(model.predict(), residuals);\n",
250 "plt.axhline(0, color='red')\n",
251 "plt.xlabel('Predicted Values');\n",
252 "plt.ylabel('Residuals');\n",
253 "plt.xlim([1,50]);"
254 ]
255 },
256 {
257 "cell_type": "markdown",
258 "metadata": {},
259 "source": [
260 "What we want is a fairly random distribution of residuals. The points should form no discernible pattern. This would indicate that a plain linear model is likely a good fit. If we see any sort of trend, this might indicate the presence of autocorrelation or heteroscedasticity in the model."
261 ]
262 },
263 {
264 "cell_type": "markdown",
265 "metadata": {},
266 "source": [
267 "## Appropriateness of a Linear Model\n",
268 "\n",
269 "By looking for patterns in residual plots we can determine whether a linear model is appropriate in the first place. A plain linear regression would not be appropriate for an underlying relationship of the form:\n",
270 "\n",
271 "$$Y = \\beta_0 + \\beta_1 X^2$$\n",
272 "\n",
273 "as a linear function would not be able to fully explain the relationship between $X$ and $Y$.\n",
274 "\n",
275 "If the relationship is not a good fit for a linear model, the residual plot will show a distinct pattern. In general, a residual plot of a linear regression on a non-linear relationship will show bias and be asymmetrical with respect to residual = 0 line while a residual plot of a linear regression on a linear relationship will be generally symmetrical over the residual = 0 axis.\n",
276 "\n",
277 "As an example, let's consider a new relationship between the variables $X$ and $Y$ that incorporates a quadratic term."
278 ]
279 },
280 {
281 "cell_type": "code",
282 "execution_count": 7,
283 "metadata": {
284 "scrolled": false
285 },
286 "outputs": [
287 {
288 "name": "stdout",
289 "output_type": "stream",
290 "text": [
291 "beta_0: 16.1629344528\n",
292 "beta_1: -2.2154769386\n"
293 ]
294 },
295 {
296 "data": {
297 "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0IAAAHxCAYAAABAnwyGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt83XV9P/DXaSvlUqAEBUQuO6IORfSBHXFd1XrD2ToV\npyWpXMQLA6MobKjloohDEND5wHUNOtEB0qYXLoqzQFGpIFqz4AVF5pgZFfqArkmDrSAt5fz+IM3P\nDtqmpTnfc/J9Pv+h35Nzzvcd3k2TVz7v7+dbqdVqtQAAAJTImKILAAAAqDdBCAAAKB1BCAAAKB1B\nCAAAKB1BCAAAKB1BCAAAKJ3CgtBjjz2Wo446Ktdff31RJQAAACVVWBCaM2dOJk6cWNTpAQCAEisk\nCP32t79Nb29vpk6dWsTpAQCAkiskCF188cWZNWtWEacGAADIuHqf8Prrr8+RRx6Z/fffP0lSq9W2\n+pqenp6RLgsAAGhykyZNGvZz6x6Eli5dmvvvvz8333xzHnzwwYwfPz777bdfJk+evMXXbcsnRePo\n6enRuyamf81N/5qX3jU3/WteetfctnXxpO5B6Itf/OLQn2fPnp0DDjhgqyEIAABgR3IfIQAAoHTq\nviL0pz784Q8XeXoAAKCkrAgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAACl\nIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgB\nAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAACl\nIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgB\nAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClIwgBAAClM67eJ/zjH/+YWbNmpa+vL+vWrcsHP/jB\nvPa1r613GQAAQInVPQh973vfy+GHH573v//9WbFiRd773vcKQgAAQF3VPQhNnz596M8rVqzIc5/7\n3HqXAAAAlFzdg9BG7e3tWblyZS677LKiSgAAAEqqUqvVakWd/J577snHP/7xfOtb39ri83p6eupU\nEQAA0KwmTZo07OfWfUXol7/8Zfbee+8897nPzaGHHpoNGzakv78/LS0tW3zdtnxSNI6enh69a2L6\n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\nPpjjjz8+xx13XE4//fSsX7++6BLZisceeyxHHXVUrr/++m3uX0MFoeXLl+eqq67KX/zFX2zy+AUX\nXJBPfvKTmTt3bn7/+9/ntttuy/3335/Fixenq6srnZ2d+dznPhf7PjSGr3/963nTm96UK6+8Mn//\n93+ff/qnf0ry9H2k8dx7771ZvHhxrrvuunzmM5/JrbfemkT/mskll1ySAw88cOhY75rDN7/5zey8\n886ZO3duzj///Fx44YVJ9K9ZdHd357777ktXV1fOP//8fPazny26JLZi2bJluffee9PV1ZV//dd/\nzQUXXJBLL700xx13XL7xjW/koIMOyjXXXFN0mWzFnDlzMnHixCTJpZdemuOPP37Y/WuoILTffvtl\n9uzZ2W233YYeW79+fR544IEcdthhSZLXv/71ueOOO7Js2bK85jWvydixY9PS0pLnPe95uffee4sq\nnT/x7Gc/OwMDA0mShx9+OC0tLVm/fn3uv//+p/SRxvP9738/06ZNS6VSyYtf/OJ8+MMf3uzXIY3n\nxz/+cXbfffe86EUvSrL5f0NpPG9729ty5plnJklaWlry8MMP+7ezifzoRz/KG9/4xiTJIYcckt//\n/vf5wx/+UHBVbMmRRx6ZSy+9NEmyxx575JFHHkl3d3de//rXJ0le97rX+XprcL/97W/T29ubqVOn\nplarpbu7O6973euSDK9/DRWEdtppp6c8tnr16uy5555Dxy0tLVm5cmX6+vrS0tKyyeP/+7//W5c6\n2bLjjz8+ixcvzrRp03Luuefmox/9aFavXj2U1hP9amQPPPBAVqxYkQ984AN573vfm3vuuedpvw71\nr/GsX78+nZ2dOe2004Ye07vmMW7cuIwfPz5JcsUVV+Stb32rfzubyKpVqzb5uWSvvfbKqlWrCqyI\nrRkzZkx22WWXJMmiRYvy2te+No8++mie9axnJUn23ntvX28N7uKLL86sWbOGjre1f+NGtLotWLhw\nYRYtWpRKpZJarZZKpZJTTz01U6ZM2a73MxZXjKfr46te9aq8+c1vzsknn5ylS5fmoosuyjnnnKNH\nDehP+5c8+XXU19eXV7/61fnqV7+anp6enHPOOZkzZ47+NZjNfe3NnDkzEyZM2OS5etd4tvQ98Oqr\nr87dd9+dyy67LH19fUWXynbyddc8brnlllxzzTW5/PLL86Y3vWnocT1sbNdff32OPPLI7L///k/7\n8eH0r7AgNGPGjMyYMWOrz2tpacnq1auHjh966KHsu+++2WefffLb3/52k8f32WefEamVzXu6Pp50\n0kk5/fTTkySTJ0/Oeeedl5aWlqFxuUS/GsXT9W/27Nl5/vOfnySZNGlSVqxYkb333lv/GszT9W7m\nzJm5/fbb8/Wvfz3Lly/PXXfdlc9//vN5+OGHh56jd41hc98DFy5cmFtvvTVz5swZGv3+v98D9a8x\n7bPPPpusAK1cuTLPec5zCqyI4bjtttvyla98JZdffnkmTJiQ3XbbLevWrctOO+3k663BLV26NPff\nf39uvvnmPPTQQ3nWs56VXXfddZv611CjcX9qY4obN25cnv/85w/tnnPzzTfn1a9+dV75yldm6dKl\nefzxx/PQQw9l5cqVecELXlBkyQw6+OCD87Of/SxJ8otf/CIHHXTQZvtI43n1q189dDH2f//3f2e/\n/fbL2LFj9a8JzJs3L11dXZk/f35e+9rX5txzz82hhx6aarWqd03gd7/7XebPn5/Zs2cPjXb4t7N5\nTJkyJTfddFOS5Fe/+lX23Xff7LrrrgVXxZasXbs2l1xySS677LLsvvvuSZ78Be7GPt50002+3hrY\nF7/4xSxcuDDz58/Pu971rnzoQx/K5MmTc+ONNyYZXv8KWxF6OkuWLMmXvvSlrFy5MsuWLcs///M/\n55prrslZZ52VT33qU6nVann5y1+eyZMnJ0mOOeaYHHvssalUKrYUbSAnn3xyzj777CxevDiVSiXn\nnHNOkmy2jzSWl7/85fnBD36Q9vb2JMm5556bRP+amd41h0WLFuXhhx/OSSedNDQu97WvfU3/msQR\nRxyRww47LO3t7Rk7dmw+9alPFV0SW/Gd73wnAwMDOe2004a+5i666KKcffbZmT9/fvbff/+84x3v\nKLpMtsFHPvKRfPzjH8+CBQuG1b9KzQAkAABQMg07GgcAADBSBCEAAKB0BCEAAKB0BCEAAKB0BCEA\nAKB0BCEAAKB0BCEANvHAAw/k8MMPzwknnJDjjz8+M2fOzBlnnJG1a9du93suXLgwZ555ZpLkH/7h\nH7Jy5crNPvenP/1p7r///mG/94YNG3LooYdu8tgf/vCHtLa2ZmBgYJPH77zzzrz5zW/e4vsdeuih\neeKJJ4Z9fgCakyAEwFPsvffeufLKK3PVVVdl3rx52WeffTJnzpwd8t5f+MIXss8++2z249dee21+\n97vfDfv9Nt4I8U/ttttueeMb35hvf/vbmzx+/fXXZ8aMGVt8v//7XgCMTuOKLgCAxnfkkUdm/vz5\nSZLXv/71mT59epYvX54vfelL+c53vpOrr746SdLS0pLzzz8/e+65Z66++up0dXXluc99bp7znOcM\nvdfrX//6XHHFFTnggANy/vnn55e//GUqlUpOPPHEjBs3LjfeeGPuuuuunHnmmTnooINy3nnn5Y9/\n/GMeeeSRnH766Zk8eXJ6e3vzsY99LLvsskte+cpXPm3N73znO/PZz342xx13XJJk3bp1WbJkyVA4\n+tKXvpQ77rgjY8eOzb777ptLLrkkY8eOHXr97Nmzs2HDhnz0ox/dpO4DDzwwX/ziF3PnnXfmscce\ny5FHHpmPfexjWblyZc4444wkyWOPPZa2trb87d/+7Q7uBAA7iiAEwBZt2LAhN998c4488sihx/7s\nz/4sZ5xxRh588MF8+ctfzqJFi/KsZz0rV155ZS677LJ86EMfype+9KUsWbIke+yxRzo6OrLnnntu\n8r7f+ta30tfXl/nz52fNmjX52Mc+ls7Ozhx66KH50Ic+lFe+8pU5+eST8/73vz+tra1ZtWpVjjnm\nmNxyyy2ZPXt23vWud6W9vT1Llix52ronTZqUP/7xj7n33nvzghe8IN/97nfzile8InvvvXc2bNiQ\nXXbZJXPnzs2YMWPy/ve/P7fffnumTp262f8PG1eKbrzxxqxcuTJXXXVVkuTDH/5wvv/97+e+++7L\nIYccknPPPTfr1q3LggULnun/egBGkCAEwFP09fXlhBNOSK1WS/JkqHjPe94z9PEjjjgiyZPX8/zv\n//5v3v/+96dWq2X9+vU54IADct999+WAAw7IHnvskSR55StfmXvuuWeTc/ziF79Ia2trkmT33XfP\nZZddNvSxjeddtmxZHnnkkaHHd9ppp6xatSq/+c1vcsoppyRJ/vIv/3Kzn8c73/nOXHfddfnYxz6W\n66+/Pu3t7UmSsWPHZsyYMTn22GMzbty49Pb2ZvXq1cP6f7Ns2bL89Kc/Hfr/84c//CEPPPBApk6d\nmlNOOSVnnnlmpk6dOnQuABqTIATAU2y8Rmhzdtppp6H/vuxlL9skxCQZGnfb6Ok2H6hUKkOBZ3PG\njx+f2bNnP2U1KUnGjHnyMtcNGzZs9vVvf/vbc8wxx+TEE0/Mb37zm6EVnzvvvDPXXnttrr322owf\nPz4f+chHtlhH8uRoXfLk59zW1pb3vve9T3nOd77znfzkJz/J4sWLc8UVV2TevHlbfV8AimGzBACe\nYmsBZaPDDz88d911V1atWpXkybGx733veznooINy//33Z+3atanVavnRj370lNceccQRue2225Ik\na9asyTHHHJPHH388Y8aMyeOPP54kecUrXpF///d/T5L09/fnggsuSJK84AUvyJ133pkkueOOOzZb\n37Of/ey8+MUvzuc+97m89a1vHQpPfX19ed7znpfx48fngQceyM9+9rOhoLPxc58wYUIefPDBJMl/\n/dd/pb+/P8mTq2M333zzUAD7l3/5lyxfvjzf/va384tf/CKTJ0/Opz/96Tz44IN2nwNoYFaEAHiK\nLe2c9qcf22effXL22Wfn5JNPzq677pqdd945F110UfbYY4+ccsopmTlzZg488MAccMABefTRRzd5\n/bRp0/LTn/407e3teeKJJ/K+970v48aNy5QpU3LuuefmrLPOyjnnnJNPfvKT+fd///esX78+H/zg\nB5MkHR0d+cQnPpGbbropRxxxxCabHPxf73rXu9LR0ZEbb7xx6LEpU6bka1/7WmbOnJlDDjkkH/nI\nRzJnzpy0trZuUt+1116b4447Locddlhe+MIXJkne9KY35ec//3na29szduzYHHbYYTnwwAPzyCOP\n5Nxzzx1aLTvppJOGghcAjadSG+6v/QAAAEYJv6oCAABKRxACAABKRxACAABKRxACAABKRxACAABK\nRxACAABKRxACAABK5/8BuPTDN+XNQ50AAAAASUVORK5CYII=\n",
298 "text/plain": [
299 "<matplotlib.figure.Figure at 0x7f9539f2d510>"
300 ]
301 },
302 "metadata": {},
303 "output_type": "display_data"
304 }
305 ],
306 "source": [
307 "n = 50\n",
308 "X = np.random.randint(0, 50, n)\n",
309 "epsilon = np.random.normal(0, 1, n)\n",
310 "Y_nonlinear = 10 - X**1.2 + epsilon\n",
311 "\n",
312 "model = sm.OLS(Y_nonlinear, sm.add_constant(X)).fit()\n",
313 "B0, B1 = model.params\n",
314 "residuals = model.resid\n",
315 "\n",
316 "print 'beta_0: ', B0\n",
317 "print 'beta_1: ', B1\n",
318 "plt.scatter(model.predict(), residuals);\n",
319 "plt.axhline(0, color='red')\n",
320 "plt.xlabel('Predicted Values');\n",
321 "plt.ylabel('Residuals');"
322 ]
323 },
324 {
325 "cell_type": "markdown",
326 "metadata": {},
327 "source": [
328 "The \"inverted-U\" shape shown by the residuals is a sign that a non-linear model might be a better fit than a linear one."
329 ]
330 },
331 {
332 "cell_type": "markdown",
333 "metadata": {},
334 "source": [
335 "## Heteroscedasticity\n",
336 "\n",
337 "One of the main assumptions behind a linear regression is that the underlying data has a constant variance. If there are some parts of the data with a variance different from another part the data is not appropriate for a linear regression. **Heteroscedasticity** is a term that refers to data with non-constant variance, as opposed to homoscedasticity, when data has constant variance.\n",
338 "\n",
339 "Significant heteroscedasticity invalidates linear regression results by biasing the standard error of the model. As a result, we can't trust the outcomes of significance tests and confidence intervals generated from the model and its parameters.\n",
340 "\n",
341 "To avoid these consequences it is important to use residual plots to check for heteroscedasticity and adjust if necessary.\n",
342 "\n",
343 "As an example of detecting and correcting heteroscedasticity, let's consider yet another relationship between $X$ and $Y$:"
344 ]
345 },
346 {
347 "cell_type": "code",
348 "execution_count": 8,
349 "metadata": {
350 "scrolled": false
351 },
352 "outputs": [
353 {
354 "data": {
355 "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1AAAAHxCAYAAABjxF1TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xuc1XW9L/7XmkHQIKWlQjvTmtCjO3d6lC1GbEUt2UHb\nruKgiJYdH7knteNGU7yzd3nJc04PjRztYZ5jCnLTSitELWXbsZDAbVoPa6uTt45chksgGrf1+8Nx\nfiKIX4FZazHzfD4ePuT7XWvWes+8Yb7f1/fz+X5WqVKpVAIAAMDbaqh1AQAAADsKAQoAAKAgAQoA\nAKAgAQoAAKAgAQoAAKAgAQoAAKCgmgWoJ598Mscee2wmT56cJJkwYUKOO+64nHLKKTnllFMyZ86c\nJMldd92V448/Ps3NzZk5c2atygUAAEivWrzpK6+8kquvvjrDhg3baP+5556b4cOHb/S866+/Pnfc\ncUd69eqV448/PiNGjMiuu+5a7ZIBAABqMwLVp0+f3Hjjjdljjz22+LzHHnssBx10UPr27Zs+ffrk\n0EMPzYIFC6pUJQAAwMZqEqAaGhrSu3fvTfbfdtttOfXUUzN+/PgsW7YsS5YsSblc7ny8XC5n8eLF\n1SwVAACgU02m8G3OZz7zmfTv3z8HHHBAvve972XSpEk55JBDNnpOpVJ529eZP39+V5UIAAB0E4MH\nD96qr6ubAPXRj360888f//jHc/nll+eTn/xkHnjggc79Cxcu3CRUbc7W/jDYfubPn68PNaYH9UEf\n6oM+1J4e1Ad9qA/6UHvbMuhSN8uYn3322fnDH/6QJHnkkUfyX/7Lf8lBBx2UJ554IqtWrcrLL7+c\nRx991F82AACgZmoyAvXYY4/l4osvztKlS9PY2JipU6fm7LPPzoQJE9K3b9/07ds3V1xxRfr06ZPx\n48fntNNOS0NDQ84666z069evFiUDAADUJkAdfPDBufvuuzfZf+yxx26yb8SIERkxYkQ1ygIAANii\nupnCBwAAUO8EKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIE\nKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAA\ngIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAqqa9\nfXmam2/PkCF3p7l5SpYuXV7rkuAd6VXrAgAA6DlaWmZl+vQxSUqZN6+SZGqmTTux1mVBYUagAACo\nmra2fklKHVuljm3YcQhQAABUTVPTyiSVjq1KmppW1bIceMdM4QMAoGpaW0clmZq2tn5palqV1taR\ntS4J3hEBCgCAqimX+7vniR2aKXwAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAA\nAFRNe/vyNDffniFD7k5z85QsXbq81iXBO+JzoACAQtrbl6elZVbHB6CuTGvrqJTL/WtdFjuYlpZZ\nmT59TJJS5s2rJJnqc6HYoQhQAEAhTnzZHtra+iUpdWyVOrZhx2EKHwBQiBNftoemppVJKh1blTQ1\nraplOfCOGYECAAppalrZMfJUihNftlZr66gkUzumgq5Ka+vIWpcE74gABQAU4sSX7aFc7m/qJzs0\nAQoAKMSJL4B7oAAAAAqrWYB68sknc+yxx2by5MlJkpdeeinjxo3LySefnHPOOSdr165Nktx11105\n/vjj09zcnJkzZ9aqXAAAgNoEqFdeeSVXX311hg0b1rnv2muvzbhx43Lbbbdln332yR133JFXXnkl\n119/fW655Zb84Ac/yC233JK//OUvtSgZAACgNgGqT58+ufHGG7PHHnt07nvkkUdy9NFHJ0mOPvro\nPPzww3nsscdy0EEHpW/fvunTp08OPfTQLFiwoBYlAwAA1CZANTQ0pHfv3hvte+WVV7LTTjslSXbf\nffcsWrQo7e3tKZfLnc8pl8tZvHhxVWsFAAB4XV2uwlepVN7R/jebP3/+9iyHraQPtacH9UEf6oM+\n1J4e1Ad9qA/6sOOqmwDVt2/frFmzJr17987ChQszcODADBgwYKMRp4ULF+aQQw5529caPHhwV5ZK\nAfPnz9eHGtOD+qAP9UEfak8P6oM+1Ad9qL1tCbB1s4z50KFDM3v27CTJ7Nmzc8QRR+Sggw7KE088\nkVWrVuXll1/Oo48+6i8bAEAP1N6+PM3Nt2fIkLvT3DwlS5cur3VJ9FA1GYF67LHHcvHFF2fp0qVp\nbGzM1KlT8/3vfz8XXHBBpk2blve973353Oc+l8bGxowfPz6nnXZaGhoactZZZ6Vfv361KBkAoFtq\nb1+elpZZaWvrl6amlWltHZVyuX+ty9pES8usTJ8+Jkkp8+ZVkkz1wc7URE0C1MEHH5y77757k/03\n33zzJvtGjBiRESNGVKMsAIAeZ0cJJm1t/ZKUOrZKHdtQfXUzhQ8AgOrbUYJJU9PKJK8vKFZJU9Oq\nWpZDD1Y3i0gAAFB9TU0rO0aeSqnnYNLaOirJ1I6phqvS2jqy1iXRQwlQAAA92I4STMrl/nU5tZCe\nR4ACAOjBBBN4Z9wDBQAAUJAABQAAUJAABQAAUJAABQAAUJAABQAAUJAABQAAUJAABQAAUJAABQAA\nUJAABQAAUJAABQAU0t6+PM3Nt2fIkLvT3DwlS5cur3VJAFXXq9YFAAA7hpaWWZk+fUySUubNqySZ\nmmnTTqx1WQBVZQQKACikra1fklLHVqljG6BnEaAAgEKamlYmqXRsVdLUtKqW5QDUhCl8AEAhra2j\nkkxNW1u/NDWtSmvryFqXBFB1AhQAUEi53N89T0CPZwofAABAQQIUAABAQQIUAABAQQIUAABAQQIU\nAABAQQIUAABAQQIUAABAQQIUAABAQQIUQIf29uVpbr49Q4bcnebmKVm6dHmtSwIA6kyvWhcAUC9a\nWmZl+vQxSUqZN6+SZGqmTTux1mUBAHXECBRAh7a2fklKHVuljm0AgP+fAAXQoalpZZJKx1YlTU2r\nalkOAFCHTOED6NDaOirJ1LS19UtT06q0to6sdUkAQJ0RoAA6lMv93fMEAGyRKXwAAAAFCVAAAAAF\nCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAA\nAAAFCVAAAAAFCVAAAAAF9ap1Aa975JFH8rWvfS377bdfKpVK9t9///y3//bfct5556VSqWTPPffM\nt771rey00061LhUAAOih6iZAJcmQIUNy7bXXdm5PmDAh48aNy4gRI/Ltb387d9xxR8aMGVPDCgEA\ngJ6srqbwVSqVjbYfeeSRHH300UmSo48+Og8//HAtygIAAEhSZyNQTz/9dFpaWrJixYp89atfzauv\nvto5ZW/33XfP4sWLa1whAADQk5Uqbx72qZGFCxdmwYIFGTlyZJ5//vmccsopWb16debOnZskee65\n53L++efn9ttv3+LrzJ8/vxrlAgAAO7DBgwdv1dfVzQjUwIEDM3LkyCTJ3nvvnT322CNPPPFE1qxZ\nk969e2fhwoUZMGBAodfa2h8G28/8+fP1ocb0oD7oQ33Qh9rTg/qgD/VBH2pvWwZd6uYeqLvvvjuT\nJk1KkrS3t6e9vT2f//znc8899yRJZs+enSOOOKKWJQIAAD1c3YxAHXPMMRk/fnxOPPHEVCqVTJw4\nMQcccEDOP//8TJ8+Pe973/vyuc99rtZlAgAAPVjdBKi+ffvmhhtu2GT/zTffXINqAAAANlU3U/gA\neE17+/I0N9+eIUPuTnPzlCxdurzWJQEAHepmBAqA17S0zMr06WOSlDJvXiXJ1EybdmKtywIAYgQK\noO60tfVLUurYKnVsAwD1QIACqDNNTSuTvP4RfZU0Na2qZTkAwBuYwgdQZ1pbRyWZmra2fmlqWpXW\n1pG1LgkA6CBAAdSZcrm/e54AoE6ZwgcAdLIKJMCWGYECADpZBRJgy4xAAQCdrAIJsGUCFADQySqQ\nAFtmCh8A0MkqkABbJkABAJ2sAgmwZabwAQDsIKySCLVnBAoA6lh7+/K0tMzqmFK3Mq2to1Iu9691\nWdSIVRKh9gQoAKhjTph5I6skQu2ZwgcAdcwJM29klUSoPSNQAFDHmppWdow8leKEGaskQu0JUADb\nyD0qdCUnzLyRVRKh9gQogG3kHhW6khNmgPriHiiAbeQeFQDoOQQogG3kpm4A6DlM4QPYRu5RAYCe\nQ4AC2EbuUQGAnsMUPgAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAgIIEKAAAquY///PZ\n7L33Venb9wfZe+8r8/TTz9a6JHhHfA4UAABVc8wxt+eFF85PUsrq1ZUcddTVef75C2pdFhRmBAro\ndtrbl6e5+fYMGXJ3mpunZOnS5bUuCYAOS5e+L0mpY6vUsQ07DiNQUCXt7cvT0jIrbW390tS0Mq2t\no1Iu9691Wd1SS8usTJ8+Jkkp8+ZVkkzNtGkn1rosAJKUyy9m9epKXgtRlZTLf651SfCOCFBQJU7q\nq6etrV/eeHXztW2A+tJTL6w9+OBJOeqoq7N06ftSLv85Dz7oWMiORYCC7WhLB0Mn9dXT1LSyI6S+\ndnWzqWlVrUsC2ERPvbA2aNAH3PPEDk2Agu1oSwdDJ/XV09o6KsnUjiC7Kq2tI2tdEsAmXFiDHZMA\nBdvRlg6GTuqrp1zu3yOu4gI7NhfWYMckQMF2tKWDoZN6AN7IhTXYMQlQ8A5t6T4nB0MAinJhDXZM\nAhS8Q1u6z8nBEACge/NBuvAOuekXAKDnEqDgHWpqWpmk0rHlpl8AgJ7EFD54h9znBADQcwlQ8A65\nzwm2zZYWYgGAeidAwTvk5A+2zZYWYgGAeidAwTvk5A+2jYVYANiRWUQC3iEnf7BtLMRCV2tvX57m\n5tszZMjdaW6ekqVLl9e6JKAb2SFGoK688so89thjKZVKufDCC/ORj3yk1iXRgzU1rewYeSrFyR+8\ncxZioauZKQB0pboPUPPmzcuzzz6bqVOn5umnn85FF12UqVOn1rosejAnf7BtLMRCVzNTAOhKdR+g\nfvWrX+UTn/hEkmTQoEH5y1/+kpdffjl9+/atcWX0VE7+AOqbmQJAV6r7ALVkyZL83d/9Xef2e97z\nnixZsmTLAeqDH+z6wtiiv1uzJundu9Zl9Gh6UB/0oT7oQ+1VswdTNmzId971taxb15BevTZk91/t\nknxwQlXeu975t1Af9KEO3HHHVn9p3QeoN6tUKm/7nL+uWVOFSng7+lB7elAf9KE+6EPtVbMHu+22\nU8efGrNu3bqsq9o7b2zDhg1ZsWJt1q9vSGPjhuy2205paKjtGl7+LdQHfdhx1X2AGjBgQJYsWdK5\nvWjRouy5555b/Jo+f/5zV5fF25g/f34GDx5c6zJ6ND2oD/pQH/Sh9npqD5qbb+9c0CJrKznh07Vd\n0KKn9qHe6EMdmD9/q7+07pcxHzZsWGbPnp0k+d3vfpeBAwfmXe96V42rAt7MssEAm7KgBXQ/dT8C\ndcghh+TAAw/MmDFj0tjYmEsvvbTWJQGbYdlggE1Z0AK6n7oPUEnyL//yL7UuAQppb1+elpZZHUuc\nr0xr66iUy/1rXVZVuMoKsCkffQHdzw4RoGBH0ZNHYVxlBdjU9v7oi558oQ7qhQAF21FPHoVxlRWg\n6/XkC3VQLwQotpqrYJvqyaMwPmAYoOv15At1UC8EKLaaq2CbMgpDT+IiClRfT75QB/VCgGKruQq2\nKaMw9CQuokD1uVAHtSdAsdVcBYOezUUUqD4X6qD2BCi2mqtg7IhMO9t+XEQBoCcSoNhqroKxIzLt\nbPtxEQWAnkiA6kYeeeS3OeqomXn11Q9m552fyUMPnZDBgw+qdVnviNEBupppZ9uPiygU1d6+PBMm\n/DrLl/+5W/5ud+yCnkWA6kaOOmpmXnllYpJSXnmlkiOOuCyrV+9YAcrowKYcmLcv086g+lpaZuW+\n+1rSXX+3O3ZBzyJAdSOvvvrBvPHK+mvbOxajA5tyYN6+TDujq7nosanu/ru9u39/wMYEqG5k552f\nySuv/P9X1nfe+U/b/JrVPhEwOrCpejowd4cTQ9PO6Gouemyqu/9u7+7fH7AxAaobeeihE3LEEZd1\n3AP1pzz00PHb/JrVPhEwOrCpejowOzGEt1dPFz3qRWvrqCxbdn2WL9+nW/5ud+yCnkWA6kYGDz5o\nu9/zVO0TAaMDm6qnA7MTQ3h79XTRo16Uy/1z5ZUfzeDBg2tdSpdw7IKeRYBii5wI1F49HZj9fYC3\nV08XPeB1r0/BfuKJ5O/+7g875BRsqBcCFFvkRIA38vcB3l49XfSA171xCvbvf28KNmwLAYotciLA\nG/n7ALBjMgUbtp+GWhcAAEDXampamaTSsWUKNmwLI1AAAN3c61OwX7sHKqZgwzYQoAAAurnXp2DP\nnz+/266GCNViCh8AAEBBAhQA0Km9fXmam2/PkCF3p7l5SpYuXV7rkgDqiil8AECnNy53/drnvlnu\nGuCNjEABAJ0sdw2wZQIUANDJctcAW2YKHwDQ6fXlrtva+qWpaZXlrgHeRIACulx7+/K0tMzqOCFb\nmdbWUSmX+9e6LGAzXl/uGoDNE6CALuemdACgu3APFNDl3JQOAHQXAhTQ5dyUDgB0F4Wm8M2ZMyfL\nli3LZz/72YwfPz6PP/54zj333IwYMaKr6wO6ATelAwDdRaEAdf3116e1tTVz5szJhg0b8sMf/jBn\nnHGGAAUU4qZ0AKC7KDSFb+edd065XM6cOXPymc98Jn379k1Dg9l/AABAz1IoBf31r3/NTTfdlIce\neihDhw7Nn/70p6xcubKrawMAAKgrhQLUv/3bv2XhwoW58sor06dPn/zyl7/Mueee29W1AQAA1JUt\n3gP1/PPPJ3ltCt8pp5zSuW/48OFdXxkAAECd2WKAOvXUU1MqlVKpVDZ5rFQq5ec//3mXFQYAAFBv\nthigfvGLX7zlY/Pnz9/uxQAAANSzQsuYr1q1Kj/+8Y+zbNmyJMnatWtzxx135Je//GWXFgcAAFBP\nCi0i8d//+3/PH/7wh9x55515+eWX84tf/CKXX355F5cG8Nba25enufn2DBlyd5qbp2Tp0uW1LgkA\n6AEKBag1a9bkX//1X7PXXnvl/PPPz6233pqf/OQnXV0bwFtqaZmV6dPHZN684zJ9+on553+eVeuS\nAIAeoPDnQK1cuTIbNmzIsmXL0r9///z5z3/u6toA3lJbW78kpY6tUsc2AEDXKnQP1Gc/+9n88Ic/\nzOjRozNq1KiUy+Xss88+XV0bwFtqalqZefMqeS1EVdLUtKrWJQEAPUChAHXiiSd2/nno0KFpb2/P\nhz/84S4rCuDttLaOSjI1bW390tS0Kq2tI2tdEl2svX15WlpmdfR8ZVpbR6Vc7l/rsgDoYQoFqGuv\nvXaTfffdd1++9rWvbfeCAIool/tn2rQT3/6JdBuv3/eWlDpGH6f6OwBA1RW6B6qxsbHzvw0bNmTu\n3LlZuXJlV9cGAJ3c90a9sioo9CyFRqDOPPPMjbbXr1+fs846a7sV8cMf/jDXXntt531Vw4YNy1e+\n8pU8+eSTufzyy9PQ0JD9998/l1122XZ7TwB2LO57o14ZHYWepVCAerN169blueee266FjBo1Kl//\n+tc32nfFFVfkkksuyYEHHpjx48fnoYceyhFHHLFd3xeAHYP73qhXRkehZykUoIYPH55S6bVfDJVK\nJX/5y1/yuc99rksLW7t2bV588cUceOCBSZJjjjkmDz/8sAAF0EO57416ZXQUepZCAWrKlCmdfy6V\nSunXr1923XXX7VrII488ktNPPz3r1q3L+eefn3K5nN12263z8XK5nMWLF2/X9wQA2FZGR6Fn2WKA\n+tGPfrTFL/7sZz/7jt9wxowZmTlzZkqlUiqVSkqlUj71qU/lrLPOyvDhw/Mf//EfOe+88/L9738/\nlUrlHb8+AEA1GR2FnqVU2UJKOe+885Iky5Yty5NPPpmDDz4469evz29/+9sccsgh+e53v9slRf3D\nP/xDHnjggYwYMSIPPPBAktfC3B//+MdN7pN6s/nz53dJTQAAQPcxePDgrfq6LY5AXXPNNUmSs88+\nO/fff3923nnnJMmqVaty8cUXb9Ubbs5NN92U3XbbLaNHj85TTz2VcrmcnXbaKR/60IeyYMGCHHro\nobn33nszbty4Qq+3tT8Mtp/58+frQ43pQX3Qh/qgD7WnB/VBH+qDPtTetgy6FLoH6s9//nNneEqS\nfv365c9//vNWv+mbHXfccTn33HNz1113ZcOGDfnmN7+ZJLnwwgtz6aWXplKp5OCDD87QoUO323sC\nAAC8U4UC1H777ZcxY8bkkEMOSUNDQx577LHOz2zaHgYOHJhbb711k/2DBg3K5MmTt9v7AAAAbItC\nAeqKK67Iww8/nD/+8Y+pVCo5/fTTLScO1K329uVpaZnVsSLWyrS2jkq53L/WZQEA3cAWA9Tvf//7\nfPjDH86vf/3rNDQ05IADDuh8bO7cuabUAXWppWVWpk8fk6TU8dksU62QBQBsF1sMUD/+8Y/z4Q9/\nONdff/0mj5VKJQEKqEttbf3y2gdaJkmpYxsAYNttMUBNmDAhSTa5P2nDhg1paGjouqoAtkFT08qO\nkadSkkqamlbVuiQAoJsodA/UnXfemdWrV+fEE0/MySefnJdeeimnn356TjrppK6uD+Ada20dlWRq\nxz1Qq9LaOrLWJQEA3UShADVt2rTceuutue+++7Lffvtl8uTJOfXUUwUooC6Vy/3d8wQAdIlC8/D6\n9OmT3r17Z86cORk5cqTpewAAQI9UOAlNnDgxCxYsyJAhQ/Loo49mzZo1XVkXAABA3SkUoP7H//gf\n+cAHPpAbbrghjY2NefHFFzNx4sSurg0AAKCuFApQAwYMyAc+8IH83//7f5MkBx10UPbff/8uLQwA\nAKDeFApQ11xzTe64447ceeedSZK777473/jGN7q0MAAAgHpTKEDNmzcvkyZNSt++fZMkX/3qV/O7\n3/2uSwsDAACoN4VX4UuSUqmUJFm/fn3Wr1/fdVUBAADUoUKfA3XooYfmggsuyKJFi/K///f/zuzZ\nszNkyJCurg0AAKCuFApQX/ziFzN37tzssssueemll3Laaaflb//2b7u6NgAAgLqyxQD1m9/8Juec\nc07WrFmT97znPbnxxhvzgQ98ILfddlu+8Y1v5N///d+rVScAAEDNbTFAffvb387/+T//J4MGDcrP\nf/7zXHrppdmwYUN22223zJgxo1o1AgAA1IUtLiLR0NCQQYMGJUk+/vGP58UXX8wpp5ySSZMmZeDA\ngVUpEAAAoF5sMUC9vure6/7mb/4mxx57bJcWBAAAUK8KLWP+ujcHKgAAgJ5ki/dAPfrooznqqKM6\nt9vb23PUUUelUqmkVCrlwQcf7OLyAAAA6scWA9Q999xTrToAAADq3hYD1F577VWtOgAAAOreO7oH\nCgAAoCcToAAAAAoSoAAAAAoSoAAAAAoSoAAAAAoSoAAAAAoSoAAAAAoSoAAAoMba25enufn2DBly\nd5qbp2Tp0uW1Lom3sMUP0gUAALpeS8usTJ8+Jkkp8+ZVkkzNtGkn1rosNsMIFAAA1FhbW78kpY6t\nUsc29UiAAgCAGmtqWpmk0rFVSVPTqlqWwxaYwgcAADXW2joqydS0tfVLU9OqtLaOrHVJvAUBCgAA\naqxc7u+epx2EKXwAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAFCVAAAAAF\nCVAAAAAFCVAAAAAFCVAAAAAF1SRAzZ07Nx/72McyZ86czn1PPvlkxowZk5NOOikTJ07s3H/TTTdl\n9OjRaW5u3uj5AAAA1Vb1APXcc8/l1ltvzd///d9vtP+KK67IJZdckilTpuQvf/lLHnroobzwwguZ\nNWtWpk6dmtbW1lx11VWpVCrVLhkAACBJDQLUe9/73kyaNCl9+/bt3Ld27dq8+OKLOfDAA5Mkxxxz\nTB5++OHMnTs3Rx55ZBobG1Mul7PXXnvlqaeeqnbJAAAASWoQoHr37r3JvmXLlmW33Xbr3C6Xy1m0\naFHa29tTLpc32r948eKq1AkAAPBmvbryxWfMmJGZM2emVCqlUqmkVCrlrLPOyrBhw7bq9YpO35s/\nf/5WvT7blz7Unh7UB32oD/pQe3pQH/ShPujDjqtLA9To0aMzevTot31euVzOsmXLOrcXLlyYgQMH\nZsCAAXnmmWc22j9gwIC3fb3BgwdvXcFsN/Pnz9eHGtOD+qAP9UEfak8P6oM+1Ad9qL1tCbA1Xcb8\n9RGlXr165UMf+lAWLFiQJLn33ntzxBFH5PDDD8+cOXOybt26LFy4MIsWLcq+++5by5IBAIAerEtH\noDbnvvvuy3XXXZdFixZl7ty5+c53vpM77rgjF154YS699NJUKpUcfPDBGTp0aJLkhBNOyNixY1Mq\nlTZa3hwAAKDaqh6gjj322Bx77LGb7B80aFAmT568yf6xY8dm7Nix1SgNAABgi2o6hQ8AAGBHIkAB\nAAAUJEABAGyD9vblaW6+PUOG3J3m5ilZunR5rUvabrrz9wZbq+r3QAEAdCctLbMyffqYJKXMm1dJ\nMjXTpp1Y67K2i+78vcHWMgIFALAN2tr6JSl1bJU6truH7vy9wdYSoAAAtkFT08oklY6tSpqaVtWy\nnO2qO39vsLVM4QMA2AatraOSTE1bW780Na1Ka+vIWpe03XTn7w22lgAFALANyuX+3fa+oO78vcHW\nMoUPAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEK\nAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACg\nIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEK\nAACgIAEAoiP5AAAW0UlEQVQKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACgIAEKAACg\nIAEKAACgIAEKAACgIAEKAACgoJoEqLlz5+ZjH/tY5syZ07lv3LhxGT16dMaNG5dTTjklv//975Mk\nN910U0aPHp3m5uaNng8AAFBtvar9hs8991xuvfXW/P3f//0mj1111VUZNGhQ5/YLL7yQWbNmZfr0\n6VmxYkXGjh2bI488MqVSqZolAwAAJKnBCNR73/veTJo0KX379t3ksUqlstH23Llzc+SRR6axsTHl\ncjl77bVXnnrqqWqVCgAAsJGqj0D17t37LR+77rrrsnTp0gwaNCgXXnhhlixZknK53Pl4uVzO4sWL\ns99++1WjVAAAgI10aYCaMWNGZs6cmVKplEqlklKplLPOOivDhg3b5Lmnnnpq9t9//+y9996ZOHFi\nJk+evMlz3jxC9Vbmz5+/zbWz7fSh9vSgPuhDfdCH2tOD+qAP9UEfdlxdGqBGjx6d0aNHF3ruJz7x\nic4/H3XUUbnnnnty+OGH55lnnuncv3DhwgwYMOBtX2vw4MHvvFi2q/nz5+tDjelBfdCH+qAPtacH\n9UEf6oM+1N62BNiaLmP+xhGlcePGZcmSJUmS3/zmN9lvv/1y+OGHZ86cOVm3bl0WLlyYRYsWZd99\n961VuQAAQA9X9Xug7rvvvlx33XVZtGhR5s6dm+985zu54447ctJJJ+X0009Pv379MmDAgJx55pnp\n06dPTjjhhIwdOzalUikTJ06sdrkAAACdqh6gjj322Bx77LGb7B85cmRGjhy5yf6xY8dm7Nix1SgN\nAABgi2o6hQ8AAGBHIkABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEAB\nAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAU\nJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEAB\nAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAU\nJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEABAAAUJEAB\nAAAU1Kvab7h+/fpcdNFFee6557Jhw4Z8/etfz6GHHponn3wyl19+eRoaGrL//vvnsssuS5LcdNNN\nmT17dhoaGtLS0pLhw4dXu2QAAIAkNQhQP/7xj7PzzjtnypQpeeqppzJhwoTMmDEjV1xxRS655JIc\neOCBGT9+fB566KE0NTVl1qxZmT59elasWJGxY8fmyCOPTKlUqnbZAAAA1Q9Qn/70p/OpT30qSVIu\nl7NixYqsXbs2L7zwQg488MAkyTHHHJOHH344ixYtypFHHpnGxsaUy+Xstddeeeqpp7LffvtVu2wA\nAIDq3wPVq1ev9OnTJ0lyyy235LjjjsuyZcvSv3//zueUy+UsWrQo7e3tKZfLG+1fvHhxtUsGAABI\n0sUjUDNmzMjMmTNTKpVSqVRSKpVy1llnZdiwYZk8eXJ+//vf54Ybbkh7e3uh16tUKoWeN3/+/G0p\nm+1EH2pPD+qDPtQHfag9PagP+lAf9GHH1aUBavTo0Rk9evQm+2fMmJEHH3ww119/fef0vGXLlnU+\nvnDhwgwcODADBgzIM888s9H+AQMGvO37Dh48ePt8A2y1+fPn60ON6UF90If6oA+1pwf1QR/qgz7U\n3rYE2KpP4Xv++eczbdq0TJo0KTvttFOS16b1fehDH8qCBQuSJPfee2+OOOKIHH744ZkzZ07WrVuX\nhQsXZtGiRdl3332rXTIAAECSGiwiMXPmzKxYsSKnn35657S+m2++ORdeeGEuvfTSVCqVHHzwwRk6\ndGiS5IQTTsjYsWNTKpUyceLEapcLAADQqeoB6pxzzsk555yzyf5BgwZl8uTJm+wfO3Zsxo4dW43S\nAAAAtqjqU/gAAAB2VAIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIU\nAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAABAQQIUAACwTdrbl6e5\n+fYMGXJ3mpunZOnS5bUuqcv0qnUBAADAjq2lZVamTx+TpJR58ypJpmbatBNrXVaXMAIFAABsk7a2\nfklKHVulju3uSYACAAC2SVPTyiSVjq1KmppW1bKcLmUKHwAAsE1aW0clmZq2tn5palqV1taRtS6p\nywhQAADANimX+3fbe57ezBQ+AACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACA\nggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQo\nAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAgnpV+w3X\nr1+fiy66KM8991w2bNiQr3/96zn00EMzbty4vPrqq9l5551TKpVywQUX5MMf/nBuuummzJ49Ow0N\nDWlpacnw4cOrXTIAAECSGgSoH//4x9l5550zZcqUPPXUU5kwYUJmzJiRJLnqqqsyaNCgzue+8MIL\nmTVrVqZPn54VK1Zk7NixOfLII1MqlapdNgAAQPUD1Kc//el86lOfSpKUy+WsWLGi87FKpbLRc+fO\nnZsjjzwyjY2NKZfL2WuvvfLUU09lv/32q2rNAAAASQ0CVK9evdKr12tve8stt+S4447rfOy6667L\n0qVLM2jQoFx44YVZsmRJyuVy5+PlcjmLFy8WoAAAgJooVd487LMdzZgxIzNnzkypVEqlUkmpVMpZ\nZ52VYcOGZfLkyXnwwQdzww03pLGxMffff3/233//7L333pk4cWL23nvvrF27Nu9617sybty4JMl5\n552Xz33uc/nYxz72lu85f/78rvp2AACAbmLw4MFb9XVdOgI1evTojB49epP9M2bMyIMPPpjrr78+\njY2NSZJPfOITnY8fddRRueeee3L44YfnmWee6dy/cOHCDBgwYIvvubU/CAAAgLdT9WXMn3/++Uyb\nNi2TJk3KTjvt1Ll/3LhxWbJkSZLkN7/5Tfbbb78cfvjhmTNnTtatW5eFCxdm0aJF2XfffatdMgAA\nQJIa3AM1c+bMrFixIqeffnrntL6bb745J510Uk4//fT069cvAwYMyJlnnpk+ffrkhBNOyNixY1Mq\nlTJx4sRqlwsAANCpS++BAgAA6E6qPoUPAABgRyVAAQAAFCRAAQAAFLRDBqgnn3wyxx57bCZPnpwk\neemllzJu3LicfPLJOeecc7J27dokyV133ZXjjz8+zc3NmTlzZi1L7pbe3If/9//+X770pS9l3Lhx\nOe2009Le3p5EH7ram/vwuoceeigHHHBA57Y+dJ0392DdunUZP358Ro8enS996UtZuXJlEj3oam/u\nw7x583LSSSfllFNOyRlnnKEPVfCtb30rY8aMyejRo3Pfffc5PtfI5vrg+Fx9b+7D6xyfq+eNPbj/\n/vu33/G5soNZvXp15Ytf/GLlsssuq9x2222VSqVSueCCCyqzZ8+uVCqVyv/6X/+rcvvtt1dWr15d\n+cd//MfKqlWrKq+++mrln/7pnyorVqyoZendyub6cP7551d+9rOfVSqVSuW2226rXHPNNfrQxTbX\nh0qlUvnrX/9aOfnkkytHHHFE5/P0oWtsrgeTJ0+ufPOb36xUKpXK9OnTK7/4xS/0oIttrg+f//zn\nK3/6058qlUqlcsMNN1S+973v6UMX+vWvf105/fTTK5VKpbJs2bLKUUcdVbngggsq99xzT6VScXyu\nlrfqw09/+tNKpeL4XC2b60Ol4vhcTZvrwfY6Pu9wI1B9+vTJjTfemD322KNz3yOPPJKjjz46SXL0\n0Ufn4YcfzmOPPZaDDjooffv2TZ8+fXLooYdmwYIFtSq729lcHy677LL84z/+Y5KkXC5n+fLl+tDF\nNteHJLnhhhsybty4zs9a04eus7kePPDAAznuuOOSvPaB4kcffbQedLHN9WGPPfbI0qVLkyQrVqzI\ne97zHn3oQocddliuvfbaJMmuu+6a1atXZ968eTnmmGOSOD5Xy5v78Morr+Tiiy/OJz/5ySSOz9Wy\nuT5UKhXH5yra3O+kBx98cLscn3e4ANXQ0JDevXtvtO+VV17p/Iu4++67Z9GiRWlvb0+5XO58Trlc\nzuLFi6taa3e2uT7ssssuaWhoyIYNGzJlypT80z/9U5YsWaIPXWhzfWhra8tTTz2VESNGdO7Th66z\nuR68+OKLmTNnTsaNG5fx48dnxYoVetDFNteH888/P2eeeWZGjhyZRx99NF/4whf0oQs1NDRkl112\nSfLaZz4eddRRjs818MY+zJgxI8OHD0/fvn0dn6tsc3149tlnHZ+raHO/k7bX8XmHC1Bvp/IWH2v1\nVvvZvjZs2JDzzjsvQ4cOzUc/+tFNHteHrnf11VfnggsuSOLfQ61UKpUMGjQot956a/bdd9/ceOON\nm30OXevf/u3f8t3vfjezZs3KIYcckilTpmzyHH3Y/u6///7ccccdueSSSzb6+fp9VF33339/7rzz\nzlxyySVJHJ9r5Y19uOqqqxyfa+CNv5M2bNiwXY7P3SJA9e3bN2vWrEmSLFy4MAMHDsyAAQM2So8L\nFy7MgAEDalVijzFhwoQ0NTWlpaUlSfShyhYuXJi2trb8y7/8S5qbm7N48eKMGzcuAwcO1Icq2mOP\nPXLYYYclSf7hH/4hTz/9tB7UwB/+8If81//6X5MkH/vYx/L444/rQxd76KGH8r3vfS833XRT+vXr\n5/hcI2/uQ+L4XAtv7MPLL7/s+FwDb/63sL2Oz90iQA0dOjSzZ89OksyePTtHHHFEDjrooDzxxBNZ\ntWpVXn755Tz66KMZPHhwjSvt3u6666707t07Z555Zue+gw8+WB+qaODAgZk9e3amTp2aadOmZc89\n98ytt97q30OVHXnkkfn3f//3JMnvfve7NDU16UEN7Lnnnnn66aeTJI8//nj22WcffehCq1atyjXX\nXJMbbrgh7373u5M4PtfC5vrg+Fx9b+6D43P1be7fwvY6PpcqO9hY4WOPPZaLL744S5cuTWNjY3bb\nbbd8//vfzwUXXJA1a9bkfe97X6688so0Njbm3nvvzU033ZSGhoaMGzcun/rUp2pdfrexuT5s2LAh\nffr0Sd++fVMqlbLvvvvm0ksv1YcutLk+3Hbbbdltt92SJB//+Mfz85//PEn0oYu81e+kb37zm1m8\neHH69u2bq6++OuVyWQ+60Ob68K//+q/51re+lZ122in9+/fPFVdckX79+ulDF5k+fXomTZqUD37w\ng6lUKimVSrn66qtz0UUXOT5X0Rv7kLw2Hemll17Ku9/9bsfnKtrcv4dvfetbee9735vE8bka3qoH\nV1555TYfn3e4AAUAAFAr3WIKHwAAQDUIUAAAAAUJUAAAAAUJUAAAAAUJUAAAAAUJUAAAAAUJUABs\ntRdffDEf+chHcsopp2TcuHE58cQTc+6552bVqlVb/ZozZszIhAkTkiTjx4/PokWL3vK5jz76aF54\n4YXCr71+/foccMABG+17+eWXM2TIkCxfvnyj/QsWLMgnP/nJLb7eAQcckA0bNhR+fwB2fAIUANtk\n9913zw9+8IPceuutuf322zNgwIBcf/312+W1/+f//J8ZMGDAWz5+55135vnnny/8eq9/mOIb9e3b\nN5/4xCfyk5/8ZKP9P/rRjzJ69Ogtvt6bXwuA7q9XrQsAoHs57LDDMm3atCTJMccck1GjRuW5557L\nddddl5/97GeZPHlykqRcLucb3/hGdtttt0yePDlTp07N3/zN32TPPffsfK1jjjkmt9xyS97//vfn\nG9/4Rp544omUSqV88YtfTK9evXLPPffk8ccfz4QJE7LPPvtk4sSJefXVV7N69eqcc845GTp0aNra\n2nLeeedll112yeGHH77Zmr/whS/km9/8Zk4++eQkyZo1a3Lfffd1hqrrrrsuDz/8cBobGzNw4MBc\nc801aWxs7Pz6SZMmZf369fna1762Ud177713vv3tb2fBggX561//msMOOyznnXdeFi1alHPPPTdJ\n8te//jXNzc35/Oc/v507AUBXEKAA2G7Wr1+fe++9N4cddljnvg9+8IM599xz89JLL+XGG2/MzJkz\ns9NOO+UHP/hBbrjhhnz1q1/Nddddl/vuuy+77rprWlpasttuu230unfddVfa29szbdq0rFy5Mued\nd15aW1tzwAEH5Ktf/WoOP/zwfOUrX8mXv/zlDBkyJEuWLMkJJ5yQ+++/P5MmTcrxxx+fMWPG5L77\n7tts3YMHD86rr76ap556Kvvuu29+/vOf59BDD83uu++e9evXZ5dddsmUKVPS0NCQL3/5y/nlL3+Z\n4cOHv+XP4fWRqXvuuSeLFi3KrbfemiQ588wz88ADD+TZZ5/NoEGDctlll2XNmjWZPn36tv7oAagS\nAQqAbdLe3p5TTjkllUolyWth5NRTT+18/JBDDkny2v1Kixcvzpe//OVUKpWsXbs273//+/Pss8/m\n/e9/f3bdddckyeGHH54nn3xyo/f47W9/myFDhiRJ3v3ud+eGG27ofOz19507d25Wr17dub93795Z\nsmRJ/vjHP+aMM85Iknz0ox99y+/jC1/4Qn74wx/mvPPOy49+9KOMGTMmSdLY2JiGhoaMHTs2vXr1\nSltbW5YtW1boZzN37tw8+uijnT+fl19+OS+++GKGDx+eM844IxMmTMjw4cM73wuA+idAAbBNXr8H\n6q307t278/8HHXTQRuEnSee0vNdtblGGUqnUGZTeSp8+fTJp0qRNRq+SpKHhtVt+169f/5Zf/5nP\nfCYnnHBCvvjFL+aPf/xj5wjTggULcuedd+bOO+9Mnz59cvbZZ2+xjuS1KYDJa99zc3NzvvSlL23y\nnJ/97Gd55JFHMmvWrNxyyy25/fbb3/Z1Aag9i0gAsE3eLti87iMf+Ugef/zxLFmyJMlr09t+8Ytf\nZJ999skLL7yQVatWpVKp5Fe/+tUmX3vIIYfkoYceSpKsXLkyJ5xwQtatW5eGhoasW7cuSXLooYfm\npz/9aZJk6dKlueKKK5Ik++67bxYsWJAkefjhh9+yvj322CN/+7d/m6uuuirHHXdcZ+hqb2/PXnvt\nlT59+uTFF1/Mf/zHf3QGpNe/9379+uWll15Kkvznf/5nli5dmuS10bh77723M7h997vfzXPPPZef\n/OQn+e1vf5uhQ4fm8ssvz0svvWQ1P4AdhBEoALbJllaie+NjAwYMyEUXXZSvfOUrede73pWdd945\nV199dXbdddecccYZOfHEE7P33nvn/e9/f1555ZWNvn7kyJF59NFHM2bMmGzYsCGnnXZaevXqlWHD\nhuWyyy7LhRdemIsvvjiXXHJJfvrTn2bt2rX553/+5yRJS0tLzj///MyePTuHHHLIRos/vNnxxx+f\nlpaW3HPPPZ37hg0blptvvjknnnhiBg0alLPPPjvXX399hgwZslF9d955Z04++eQceOCB2W+//ZIk\nI0aMyGOPPZYxY8aksbExBx54YPbee++sXr06l112Wefo3Omnn94Z2ACob6VK0UuHAAAAPZzLXQAA\nAAUJUAAAAAUJUAAAAAUJUAAAAAUJUAAAAAUJUAAAAAUJUAAAAAX9f7XLrmA4P/70AAAAAElFTkSu\nQmCC\n",
356 "text/plain": [
357 "<matplotlib.figure.Figure at 0x7f95500bff50>"
358 ]
359 },
360 "metadata": {},
361 "output_type": "display_data"
362 }
363 ],
364 "source": [
365 "n = 50\n",
366 "X = np.random.randint(0, 100, n)\n",
367 "epsilon = np.random.normal(0, 1, n)\n",
368 "Y_heteroscedastic = 100 + 2*X + epsilon*X\n",
369 "\n",
370 "model = sm.OLS(Y_heteroscedastic, sm.add_constant(X)).fit()\n",
371 "B0, B1 = model.params\n",
372 "residuals = model.resid\n",
373 "\n",
374 "plt.scatter(model.predict(), residuals);\n",
375 "plt.axhline(0, color='red')\n",
376 "plt.xlabel('Predicted Values');\n",
377 "plt.ylabel('Residuals');"
378 ]
379 },
380 {
381 "cell_type": "markdown",
382 "metadata": {},
383 "source": [
384 "Heteroscedasticity often manifests as this spread, giving us a tapered cloud in one direction or another. As we move along in the $x$-axis, the magnitudes of the residuals are clearly increasing. A linear regression is unable to explain this varying variability and the regression standard errors will be biased.\n",
385 "\n",
386 "### Statistical Methods for Detecting Heteroscedasticity\n",
387 "\n",
388 "Generally, we want to back up qualitative observations on a residual plot with a quantitative method. The residual plot led us to believe that the data might be heteroscedastic. Let's confirm that result with a statistical test.\n",
389 "\n",
390 "A common way to test for the presence of heteroscedasticity is the Breusch-Pagan hypothesis test. It's good to combine the qualitative analysis of a residual plot with the quantitative analysis of at least one hypothesis test. We can add the White test as well, but for now we will use only Breush-Pagan to test our relationship above. A function exists in the `statsmodels` package called `het_breushpagan` that simplifies the computation:"
391 ]
392 },
393 {
394 "cell_type": "code",
395 "execution_count": 9,
396 "metadata": {
397 "scrolled": true
398 },
399 "outputs": [
400 {
401 "name": "stdout",
402 "output_type": "stream",
403 "text": [
404 "0.000790491370489\n",
405 "The relationship is heteroscedastic.\n"
406 ]
407 }
408 ],
409 "source": [
410 "breusch_pagan_p = smd.het_breushpagan(model.resid, model.model.exog)[1]\n",
411 "print breusch_pagan_p\n",
412 "if breusch_pagan_p > 0.05:\n",
413 " print \"The relationship is not heteroscedastic.\"\n",
414 "if breusch_pagan_p < 0.05:\n",
415 " print \"The relationship is heteroscedastic.\""
416 ]
417 },
418 {
419 "cell_type": "markdown",
420 "metadata": {},
421 "source": [
422 "We set our confidence level at $\\alpha = 0.05$, so a Breusch-Pagan p-value below $0.05$ tells us that the relationship is heteroscedastic. For more on hypothesis tests and interpreting p-values, refer to the [lecture on hypothesis testing.](https://www.quantopian.com/research/notebooks/Cloned%20from%20%22Quantopian%20Lecture%20Series%3A%20Hypothesis%20Testing%22%201.ipynb). Using a hypothesis test bears the risk of a false positive or a false negative, which is why it can be good to confirm with additional tests if we are skeptical."
423 ]
424 },
425 {
426 "cell_type": "markdown",
427 "metadata": {},
428 "source": [
429 "### Adjusting for Heteroscedasticity\n",
430 "\n",
431 "If, after creating a residual plot and conducting tests, you believe you have heteroscedasticity, there are a number of methods you can use to attempt to adjust for it. The three we will focus on are differences analysis, log transformations, and Box-Cox transformations."
432 ]
433 },
434 {
435 "cell_type": "markdown",
436 "metadata": {},
437 "source": [
438 "#### Differences Analysis\n",
439 "\n",
440 "A differences analysis involves looking at the first-order differences between adjacent values. With this, we are looking at the changes from period to period of an independent variable rather than looking directly at its values. Often, by looking at the differences instead of the raw values, we can remove heteroscedasticity. We correct for it and can use the ensuing model on the differences."
441 ]
442 },
443 {
444 "cell_type": "code",
445 "execution_count": 10,
446 "metadata": {
447 "scrolled": true
448 },
449 "outputs": [],
450 "source": [
451 "# Finding first-order differences in Y_heteroscedastic\n",
452 "Y_heteroscedastic_diff = np.diff(Y_heteroscedastic)"
453 ]
454 },
455 {
456 "cell_type": "markdown",
457 "metadata": {},
458 "source": [
459 "Now that we have stored the first-order differences of `Y_heteroscedastic` in `Y_heteroscedastic_diff` let's repeat the regression and residual plot to see if the heteroscedasticity is still present:"
460 ]
461 },
462 {
463 "cell_type": "code",
464 "execution_count": 11,
465 "metadata": {},
466 "outputs": [
467 {
468 "data": {
469 "image/png": "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\n3m38jDPO2G1s9OjRGT16dDXKAgAA2Ku6WcIHAABQ7wQoAACAggQoAACAggQoAACAggQoAACAggQo\nAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACA\nggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQo\nAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACAggQoAACA\nggQoAACAggQoAACAggQoAACAggQoAKBm2ts3pbn5vgwf/nCam2dlw4ZNtS4JYK9617oAAKDnamlZ\nmLlzJyQpZfnySpLZmTNnYq3LAtgjM1AAQM2sWdMvSWnnVWnnNUD9EqAAgJppatqcpLLzqpKmpi21\nLAfgbVnCBwDUTGvr2CSzs2ZNvzQ1bUlr65halwSwVwIUAFAz5XJ/e56AbsUSPgAAgIIEKAAAgIIE\nKAAAgIIEKAAAgIJqFqBWr16dM844IzNnzkySvPjii5k8eXI+//nP56KLLsq2bduSJA899FDOOeec\nNDc3Z/78+bUqFwAAoDYB6tVXX80NN9yQkSNHdozddNNNmTx5cu69994cddRRWbBgQV599dXccsst\nufvuu/Od73wnd999d15++eValAwAAFCbANW3b9/cdtttOfTQQzvGli1bltNOOy1Jctppp2XJkiVZ\ntWpVhgwZksbGxvTt2zcnnnhiVq5cWYuSAQAAahOgGhoa0qdPn13GXn311RxwwAFJkkMOOSRtbW1p\nb29PuVzueE65XM66deuqWisAAMAb6vJGupVK5R2Nv9mKFSv2ZTmwV/qNatJvVJueo5r0G91B3QSo\nxsbGbN26NX369MnatWszcODADBgwYJcZp7Vr12bo0KFv+1rDhg3rylKhw4oVK/QbVaPfqDY9RzXp\nN6qpM2G9bo4xHzFiRBYtWpQkWbRoUU4++eQMGTIkTz31VLZs2ZJXXnklTz75pP+wAACAmqnJDNSq\nVatyxRVXZMOGDenVq1dmz56dO++8M1//+tczZ86cHH744Tn77LPTq1evTJs2Leeee24aGhoyderU\n9OvXrxYlAwAA1CZAnXDCCXn44Yd3G7/rrrt2Gxs9enRGjx5djbIAAAD2qm6W8AEAANQ7AQoAAKAg\n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\nSqVSpk6dmpEjR+723C984Qs59thjc+SRR+baa6/NzJkzd3vOm2eo9mTFihWdrh2K0m9Uk36j2vQc\n1aTf6A66NECNGzcu48aNK/TcT33qUx1/PvXUU/PII4/kpJNOyq9+9auO8bVr12bAgAFv+1rDhg17\n58XCu7BixQr9RtXoN6pNz1FN+o1q6kxYr+kx5n84ozR58uSsX78+SfLv//7vOeaYY3LSSSdl8eLF\n2b59e9auXZu2trYcffTRtSoXAADo4aq+B+qxxx7LzTffnLa2tixdujT/9E//lAULFuRzn/tczjvv\nvPTr1y8DBgzIBRdckL59+2b8+PGZNGlSSqVSrr322mqXCwAA0KHqAeqMM87IGWecsdv4mDFjMmbM\nmN3GJ02alEmTJlWjNADosdrbN6WlZWHWrOmXpqbNaW0dW+uSAOpS1QMUAFB/WloWZu7cCUlKWb68\nkmR2vva1P6l1WQB1p6Z7oACA+rBmTb8kb9yovrTzGoA3E6AAgDQ1bU7yxuFOlTQ1ballOQB1yxI+\nAGDnnqfZO/dAbUlr65isWfNMrcsCqDsCFACQcrl/5syZuMvYmjU1KgagjlnCBwAAUJAABQAAUJAl\nfFCQe6QA+4O3ei8rl/vXuiyAbkOAgoLcIwXYH7zVe9mb9z4BsGeW8EFB7pEC7A+8lwF0jgAFBblH\nCrA/8F4G0DmW8EFB7pEC7A/e6r0MgOIEKCjIPVKA/cFbvZcBUJwlfAAAAAUJUAAAAAUJUAAAAAUJ\nUAAAAAUJUAAAAAUJUAAA1Ex7+6Y0N9+XKVN+mebmWdmwYVOtS4K9cow5AAA109KyMHPnTkhSyi9+\nUUky21H71DUzUAAA1MyaNf2SlHZelXZeQ/0SoAAAqJmmps1JKjuvKmlq2lLLcuBtWcIHAEDNtLaO\nTTI7Tz2V/NmfJa2tY2pdEuyVAAUAQM2Uy/0zZ87ErFixIsOGDat1OfC2LOEDAAAoSIACAAAoSIAC\nAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAo\nSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIACAAAoSIAC\nAAAoSIACAAAoqHe1v+GOHTty+eWX59lnn81rr72Wr33taznxxBOzevXqXHPNNWloaMixxx6bq6++\n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\n",
470 "text/plain": [
471 "<matplotlib.figure.Figure at 0x7f9539e31710>"
472 ]
473 },
474 "metadata": {},
475 "output_type": "display_data"
476 }
477 ],
478 "source": [
479 "model = sm.OLS(Y_heteroscedastic_diff, sm.add_constant(X[1:])).fit()\n",
480 "B0, B1 = model.params\n",
481 "residuals = model.resid\n",
482 "\n",
483 "plt.scatter(model.predict(), residuals);\n",
484 "plt.axhline(0, color='red')\n",
485 "plt.xlabel('Predicted Values');\n",
486 "plt.ylabel('Residuals');"
487 ]
488 },
489 {
490 "cell_type": "code",
491 "execution_count": 12,
492 "metadata": {},
493 "outputs": [
494 {
495 "name": "stdout",
496 "output_type": "stream",
497 "text": [
498 "0.0835164211771\n",
499 "The relationship is not heteroscedastic.\n"
500 ]
501 }
502 ],
503 "source": [
504 "breusch_pagan_p = smd.het_breushpagan(residuals, model.model.exog)[1]\n",
505 "print breusch_pagan_p\n",
506 "if breusch_pagan_p > 0.05:\n",
507 " print \"The relationship is not heteroscedastic.\"\n",
508 "if breusch_pagan_p < 0.05:\n",
509 " print \"The relationship is heteroscedastic.\""
510 ]
511 },
512 {
513 "cell_type": "markdown",
514 "metadata": {},
515 "source": [
516 "*Note: This new regression was conducted on the differences between data, and therefore the regression output must be back-transformed to reach a prediction in the original scale. Since we regressed the differences, we can add our predicted difference onto the original data to get our estimate:*\n",
517 "\n",
518 "$$\\hat{Y_i} = Y_{i-1} + \\hat{Y}_{diff}$$"
519 ]
520 },
521 {
522 "cell_type": "markdown",
523 "metadata": {},
524 "source": [
525 "#### Logarithmic Transformation\n",
526 "\n",
527 "Next, we apply a log transformation to the underlying data. A log transformation will bring residuals closer together and ideally remove heteroscedasticity. In many (though not all) cases, a log transformation is sufficient in stabilizing the variance of a relationship."
528 ]
529 },
530 {
531 "cell_type": "code",
532 "execution_count": 13,
533 "metadata": {},
534 "outputs": [],
535 "source": [
536 "# Taking the log of the previous data Y_heteroscedastic and saving it in Y_heteroscedastic_log\n",
537 "Y_heteroscedastic_log = np.log(Y_heteroscedastic)"
538 ]
539 },
540 {
541 "cell_type": "markdown",
542 "metadata": {},
543 "source": [
544 "Now that we have stored the log transformed version of `Y_heteroscedastic` in `Y_heteroscedastic_log` let's repeat the regression and residual plot to see if the heteroscedasticity is still present:"
545 ]
546 },
547 {
548 "cell_type": "code",
549 "execution_count": 14,
550 "metadata": {},
551 "outputs": [
552 {
553 "data": {
554 "image/png": "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\n7t0706ZNq2BVAAAA26v4CNPb3/72TJkyJb169Sq8jxElAACgFlQ8MHXv3n2n99m4cWMmTpyYs846\nK9dff337FwUAALADpXI7DufMmTMnc+fOTalUSrlcTqlUygUXXJARI0Zk0qRJ+eAHP5iRI0du97jZ\ns2fn9NNPT5KcffbZueiiizJw4MDC77Nw4cL2+hEAAIBOYsiQIbv8mHY9h2ns2LEZO3bsLj+uqamp\n5evhw4dnyZIlrQamZPd+ePauhQsX6kOV6UFt0IfaoA/Vpwe1QR9qgz5U3+4OslR1WfEdDW4tXbo0\n48ePz5YtW9Lc3JzFixfn0EMPrUJ1AABAV1fxVfLmz5+fq6++OitXrsyCBQvygx/8IPPmzcuPfvSj\nDBs2LIMGDcqAAQMyZsyYdO/ePe9///tz1FFHVbpMAACAygemk046KSeddNJ2t59//vktX0+YMCET\nJkyoZFkAAADbqeqUPAAAgFomMAEAABQQmAAAAAoITAAAAAUEJgAAgAICEwAAQAGBCQAAoIDABAAA\nUEBgAgAAKCAwAQAAFBCYAAAACghMAAAABQQmAACAAgITAABAAYEJAACggMAEAABQQGACAAAoIDAB\nAAAUEJgAAAAKCEwAAAAFBCYAAIACAhMAAEABgQkAAKCAwAQAAFBAYAIAACggMAEAABQQmAAAAAoI\nTAAAAAUEJgAAgAICEwAAQAGBCQAAoIDABAAAUEBgAgAAKCAwAQAAFBCYAAAACghMAAAABQQmAACA\nAgITAABAAYEJAACggMAEAABQQGACAAAoIDABAAAUEJgAAAAKCEwAAAAFBCYAAIACAhMAAEABgQkA\nAKCAwAQAAFBAYAIAACggMAEAABQQmAAAAAoITAAAAAUEJgAAgAICEwAAQAGBCQAAoEC3Sn/D5ubm\nfOMb38jTTz+dLVu25Ctf+UqOOeaYbe7z05/+NNOmTUt9fX3Gjh2bMWPGVLpMAACAygem2267LT17\n9syMGTPy+9//PpMmTcqcOXNa9r/88suZOnVq5s2bl27dumXMmDEZPXp0evfuXelSAQCALq7iU/JO\nP/30TJo0KUnS0NCQF198cZv9jz32WI4++uj06tUrPXr0yDHHHJNFixZVukwAAIDKB6Zu3bqlR48e\nSZIbbrghp5122jb7V61alYaGhpbthoaGPP/88xWtEQAAuprVq9emqWlmhg69PU1NM7Jmzdpql1QT\n2nVK3pw5czJ37tyUSqWUy+WUSqVccMEFGTFiRG688cb8x3/8R6699tpWn6NcLrfpey1cuHBvlMwe\n0ofq04MfdIBLAAASb0lEQVTaoA+1QR+qTw9qgz7Uhlrvw6RJD2f+/PFJSnnkkXJeeGFqLr30vdUu\nq+raNTCNHTs2Y8eO3e72OXPm5N57783UqVNTX1+/zb7GxsZtRpRWrFiRwYMH7/R7DRkyZM8LZo8s\nXLhQH6pMD2qDPtQGfag+PagN+lAbOkIf1q5dnqT0+lYpa9ceXPM174rdDawVn5K3bNmyzJ49O1Om\nTMmb3vSm7fYPGjQoTzzxRNavX58NGzZk8eLFnapRAABQi/r3X5dk6+yucvr3X1/NcmpGxVfJmzt3\nbl588cWcd955LdP0rrvuulx33XUZNmxYBg0alAkTJuRTn/pU6urqcsEFF2TfffetdJkAANClXHPN\nqUlmZenSfdO///pcc80p1S6pJlQ8MH3xi1/MF7/4xe1uP//881u+Hj16dEaPHl3JsgAAoEtraOiT\n2bPPrHYZNafiU/IAAAA6CoEJAACggMAEAABQQGACAAAoIDABAAAUEJgAAAAKCEwAAAAFBCYAAIAC\nAhMAAEABgQkAAKCAwAQAAFBAYAIAACggMAEAABQQmAAAAAoITAAAAAUEJgAAgAICEwAAQAGBCQAA\noIDABAAAUEBgAgAAKCAwAQAAFBCYAAAACghMAAAABQQmAACAAgITAABAAYEJAACggMAEAABQQGAC\nAAAoIDABAAAUEJgAAAAKCEwAAAAFBCYAAIACAhMAAEABgQkAAKCAwAQAAFBAYAIAACggMAEAABQQ\nmAAAAAoITAAAAAUEJgAAgAICEwAAQAGBCQAAoIDABAAAUEBgAgAAKCAwAQAAFBCYAAAACghMAAAA\nBQQmAACAAgITAABAAYEJAACggMAEAABQQGACAAAoIDABAAAUEJgAAAAKCEwAAAAFulX6GzY3N+cb\n3/hGnn766WzZsiVf+cpXcswxx2xzn4EDB2bIkCEpl8splUq54YYbUiqVKl0qAADQxVU8MN12223p\n2bNnZsyYkd///veZNGlS5syZs819evfunWnTplW6NAAAgG1UPDCdfvrp+Zu/+ZskSUNDQ1588cXt\n7lMulytdFgAAwHYqfg5Tt27d0qNHjyTJDTfckNNOO227+2zcuDETJ07MWWedleuvv77CFQIAALym\n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\n996bK6+8ssoVd06t9WGrXZ2rzq7bWR8uu+yyfPKTn8yIESOqWGXn1loPmpub8/Wvfz2333579tln\nnzz++OPbrKzK3tNaH04++eScfPLJSZJnn302kyZNEpbaSWt9WL9+fT7zmc/kn/7pn9KjR488+uij\nLX0pUip3wL8iW98glsvlvOUtb8moUaOSJKeffnquv/76bc4doP3sqA9bly3t1q1bBg8enIkTJ1a7\nzE5vR334+c9/nqlTp6a5uTnnn3++JfbbwYYNGzJhwoS8+OKLKZfLGT9+fFavXt3Sg0cffTRXXHFF\nkuSDH/xgzj333OoW3EntrA+f/OQn89xzz+W///u/c9BBB+Xcc8/NRz/60WqX3em01oe//uu/ztCh\nQ/NXf/VXKZfLKZVK+du//duMHTu22mV3Kjv7Xbj11lvzk5/8JN26dcsRRxyR73znO9UuuVPaWR+2\n2hqYpk2bVsVqO6+d9WH69OmZN29eevXqlSOPPHKHS7//qQ4ZmAAAACqhQ62SBwAAUEkCEwAAQAGB\nCQAAoIDABAAAUEBgAgAAKCAwAQAAFBCYANglzz77bI466qicc845+fjHP54zzzwzEydOzPr163f7\nOefMmZNJkyYlSSZMmJCVK1cW3nfx4sV55pln2vzczc3NOeKII7a5bcOGDRk6dGjWrl27ze2LFi3K\nBz/4wVaf74gjjsiWLVva/P0B6NgEJgB22dve9rZMmzYt06dPz8yZM9PY2JipU6fulee+8sor09jY\nWLj/5ptvzrJly9r8fFsvlvqnevXqlVGjRuWOO+7Y5vZbb711pxdU/fPnAqBz61btAgDo+N7znvdk\n9uzZSZITTzwxp556ap5++ulcffXV+dd//dfceOONSZKGhoZcfPHF2W+//XLjjTdm1qxZecc73pED\nDjig5blOPPHE3HDDDTnwwANz8cUX54knnkipVMq5556bbt265a677spvfvObTJo0KQcffHC++93v\n5pVXXslLL72UL37xixk+fHiWLl2aL3/5y9lnn30ybNiwHdb80Y9+NJdcckk+9rGPJUk2bdqU+fPn\nt4Soq6++Og8++GDq6+vTt2/ffP/73099fX3L46dMmZLm5uZceOGF29R90EEH5aqrrsqiRYuycePG\nvOc978mXv/zlrFy5MhMnTkySbNy4MU1NTfmf//N/7uVOALC3CUwA7JHm5ubcfffdec973tNy27ve\n9a5MnDgxzz33XH74wx9m7ty5edOb3pRp06bl2muvzec+97lcffXVmT9/fnr37p3x48dnv/322+Z5\nf/rTn2b16tWZPXt21q1bly9/+cu55pprcsQRR+Rzn/tchg0blr//+7/Ppz/96QwdOjSrVq3KGWec\nkZ///OeZMmVKxowZk3HjxmX+/Pk7rHvIkCF55ZVX8vvf/z6HHnpo7rnnnhxzzDF529velubm5uyz\nzz6ZMWNG6urq8ulPfzq//OUvM3LkyMJ/h60jT3fddVdWrlyZ6dOnJ0k+//nP59/+7d/y1FNPZcCA\nAZk8eXI2bdqUm266aU//6QGoAIEJgF22evXqnHPOOSmXy0leCx+f+MQnWvYPHjw4yWvnGz3//PP5\n9Kc/nXK5nFdffTUHHnhgnnrqqRx44IHp3bt3kmTYsGH53e9+t833ePzxxzN06NAkyVve8pZce+21\nLfu2ft8FCxbkpZdearm9e/fuWbVqVZYsWZLPfOYzSZL3vve9hT/HRz/60dxyyy358pe/nFtvvTXj\nxo1LktTX16euri5nn312unXrlqVLl+aFF15o07/NggULsnjx4pZ/nw0bNuTZZ5/NyJEj85nPfCaT\nJk3KyJEjW74XALVNYAJgl209h6lI9+7dW/5/9NFHbxN2krRMs9tqR4solEqllmBUpEePHpkyZcp2\no1NJUlf32mm6zc3NhY//0Ic+lDPOOCPnnntulixZ0jKCtGjRotx88825+eab06NHj3zhC19otY7k\ntSl9yWs/c1NTUz75yU9ud59//dd/za9+9avceeedueGGGzJz5sydPi8A1WXRBwB22c6CzFZHHXVU\nfvOb32TVqlVJXpuu9otf/CIHH3xwnnnmmaxfvz7lcjkPPfTQdo8dPHhw7r///iTJunXrcsYZZ2Tz\n5s2pq6vL5s2bkyTHHHNM/uVf/iVJsmbNmvzDP/xDkuTQQw/NokWLkiQPPvhgYX37779/jjzyyFx2\n2WX527/925aQtXr16vTr1y89evTIs88+m1//+tctgWjrz77vvvvmueeeS5L853/+Z9asWZPktdG2\nu+++uyWo/d//+3/z9NNP54477sjjjz+e4cOH5zvf+U6ee+45q+0BdABGmADYZa2tFPen+xobG/ON\nb3wjf//3f583v/nN6dmzZy6//PL07t07n/nMZ3LmmWfmoIMOyoEHHpiXX355m8efcsopWbx4ccaN\nG5ctW7bkU5/6VLp165YRI0Zk8uTJ+frXv55vfvOb+da3vpV/+Zd/yauvvprPfvazSZLx48fnq1/9\nan72s59l8ODB2yzW8OfGjBmT8ePH56677mq5bcSIEbnuuuty5plnZsCAAfnCF76QqVOnZujQodvU\nd/PNN+djH/tYBg4cmMMOOyxJMnr06Dz22GMZN25c6uvrM3DgwBx00EF56aWXMnny5JbRt/POO68l\noAFQu0rltn5MCAAA0MX4aAsAAKCAwAQAAFBAYAIAACggMAEAABQQmAAAAAoITAAAAAUEJgAAgAL/\nH+ErRCufiIXgAAAAAElFTkSuQmCC\n",
555 "text/plain": [
556 "<matplotlib.figure.Figure at 0x7f9539cef5d0>"
557 ]
558 },
559 "metadata": {},
560 "output_type": "display_data"
561 }
562 ],
563 "source": [
564 "model = sm.OLS(Y_heteroscedastic_log, sm.add_constant(X)).fit()\n",
565 "B0, B1 = model.params\n",
566 "residuals = model.resid\n",
567 "\n",
568 "plt.scatter(model.predict(), residuals);\n",
569 "plt.axhline(0, color='red')\n",
570 "plt.xlabel('Predicted Values');\n",
571 "plt.ylabel('Residuals');"
572 ]
573 },
574 {
575 "cell_type": "code",
576 "execution_count": 15,
577 "metadata": {},
578 "outputs": [
579 {
580 "name": "stdout",
581 "output_type": "stream",
582 "text": [
583 "0.0225023159539\n",
584 "The relationship is heteroscedastic.\n"
585 ]
586 }
587 ],
588 "source": [
589 "# Running and interpreting a Breusch-Pagan test\n",
590 "breusch_pagan_p = smd.het_breushpagan(residuals, model.model.exog)[1]\n",
591 "print breusch_pagan_p\n",
592 "if breusch_pagan_p > 0.05:\n",
593 " print \"The relationship is not heteroscedastic.\"\n",
594 "if breusch_pagan_p < 0.05:\n",
595 " print \"The relationship is heteroscedastic.\""
596 ]
597 },
598 {
599 "cell_type": "markdown",
600 "metadata": {},
601 "source": [
602 "*Note: This new regression was conducted on the log of the original data. This means the scale has been altered and the regression estimates will lie on this transformed scale. To bring the estimates back to the original scale, you must back-transform the values using the inverse of the log:*\n",
603 "\n",
604 "$$\\hat{Y} = e^{\\log(\\hat{Y})}$$"
605 ]
606 },
607 {
608 "cell_type": "markdown",
609 "metadata": {},
610 "source": [
611 "#### Box-Cox Transformation\n",
612 "\n",
613 "Finally, we examine the Box-Cox transformation. The Box-Cox transformation is a powerful method that will work on many types of heteroscedastic relationships. The process works by testing all values of $\\lambda$ within the range $[-5, 5]$ to see which makes the output of the following equation closest to being normally distributed:\n",
614 "$$\n",
615 "Y^{(\\lambda)} = \\begin{cases}\n",
616 " \\frac{Y^{\\lambda}-1}{\\lambda} & : \\lambda \\neq 0\\\\ \\log{Y} & : \\lambda = 0\n",
617 "\\end{cases}\n",
618 "$$\n",
619 "\n",
620 "The \"best\" $\\lambda$ will be used to transform the series along the above function. Instead of having to do all of this manually, we can simply use the `scipy` function `boxcox`. We use this to adjust $Y$ and hopefully remove heteroscedasticity.\n",
621 "\n",
622 "*Note: The Box-Cox transformation can only be used if all the data is positive* "
623 ]
624 },
625 {
626 "cell_type": "code",
627 "execution_count": 16,
628 "metadata": {},
629 "outputs": [],
630 "source": [
631 "# Finding a power transformation adjusted Y_heteroscedastic\n",
632 "Y_heteroscedastic_box_cox = stats.boxcox(Y_heteroscedastic)[0]"
633 ]
634 },
635 {
636 "cell_type": "markdown",
637 "metadata": {},
638 "source": [
639 "Now that we have stored the power transformed version of `Y_heteroscedastic` in `Y_heteroscedastic_prime` let's repeat the regression and residual plot to see if the heteroscedasticity is still present:"
640 ]
641 },
642 {
643 "cell_type": "code",
644 "execution_count": 17,
645 "metadata": {
646 "scrolled": false
647 },
648 "outputs": [
649 {
650 "data": {
651 "image/png": "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\n61ZA+v73v59tt902V1xxRfr06ZPHH388Z511VqVrAwAAqKpuBaRBgwZl2223zX/9138lST70oQ9l\nhx12qGhhAAAA1datgHThhRfmxhtvzE033ZQkmT59es4+++yKFgYAAFBt3QpIc+bMyYQJEzJgwIAk\nyVFHHZU//OEPFS0MAACg2rq9il2SlEqlJMny5cuzfPnyylUFAABQA32786Dddtst3/72t7NgwYL8\n+7//e2bMmJHW1tZK1wYAAFBV3QpIX/rSlzJ79uxssMEGefLJJ/OVr3wlO+64Y6VrAwAAqKo1BqTf\n/va3+eY3v5lly5blHe94R6688spsu+22ueaaa3L22WfnV7/6VbXqBACgC+3tizJ27G2ZP39gWloW\nZ+LEg9LcvGmty4KGtcaAdNFFF+U//uM/Mnjw4Nx11105/fTTs2LFimyyySaZNm1atWoEAGA1xo69\nLddfPypJKXPmlJNMydSpo2tdFjSsNS7S0NTUlMGDBydJPvGJT+Txxx/P4YcfngkTJmTLLbesSoEA\nAKze/PkDk5SKrVKxDbxVawxIr61a95p3vetdGT58eEULAgCg+1paFicpF1vltLQsqWU50PC6tUjD\na1YOTAAA9a6nn6MzceJBSaYU729JJk4cUeuSoKGtMSDdf//92WeffTq329vbs88++6RcLqdUKuXu\nu++ucHkAAG9PTz9Hp7l50x71fqDW1hiQbr/99mrVAQBQEc7RAdbGGgPSVlttVa06AAAqoqVlcTFy\nVIpzdIA3s1bnIAEANBrn6ABrQ0ACAHo05+gAa2ONy3wDAAD0JgISAABAQUACAAAoCEgAAAAFAQkA\nAKAgIAEAABQEJAAAgIKABAAAUBCQAAAACgISAABAQUACAAAoCEgAAAAFAQkAAKAgIAEAABQEJAAA\ngIKABAAAUBCQAAAACgISAABAQUACAAAoCEgAAAAFAQkAAKAgIAEAABQEJAAAgIKABAAAUBCQAAAA\nCgISAABAQUACAAAoCEgAAAAFAQkAAKAgIAEAABQEJAAAgIKABAAAUBCQAAAACgISAABAQUACAAAo\nCEgAAAAFAQkAAKAgIAEAABQEJAAAgIKABAAAUBCQAAAACjUJSLNnz85HP/rR3HPPPZ23Pfzwwxk1\nalQ+//nP56yzzqpFWQAAQC9X9YD06KOPZtKkSfnIRz7yhtvPOeecnHbaaZk8eXKee+65zJo1q9ql\nAQAAvVzVA9I73/nOTJgwIQMGDOi87eWXX87jjz+enXbaKUmy33775d577612aQAAQC9X9YDUr1+/\nVW5buHBhNtlkk87t5ubmPP3009UsCwAAIH0rufNp06blhhtuSKlUSrlcTqlUyjHHHJOhQ4euk/3P\nnTt3neyHVelt5eht5eht5ehtZehr5eht5eht5ehtfahoQBo5cmRGjhz5po9rbm7OwoULO7efeuqp\nDBo06E2fN2TIkLdVH12bO3eu3laI3laO3laO3laGvlaO3laO3laO3lbO2gbPmi7zXS6XkyR9+/bN\n+973vsybNy9Jcscdd2TvvfeuZWkAAEAvVNERpK7MnDkzl1xySRYsWJDZs2fn0ksvzY033piTTz45\np59+esrlcnbZZZfstdde1S4NAADo5aoekIYPH57hw4evcvvgwYNz7bXXVrscAACATjWdYgcAAFBP\nBCQAAICCgAQAAFAQkAAAAAoCEgAAQEFAAgAAKAhIAAAABQEJAACgICABAAAUBCQAAICCgAQAAFAQ\nkAAAAAoCEgAAQEFAAgAAKAhIAAAABQEJAACgICABAAAUBCQAAICCgAQAAFAQkAAAAAoCEgAAQEFA\nAgAAKAhIAAAABQEJAACgICABAAAUBCQAAICCgAQAAFAQkAAAAAoCEgAAQEFAAgAAKAhIAAAABQEJ\nAACgICABAAAUBCQAAICCgAQAAFAQkAAAAAoCEgAAQEFAAgAAKAhIAAAABQEJAACgICABAAAUBCQA\nAICCgAQAAFAQkAAAAAoCEgAAQEFAAgAAKAhIAAAABQEJAACgICABAAAUBCQAAICCgAQAAFAQkAAA\nAAoCEgAAQEFAAgAAKAhIAAAABQEJAACgICABAAAUBCQAAICCgAQAAFAQkAAAAAoCEgAAQEFAAgAA\nKAhIAAAABQEJAACgICABAAAUahKQZs+enY9+9KO55557Om8bM2ZMRo4cmTFjxuTwww/PH//4x1qU\nBgAA9GJ9q/2Cjz76aCZNmpSPfOQjq9x33nnnZfDgwdUuCQAAIEkNRpDe+c53ZsKECRkwYMAq95XL\n5WqXAwAA0KnqI0j9+vVb7X2XXHJJOjo6Mnjw4JxyyilrfCwAAMC6VipXcNhm2rRpueGGG1IqlVIu\nl1MqlXLMMcdk6NChGT9+fA488MAMGzYsSXLnnXdmhx12yNZbb50zzzwz2267bb785S+vdt9z586t\n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\nC5kzZ07222+/JMm+++6be++9t5YlNqSV+7p06dIMHz48xxxzTI0ra3xd9fbUU0/NgQcemCRpbm7O\ns88+W8sSG1ZXvf3Xf/3XbLXVVimXy1mwYEG23HLLGlfZmLrqbblczhVXXJExY8YYpX8buvo9tmLF\nilhc+u3pqq933313Dj744CTJyJEj3zQcJQ0SkJqamtKvX78u7/vJT36Sww47rMoV9Rxd9fakk07K\n0UcfnREjRuT+++/PZz/72RpV19i66u373//+3H333UmS3/zmN2lvb69BZY2vqampc6rXDTfckH32\n2SdLly7t/GW92Wab5emnn65liQ3p9X2dNm1ahg0blgEDBtS4qp5hdb1tamrKihUrMnny5PzTP/1T\njatsTF31Nnl1CtiBBx6Y9vb2HHLIIbUssWF11dtHHnkkf/nLX3LAAQf4Y/5tWLm3++yzT5qamnLN\nNdfki1/8Yo4//vgsWrSoxlU2nq7+Pnj88cdzzz33ZMyYMTn++OPz3HPPvfl+Kl1oJb388suZN29e\nWltba11Kj/Ld7363c/rXrrvumsmTJ9e6pB5j3LhxufXWW3PEEUfkpZde8svlbbrzzjtz44035rTT\nTntDL/X17bnzzjtz00035bTTTqt1KT3Oyr1dsWJFxo0blz333DN77rlnjatrbCv3du+9986MGTPS\n0tKSK6+8ssbVNbbX9/a8887Lt7/97VqX1GO8vreHHHJITjjhhFx99dXZYYcdcumll9a6vIb1+r8P\nVqxYkcGDB2fSpEnZbrvtcsUVV7zp8xs6IM2ZMycf+tCHal1Gj/OnP/0pH/7wh5O8Og3soYceqnFF\nPce73/3u/Nu//Vt+/OMfZ7vttstWW21V65Ia1qxZs/LDH/4wP/rRjzJw4MAMGDAgy5YtS5I89dRT\n5sa/RSv39TWlUqmGVfUMXfV2/PjxaWlpyVFHHVXj6hrbyr294447Ou874IADMm/evBpW19he39vn\nn38+8+fPz7e+9a20tbXl6aefzpgxY2pdYsNa+XO755575gMf+ECS5BOf+ET+/Oc/17jCxrRyXzff\nfPPsvvvuSZKPfexj+etf//qm+2jogPTQQw91fpBYd7bYYovOD89DDz2UbbbZpsYV9RyXXnppfvWr\nXyVJfvrTn3ZrHiyrWrJkSS688MJcccUVnSvR7LXXXpkxY0aSZMaMGdl7771rWWJD6qqvrymXy0bm\n3oauevuzn/0s/fr1y9FHH13j6hpbV7297LLLOldXe/DBB9PS0lLLEhvWyr3dcsstM2PGjEyZMiVT\np07NFltskUmTJtW6zIbU1ef22GOPzZ/+9Kckrw4CvP/9769liQ2pq75+/OMf7/zb6w9/+EO3vg9K\n5Qb4jffAAw/k1FNPTUdHR/r06ZNNNtkk11xzTS699NIMGTIkI0aMqHWJDaur3n7nO9/pXCJ50003\nzTnnnPOGI8l0T1e9/d73vpezzz47r7zySvbYY4+cdNJJtS6zIV1//fWZMGFC3vve96ZcLqdUKuX8\n88/PKaeckmXLluXd7353zj333PTp06fWpTaUrvq61VZb5fe//33+9re/Zdttt81HPvKRnHnmmbUu\nteG8vrfJq4HzySefzEYbbZQBAwakVCplu+22y+mnn17bQhtQV5/bY489Nt///vez3nrrdS7z3dzc\nXOtSG05Xvb3gggvyzne+M8mroxx33XVXjatsTF319jOf+Ux+8pOfZMCAARkwYEDOOeccn9u1tLrP\n7Lnnnpunn346AwYMyPnnn/+mfW2IgAQAAFANDT3FDgAAYF0SkAAAAAoCEgAAQEFAAgAAKAhIAAAA\nBQEJAACgICAB8KYef/zx7Lzzzjn88MMzZsyYjB49OieccEKWLFnylvc5bdq0jB8/Pkly/PHHZ8GC\nBat97P3335+///3v3d738uXLV7mQ+PPPP5/W1tYsWrToDbfPmzcvBx544Br394EPfCArVqzo9usD\n0LgEJAC6ZbPNNstPfvKTTJo0Kdddd10GDRqUyy+/fJ3s+wc/+EEGDRq02vtvuummPPbYY93e32sX\nCHy9AQMGZP/998+tt976httvueWWjBw5co37W3lfAPRcfWtdAACNaffdd8/UqVOTJPvtt18OOuig\nPProo7nkkkvyi1/8Itdee22SpLm5OWeffXY22WSTXHvttZkyZUre9a53ZYsttujc13777Zerr746\n73nPe3L22Wfn97//fUqlUr70pS+lb9++uf322/PQQw9l/Pjx2WabbXLWWWflxRdfzAsvvJBvfvOb\n2WuvvTJ//vyMGzcuG2ywQfbYY48ua/7sZz+b733veznssMOSJMuWLcvMmTM7Q9Mll1ySe++9N336\n9MmWW26ZCy+8MH369Ol8/oQJE7J8+fIcd9xxb6h76623zkUXXZR58+blpZdeyu67755x48ZlwYIF\nOeGEE5IkL730Utra2vKZz3xmHf+XAGBdEpAAWGvLly/PHXfckd13373ztve+97054YQT8uSTT+bK\nK6/MDTfckPXWWy8/+clPcsUVV+Soo47KJZdckpkzZ2bjjTfO2LFjs8kmm7xhvz/72c/S3t6eqVOn\nZvHixRk3blwmTpyYD3zgAznqqKOyxx575Gtf+1qOOOKItLa25plnnsmhhx6aO++8MxMmTMjnPve5\njBo1KjNnzuyy7iFDhuTFF1/MX/7yl2y33Xa56667sttuu2WzzTbL8uXLs8EGG2Ty5MlpamrKEUcc\nkV//+tcZNmzYavvw2sjS7bffngULFmTSpElJkqOPPjr/+Z//mUceeSSDBw/OGWeckWXLluX6669/\nu60HoMIEJAC6pb29PYcffnjK5XKSV8PGF7/4xc77d9111ySvni/09NNP54gjjki5XM7LL7+c97zn\nPXnkkUfynve8JxtvvHGSZI899sjDDz/8htd48MEH09ramiTZaKONcsUVV3Te99rrzp49Oy+88ELn\n7f369cszzzyTP//5z/n617+eJNlzzz1X+z4++9nP5uabb864ceNyyy23ZNSoUUmSPn36pKmpKV/4\nwhfSt2/fzJ8/PwsXLuxWb2bPnp3777+/sz/PP/98Hn/88QwbNixf//rXM378+AwbNqzztQCoXwIS\nAN3y2jlIq9OvX7/O///Qhz70hnCTpHPa3Gu6WvSgVCp1BqHV6d+/fyZMmLDK6FOSNDW9emrt8uXL\nV/v8Qw45JIceemi+9KUv5c9//nPnCNG8efNy00035aabbkr//v1z7LHHrrGO5NUpesmr77mtrS1f\n/vKXV3nML37xi9x333257bbbcvXVV+e666570/0CUDsWaQCgW94suLxm5513zkMPPZRnnnkmyavT\nz375y19mm222yd///vcsWbIk5XI5v/nNb1Z57q677ppZs2YlSRYvXpxDDz00r7zySpqamvLKK68k\nSXbbbbf8/Oc/T5J0dHTknHPOSZJst912mTdvXpLk3nvvXW19m2++eXbcccecd955OfjggztDVXt7\ne7baaqv0798/jz/+eH73u991BqDX3vvAgQPz5JNPJkn+53/+Jx0dHUleHU274447OoPZZZddlkcf\nfTS33nprHnzwwey1114588wz8+STT1oND6DOGUECoFvWtJLb6+8bNGhQTjnllHzta1/LhhtumPXX\nXz/nn39+Nt5443z961/P6NGjs/XWW+c973lPli5d+obnjxgxIvfff39GjRqVFStW5Ctf+Ur69u2b\noUOH5owzzsjJJ5+cU089Naeddlp+/vOf5+WXX843vvGNJMnYsWNz0kknZcaMGdl1113fsLjCyj73\nuc9l7Nixuf322ztvGzp0aK666qqMHj06gwcPzrHHHpvLL788ra2tb6jvpptuymGHHZaddtop22+/\nfZLkgAMOyAMPPJBRo0alT58+2WmnnbL11lvnhRdeyBlnnNE5unbkkUd2BjIA6lOp3N1DggAAAD2c\nw1gAAAAFAQkAAKAgIAEAABQEJAAAgIKABAAAUBCQAAAACgISAABA4f8DP4zeW3rq710AAAAASUVO\nRK5CYII=\n",
652 "text/plain": [
653 "<matplotlib.figure.Figure at 0x7f9539c24290>"
654 ]
655 },
656 "metadata": {},
657 "output_type": "display_data"
658 }
659 ],
660 "source": [
661 "model = sm.OLS(Y_heteroscedastic_box_cox, sm.add_constant(X)).fit()\n",
662 "B0, B1 = model.params\n",
663 "residuals = model.resid\n",
664 "\n",
665 "plt.scatter(model.predict(), residuals);\n",
666 "plt.axhline(0, color='red')\n",
667 "plt.xlabel('Predicted Values');\n",
668 "plt.ylabel('Residuals');"
669 ]
670 },
671 {
672 "cell_type": "code",
673 "execution_count": 18,
674 "metadata": {},
675 "outputs": [
676 {
677 "name": "stdout",
678 "output_type": "stream",
679 "text": [
680 "0.00663602327059\n",
681 "The relationship is heteroscedastic.\n"
682 ]
683 }
684 ],
685 "source": [
686 "# Running and interpreting a Breusch-Pagan test\n",
687 "breusch_pagan_p = smd.het_breushpagan(residuals, model.model.exog)[1]\n",
688 "print breusch_pagan_p\n",
689 "if breusch_pagan_p > 0.05:\n",
690 " print \"The relationship is not heteroscedastic.\"\n",
691 "if breusch_pagan_p < 0.05:\n",
692 " print \"The relationship is heteroscedastic.\""
693 ]
694 },
695 {
696 "cell_type": "markdown",
697 "metadata": {},
698 "source": [
699 "*Note: Now that the relationship is not heteroscedastic, a linear regression is appropriate. However, because the data was power transformed, the regression estimates will be on a different scale than the original data. This is why it is important to remember to back-transform results using the inverse of the Box-Cox function:*\n",
700 "\n",
701 "$$\\hat{Y} = (Y^{(\\lambda)}\\lambda + 1)^{1/\\lambda}$$\n"
702 ]
703 },
704 {
705 "cell_type": "markdown",
706 "metadata": {},
707 "source": [
708 "### GARCH Modeling\n",
709 "\n",
710 "Another approach to dealing with heteroscadasticity is through a GARCH (generalized autoregressive conditional heteroscedasticity) model. More information can be found in the [lecture on GARCH modeling](https://www.quantopian.com/lectures#ARCH,-GARCH,-and-GMM)."
711 ]
712 },
713 {
714 "cell_type": "markdown",
715 "metadata": {},
716 "source": [
717 "## Residuals and Autocorrelation\n",
718 "\n",
719 "Another assumption behind linear regressions is that the residuals are not autocorrelated. A series is autocorrelated when it is correlated with a delayed version of itself. An example of a potentially autocorrelated time series series would be daily high temperatures. Today's temperature gives you information on tomorrow's temperature with reasonable confidence (i.e. if it is 90 °F today, you can be very confident that it will not be below freezing tomorrow). A series of fair die rolls, however, would not be autocorrelated as seeing one roll gives you no information on what the next might be. Each roll is independent of the last.\n",
720 "\n",
721 "In finance, stock prices are usually autocorrelated while stock returns are independent from one day to the next. We represent a time dependency on previous values like so:\n",
722 "\n",
723 "$$Y_i = Y_{i-1} + \\epsilon$$\n",
724 "\n",
725 "If the residuals of a model are autocorrelated, you will be able to make predictions about adjacent residuals. In the case of $Y$, we know the data will be autocorrelated because we can make predictions based on adjacent residuals being close to one another."
726 ]
727 },
728 {
729 "cell_type": "code",
730 "execution_count": 19,
731 "metadata": {
732 "scrolled": false
733 },
734 "outputs": [
735 {
736 "data": {
737 "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0IAAAHxCAYAAABAnwyGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUlXW9P/D3BgRNMhpNLS+1w87R7shyiswf3QtOFy/J\nQAllnk420sXUjPJonixKz1meXMhY53SThOEiUpqYZkaahTh6sjrL1dEmL7hQGRwdskRh//5gmPIG\nw8S+sJ/Xay1XPDN79vOZ6Tt7P+/5fr7fp1SpVCoBAAAokGH1LgAAAKDWBCEAAKBwBCEAAKBwBCEA\nAKBwBCEAAKBwBCEAAKBw6haEfvjDH+Z973tfjjnmmKxYsaJeZQAAAAVUlyDU29ubCy+8MJ2dnfnG\nN76Ra6+9th5lAAAABVWqxw1Vr7zyytx8880588wza31qAACA+swIrV69On/+85/z8Y9/PMcdd1x+\n+ctf1qMMAACgoEbU46SVSiW9vb2ZO3du7r333syYMSPXXXfdsz6+q6urhtUBAAA7o/Hjxw/6sXUJ\nQnvttVfGjRuXUqmUAw44ILvvvnvWrVuXlpaWZ/2a7fmmaE5dXV3GAcYBSYwDNjMO2MJYINn+yZO6\ntMYdfvjhWblyZSqVSh566KE8+uijWw1BAAAAO1JdZoT22WefvPOd78yUKVNSKpVsmgAAANRUXYJQ\nkkyZMiVTpkyp1+kBAIACq9sNVQEAAOpFEAIAAApHEAIAAApHEAIAAApHEAIAAApHEAIAAApHEAIA\nAApHEAIAAApHEAIAAApHEAIAAApHEAIAAApHEAIAAApHEAKABtLT05u2tgVpbb08bW3zs25db71L\nAmhKI+pdAADwV+3ty7No0dQkpaxaVUnSmYULp9W7LICmY0YIABpId/foJKX+o1L/MQA7miAEAA2k\nXO5LUuk/qqRcXl/PcgCaltY4AGggHR2Tk3Smu3t0yuX16eiYVO+SAJqSIAQADaSlZYw1QQA1oDUO\nAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAKqkp6c3bW0L0tp6edra5mfdut56\nlwRAP/cRAoAqaW9fnkWLpiYpZdWqSpJO9wgCaBBmhACgSrq7Rycp9R+V+o8BaASCEABUSbncl6TS\nf1RJuby+KufRggew/bTGAUCVdHRMTtKZ7u7RKZfXp6NjUlXOowUPYPsJQgBQJS0tY2oSSLTgAWw/\nrXEAsJOrVQseQDMxIwQAO7lateABNBNBCAB2crVqwQNoJlrjAACAwhGEAACAwhGEAACAwhGEAACA\nwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGE\nAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAACA\nwhGEAACAwhGEAACAwhGEAACAwhGEAACAwhGEAGAQenp609a2IK2tl6etbX7Wreutd0kA/B1G1LsA\nANgZtLcvz6JFU5OUsmpVJUlnFi6cVu+yhqynpzft7cvT3T065XJfOjomp6VlTL3LAqgZQQgABqG7\ne3SSUv9Rqf9459VswQ5ge2mNA4BBKJf7klT6jyopl9fXs5y/W7MFO4DtZUYIAAaho2Nyks7+VrL1\n6eiYVO+S/i7lcl//TFApzRDsALaXIARA4QxlfUxLy5imah1rtmAHsL3qFoQee+yxvPvd785JJ52U\nI488sl5lAFBA1sc0X7AD2F51WyM0d+7cjBljdxoAas/6GADqEoT+8Ic/pLu7OxMnTqzH6QEouGbb\n+ACA7VeX1rhzzz03Z555ZpYuXVqP0wNQcNbHAFCqVCqVbT9sx1m2bFl6enpywgknZM6cOdlvv/1y\n1FFHbfVrurq6alQdAACwsxo/fvygH1vzGaEVK1bk3nvvzdVXX501a9Zk1KhR2XfffTNhwoStft32\nfFM0p66uLuMA44AkxgGbGQdsYSyQbP/kSc2D0Pnnnz/w7zlz5mT//fffZggCAADYkeq2axwAAEC9\n1PWGqjNnzqzn6QEAgIIyIwQAABSOIAQAABSOIAQAABSOIAQAVE1PT2/a2haktfXytLXNz7p1vfUu\nCSBJnTdLAACaW3v78ixaNDVJKatWVZJ0ZuHCafUuC8CMEABQPd3do5OU+o9K/ccA9ScIAQBVUy73\nJan0H1VSLq+vZzkAA7TGAQBV09ExOUlnurtHp1xen46OSfUuCSCJIAQAVFFLyxhrgoCGpDUOAAAo\nHEEIAGgYttsGakVrHADQMGy3DdSKGSEAoGHYbhuoFUEIAGgYttsGakVrHADQMGy3DdSKIAQANAzb\nbQO1ojUOAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAoHEEIAAAo\nHEEIAAAoHEEIAAAoHEEIAAAoHEEIgKro6elNW9uCtLZenra2+Vm3rrfeJQHAgBH1LgCA5tTevjyL\nFk1NUsqqVZUknVm4cFq9ywKAJGaEAKiS7u7RSUr9R6X+YwBoDIIQAFVRLvclqfQfVVIur69nOQDw\nJFrjAKiKjo7JSTrT3T065fL6dHRMqndJADBAEAKgKlpaxlgTBEDD0hoHQMOw0xxDYdwAQ2FGCICG\nYac5hsK4AYbCjBAADcNOcwyFcQMMhSAEQMOw0xxDYdwAQ6E1DoCGYac5hsK4AYZCEAKgYdhpjqEw\nboCh0BoHAAAUjiAEAAAUjiAEAAAUjiAEAAAUjiAEAAAUjiAEwE6tp6c3bW0L0tp6edra5mfdut56\nlwTATsD22QDs1Nrbl2fRoqlJSlm1qpKk01bKAGyTGSEAdmrd3aOTlPqPSv3HALB1ghAAO7VyuS9J\npf+oknJ5fT3LaWraEIFmojUOgJ1aR8fkJJ3p7h6dcnl9Ojom1bukpqUNEWgmghAAO7WWljEuxmtE\nGyLQTLTGAQCDog0RaCZmhACAQdGGCDQTQQgAGBRtiEAz0RoHAAAUjiAEAAAUjiAEAAAUjiAEAAAU\njiAEAAAUjiAEAAAUjiAEAAAUjiAEAAAUjiAEAAAUjiAEAAAUjiAEAAAUzoh6nfjcc8/NLbfcko0b\nN+Zf/uVf8va3v71epQAAAAVTlyC0cuXK3HHHHens7Exvb2+OOuooQQgAAKiZugShww47LK9+9auT\nJHvssUf+/Oc/p1KppFQq1aMcAACgYOqyRmjYsGHZbbfdkiSLFy/OxIkThSAAAKBmSpVKpVKvk//k\nJz/Jf/3Xf+Vb3/pWRo8e/ayP6+rqqmFVAADAzmj8+PGDfmzdNku4/vrr881vfnObIWiL7fmmaE5d\nXV3GAcYBSYwDNjMO2MJYINn+yZO6BKH169fnvPPOy3e/+90897nPrUcJAECB9fT0pr19ebq7R6dc\n7ktHx+S0tIypd1lADdUlCF155ZXp7e3Npz/96YFNEs4999zsu+++9SgHACiY9vblWbRoapJSVq2q\nJOnMwoXT6l0WUEN1CUJTpkzJlClT6nFqAIB0d49OsmWjplL/MVAkddk1DgCgnsrlviRb9ouqpFxe\nX89ygDqo22YJAAD10tExOUln/xqh9enomFTvkoAaE4QAgMJpaRljTRAUnNY4AACgcAQhAACgcAQh\nAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACg\ncAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQh\nAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAACg\ncAQhAACgcAQhAACgcAQhAACgcAQhAACgcAQhAIAG0tPTm7a2BWltvTxtbfOzbl1vvUuCpjSi3gUA\nAPBX7e3Ls2jR1CSlrFpVSdKZhQun1bssaDpmhAAAGkh39+gkpf6jUv8xsKMJQgAADaRc7ktS6T+q\npFxeX89yoGlpjQNgm3p6etPevjzd3aNTLvelo2NyWlrG1LssaEodHZOTdPb/vq1PR8ekepcETUkQ\nAmCbrFmA2mlpGeP3C2pAaxwA22TNAgDNRhACYJusWQCg2WiNA2CbrFkAoNkIQgBskzULADQbrXEA\nAEDhDCoIrVixIsuWLUuSnHLKKXnHO96Rq6++uqqFAQAAVMuggtDcuXPz//7f/8uKFSuyadOmXHbZ\nZZk3b161awMAYBB6enrT1rYgra2Xp61tftat6613SdDwBrVGaNddd01LS0tWrFiR973vfdl9990z\nbJiuOgCARuBeX7D9BpVmHnvssfz3f/93rr/++kyYMCF//OMf09fXV+3aAAAYBPf6gu03qCD0pS99\nKffff39mz56dUaNG5YYbbsipp55a7doAABgE9/qC7bfV1rh77rknyebWuBkzZgx8bOLEidWvDACg\ngfT09Ka9fXn//bT60tExOS0tY+pdVhL3+oKh2GoQ+tCHPpRSqZRKpfK0z5VKpVx77bVVKwwAoJE0\n8joc9/qC7bfVIPTTn/70WT/X1dW1w4sBAGhU1uFAcxnUrnHr16/PD37wgzz00ENJkscffzyXXnpp\nbrjhhqoWBwDQKMrlvv6ZoFKsw4Gd36CC0Kc//em86EUvyg033JB3vvOdueGGG/LFL36xyqUBADQO\n63CguQxq17gNGzbk3/7t37Lffvvl9NNPz7x583LFFVdUuzYAgIaxZR3OTTe9JwsXTmuYjRKAoRn0\nfYT6+vqyadOmPPTQQxkzZkzuu+++atcGAABQFYNqjTvyyCNz2WWX5dhjj83kyZPT0tKSAw88sNq1\n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\ns3LUUUeltbV1q8/T1dVVrRIBAIAmMX78+EE/tqpB6JlMmzYtlUollUold999d/bcc898/etfz9ix\nY5/1a7q6urbrm6I5GQckxgGbGQckxgF/ZSyQbP84qHlr3IIFCwb+PWvWrBx99NFbDUEAAAA7mvsI\nAQAAhVPzGaG/NXv27HqeHgAAKCgzQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEI\nQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAA\nQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEI\nQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAA\nQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEI\nQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAA\nQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEIQgAAQOEI\nQgAAQOEIQgAAQOEIQgAAQOHUJQh961vfypFHHpljjz02v/3tb+tRAgAAUGAjan3CO+64I8uXL89l\nl12W22+/Pddee21e+cpX1roMAACgwGoehK677rpMmjQppVIphxxySA455JBalwAAABRczVvjVq9e\nnfvuuy///M//nOOPPz633357rUsAAAAKrlSpVCrVevLFixdnyZIlKZVKSZJKpZKenp4cccQROeus\ns9LV1ZXZs2dnyZIlW32erq6uapUIAAA0ifHjxw/6sVUNQs9kzpw5eelLX5rJkycnSd7whjfkxhtv\nrGUJAABAwdW8Ne6II47I9ddfnyS58847s++++9a6BAAAoOBqvlnCa17zmvz85z/P1KlTkyRnnXVW\nrUsAAAAKruatcQAAAPVWlxuqAgAA1JMgBAAAFI4gBAAAFE5DBqHHHnssb3/727Ns2bKsWbMmxx9/\nfKZPn56PfOQj6enpqXd51NDfjoUtrr/++hx88MF1rIpa+9tx8MQTT+SUU07Jsccem+OPPz59fX31\nLo8a+dtxcPPNN+cDH/hAZsyYkRNPPNE4KICbbropEyZMyIwZMzJ9+vScc845WbNmTaZPn57jjjsu\nJ598ch4jcuF0AAALVUlEQVR//PF6l0kNPNtYcL1YLM80DrYY7LViQwahuXPnZsyYMUmS//zP/8yU\nKVMyb968vPWtb823v/3tOldHLf3tWEiSDRs25Jvf/Gb23nvvOlZFrf3tOFi0aFH23HPPLF68OJMn\nT87NN99c5+qolS3joFKpZPbs2Zk9e3YuvvjijBs3Lp2dnfUujxpobW3NxRdfnHnz5uWMM87I17/+\n9UyfPj3f//73c+CBB+bSSy+td4nUyFPHguvFYnrqOEi271qx4YLQH/7wh3R3d2fixIlJNm+v/c53\nvjNJ0tLSkocffrie5VFDTx0LSXLRRRdl+vTp2WWXXepYGbX0t+OgUqnkuuuuy3ve854kybHHHps3\nv/nNda6QWnjq68Fee+2VdevWJUkefvjhPP/5z69nedTIUze6vemmmwZeA9785je7QXuBPHUsuF4s\npmfa/Hp7rhUbLgide+65+dznPjdwvNtuu2XYsGHZtGlT5s+fn3e/+911rI5aeupY+OMf/5g77rgj\n73jHO55x4NOcnjoOVq9enRUrVmT69Ok55ZRT8sgjj9SxOmrlb8dBqVTK6aefnpkzZ2bSpEm59dZb\nc8wxx9S5QmrhzjvvTHt7ez74wQ/mxhtvzF/+8peBi50999wzDz74YJ0rpFaeOhZcLxbTU8fB9l4r\n1vyGqluzbNmyHHbYYXnRi16U5K8pb9OmTTnttNPy+te/Pq9//evrWSI18kxj4atf/WrOPPPMOldG\nLT11HCSbx8JLX/rSzJw5Mx0dHbnooovy2c9+to5VUm3P9HrwpS99KRdeeGFe+9rX5txzz838+fPz\nwQ9+sM6VUk0vfvGLB8LvPffckxkzZuSJJ54Y+Lw/kBXHM42Fa665JsOGDXO9WCDPNA4OOuignH32\n2YN+joYKQitWrMi9996bq6++OmvWrMmoUaOy7777ZtmyZSmXyznppJPqXSI18tSxsMsuu2T48OH5\nzGc+k0qlkgcffDDTp0/PvHnz6l0qVfRMrwl77bVXWltbkyRvfOMbM2fOnDpXSbX97Ti4//77s8su\nu+SRRx7Ja1/72iTJG97whlxxxRV1rpJq22effTJp0qQkyQEHHJC99torv/3tb7Nhw4aMHDky999/\nv/WjBfHUsfCCF7wg999/fy644ALXiwXy1HEwcuTI3Hjjjdt1rdhQQej8888f+PecOXOy//77Z+3a\ntRk5cmRmzpxZx8qotWcaC0ceeeTAx97ylrcIQQXwTOPgwQcfzM9//vMcffTR+d3vfpdyuVzHCqmF\nZxoH3/nOd3LnnXdm7Nix+c1vfpMDDzywjhVSC5dffnnuuuuuzJw5Mz09Penp6cnRRx+dq666Ku99\n73vz4x//OEcccUS9y6QGnmksrFq1yvViwTx1HDzxxBO57bbbMnz48CSDu1ZsqCD0TC655JJs2LAh\n06dPT6lUykEHHaQ9ipRKpXqXQJ3MmDEjn/3sZ7NkyZLsvvvu+drXvlbvkqiDs88+O2eccUZ22WWX\njBkzJl/5ylfqXRJV9pa3vCWnnHJKpk2blkqlkrPPPjsHH3xwTj/99CxatCgvetGLctRRR9W7TGrg\nqWPhrLPOyty5c10vFsxTx8EXv/jFgRCUDO5asVTRVAsAABRMw+0aBwAAUG2CEAAAUDiCEAAAUDiC\nEAAAUDiCEAAAUDiCEAAAUDiCEABPsnr16rzqVa/KjBkzMn369EybNi2nnnpq1q9fP+TnXLx4cWbN\nmpUkOeWUU/LAAw8862NvvfXW3HvvvYN+7o0bN+bggw9+0sf+9Kc/pbW1Nb29vU/6+C233JJ3vetd\nW32+gw8+OJs2bRr0+QHYOQlCADzNnnvumYsvvjjz5s3LggULsvfee2fu3Lk75Ln/4z/+I3vvvfez\nfn7p0qW55557Bv18lUrlaTfO23333fO2t70tV1xxxZM+vmzZshx77LFbfT43bAYohhH1LgCAxnfY\nYYdl4cKFSTbfzXvy5Mm5++67c8EFF+TKK6/MJZdckiRpaWnJOeeck+c973m55JJL0tnZmRe+8IV5\nwQteMPBcb3nLW/K9730v+++/f84555z89re/TalUyoc//OGMGDEiV111VX7zm99k1qxZOfDAA3P2\n2WfnL3/5Sx599NGcfPLJmTBhQrq7u3Paaadlt912y+te97pnrPmYY47Jl7/85Rx33HFJkg0bNuSa\na64ZCEcXXHBBbrzxxgwfPjz77LNPzjvvvCfdlXzOnDnZuHFjPvWpTz2p7gMOOCDnn39+brnlljz2\n2GM57LDDctppp+WBBx7IqaeemiR57LHH0tbWlqOPPnoH/z8BwI4iCAGwVRs3bszVV1+dww47bOBj\nL3nJS3LqqadmzZo1+cY3vpElS5Zkl112ycUXX5yLLrooJ510Ui644IJcc8012WOPPdLe3p7nPe95\nT3reH/7wh+np6cnChQvT19eX0047LR0dHTn44INz0kkn5XWve10+9rGP5YQTTkhra2vWrl2bKVOm\n5Cc/+UnmzJmT97///Zk6dWquueaaZ6x7/Pjx+ctf/pI77rgjBx10UK699toceuih2XPPPbNx48bs\ntttumT9/foYNG5YTTjghN9xwQyZOnPisP4ctM0VXXXVVHnjggcybNy9JMnPmzFx33XW56667Mnbs\n2Jx11lnZsGFDFi1a9Pf+6AGoIkEIgKfp6enJjBkzUqlUkmwOFR/60IcGPj9u3Lgkm9fzPPjggznh\nhBNSqVTy+OOPZ//9989dd92V/fffP3vssUeS5HWve11uv/32J53jtttuS2tra5Lkuc99bi666KKB\nz20578qVK/Poo48OfHzkyJFZu3Ztfv/73+fEE09Mkrz+9a9/1u/jmGOOyWWXXZbTTjsty5Yty9Sp\nU5Mkw4cPz7Bhw/LBD34wI0aMSHd3dx566KFB/WxWrlyZW2+9deDn86c//SmrV6/OxIkTc+KJJ2bW\nrFmZOHHiwLkAaEyCEABPs2WN0LMZOXLkwP+++tWvflKISTLQ7rbFM20+UCqVBgLPsxk1alTmzJnz\ntNmkJBk2bPMy140bNz7r17/vfe/LlClT8uEPfzi///3vB2Z8brnllixdujRLly7NqFGj8slPfnKr\ndSSbW+uSzd9zW1tbjj/++Kc95sorr8xNN92U5cuX53vf+14WLFiwzecFoD5slgDA02wroGzxqle9\nKr/5zW+ydu3aJJvbxn7605/mwAMPzL333pv169enUqnkl7/85dO+dty4cbn++uuTJH19fZkyZUqe\neOKJDBs2LE888USS5NBDD82PfvSjJMm6devyla98JUly0EEH5ZZbbkmS3Hjjjc9a31577ZVDDjkk\nX/3qV/Oe97xnIDz19PRkv/32y6hRo7J69er8z//8z0DQ2fK9jx49OmvWrEmS/N///V/WrVuXZPPs\n2NVXXz0QwC688MLcfffdueKKK3LbbbdlwoQJ+eIXv5g1a9bYfQ6ggZkRAuBptrZz2t9+bu+9984X\nvvCFfOxjH8tznvOc7Lrrrvna176WPfbYIyeeeGKmTZuWAw44IPvvv3/+/Oc/P+nrJ02alFtvvTVT\np07Npk2b8pGPfCQjRozI4YcfnrPOOiuf//znc8YZZ+Rf//Vf86Mf/SiPP/54Pv7xjydJ2tvbc/rp\np+fHP/5xxo0b96RNDp7q/e9/f9rb23PVVVcNfOzwww/Pt7/97UybNi1jx47NJz/5ycydOzetra1P\nqm/p0qU57rjj8opXvCIve9nLkiTveMc78utf/zpTp07N8OHD84pXvCIHHHBAHn300Zx11lkDs2Uf\n/ehHB4IXAI2nVBnsn/0AAACahD9VAQAAhSMIAQAAhSMIAQAAhSMIAQAAhSMIAQAAhSMIAQAAhSMI\nAQAAhfP/ATVmOHJfawaoAAAAAElFTkSuQmCC\n",
738 "text/plain": [
739 "<matplotlib.figure.Figure at 0x7f9539e94210>"
740 ]
741 },
742 "metadata": {},
743 "output_type": "display_data"
744 }
745 ],
746 "source": [
747 "n = 50\n",
748 "X = np.linspace(0, n, n)\n",
749 "Y_autocorrelated = np.zeros(n)\n",
750 "Y_autocorrelated[0] = 50\n",
751 "for t in range(1, n):\n",
752 " Y_autocorrelated[t] = Y_autocorrelated[t-1] + np.random.normal(0, 1) \n",
753 "\n",
754 "# Regressing X and Y_autocorrelated\n",
755 "model = sm.OLS(Y_autocorrelated, sm.add_constant(X)).fit()\n",
756 "B0, B1 = model.params\n",
757 "residuals = model.resid\n",
758 "\n",
759 "plt.scatter(model.predict(), residuals);\n",
760 "plt.axhline(0, color='red')\n",
761 "plt.xlabel('Predicted Values');\n",
762 "plt.ylabel('Residuals');"
763 ]
764 },
765 {
766 "cell_type": "markdown",
767 "metadata": {},
768 "source": [
769 "Autocorrelation in the residuals in this example is not explicitly obvious, so our check is more to make absolutely certain.\n",
770 "\n",
771 "### Statistical Methods for Detecting Autocorrelation\n",
772 "\n",
773 "As with all statistical properties, we require a statistical test to ultimately decide whether there is autocorrelation in our residuals or not. To this end, we use a Ljung-Box test.\n",
774 "\n",
775 "A Ljung-Box test is used to detect autocorrelation in a time series. The Ljung-Box test examines autocorrelation at all lag intervals below a specified maximum and returns arrays containing the outputs for every tested lag interval.\n",
776 "\n",
777 "Let's use the `acorr_ljungbox` function in `statsmodels` to test for autocorrelation in the residuals of our above model. We use a max lag interval of $10$, and see if any of the lags have significant autocorrelation:"
778 ]
779 },
780 {
781 "cell_type": "code",
782 "execution_count": 20,
783 "metadata": {
784 "scrolled": true
785 },
786 "outputs": [
787 {
788 "name": "stdout",
789 "output_type": "stream",
790 "text": [
791 "Lagrange Multiplier Statistics: [ 43.65325348 80.80728237 112.66873613 138.14145184 157.50322113\n",
792 " 171.78472133 179.18420508 181.49990291 181.72987791 181.8555585 ]\n",
793 "\n",
794 "P-values: [ 3.92024856e-11 2.83740666e-18 2.92375611e-24 7.05507263e-29\n",
795 " 3.36983459e-32 1.88110240e-34 2.89663288e-35 4.98447013e-35\n",
796 " 2.20529138e-34 9.64841145e-34] \n",
797 "\n",
798 "The residuals are autocorrelated.\n"
799 ]
800 }
801 ],
802 "source": [
803 "ljung_box = smd.acorr_ljungbox(residuals, lags = 10)\n",
804 "print \"Lagrange Multiplier Statistics:\", ljung_box[0]\n",
805 "print \"\\nP-values:\", ljung_box[1], \"\\n\"\n",
806 "\n",
807 "if any(ljung_box[1] < 0.05):\n",
808 " print \"The residuals are autocorrelated.\"\n",
809 "else:\n",
810 " print \"The residuals are not autocorrelated.\""
811 ]
812 },
813 {
814 "cell_type": "markdown",
815 "metadata": {},
816 "source": [
817 "Because the Ljung-Box test yielded a p-value below $0.05$ for at least one lag interval, we can conclude that the residuals of our model are autocorrelated."
818 ]
819 },
820 {
821 "cell_type": "markdown",
822 "metadata": {},
823 "source": [
824 "## Adjusting for Autocorrelation\n",
825 "\n",
826 "We can adjust for autocorrelation in many of the same ways that we adjust for heteroscedasticity. Let's see if a model on the first-order differences of $Y$ has autocorrelated residuals:"
827 ]
828 },
829 {
830 "cell_type": "code",
831 "execution_count": 21,
832 "metadata": {
833 "collapsed": true
834 },
835 "outputs": [],
836 "source": [
837 "# Finding first-order differences in Y_autocorrelated\n",
838 "Y_autocorrelated_diff = np.diff(Y_autocorrelated)"
839 ]
840 },
841 {
842 "cell_type": "code",
843 "execution_count": 22,
844 "metadata": {
845 "scrolled": false
846 },
847 "outputs": [
848 {
849 "name": "stdout",
850 "output_type": "stream",
851 "text": [
852 "P-values: [ 0.46043772 0.74908377 0.82067765 0.92091356 0.96659539 0.91694346\n",
853 " 0.8644615 0.78746052 0.63628018 0.62962119] \n",
854 "\n",
855 "The residuals are not autocorrelated.\n"
856 ]
857 },
858 {
859 "data": {
860 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAz0AAAHxCAYAAABH3dKTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+U1XWdP/DnBQJNApwKK3/UPdTJarWUdcxwozVtk123\n2pKBrTXL46aTVpauEn21Wo3K3E4e19HOWpkJA/gzTFTSzfIXErra1tqvM6nJMWJgckZNAu73DwcK\n+TXC3PuZ+dzH45xOvu+duZ/XDO+5n3nO+1elVqvVAgAAUFIjii4AAACgnoQeAACg1IQeAACg1IQe\nAACg1IQeAACg1IQeAACg1EYVdeEvf/nLue+++7J+/fr867/+a4466qiiSgEAAEqskNCzdOnS/OpX\nv0pnZ2d6enrynve8R+gBAADqopDQc8ghh+TAAw9MkowbNy5PP/10arVaKpVKEeUAAAAlVsianhEj\nRmT33XdPkixcuDBTp04VeAAAgLoobE1Pknz/+9/PNddck8suu2y7H7d8+fIGVQQAAAxXkydP3urj\nhYWeH/3oR/n617+eyy67LGPHjt3hx2/rC4ChaPny5fosw45+y3Ck3zLc6LP1s72BkkJCT19fX84/\n//x861vfyote9KIiSgAAAJpEIaHnxhtvTE9PTz7xiU9s2sDgy1/+cl72spcVUQ4AAFBihYSe6dOn\nZ/r06UVcGgAAaDKF7N4GAADQKEIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIP\nAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQ\nakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIPAABQakIP\nAABQakIPAABQakIPAABQakIPAABQakIPAOyE7u6etLXNS2vrorS1zc3q1T1FlwTANowqugAAGI7a\n2xdnwYIZSSpZtqyWpDPz588suiwAtsJIDwDshK6usUkq/a1KfxuAoUjoAYCdUK32Jqn1t2qpVvuK\nLAeA7TC9DQB2QkfHtCSd6eoam2q1Lx0dRxddEgDbIPQAwE5oaZlgDQ/AMGF6GwAAUGpCDwAAUGpC\nDwAAUGpCDwAAUGpCDwAAUGpCDwAAUGpCDwAAUGpCDwAAUGpCDwAAUGpCD4Xp7u5JW9u8tLYuSlvb\n3Kxe3VN0SQAAlNCoogugebW3L86CBTOSVLJsWS1JZ+bPn1l0WQAAlIyRHgrT1TU2SaW/VelvAwDA\n4BJ6KEy12puk1t+qpVrtK7IcAABKyvQ2CtPRMS1JZ7q6xqZa7UtHx9FFlwQAQAkJPRSmpWWCNTwA\nw1B3d0/a2xf3/9GqNx0d09LSMqHosgC2SegBAJ4XG9EAw401PQDA82IjGmC4EXoAgOfFRjTAcGN6\nGwDwvNiIBhhuhB4A4HmxEQ0w3JjeBgAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQ\nAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwAAlJrQAwA0re7unrS1\nzUtr66K0tc3N6tU9RZeUZOjWBcPVqKILAAAoSnv74ixYMCNJJcuW1ZJ0Zv78mUWXNWTrguHKSA8A\n0LS6usYmqfS3Kv3t4g3VumC4EnoAgKZVrfYmqfW3aqlW+4osZ5OhWhcMV6a3AQBNq6NjWpLOdHWN\nTbXal46Oo4suKcnQrQuGK6GHreru7kl7++L+N9vedHRMS0vLhKLLAoBB1dIyoe5rZXbmntqIuqCZ\nCD1slQWU9SVUAjQP91QontDDVllAWV9ugADNwz0VimcjA7bKAsr6cgMEaB7uqVA8Iz1slQWU9VWt\n9vaP8FTiBghQbu6pULzCQs9DDz2UU089Nccff3ze//73F1UG22ABZX25AQI0D/dUKF4hoefpp5/O\nl770pUyZMqWIy0Ph3AABABqnkDU9Y8aMyaWXXpqXvOQlRVweAABoIoWEnhEjRmT06NFFXBoAAGgy\ndm8DhoXu7p60tc1La+uitLXNzerVPUWXBAAME8Nm97bly5cXXQI8L/rs4Jo1654sWdKejWcbrVlz\ncebMeXPRZZWOfstwpN8y3OizjTdsQs/kyZOLLgEGbPny5frsIOvpWZG/PNuop2c/3+NBpt8yHOm3\nDDf6bP1sL0wWMr3tgQceyDHHHJN58+bl0ksvzTHHHJM//OEPRZQCDBMO9wMAdlYhIz1vfOMbs2jR\noiIuDQxTzjYCAHbWsJneBjQ3ZxsBADvL7m0AAECpCT0AAECpCT0AAECpCT0AAECpCT0AAECpCT0A\nAECpCT0AAECpCT0A0MS6u3vS1jYvra2L0tY2N6tX9xRdEsCgczgpAE2vu7sn7e2L09U1NtVqbzo6\n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\nbwMgXV1jk1T6W5X+NgCUg9ADQKrV3iS1/lYt1WpfkeUAwKAyvQ2AdHRMy5o1F6enZ79Uq33p6Di6\n6JIAYNAIPQCkpWVC5sx5cyZPnlx0KQAw6ExvAwAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3o\nAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAA\nSk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3o\nAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAA\nSk3oAQAASk3oAQAASk3oAQAASk3oAQAASm1Uoy+4fv36zJ49O4888kg2bNiQf/u3f8vBBx/c6DIA\nAIAm0fDQc/3112e33XbL3Llz86tf/SqzZs3KwoULG10GAADQJBoeev7xH/8xf//3f58kaWlpyR/+\n8IdGlwAAADSRhoeeUaNGZdSoZy97+eWX5x/+4R8aXQIAANBE6hp6Fi5cmKuuuiqVSiW1Wi2VSiWn\nnnpqpkyZkiuvvDI/+9nPcskll9SzBAAAoMlVarVardEXXbhwYW655ZZcfPHFecELXrDDj1++fHkD\nqgIAAIazyZMnb/Xxhk9ve/TRRzN//vxceeWVAwo8G23rC4ChaPny5fosw45+y3Ck3zLc6LP1s72B\nkoaHnquuuip/+MMfcuKJJ26a8vaNb3xj0zofAACAwdTwpHHaaafltNNOa/RlAQCAJjWi6AIAAADq\nSegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegB\nAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBAABK\nTegBAABKTegBAABKTegBAABKTegBAABKTegBaKDu7p60tc1La+uitLXNzerVPUWXBDQp70c0k1FF\nFwDQTNrbF2fBghlJKlm2rJakM/Pnzyy6LKAJeT+imRjpAWigrq6xSSr9rUp/G6DxvB/RTIQegAaq\nVnuT1PpbtVSrfUWWAzQx70c0E9PbABqoo2Naks50dY1NtdqXjo6jiy4JaFLej2gmQg9AA7W0TDBn\nHhgSvB/RTExvAwAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3o\nAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAA\nSk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3o\nAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAA\nSk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASk3o\nAQAASk3oAQAASk3oAQAASk3oAQAASk3oAQAASm1Uoy+4evXqnHnmmXnmmWeybt26nHXWWTnwwAMb\nXQYAANAkGj7S893vfjfvfve78+1vfzunnXZavva1rzW6BAAAoIk0fKTn+OOP3/TfK1asyMte9rJG\nlwAAADSRhoeeJFm1alVOOumkPPXUU7n88suLKAEAAGgSlVqtVqvXiy9cuDBXXXVVKpVKarVaKpVK\nTj311EyZMiVJ8sMf/jCXX355Lrvssu2+zvLly+tVIgAAUBKTJ0/e6uN1DT1bc++99+a1r31txo8f\nnyR585vfnHvuuaeRJQAAAE2k4RsZLFmyJNddd12S5Oc//3le8YpXNLoEAACgiTR8pGfNmjU566yz\n8tRTT2Xt2rWZPXu2LasBAIC6aXjoAQAAaKSGT28DAABoJKEHAAAoNaEHAAAotUIOJ92edevW5ayz\nzsqKFSsycuTIzJkzJ/vss89mH/PQQw9l9uzZqVQqOeKII9Le3l5QtfCsgfTbjT75yU9mzJgxmTNn\nToOrhD8bSJ+98cYb881vfjMjR47MoYcemtNOO62gaiGZM2dOHnjggVQqlXz605/OAQccsOm5u+66\nK1/96lczcuTIvPWtb/V7AUPC9vrsPffcs6nPVqvVnHfeeQVW2hyG3EjPDTfckPHjx2fu3Lk56aST\ncsEFF2zxMWeffXbOO++8XHXVVfn1r3+dZ555poBK4c8G0m+T5M4778xvf/vbBlcHW9pRn/3jH/+Y\nr3zlK7n88svT2dmZu+++O7/+9a8LqpZmt2zZsjz88MPp7OzMueeeu8UviOedd14uuuiizJs3L3fe\neae+SuF21GfPOeecXHjhhZk7d276+vrywx/+sKBKm8eQCz133313jjzyyCTJW97yltx3332bPd/d\n3Z2nn353uQyTAAAKUklEQVQ6+++/f5LkggsuyJgxYxpeJ/ylHfXbJFm7dm0uueSSnHzyyY0uD7aw\noz6722675bvf/W5e+MIXJkkmTJiQnp6ehtcJyeb9ddKkSXniiSfy5JNPJkkeffTRTJgwIXvttVcq\nlUqmTp3q0HMKt70+myRXX3119tprryRJS0uL99cGGHKhZ9WqVWlpaUmSVCqVjBgxIuvWrdv0/GOP\nPZZx48Zl1qxZ+ed//udcfvnlRZUKm+yo3ybJ17/+9XzgAx/IHnvsUUSJsJmB9NmxY8cmefYg6RUr\nVuRNb3pTw+uEZPP+miR77rlnVq1atdXnWlpasnLlyobXCH9pe302+fP768qVK3PXXXdl6tSpDa+x\n2RS6pmfhwoW56qqrUqlUkiS1Wi0PPvjgZh+zYcOGzdq1Wi2PPfZYOjo6Mnr06LS1teXwww/PpEmT\nGlY3zW1n+u3DDz+cn//85znllFOydOnShtUKyc712Y1+85vf5PTTT88FF1yQkSNH1r1WGIjtHTHo\n+EGGoq31y+7u7px88sn57Gc/m/HjxxdQVXMpNPQce+yxOfbYYzd7bNasWVm1alVe+9rXbvqr46hR\nfy7zxS9+cV796ldn3LhxSZLJkyfnl7/8pdBDw+xMv/3BD36QRx55JDNmzEhvb2/WrFmTyy67LCec\ncEJDa6c57UyfTZLHH388p556as4///y89rWvbVi98FwTJ07c7K/kK1euzEtf+tJNz/3+97/f9Nzv\nfve7TJw4seE1wl/aXp9Nkr6+vpx44on51Kc+lcMOO6yIEpvOkJveNmXKlNx0001Jkttuuy2HHnro\nZs/vs88+efLJJ/PEE09kw4YN+b//+79Uq9UiSoVNdtRvP/jBD+b6669PZ2dnzjnnnEydOlXgoVA7\n6rNJMnv27Jxzzjmb1lBCUaZMmZKbb745SfLTn/40e+2116b1ZnvvvXeefPLJrFixIuvWrcsPfvCD\nHH744UWWC9vts0nyxS9+MR/60IcyZcqUokpsOpXaEBsH3rBhQ2bPnp2HH344Y8aMyRe/+MXstdde\n+frXv55DDz00b3zjG/Pggw/m3HPPzYgRI3L44YfnlFNOKbpsmtxA+u1G9957b6699lpbVlOoHfXZ\n8ePH5z3veU8OOOCA1Gq1VCqVfOhDH8rf/u3fFl06Teo//uM/cu+992bkyJE5++yz87Of/SwvetGL\ncuSRR+bHP/5xvvKVryRJ3vnOd+b4448vtljItvvs4YcfntbW1rzpTW/a9P56zDHHbDEiz+AacqEH\nAABgMA256W0AAACDSegBAABKTegBAABKTegBAABKTegBAABKTegBAABKTegBYDOPPfZYDjjggBx3\n3HH5l3/5l8ycOTOnn356+vr6dvo1Fy5cmFmzZiVJPvWpT2XlypXb/Nj7778/v/3tbwf82uvXr9/i\nANUnn3wyra2t6enp2ezx++67L+985zu3+3r7779/NmzYMODrAzD0CT0AbOHFL35xvv3tb+eKK67I\nvHnzMnHixFx88cWD8toXXHBBJk6cuM3nr7nmmjz66KMDfr2Nh/v9pT322CNHHnlkbrjhhs0ev+66\n63Z4AOBzXwuA4W9U0QUAMPQdcsghmT9/fpLkiCOOyLRp0/LII4/kwgsvzI033pgrr7wySdLS0pJz\nzz0348ePz5VXXpnOzs68/OUvz0tf+tJNr3XEEUfk8ssvzz777JNzzz03//u//5tKpZLjjz8+o0aN\nyk033ZSf/OQnmTVrVvbbb7987nOfyx//+Mc89dRTOe2003LYYYelq6srZ5xxRnbfffcceuihW635\nve99b84777x84AMfSJKsXbs2S5Ys2RSELrzwwtx1110ZOXJk9tprr5x//vkZOXLkps+/6KKLsn79\n+nz84x/frO599903X/3qV3PfffflmWeeySGHHJIzzjgjK1euzOmnn54keeaZZ9LW1pZ/+qd/GuR/\nCQB2htADwHatX78+t9xySw455JBNj73qVa/K6aefnscffzyXXnpprrrqqrzgBS/It7/97VxyySX5\n6Ec/mgsvvDBLlizJuHHj0t7envHjx2/2ut/97nfT3d2d+fPnp7e3N2eccUY6Ojqy//7756Mf/WgO\nPfTQfOQjH8kJJ5yQ1tbWrFq1KtOnT8/3v//9XHTRRXnf+96XGTNmZMmSJVute/LkyfnjH/+YX/3q\nV3n1q1+dW2+9NQcffHBe/OIXZ/369dl9990zd+7cjBgxIieccELuuOOOTJ06dZvfh40jQDfddFNW\nrlyZK664Iklyyimn5L//+7/z8MMPZ9KkSTnnnHOydu3aLFiwYFe/9QAMEqEHgC10d3fnuOOOS61W\nS/JsgPjgBz+46fmDDjooybPrb37/+9/nhBNOSK1Wy5/+9Kfss88+efjhh7PPPvtk3LhxSZJDDz00\nDz300GbXePDBB9Pa2pokedGLXpRLLrlk03Mbr7t06dI89dRTmx4fPXp0Vq1alV/84hc56aSTkiRv\nfvObt/l1vPe97821116bM844I9ddd11mzJiRJBk5cmRGjBiR97///Rk1alS6urqyZs2aAX1vli5d\nmvvvv3/T9+fJJ5/MY489lqlTp+akk07KrFmzMnXq1E3XAqB4Qg8AW9i4pmdbRo8even/DzzwwM0C\nS5JNU9Y22trGAJVKZVO42ZYxY8bkoosu2mKUKElGjHh2Wer69eu3+fnvete7Mn369Bx//PH5xS9+\nsWkk57777ss111yTa665JmPGjMnHPvax7daRPDs9Lnn2a25ra8uHPvShLT7mxhtvzL333pvFixfn\n8ssvz7x583b4ugDUn40MANjCjsLIRgcccEB+8pOfZNWqVUmenfp12223Zb/99stvf/vb9PX1pVar\n5e67797icw866KD86Ec/SpL09vZm+vTpWbduXUaMGJF169YlSQ4++OB873vfS5KsXr06X/jCF5Ik\nr371q3PfffclSe66665t1veSl7wkr3vd6/LFL34xxxxzzKag1N3dnb333jtjxozJY489lv/5n//Z\nFGo2fu1jx47N448/niT55S9/mdWrVyd5dtTrlltu2RS2/vM//zOPPPJIbrjhhjz44IM57LDD8tnP\nfjaPP/64XeAAhggjPQBsYXs7mP3lcxMnTszs2bPzkY98JC984Quz22675Utf+lLGjRuXk046KTNn\nzsy+++6bffbZJ08//fRmn3/00Ufn/vvvz4wZM7Jhw4Z8+MMfzqhRozJlypScc845+fSnP53PfOYz\n+X//7//le9/7Xv70pz/l5JNPTpK0t7fnzDPPzM0335yDDjposw0Inut973tf2tvbc9NNN216bMqU\nKfnGN76RmTNnZtKkSfnYxz6Wiy++OK2trZvVd8011+QDH/hA3vCGN+Q1r3lNkuQd73hHHnjggcyY\nMSMjR47MG97whuy777556qmncs4552waBTvxxBM3hSwAilWpDfTPeQAAAMOQP0EBAAClJvQAAACl\nJvQAAAClJvQAAAClJvQAAAClJvQAAAClJvQAAACl9v8BRRdgeDEFcNAAAAAASUVORK5CYII=\n",
861 "text/plain": [
862 "<matplotlib.figure.Figure at 0x7f9539bf92d0>"
863 ]
864 },
865 "metadata": {},
866 "output_type": "display_data"
867 }
868 ],
869 "source": [
870 "model = sm.OLS(Y_autocorrelated_diff, sm.add_constant(X[1:])).fit()\n",
871 "B0, B1 = model.params\n",
872 "residuals = model.resid\n",
873 "\n",
874 "plt.scatter(model.predict(), residuals);\n",
875 "plt.axhline(0, color='red')\n",
876 "plt.xlabel('Predicted Values');\n",
877 "plt.ylabel('Residuals');\n",
878 "\n",
879 "# Running and interpreting a Ljung-Box test\n",
880 "ljung_box = smd.acorr_ljungbox(residuals, lags = 10)\n",
881 "print \"P-values:\", ljung_box[1], \"\\n\"\n",
882 "\n",
883 "if any(ljung_box[1] < 0.05):\n",
884 " print \"The residuals are autocorrelated.\"\n",
885 "else:\n",
886 " print \"The residuals are not autocorrelated.\""
887 ]
888 },
889 {
890 "cell_type": "markdown",
891 "metadata": {},
892 "source": [
893 "*Note: This new regression was conducted on the differences between data, and therefore the regression output must be back-transformed to reach a prediction in the original scale. Since we regressed the differences, we can add our predicted difference onto the original data to get our estimate:*\n",
894 "\n",
895 "$$\\hat{Y_i} = Y_{i-1} + \\hat{Y_{diff}}$$"
896 ]
897 },
898 {
899 "cell_type": "markdown",
900 "metadata": {},
901 "source": [
902 "We can also perform a log transformation, if we so choose. This process is identical to the one we performed on the heteroscedastic data up above, so we will leave it out this time."
903 ]
904 },
905 {
906 "cell_type": "markdown",
907 "metadata": {},
908 "source": [
909 "# Example: Market Beta Calculation\n",
910 "\n",
911 "Let's calculate the market beta between TSLA and SPY using a simple linear regression, and then conduct a residual analysis on the regression to ensure the validity of our results. To regress TSLA and SPY, we will focus on their returns, not their price, and set SPY returns as our independent variable and TSLA returns as our outcome variable. The regression will give us a line of best fit: \n",
912 "\n",
913 "$$\\hat{r_{TSLA}} = \\hat{\\beta_0} + \\hat{\\beta_1}r_{SPY}$$\n",
914 "\n",
915 "The slope of the regression line $\\hat{\\beta_1}$ will represent our market beta, as for every $r$ percent change in the returns of SPY, the predicted returns of TSLA will change by $\\hat{\\beta_1}$.\n",
916 "\n",
917 "Let's start by conducting the regression the returns of the two assets."
918 ]
919 },
920 {
921 "cell_type": "code",
922 "execution_count": 23,
923 "metadata": {
924 "scrolled": false
925 },
926 "outputs": [
927 {
928 "name": "stdout",
929 "output_type": "stream",
930 "text": [
931 "Estimated TSLA Beta: 1.92533467685\n"
932 ]
933 },
934 {
935 "data": {
936 "image/png": "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\n",
937 "text/plain": [
938 "<matplotlib.figure.Figure at 0x7f9539c24990>"
939 ]
940 },
941 "metadata": {},
942 "output_type": "display_data"
943 }
944 ],
945 "source": [
946 "start = '2014-01-01'\n",
947 "end = '2015-01-01'\n",
948 "asset = get_pricing('TSLA', fields='price', start_date=start, end_date=end)\n",
949 "benchmark = get_pricing('SPY', fields='price', start_date=start, end_date=end)\n",
950 "\n",
951 "# We have to take the percent changes to get to returns\n",
952 "# Get rid of the first (0th) element because it is NAN\n",
953 "r_a = asset.pct_change()[1:].values\n",
954 "r_b = benchmark.pct_change()[1:].values\n",
955 "\n",
956 "# Regressing the benchmark b and asset a\n",
957 "r_b = sm.add_constant(r_b)\n",
958 "model = sm.OLS(r_a, r_b).fit()\n",
959 "r_b = r_b[:, 1]\n",
960 "B0, B1 = model.params\n",
961 "\n",
962 "# Plotting the regression\n",
963 "A_hat = (B1*r_b + B0)\n",
964 "plt.scatter(r_b, r_a, alpha=1) # Plot the raw data\n",
965 "plt.plot(r_b, A_hat, 'r', alpha=1); # Add the regression line, colored in red\n",
966 "plt.xlabel('TSLA Returns')\n",
967 "plt.ylabel('SPY Returns')\n",
968 "\n",
969 "# Print our result\n",
970 "print \"Estimated TSLA Beta:\", B1\n",
971 "\n",
972 "# Calculating the residuals\n",
973 "residuals = model.resid"
974 ]
975 },
976 {
977 "cell_type": "markdown",
978 "metadata": {},
979 "source": [
980 "Our regression yielded an estimated market beta of 1.9253; according to the regression, for every 1% in return we see from the SPY, we should see 1.92% from TSLA.\n",
981 "\n",
982 "Now that we have the regression results and residuals, we can conduct our residual analysis. Our first step will be to plot the residuals and look for any red flags:"
983 ]
984 },
985 {
986 "cell_type": "code",
987 "execution_count": 24,
988 "metadata": {
989 "scrolled": false
990 },
991 "outputs": [
992 {
993 "data": {
994 "image/png": "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\n0dHoKXO6/oYSgoJ9F02PgdO9nMnOTb28ACIXUqAaPXq0CgoKNGHCBKWkpGjv3r26/PLLY102ABEI\ntdFMwyz5OB1COkSjp8zp+htKz02w76LpMaDHyFlu6uUFELmQAtUTTzyhHTt26OOPP5ZlWZo3b56u\nvfbaWJcNQARCbTTTMOuSLFednQ4hHaLRU5YI9TfYdzFeegsRnmidt2T5zQHcLmig+uijj3TVVVdp\n165dSklJ0de//vXO5959911dc801MS8gADPx0mhOJMly1TleQkgkPWXRbojGsmEb7LsYL72FCE+0\nzluy/OYAbhc0UL322mu66qqrtGrVqgue83g8BCogjsVLozmR+F913rTprPLz13DVOEYiCf3RbojG\nsmEb7LsY6BjQaxH/onXBih5KwB2CBqolS5ZIkn7zm990+3tra6tSUlJiVyogCBobiBX/q86nTvVp\nb2Rz1TgWIgn90W6IOtWwDXQM8vPX0msR56J1wYoeSsAdQppD9dvf/lanTp3SnDlzdPvtt+vzzz/X\nvHnzNHfu3FiXD7gAQyQQKx1XnTdtOqtTp/pImiauGsenaDdE46lhS69F8mBoNuAOIXUzrVu3Trfe\nequ2bt2q0aNH649//KM2b94c67IBAdHYQKx0XHWeMSNNUoGkIXK6cZ2IamsblJ+/VtnZG5Wfv0Z1\ndQ1R/4zi4um69dYSffObZRox4t/08ceK6LO63m+tRoz4N33yyUURvZ/JMejY5sCBP0uy2v96Yf2z\n4/jCHh2/Obt3z9S6dXMYbQEkqJB6qPr166e+ffvqrbfe0k033cRwPzgqnq4kI7hEHZ4ZylXjRN03\nO9jRi9zREM3PX6v3339IVVUevf+++WcFer89e8zfz+QYdG1zXNJaZWQ06/rr+11Q/+ilB4D4ElKg\nkqTHH39c7733nn72s59pz549am5ujmW5gB7ZNUSCBnPkErXhF8r8iETdNzvY2Yscr3OpTN6na5sh\nkubqa1/bqHXrZkatjPymAUBshBSofv7zn+t3v/ud7rjjDqWmpuqzzz7T448/HuuyAQHZtXodDebI\nuXl4ppv3LVJ29iLH61wqk/cJdRvTMvKbBgCxEVKgyszM1MiRI7V9+3b5fD5dffXVuuyyy2JdNsBR\nNJgjZ1fD2okr7ww97ZmdE+2j/VnRej+T9wl1G9My8psGJD56muNTSIHqqaee0qFDh1RdXa3bb79d\n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\nUK6FtYMAAAAASUVORK5CYII=\n",
995 "text/plain": [
996 "<matplotlib.figure.Figure at 0x7f9539b7a0d0>"
997 ]
998 },
999 "metadata": {},
1000 "output_type": "display_data"
1001 }
1002 ],
1003 "source": [
1004 "plt.scatter(model.predict(), residuals);\n",
1005 "plt.axhline(0, color='red')\n",
1006 "plt.xlabel('TSLA Returns');\n",
1007 "plt.ylabel('Residuals');"
1008 ]
1009 },
1010 {
1011 "cell_type": "markdown",
1012 "metadata": {},
1013 "source": [
1014 "By simply observing the distribution of residuals, it does not seem as if there are any abnormalities. The distribution is relatively random and no patterns can be observed (the clustering around the origin is a result of the nature of returns to cluster around 0 and is not a red flag). Our qualitative conclusion is that the data is homoscedastic and not autocorrelated and therefore satisfies the assumptions for linear regression.\n",
1015 "\n",
1016 "###Breusch-Pagan Heteroscedasticity Test\n",
1017 "\n",
1018 "Our qualitative assessment of the residual plot is nicely supplemented with a couple statistical tests. Let's begin by testing for heteroscedasticity using a Breusch-Pagan test. Using the `het_breuschpagan` function from the statsmodels package:"
1019 ]
1020 },
1021 {
1022 "cell_type": "code",
1023 "execution_count": 25,
1024 "metadata": {
1025 "scrolled": true
1026 },
1027 "outputs": [
1028 {
1029 "name": "stdout",
1030 "output_type": "stream",
1031 "text": [
1032 "Lagrange Multiplier Statistic: 0.669337376498\n",
1033 "P-value: 0.413282723143\n",
1034 "f-value: 0.665779433495\n",
1035 "f_p-value: 0.415306831916 \n",
1036 "\n",
1037 "The relationship is not heteroscedastic.\n"
1038 ]
1039 }
1040 ],
1041 "source": [
1042 "bp_test = smd.het_breushpagan(residuals, model.model.exog)\n",
1043 "\n",
1044 "print \"Lagrange Multiplier Statistic:\", bp_test[0]\n",
1045 "print \"P-value:\", bp_test[1]\n",
1046 "print \"f-value:\", bp_test[2]\n",
1047 "print \"f_p-value:\", bp_test[3], \"\\n\"\n",
1048 "if bp_test[1] > 0.05:\n",
1049 " print \"The relationship is not heteroscedastic.\"\n",
1050 "if bp_test[1] < 0.05:\n",
1051 " print \"The relationship is heteroscedastic.\""
1052 ]
1053 },
1054 {
1055 "cell_type": "markdown",
1056 "metadata": {},
1057 "source": [
1058 "Because the P-value is greater than 0.05, we do not have enough evidence to reject the null hypothesis that the relationship is homoscedastic. This result matches up with our qualitative conclusion."
1059 ]
1060 },
1061 {
1062 "cell_type": "markdown",
1063 "metadata": {},
1064 "source": [
1065 "###Ljung-Box Autocorrelation Test\n",
1066 "\n",
1067 "Let's also check for autocorrelation quantitatively using a Ljung-Box test. Using the `acorr_ljungbox` function from the statsmodels package and the default maximum lag:"
1068 ]
1069 },
1070 {
1071 "cell_type": "code",
1072 "execution_count": 26,
1073 "metadata": {
1074 "scrolled": true
1075 },
1076 "outputs": [
1077 {
1078 "name": "stdout",
1079 "output_type": "stream",
1080 "text": [
1081 "P-Values: [ 0.8846583 0.88950844 0.96229443 0.96341497 0.91599599 0.93032135\n",
1082 " 0.9643816 0.97852899 0.98390172 0.98786945 0.99167638 0.97134708\n",
1083 " 0.91203802 0.9216252 0.94242703 0.87812148 0.90007513 0.92664875\n",
1084 " 0.94471082 0.88594594 0.88744682 0.91583141 0.8960177 0.92045423\n",
1085 " 0.87780239 0.89866989 0.91536025 0.93228388 0.93825939 0.95373621\n",
1086 " 0.91155827 0.9313345 0.94201011 0.94355971 0.94414366 0.95678029\n",
1087 " 0.96694651 0.96684993 0.95284072 0.96254994] \n",
1088 "\n",
1089 "The residuals are not autocorrelated.\n"
1090 ]
1091 }
1092 ],
1093 "source": [
1094 "ljung_box = smd.acorr_ljungbox(r_a)\n",
1095 "print \"P-Values:\", ljung_box[1], \"\\n\"\n",
1096 "if any(ljung_box[1] < 0.05):\n",
1097 " print \"The residuals are autocorrelated.\"\n",
1098 "else:\n",
1099 " print \"The residuals are not autocorrelated.\""
1100 ]
1101 },
1102 {
1103 "cell_type": "markdown",
1104 "metadata": {},
1105 "source": [
1106 "Because the Ljung-Box test yielded p-values above 0.05 for all lags, we can conclude that the residuals are not autocorrelated. This result matches up with our qualitative conclusion.\n",
1107 "\n",
1108 "After having visually assessed the residual plot of the regression and then backing it up using statistical tests, we can conclude that the data satisfies the main assumptions and the linear model is valid."
1109 ]
1110 },
1111 {
1112 "cell_type": "markdown",
1113 "metadata": {},
1114 "source": [
1115 "## References\n",
1116 "* \"Analysis of Financial Time Series\", by Ruey Tsay"
1117 ]
1118 },
1119 {
1120 "cell_type": "markdown",
1121 "metadata": {},
1122 "source": [
1123 "*This presentation is for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation for any security; nor does it constitute an offer to provide investment advisory or other services by Quantopian, Inc. (\"Quantopian\"). Nothing contained herein constitutes investment advice or offers any opinion with respect to the suitability of any security, and any views expressed herein should not be taken as advice to buy, sell, or hold any security or as an endorsement of any security or company. In preparing the information contained herein, Quantopian, Inc. has not taken into account the investment needs, objectives, and financial circumstances of any particular investor. Any views expressed and data illustrated herein were prepared based upon information, believed to be reliable, available to Quantopian, Inc. at the time of publication. Quantopian makes no guarantees as to their accuracy or completeness. All information is subject to change and may quickly become unreliable for various reasons, including changes in market conditions or economic circumstances.*"
1124 ]
1125 }
1126 ],
1127 "metadata": {
1128 "kernelspec": {
1129 "display_name": "Python 2 (virtualenv)",
1130 "language": "python",
1131 "name": "python2"
1132 },
1133 "language_info": {
1134 "codemirror_mode": {
1135 "name": "ipython",
1136 "version": 2
1137 },
1138 "file_extension": ".py",
1139 "mimetype": "text/x-python",
1140 "name": "python",
1141 "nbconvert_exporter": "python",
1142 "pygments_lexer": "ipython2",
1143 "version": "2.7.12"
1144 }
1145 },
1146 "nbformat": 4,
1147 "nbformat_minor": 1
1148 }