Ordinary Least Squares
======================


.. _ols_notebook:

`Link to Notebook GitHub <https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/ols.ipynb>`_

.. raw:: html

   
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[1]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
   <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="kn">import</span> <span class="nn">statsmodels.api</span> <span class="kn">as</span> <span class="nn">sm</span>
   <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
   <span class="kn">from</span> <span class="nn">statsmodels.sandbox.regression.predstd</span> <span class="kn">import</span> <span class="n">wls_prediction_std</span>
   
   <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">9876789</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="ols-estimation">OLS estimation</h2>
   <p>Artificial data:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[2]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">nsample</span> <span class="o">=</span> <span class="mi">100</span>
   <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">x</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
   <span class="n">beta</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mi">10</span><span class="p">])</span>
   <span class="n">e</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="n">nsample</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Our model needs an intercept so we add a column of 1s:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[3]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">X</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">add_constant</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">)</span> <span class="o">+</span> <span class="n">e</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Fit and summary:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[4]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">model</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span>
   <span class="n">results</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">results</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       1.000
   Model:                            OLS   Adj. R-squared:                  1.000
   Method:                 Least Squares   F-statistic:                 4.020e+06
   Date:                Wed, 20 May 2015   Prob (F-statistic):          2.83e-239
   Time:                        21:54:06   Log-Likelihood:                -146.51
   No. Observations:                 100   AIC:                             299.0
   Df Residuals:                      97   BIC:                             306.8
   Df Model:                           2                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const          1.3423      0.313      4.292      0.000         0.722     1.963
   x1            -0.0402      0.145     -0.278      0.781        -0.327     0.247
   x2            10.0103      0.014    715.745      0.000         9.982    10.038
   ==============================================================================
   Omnibus:                        2.042   Durbin-Watson:                   2.274
   Prob(Omnibus):                  0.360   Jarque-Bera (JB):                1.875
   Skew:                           0.234   Prob(JB):                        0.392
   Kurtosis:                       2.519   Cond. No.                         144.
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Quantities of interest can be extracted directly from the fitted model. Type <code>dir(results)</code> for a full list. Here are some examples:  </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[5]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="s">&#39;Parameters: &#39;</span><span class="p">,</span> <span class="n">results</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;R2: &#39;</span><span class="p">,</span> <span class="n">results</span><span class="o">.</span><span class="n">rsquared</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Parameters:  [  1.3423  -0.0402  10.0103]
   R2:  0.999987936503
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="ols-non-linear-curve-but-linear-in-parameters">OLS non-linear curve but linear in parameters</h2>
   <p>We simulate artificial data with a non-linear relationship between x and y:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[6]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">nsample</span> <span class="o">=</span> <span class="mi">50</span>
   <span class="n">sig</span> <span class="o">=</span> <span class="mf">0.5</span>
   <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="n">nsample</span><span class="p">)</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="p">(</span><span class="n">x</span><span class="o">-</span><span class="mi">5</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="n">nsample</span><span class="p">)))</span>
   <span class="n">beta</span> <span class="o">=</span> <span class="p">[</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.02</span><span class="p">,</span> <span class="mf">5.</span><span class="p">]</span>
   
   <span class="n">y_true</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">)</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">y_true</span> <span class="o">+</span> <span class="n">sig</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="n">nsample</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Fit and summary:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[7]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       0.933
   Model:                            OLS   Adj. R-squared:                  0.928
   Method:                 Least Squares   F-statistic:                     211.8
   Date:                Wed, 20 May 2015   Prob (F-statistic):           6.30e-27
   Time:                        21:54:07   Log-Likelihood:                -34.438
   No. Observations:                  50   AIC:                             76.88
   Df Residuals:                      46   BIC:                             84.52
   Df Model:                           3                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   x1             0.4687      0.026     17.751      0.000         0.416     0.522
   x2             0.4836      0.104      4.659      0.000         0.275     0.693
   x3            -0.0174      0.002     -7.507      0.000        -0.022    -0.013
   const          5.2058      0.171     30.405      0.000         4.861     5.550
   ==============================================================================
   Omnibus:                        0.655   Durbin-Watson:                   2.896
   Prob(Omnibus):                  0.721   Jarque-Bera (JB):                0.360
   Skew:                           0.207   Prob(JB):                        0.835
   Kurtosis:                       3.026   Cond. No.                         221.
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Extract other quantities of interest:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[8]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="s">&#39;Parameters: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;Standard errors: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">bse</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;Predicted values: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">predict</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Parameters:  [ 0.4687  0.4836 -0.0174  5.2058]
   Standard errors:  [ 0.0264  0.1038  0.0023  0.1712]
   Predicted values:  [  4.7707   5.2221   5.6362   5.9866   6.2564   6.4412   6.5493   6.6009
      6.6243   6.6518   6.7138   6.8341   7.0262   7.2905   7.6149   7.9763
      8.3446   8.6876   8.9764   9.19     9.3187   9.3659   9.3474   9.2889
      9.2217   9.1775   9.1834   9.2571   9.4044   9.6181   9.879   10.1591
     10.4266  10.6505  10.8063  10.8795  10.8683  10.7838  10.6483  10.4913
     10.3452  10.2393  10.1957  10.2249  10.3249  10.4808  10.6678  10.8549
     11.0101  11.1058]
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Draw a plot to compare the true relationship to OLS predictions. Confidence intervals around the predictions are built using the <code>wls_prediction_std</code> command.</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[9]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">prstd</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="n">iv_u</span> <span class="o">=</span> <span class="n">wls_prediction_std</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
   
   <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s">&#39;o&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;data&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y_true</span><span class="p">,</span> <span class="s">&#39;b-&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;True&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">fittedvalues</span><span class="p">,</span> <span class="s">&#39;r--.&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;OLS&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_u</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">&#39;best&#39;</span><span class="p">);</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   eU1AMwAAAABJRU5ErkJggg==
   "
   >
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="ols-with-dummy-variables">OLS with dummy variables</h2>
   <p>We generate some artificial data. There are 3 groups which will be modelled using dummy variables. Group 0 is the omitted/benchmark category.</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[10]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">nsample</span> <span class="o">=</span> <span class="mi">50</span>
   <span class="n">groups</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">nsample</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
   <span class="n">groups</span><span class="p">[</span><span class="mi">20</span><span class="p">:</span><span class="mi">40</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
   <span class="n">groups</span><span class="p">[</span><span class="mi">40</span><span class="p">:]</span> <span class="o">=</span> <span class="mi">2</span>
   <span class="c">#dummy = (groups[:,None] == np.unique(groups)).astype(float)</span>
   
   <span class="n">dummy</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">categorical</span><span class="p">(</span><span class="n">groups</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
   <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="n">nsample</span><span class="p">)</span>
   <span class="c"># drop reference category</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">dummy</span><span class="p">[:,</span><span class="mi">1</span><span class="p">:]))</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">add_constant</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">prepend</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
   
   <span class="n">beta</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span>
   <span class="n">y_true</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">)</span>
   <span class="n">e</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="n">nsample</span><span class="p">)</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">y_true</span> <span class="o">+</span> <span class="n">e</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Inspect the data:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[11]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">X</span><span class="p">[:</span><span class="mi">5</span><span class="p">,:])</span>
   <span class="k">print</span><span class="p">(</span><span class="n">y</span><span class="p">[:</span><span class="mi">5</span><span class="p">])</span>
   <span class="k">print</span><span class="p">(</span><span class="n">groups</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">dummy</span><span class="p">[:</span><span class="mi">5</span><span class="p">,:])</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   [[ 0.      0.      0.      1.    ]
    [ 0.4082  0.      0.      1.    ]
    [ 0.8163  0.      0.      1.    ]
    [ 1.2245  0.      0.      1.    ]
    [ 1.6327  0.      0.      1.    ]]
   [  9.2822  10.5048  11.8439  10.3851  12.3794]
   [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    1 1 1 2 2 2 2 2 2 2 2 2 2]
   [[ 1.  0.  0.]
    [ 1.  0.  0.]
    [ 1.  0.  0.]
    [ 1.  0.  0.]
    [ 1.  0.  0.]]
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Fit and summary:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[12]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">res2</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       0.933
   Model:                            OLS   Adj. R-squared:                  0.928
   Method:                 Least Squares   F-statistic:                     211.8
   Date:                Wed, 20 May 2015   Prob (F-statistic):           6.30e-27
   Time:                        21:54:08   Log-Likelihood:                -34.438
   No. Observations:                  50   AIC:                             76.88
   Df Residuals:                      46   BIC:                             84.52
   Df Model:                           3                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   x1             0.4687      0.026     17.751      0.000         0.416     0.522
   x2             0.4836      0.104      4.659      0.000         0.275     0.693
   x3            -0.0174      0.002     -7.507      0.000        -0.022    -0.013
   const          5.2058      0.171     30.405      0.000         4.861     5.550
   ==============================================================================
   Omnibus:                        0.655   Durbin-Watson:                   2.896
   Prob(Omnibus):                  0.721   Jarque-Bera (JB):                0.360
   Skew:                           0.207   Prob(JB):                        0.835
   Kurtosis:                       3.026   Cond. No.                         221.
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Draw a plot to compare the true relationship to OLS predictions:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[13]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">prstd</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="n">iv_u</span> <span class="o">=</span> <span class="n">wls_prediction_std</span><span class="p">(</span><span class="n">res2</span><span class="p">)</span>
   
   <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s">&#39;o&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;Data&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y_true</span><span class="p">,</span> <span class="s">&#39;b-&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;True&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">res2</span><span class="o">.</span><span class="n">fittedvalues</span><span class="p">,</span> <span class="s">&#39;r--.&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;Predicted&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_u</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="n">legend</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">&quot;best&quot;</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   "
   >
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="joint-hypothesis-test">Joint hypothesis test</h2>
   <h3 id="f-test">F test</h3>
   <p>We want to test the hypothesis that both coefficients on the dummy variables are equal to zero, that is, $R \times \beta = 0$. An F test leads us to strongly reject the null hypothesis of identical constant in the 3 groups:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[14]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">R</span> <span class="o">=</span> <span class="p">[[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">]]</span>
   <span class="k">print</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">R</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res2</span><span class="o">.</span><span class="n">f_test</span><span class="p">(</span><span class="n">R</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   [[0 1 0 0]
    [0 0 1 0]]
   &lt;F test: F=array([[ 145.4927]]), p=1.28344196173e-20, df_denom=46, df_num=2&gt;
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>You can also use formula-like syntax to test hypotheses</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[15]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">res2</span><span class="o">.</span><span class="n">f_test</span><span class="p">(</span><span class="s">&quot;x2 = x3 = 0&quot;</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   &lt;F test: F=array([[ 145.4927]]), p=1.28344196173e-20, df_denom=46, df_num=2&gt;
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h3 id="small-group-effects">Small group effects</h3>
   <p>If we generate artificial data with smaller group effects, the T test can no longer reject the Null hypothesis: </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[16]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">beta</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">0.3</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.0</span><span class="p">,</span> <span class="mi">10</span><span class="p">]</span>
   <span class="n">y_true</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">)</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">y_true</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="n">nsample</span><span class="p">)</span>
   
   <span class="n">res3</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[17]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">res3</span><span class="o">.</span><span class="n">f_test</span><span class="p">(</span><span class="n">R</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   &lt;F test: F=array([[ 1.2249]]), p=0.303186441063, df_denom=46, df_num=2&gt;
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[18]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">res3</span><span class="o">.</span><span class="n">f_test</span><span class="p">(</span><span class="s">&quot;x2 = x3 = 0&quot;</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   &lt;F test: F=array([[ 1.2249]]), p=0.303186441063, df_denom=46, df_num=2&gt;
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h3 id="multicollinearity">Multicollinearity</h3>
   <p>The Longley dataset is well known to have high multicollinearity. That is, the exogenous predictors are highly correlated. This is problematic because it can affect the stability of our coefficient estimates as we make minor changes to model specification. </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[19]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="kn">from</span> <span class="nn">statsmodels.datasets.longley</span> <span class="kn">import</span> <span class="n">load_pandas</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">load_pandas</span><span class="p">()</span><span class="o">.</span><span class="n">endog</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">load_pandas</span><span class="p">()</span><span class="o">.</span><span class="n">exog</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">add_constant</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Fit and summary:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[20]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">ols_model</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span>
   <span class="n">ols_results</span> <span class="o">=</span> <span class="n">ols_model</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">ols_results</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                 TOTEMP   R-squared:                       0.995
   Model:                            OLS   Adj. R-squared:                  0.992
   Method:                 Least Squares   F-statistic:                     330.3
   Date:                Wed, 20 May 2015   Prob (F-statistic):           4.98e-10
   Time:                        21:54:10   Log-Likelihood:                -109.62
   No. Observations:                  16   AIC:                             233.2
   Df Residuals:                       9   BIC:                             238.6
   Df Model:                           6                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const      -3.482e+06    8.9e+05     -3.911      0.004      -5.5e+06 -1.47e+06
   GNPDEFL       15.0619     84.915      0.177      0.863      -177.029   207.153
   GNP           -0.0358      0.033     -1.070      0.313        -0.112     0.040
   UNEMP         -2.0202      0.488     -4.136      0.003        -3.125    -0.915
   ARMED         -1.0332      0.214     -4.822      0.001        -1.518    -0.549
   POP           -0.0511      0.226     -0.226      0.826        -0.563     0.460
   YEAR        1829.1515    455.478      4.016      0.003       798.788  2859.515
   ==============================================================================
   Omnibus:                        0.749   Durbin-Watson:                   2.559
   Prob(Omnibus):                  0.688   Jarque-Bera (JB):                0.684
   Skew:                           0.420   Prob(JB):                        0.710
   Kurtosis:                       2.434   Cond. No.                     4.86e+09
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   [2] The condition number is large, 4.86e+09. This might indicate that there are
   strong multicollinearity or other numerical problems.
   
   </pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stderr output_text">
   <pre>
   /usr/lib/python2.7/dist-packages/scipy/stats/stats.py:1205: UserWarning: kurtosistest only valid for n&gt;=20 ... continuing anyway, n=16
     int(n))
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h4 id="condition-number">Condition number</h4>
   <p>One way to assess multicollinearity is to compute the condition number. Values over 20 are worrisome (see Greene 4.9). The first step is to normalize the independent variables to have unit length: </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[21]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">norm_x</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">values</span>
   <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">X</span><span class="p">):</span>
       <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s">&quot;const&quot;</span><span class="p">:</span>
           <span class="k">continue</span>
       <span class="n">norm_x</span><span class="p">[:,</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">X</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
   <span class="n">norm_xtx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">norm_x</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">norm_x</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Then, we take the square root of the ratio of the biggest to the smallest eigen values. </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[22]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">eigs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">eigvals</span><span class="p">(</span><span class="n">norm_xtx</span><span class="p">)</span>
   <span class="n">condition_number</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">eigs</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">/</span> <span class="n">eigs</span><span class="o">.</span><span class="n">min</span><span class="p">())</span>
   <span class="k">print</span><span class="p">(</span><span class="n">condition_number</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   56240.8689362
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h4 id="dropping-an-observation">Dropping an observation</h4>
   <p>Greene also points out that dropping a single observation can have a dramatic effect on the coefficient estimates: </p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[23]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">ols_results2</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="o">.</span><span class="n">ix</span><span class="p">[:</span><span class="mi">14</span><span class="p">],</span> <span class="n">X</span><span class="o">.</span><span class="n">ix</span><span class="p">[:</span><span class="mi">14</span><span class="p">])</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&quot;Percentage change </span><span class="si">%4.2f%%</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">*</span><span class="mi">7</span> <span class="o">%</span> <span class="nb">tuple</span><span class="p">([</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">(</span><span class="n">ols_results2</span><span class="o">.</span><span class="n">params</span> <span class="o">-</span> <span class="n">ols_results</span><span class="o">.</span><span class="n">params</span><span class="p">)</span><span class="o">/</span><span class="n">ols_results</span><span class="o">.</span><span class="n">params</span><span class="o">*</span><span class="mi">100</span><span class="p">]))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Percentage change -13.35%
   Percentage change -236.18%
   Percentage change -23.69%
   Percentage change -3.36%
   Percentage change -7.26%
   Percentage change -200.46%
   Percentage change -13.34%
   
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>We can also look at formal statistics for this such as the DFBETAS -- a standardized measure of how much each coefficient changes when that observation is left out.</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[24]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">infl</span> <span class="o">=</span> <span class="n">ols_results</span><span class="o">.</span><span class="n">get_influence</span><span class="p">()</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>In general we may consider DBETAS in absolute value greater than $2/\sqrt{N}$ to be influential observations</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[25]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="mf">2.</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">**.</span><span class="mi">5</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[25]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   0.5
   </pre>
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[26]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">infl</span><span class="o">.</span><span class="n">summary_frame</span><span class="p">()</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">regex</span><span class="o">=</span><span class="s">&quot;dfb&quot;</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
       dfb_const  dfb_GNPDEFL   dfb_GNP  dfb_UNEMP  dfb_ARMED   dfb_POP  dfb_YEAR
   0   -0.016406    -0.234566 -0.045095  -0.121513  -0.149026  0.211057  0.013388
   1   -0.020608    -0.289091  0.124453   0.156964   0.287700 -0.161890  0.025958
   2   -0.008382     0.007161 -0.016799   0.009575   0.002227  0.014871  0.008103
   3    0.018093     0.907968 -0.500022  -0.495996   0.089996  0.711142 -0.040056
   4    1.871260    -0.219351  1.611418   1.561520   1.169337 -1.081513 -1.864186
   5   -0.321373    -0.077045 -0.198129  -0.192961  -0.430626  0.079916  0.323275
   6    0.315945    -0.241983  0.438146   0.471797  -0.019546 -0.448515 -0.307517
   7    0.015816    -0.002742  0.018591   0.005064  -0.031320 -0.015823 -0.015583
   8   -0.004019    -0.045687  0.023708   0.018125   0.013683 -0.034770  0.005116
   9   -1.018242    -0.282131 -0.412621  -0.663904  -0.715020 -0.229501  1.035723
   10   0.030947    -0.024781  0.029480   0.035361   0.034508 -0.014194 -0.030805
   11   0.005987    -0.079727  0.030276  -0.008883  -0.006854 -0.010693 -0.005323
   12  -0.135883     0.092325 -0.253027  -0.211465   0.094720  0.331351  0.129120
   13   0.032736    -0.024249  0.017510   0.033242   0.090655  0.007634 -0.033114
   14   0.305868     0.148070  0.001428   0.169314   0.253431  0.342982 -0.318031
   15  -0.538323     0.432004 -0.261262  -0.143444  -0.360890 -0.467296  0.552421
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>

   <script src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"type="text/javascript"></script>
   <script type="text/javascript">
   init_mathjax = function() {
       if (window.MathJax) {
           // MathJax loaded
           MathJax.Hub.Config({
               tex2jax: {
               // I'm not sure about the \( and \[ below. It messes with the
               // prompt, and I think it's an issue with the template. -SS
                   inlineMath: [ ['$','$'], ["\\(","\\)"] ],
                   displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
               },
               displayAlign: 'left', // Change this to 'center' to center equations.
               "HTML-CSS": {
                   styles: {'.MathJax_Display': {"margin": 0}}
               }
           });
           MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
       }
   }
   init_mathjax();

   // since we have to load this in a ..raw:: directive we will add the css
   // after the fact
   function loadcssfile(filename){
       var fileref=document.createElement("link")
       fileref.setAttribute("rel", "stylesheet")
       fileref.setAttribute("type", "text/css")
       fileref.setAttribute("href", filename)

       document.getElementsByTagName("head")[0].appendChild(fileref)
   }
   // loadcssfile({{pathto("_static/nbviewer.pygments.css", 1) }})
   // loadcssfile({{pathto("_static/nbviewer.min.css", 1) }})
   loadcssfile("../../../_static/nbviewer.pygments.css")
   loadcssfile("../../../_static/ipython.min.css")
   </script>