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, 27 Apr 2016   Prob (F-statistic):          2.83e-239
   Time:                        23:30:36   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="s1">&#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="s1">&#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.34233516  -0.04024948  10.01025357]
   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, 27 Apr 2016   Prob (F-statistic):           6.30e-27
   Time:                        23:30:36   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="s1">&#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="s1">&#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="s1">&#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.46872448  0.48360119 -0.01740479  5.20584496]
   Standard errors:  [ 0.02640602  0.10380518  0.00231847  0.17121765]
   Predicted values:  [  4.77072516   5.22213464   5.63620761   5.98658823   6.25643234
      6.44117491   6.54928009   6.60085051   6.62432454   6.6518039
      6.71377946   6.83412169   7.02615877   7.29048685   7.61487206
      7.97626054   8.34456611   8.68761335   8.97642389   9.18997755
      9.31866582   9.36587056   9.34740836   9.28893189   9.22171529
      9.17751587   9.1833565    9.25708583   9.40444579   9.61812821
      9.87897556  10.15912843  10.42660281  10.65054491  10.8063004
     10.87946503  10.86825119  10.78378163  10.64826203  10.49133265
     10.34519853  10.23933827  10.19566084  10.22490593  10.32487947
     10.48081414  10.66779556  10.85485568  11.01006072  11.10575781]
   
   </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="s1">&#39;o&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#39;b-&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#39;r--.&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#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="s1">&#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="s1">&#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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
   +1+ZpPYfjr+8DwAAAABJRU5ErkJggg==
   "
   >
   </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="c1">#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="c1"># 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.40816327  0.          0.          1.        ]
    [ 0.81632653  0.          0.          1.        ]
    [ 1.2244898   0.          0.          1.        ]
    [ 1.63265306  0.          0.          1.        ]]
   [  9.28223335  10.50481865  11.84389206  10.38508408  12.37941998]
   [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, 27 Apr 2016   Prob (F-statistic):           6.30e-27
   Time:                        23:30:38   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="s1">&#39;o&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#39;b-&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#39;r--.&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&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="s1">&#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="s1">&#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="s2">&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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
   jh2xlI5zmJdfhgsvhHPOgZ070z+OiIhIEjoNY+fcauDdNg9PB5bEP14CHLm/Y3m5Vx399EYuGPAc
   N1VfxMKFfairg+llP6HflD8xvexnad1aLirKA/a3eXQ/hYVpFIqvX+91ybrgApg6Fd54A44/PvXj
   iIiIpCCpOWMzGwb8r3NuXPzzXc65YxL+/R3n3LEdfK87kD+Qywb/hYbBp2a8WUfG5ox//3u45hq4
   +Wa4+mrtqiQiImnxbQvFroZxExFeumsV468f78sa4dZq6h07YhQWpllN/f77EItBfttb3iIiIslL
   J4zTXdrUaGZDnHONZnY88I8jffF/DT4G+8fjPDX3z0yePJnJkyenedr2DR8+jAcfrOjaQXQlLCIi
   aVi5ciUrV67s0jGSvTI+Ee/KeGz889uBXc65283su8Ag59wtHXyvc3v3hqNZx+bNcOut3pzwl78c
   9GhERKQb8mtp00PA88BIM9tmZt8AfgicY2avAVPjn3cs6CCur4dvfxvOOAOGDoWzzw52PCIiIgk6
   vU3tnLusg3+amuGxZN7evTB7Nixd6hVlbdwIxxzT+feJiIhkUfduqNy3LxQWwquvwnHHBT0aERGR
   dmVl16YPdmTKtkgEvv99BbGIiIRaVnpTwz5/+0W/8w68/voRN5MQERHJBl8KuDIjg/2iE+3eDXPm
   wMiR8OSTmT22iIhIlmQpjKHL/aITRaPeEqURI7w9hdeuhaqqzBxbREQky7JYwJVmv+j2fPWrMGgQ
   PPecd1UsIiKSw3JzzvjgQejTp+vHERERybDQzhmXlS1IL4g7+kNBQSwiIt1IVq6MUz5HczMsWQKL
   Fnm3ovv392dwIiIiGRbaK+OkHToE998Po0fDb38LixcriEVEpNsLTweuZ5+FmTNh8GC4916YNCno
   EYmIiGRFeG5Tr18PjY0wdSq+bHosIiKSBencpg5PGIuIiHQD4Z8zdg6WL4ft27N6WhERkTDLXhhX
   V8OUKTBrFjQ0ZO20IiIiYZedAq5p07y9hCsqYMYM6B2eujEREZGgZScVL74YvvENNesQERFphwq4
   REREMij8BVwiIiLyEQpjERGRgCmMRUREAqYwFhERCZjCWEREJGAKYxERkYApjEVERAKmMBYREQmY
   wlhERCRgCmMREZGAKYxFREQCpjAWEREJmMJYREQkYApjERGRgCmMRUREAqYwFhERCZjCWEREJGAK
   YxERkYApjEVERAKmMBYREQmYwlhERCRgCmMREZGAKYxFREQCpjAWEREJmMJYREQkYApjERGRgCmM
   RUREAqYwFhERCZjCWEREJGC9u/LNZrYV2APEgGbn3BmZGJSIiEhP0tUr4xgw2Tn3Lwri7mnlypVB
   D0HSpOcut+n561m6GsaWgWNIiOkXQu7Sc5fb9Pz1LF0NUgc8ZWZrzeyqTAxIRESkp+nSnDFwlnNu
   p5kdBzxjZhucc6szMTAREZGewpxzmTmQWQUQdc7d1ebxzJxAREQkRzjnLJWvT/vK2Mz6AXnOuX1m
   lg98AZjb1QGJiIj0NF25TT0EWBa/8u0N/No593RmhiUiItJzZOw2tYiIiKTHt2VJZnaumb1qZhvN
   7Lt+nUf8YWZbzezvZvaymf0t6PHIkZnZvWbWaGbrEx4bZGZPm9lrZvaUmQ0IcozSsQ6evwoz225m
   /xd/OzfIMUr7zGyoma0wszoze8XM/iP+eEqvP1/C2MzygB8B04BS4GtmdrIf5xLfqKFLbvkV3ust
   0S3AcufcKGAFMDvro5Jktff8AdzlnDs1/vbnbA9KktIC3OCcKwHOBK6N511Krz+/rozPAF53ztU7
   55qBpcB0n84l/lBDlxwSX1L4bpuHpwNL4h8vAS7K6qAkaR08f+C9DiXEnHM7nXPr4h/vAzYAQ0nx
   9efXL9si4M2Ez7fHH5PcoYYuuW+wc64RvF8YwHEBj0dSd62ZrTOzX2iaIfzM7ETgFGANMCSV159f
   YdzeX3OqFMstZznnTgPOx/uFMCHoAYn0MD8Bip1zpwA7gbs6+XoJkJn1B34HfCd+hZxS5vkVxtuB
   TyR8PhTY4dO5xAfxv+Rwzr0NLMObepDc0mhmQwDM7HjgHwGPR1LgnHvbfbjc5X+A04Mcj3TMzHrj
   BfEDzrnH4w+n9PrzK4zXAieZ2TAz6wN8FfiDT+eSDDOzfvG/8kho6FIT7KgkCcbhd6X+AFwR//jr
   wONtv0FC5bDnL/4LvNXF6DUYZr8E6pxz9yQ8ltLrz7d1xvEy/HvwAv9e59wPfTmRZJyZDce7Gk5s
   6KLnL8TM7CFgMnAs0AhUAL8HHgE+DmwDLnHO7Q5qjNKxDp6/KXjzjzFgKzCzdQ5SwsPMPgusAl7B
   +53pgO8BfwMeJsnXn5p+iIiIBExLV0RERAKmMBYREQmYwlhERCRgCmMREZGAKYxFREQCpjAWEREJ
   mMJYREQkYApjERGRgP0/kbpGg8ubh4gAAAAASUVORK5CYII=
   "
   >
   </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.49268198]]), 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="s2">&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.49268198]]), 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.22491119]]), 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="s2">&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.22491119]]), 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, 27 Apr 2016   Prob (F-statistic):           4.98e-10
   Time:                        23:30:40   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:1557: UserWarning: kurtosistest only valid for n&gt;=20 ... continuing anyway, n=16
     &quot;anyway, n=%i&quot; % 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="s2">&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="s2">&quot;Percentage change </span><span class="si">%4.2f%%</span><span class="se">\n</span><span class="s2">&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="s2">&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>