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:                Thu, 21 May 2015   Prob (F-statistic):          2.83e-239
   Time:                        05:56:18   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.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:                Thu, 21 May 2015   Prob (F-statistic):           6.30e-27
   Time:                        05:56:18   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.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="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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
   "
   >
   </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.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:                Thu, 21 May 2015   Prob (F-statistic):           6.30e-27
   Time:                        05:56:20   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,iVBORw0KGgoAAAANSUhEUgAAAeEAAAFCCAYAAADGwmVOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
   AAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVeX2wPHvxgFEnGdTUckhzTLFMidwxKH5ZqW/ytJE
   uwXabGqJqQ3XWzehckpTK01vWt0kESfEKYc0Z0VxQpxQQUEEGd7fHy8gIMM5cCZgfZ7nPME+++z9
   IifWeae1DKUUQgghhLA9J3s3QAghhCirJAgLIYQQdiJBWAghhLATCcJCCCGEnUgQFkIIIexEgrAQ
   QghhJwUGYcMwXAzD2G4Yxt+GYRwyDOOTjOMBhmGcNQxjT8ajv22aK4QQQpQeRmH7hA3DcFVKJRqG
   UR7YDLwN9AbilVJf2KCNQgghRKlU6HC0Uiox48uKQDkgNuN7w1qNEkIIIcqCQoOwYRhOhmH8DVwE
   NiilDmY85WcYxl7DMOYZhlHdqq0UQgghSqFCh6OzTjSMasBqYBxwCIjJeGoK0EApNSLX+ZIPUwgh
   RJmjlDJ5pLi8GRe9ZhhGMOCplArLPG4YxrfA7/m8xtTLCwcTEBBAQECAvZshikh+fyWX/O5KNsMw
   b6a2sNXRtTOHmg3DqAT0BfYYhlE/22lPAvvNbKcQQghR5hXWE24ALDQMwwkdsL9XSq0zDGORYRjt
   AQWcBEZZuZ1CCCFEqVNgEFZK7Qc65HH8Rau1SDgEb29vezdBFIP8/kou+d2VLSYvzDL7woahZE5Y
   CCFEWWIYhnUWZlmKuZPWwnrkQ5IQQtiXzYMwyB9/RyAfhoQQwv6kgIMQQghhJxKEhRBCCDuRICyE
   EELYiQRhIYQQwk4kCAshhBB2IkE4m6ZNm+Lq6krVqlWpUaMGXbt2Zfbs2Sat5j516hROTk6kp6fb
   oKVCCCFKA7tsUcpPcHA4gYGhJCeXx9k5FX//fgwa1MNm1zAMg5UrV9KrVy/i4+MJCwtjzJgxbN++
   nfnz55t0Ddl+JYQQwlQOE4SDg8MZM2Y1kZHTso5FRk4AMDmIWuIamapUqcKjjz5K/fr16dy5M2+9
   9RanTp1i4sSJnDhxgmrVqjFixAgmTZoEQI8e+vrVq+vSymvXrqV27dqMHDmSffv2YRgGPj4+fP31
   11SrVs2stgghhCidHGY4OjAwNEfwBIiMnEZQ0BqbXiO3Tp060ahRIzZt2oSbmxs//PAD165dIzg4
   mJkzZ/Lbb78BsGnTJgCuXbtGfHw8Dz30EAATJkzg/PnzHD58mKioKClRJoQQIovDBOHk5Lw75UlJ
   5Wx6jbw0bNiQ2NhYvLy8aNu2LQDt2rXjueeeY+PGjUDew9AeHh707t2bChUqULt2bd54442s84UQ
   QgiHGY52dk7N87iLS5pNr5GX6Ohoatasyfbt2xk3bhwHDx7k1q1bJCcn88wzz+T7uosXLzJmzBg2
   b95MfHw86enp1KxZs1htEUIIUXo4TE/Y378fHh4Tchzz8BiPn19fm14jt507dxIdHU3Xrl0ZOnQo
   TzzxBGfPniUuLo7Ro0dnrYbOKxfz+PHjKVeuHAcOHODatWt8//33snpaCCFEFofpCWcunAoK+oCk
   pHK4uKTh59ffrAVVlrhG5rDy9evXCQ8PZ+zYsbzwwgvce++9JCQkUKNGDSpWrMiOHTtYvHgxPj4+
   ANSpUwcnJyciIyNp0aIFAAkJCVSrVo2qVasSHR3N9OnTTW6HEEKI0s/m9YQzai1a5Z7F1axZMy5e
   vEj58uVxcnKibdu2PP/884wePRrDMFi+fDlvvfUWV69excvLi2bNmhEXF8eiRYsAmDRpEjNnziQ1
   NZWQkBDc3Nx48cUXOXr0KC1atOD555/nyy+/5MyZM3b+SR379yCEECWVufWEJQiXUfJ7EEIIyzM3
   CDvMnLAQQghR1kgQFkIIIexEgrAQQghhJxKEhRBCCDuRICyEEELYiQRhIYQQwk4kCAshhBB2IkFY
   CCGEsBMJwkIIIYSdSBDOxs3NjSpVqlClShWcnJxwdXXN+n7JkiX2bp4QQohSRtJW5qNZs2bMmzeP
   Xr163fFcamoq5cs7TO2LIikpvwchhChJJG2lFYSFhdGoUSP+9a9/0aBBA4YPH87ChQvp3r17jvOc
   nJw4ceIEAMnJybz99tu4u7tTv359Xn31VZKSkuzRfCGEEA5KgrCJLl68SGxsLGfOnGHOnDmF9iLH
   jRvH8ePH2bt3L8ePHyc6OpqPPvrIRq0VQghREjhkEDYMyzwsycnJicmTJ1OhQgVcXFwKPFcpxdy5
   c/niiy+oXr06bm5uvP/++/z000+WbZQQQogSzSEnNh1xqrJOnTpUrFjRpHNjYmJITEykY8eOWceU
   UqSnp1ureUIIIUoghwzCjsjI1bWuXLkyiYmJWd9fuHAh6+vatWtTqVIlDh06RIMGDWzWRiGEECWL
   Qw5HlwT3338/Bw8eZO/evSQlJREQEJD1nJOTEyNHjmTs2LHExMQAEB0dTWhoqJ1aK4Qos06fhrQ0
   e7dC5EOCsIly94RbtmzJhx9+SJ8+fWjVqhXdu3fPcc5nn33G3XffTefOnalWrRp9+/YlIiLC1s0W
   QpRV+/ZB//7QtCn88Ye9WyPyIfuEyyj5PQhRyh09Ctu2we7d0KABvP++vVtUJpi7T1jmhIUQojRq
   1Uo/ANats29bRL5kOFoIIUqqgwfhlVfgwIH8z2nTBk6dslmThHkKDMKGYbgYhrHdMIy/DcM4ZBjG
   JxnHaxqGscYwjAjDMEINw6hum+YKIUQZpxSEhICPD/Tpo+d8GzbM/3xPTwgPt1nzhHkKnRM2DMNV
   KZVoGEZ5YDPwNvAYcFkp9S/DMN4DaiilxuV6ncwJOzD5PQhRAu3cCcOGQcWK8MYb8Nxz4Oxs71aJ
   bMydEzZ5YZZhGK7ARuAlYDngpZS6aBhGfSBMKdU61/kShB2Y/B6EKIEuXtRD0D17Wj4toLAIiwdh
   wzCcgN2ABzBTKfWuYRixSqkaGc8bwNXM77O9ToKwA5PfgxBCWJ7FqygppdKVUu2BRkAPwzB65npe
   AfLXXAghiis9HVauhN69ISzM3q0RNmDyFiWl1DXDMIKBjsBFwzDqK6UuGIbRALiU12uyZ5Hy9vbG
   29u7eK0VQojS6MYNWLgQZsyAKlX0fG+XLgW+JDg4nMDAUJKTy+PsnIq/fz8GDeqR98np6RAdDY0b
   W6HxZVtYWBhhxfjAVOBwtGEYtYFUpVScYRiVgNXAZMAHuKKU+swwjHFAdVmYlb+XXnqJxo0bM2XK
   FDZt2sTIkSM5cuSI1e/r5OTE8ePHad68+R3PlcXfgxAOads2eOwx6N5dB99u3Qqd7w0ODmfMmNVE
   Rk7LOubhMYEZM3zyDsTXr+sV1Nevg5PsTLUmSw9HNwDWG4bxN7Ad+F0ptQ74FOhrGEYE0Cvj+xKv
   adOmuLq6UqVKFerXr8/LL7/MjRs3in1dwzCyUlp2797dpAC8YMECunfvXux7CyEc3H33wfbtsGKF
   DsQmLLgKDAzNEYABIiOnERS0Ju8XVK0KNWroPNLCoRQYhJVS+5VSHZRS7ZVS9ymlpmccv6qU6qOU
   aqmU6qeUirNNc63LMAxWrlxJfHw8u3fvZteuXUydOjXHOampqUW6tvQ6hSjjUlP1I7fKlSGP0aqC
   JCfnPZOYlFQu/xe1aQOHDpl1H2F9Mi6Rj4YNGzJgwAAOHDiAk5MT33zzDS1atKBVRhq4lStX0r59
   e2rUqEHXrl3Zv39/1mv37NlDhw4dqFq1Ks899xxJSUlZz4WFhdE427xMVFQUTz31FHXr1qV27dr4
   +flx5MgRRo8ezbZt26hSpQo1a9YEIDk5mbfffht3d3fq16/Pq6++muPa06dPp2HDhjRq1Ij58+db
   +59ICGGKa9fg88/h7rthTT49VTM5O+fdGXBxKaBaUtu2EoQdkOMFYV9f8PaGgQMhrogd7GJcI7PH
   GhUVxR9//MEDDzwAwG+//cbOnTs5dOgQe/bsYcSIEcydO5erV68yatQoHnvsMVJSUrh16xZPPPEE
   w4YNIzY2lsGDB7N8+fI7qjABpKWl8cgjj9CsWTNOnz5NdHQ0Q4YMoXXr1syePZuHH36Y+Ph4rl69
   CsC4ceM4fvw4e/fu5fjx40RHR/PRRx8BEBISwueff87atWuJiIhg7dq1Rfu3E0JYRmQkjBkDzZrB
   X3/BsmUwYIBFLu3v3w8Pjwk5jnl4jMfPr2/+L2rTRu8xFo5FKWWVh770nfI7nsXLSymdmO3Ox6RJ
   eb9m0qT8XzN4cMH3y8bd3V25ubmp6tWrK3d3d/Xaa6+pmzdvKsMw1IYNG7LOGz16tPrggw9yvLZV
   q1Zq48aNauPGjaphw4Y5nuvSpUvW+Rs2bFCNGjVSSim1detWVadOHZWWlnZHW7777jvVrVu3rO/T
   09NV5cqVVWRkZNaxrVu3qmbNmimllHr55ZfV+++/n/VcRESEMgwjx/nZFfp7EEIU3ebNStWurdS4
   cUpFRVnlFitXblQ+PhOVl9ck5eMzUa1cubHgF+zYodTw4VZpi7gt42+rybHS8aooubrq/3p66qGb
   6iakpQ4I0I9MAwfCqlX6GnPmmHxrwzD47bff6NWr1x3PZR9CPn36NIsWLSIoKCjrWEpKCufPn0cp
   xV133ZXjte7u7nneLyoqCnd3d5xMWK0YExNDYmIiHTt2zDqmlCI9PR2A8+fP06lTp6znmjRpUug1
   hRBW8tBDumhC5cpWu8WgQT3y35KUl06d9EM4FMcbjl68GAYPNj0AW+sauWQfTm7SpAkTJkwgNjY2
   65GQkMCzzz5LgwYNiI6OzvHa0/msSGzcuDFnzpwhLe3OeZzcw9e1a9emUqVKHDp0KOuecXFxXL9+
   HYAGDRpw5syZrPOzfy2EsJJLlyAh4c7j5ctbNQCL0sPxgnD16nrupDjB0xLXKMDIkSOZNWsWO3bs
   QCnFjRs3CA4OJiEhgS5dulC+fHkCAwNJSUlhxYoV7Ny5M8/rPPjggzRo0IBx48aRmJhIUlISW7du
   BaBevXqcPXuWlJQUQO/5HTlyJGPHjiUmJgaA6OhoQkNDAXjmmWdYsGABhw8fJjExkcmTJ1vlZxdC
   APv3w4gRul7vn3/auzX5Sryeyrn7B5D6cPfirbMRVuN4QdgB5e6VduzYkblz5/L6669Ts2ZNWrRo
   waJFiwCoUKECK1asYMGCBdSqVYtly5bxj3/8I8/rlStXjt9//53jx4/TpEkTGjduzLJlywDo3bs3
   bdu2pX79+tStWxeAzz77jLvvvpvOnTtTrVo1+vbtS0REBAD9+/dn7Nix9OrVi5YtW9K7d+88F4MJ
   IYooM6Vknz66jGCzZhARob93MGfOwKz/28SVGh7U27ea8n9u1lN0vr72blrpde4cZMQBc5hcRcns
   C0vGLIcmvwchzLR1K7z+us5q9eyzupygA1EKNm+GwEBYvx5ee/oiIweepfLLz1Az9oR562yE6U6e
   hA8/hOBg+L//w/jqK+uUMjSXBGHHJr8HIcyU+f+Lg40wJSWms3SZwYxAg4QE8PfXJYerVNHP7xw9
   l6YLJ1Pn/AFde3j7dr2FU1jG6dN6+vOVV6BGDevVEzaXBGHHJr8HIfKglO7xNm8ODRrYuzUFunD0
   Grd696dO9N+cqPYA5+b+Qe9/VL8jNXTkbwc4/Pw0HolfAlevgru7ziHtYB8mSguLlzIUQohS79Yt
   +PFHePBBeOklPcTooPb9HMHqVn4439OMGlciqUQSba9to+9/ffOszdBk4L0MTl3CzZtAzZrg5gZR
   UTZvd4l27Bj4+elRBAuTICyEKLuuXoVp0/Qiq/nzYdIkOHq00DKCtpaSAkuWwLstf6Xhs92o1rgq
   Tvv3UaWnpz6hgJwIFSrojJmHD2cckPSVplEK1q6FRx6Brl11EYx8cj4Uh+Ml6xBCCFu5dEn3ekNC
   oF07e7fmDjExMHs2zJwJLVvCG1N8qDHoNJ3dKukTFi/WK57nzClwwVXbtjpjZYcO3C7k0L+/bX6I
   kmjvXvi//9Nfjx0L//0vVKpklVvJnHAZJb8HIRzXoT9OETN2KuVOHKdqA1eMxYtp173oq5qnTIEb
   N+DTT4FZs2DnTpg3z3INLm1iY2H3bujVy+y5c3PnhO3SE5b9q0IIm4mPh+++g969dZfQQaWmKLZ+
   shEjcAZtrm4irUJN2qUdg7NwbvyTsGlDka/dtq3+JwCgc2dJ2pGdUncG2ho19PvFBmw+J2xOYmt5
   WPchRKl24oTe09u0KWzaBOUKqLVrR7HnbhIyeB7HKren8af/JKbDfXi5jyDq1t0A7MCTQWc7EBwc
   XuR7tGuZTOWdYfqb9u1h3DgLtLwEy5xk79wZ/vjDrk2RhVlCiNIlMhKeeEIXUahYEfbs0XN6rVvn
   eXpwcDg+PhPx9g7Ax2disYKdOQ4dgtGjYWyLYOpvXYHT59NpduMgs400Dp76jKEsZimD6cca/j71
   OUFBRa9F3Nw9je8uDiAhLu86xGXG5cvw8cd6Id7s2frDiAlz49Z8j8jCLCFE6eLmpuv2/vhjoUUU
   goPDGTNmNZGR07KORUbqOr1mVSgyUXo6RA30JW57BJcTXWn6xmJeinya+vWfzjonOVn/Wb5GdZ5j
   WdbxpKSi9+TLVXElpuJdXFsbSbunWxX9ByjJtm3T+bOffFKnH23f3qSXWfs9Ij1hIUTpUq8ejBpl
   UhWjwMDQHH9cASIjpxWr15mX6zHJrH7hBzq0iOfylgjuj9tI71urGHfCl/r1c57r7Jx3b9XF5c5q
   a+aIqdOGmLCDxbpGidahg95+Nn++yQEYrP8ekSAshCh5duzQW0jWry/WZTJ7nbkVpdeZ15DliW0X
   WdV5Mon1mtJgzULmfRpDh27ZaqbnsbfX378fHh4Tchzz8BiPn1/fYrVp5w1XLqzfZvY1Spzr1yEp
   6c7jzs6QUQzHHJZ8j+RFhqOFECVDSgosXw4zZsCFC7qYQocOxbqkpXqduYcsW3GEa+veo2ZaOLXa
   P4MKXct9fTJWZvcteG9v5hBnUNAHJCWVw8UlDT+//mYPfeZuU2O+55H4ZQQHhzOoc1v4/XedHay0
   OH4cgoLg++9h6VLoa/6HlrxYa2QiixVX3iohhLCI3buVuusupby8lFqxQqnUVItcduXKjcrDY7zS
   +1T0w8PjfbVy5UazrtOv3wQFSs1mpNqAl9pCZ/UBAepJr3ct0s6iyGxT5qMVh9UkJikfn4lKxcQo
   Vb26UunpdmufRaSnK7VmjVKPPKJU7dpKjRun1JkzFr2Fue+RjNhncqyUnrAQwvG1bGnWYhpTWaLX
   efo0HDo0QDeTCLzZCEAUjQmnjUXba47cw6hHac1kAuia8AnUrq3zWV644PCFKgq0caPehjZmjO79
   urpa/BamvkeCg8MJDAw1+/oShIUQjiMtTXc2yuf601S5ssUDcKZBg3qYPdSrFPy1YD+xHwUxNi6A
   ctX0vvtEdBDYgSejmENnl88t3l5T5TeMmppaU3/Rpo3OZVmSg7CXF+zbZ/WKUIW9R3IO/U/L97y8
   yMIsIYT9xcXB55/rSgMhIfZuTb6SbqSxzv83dlbtRWPf/lS9twnb91Xi66/T8fCYkGNvb22PfxVp
   MZWl+Pv34yH3MbzBF9ThEgBubrt58MGe+oSSUshBKQgP13t8czMMhyjJ+MUXYXesoDaV9ISFEPZz
   5AgEBursRQMHwk8/wUMPZQ3tJSeXx9k5FX//flbZt2uq6GhI8BqEe+Q6HirvwqnXplPn02HUc6kI
   wKDGmUOWnzMzqQ2dXT4v0mIqSxqkrtPv8nzinA1qNdvMJve2NGjwMuXKNdcntGmje5GOKilJvx9m
   zIDERL3vu3Zte7cqh5Mn4auvIHzjW3RjEzPwp6OZ15AgLISwj02b4Omn9Z7egwehYUPA9gk0CvLn
   nzoGrF4NuytcxoVkSE3m3nNrwGVkjnOLMqxtVV5eVDgbRZ2gICYkJsInUwgO1j8PoHMjF2HLjtVd
   vKgj29y58MADOsOVjw95Fku2A6UgLEx/dty0CcY/so+DLgPhhisG5qcDdoyfSghR9nTpolc1ffRR
   VgAG2yXQyM+tZMWPP+qsl0OHwoMP6h5P04619AkF1O61ixMn9Fx6blWq6C1Q2Yad7218jXt3ztfP
   t24NgwfbsKEmOn9eVzEKC4NVq3T2MwcIwDdv6sJT7dvDa6/pzwWnT8Obn99F3Dv+DGr+NMdoYfZ1
   7f+TCSFKt+PHdQKF3MqVAxeXOw5bOzlCfi5FxvPHoK85U/ke1nx1lAkT4Ngxvfi2WjV07d7Bg2HN
   mgJr99pEeroOUIMG6U8LERH5n/vAA1nVoxo3LcfUuNeJvWyhPa7W0L697gnnk+vb1s6ehfHjwd0d
   flmhmD5dD9yMHp2RlK1WLR6c9C5fBvZnXi/zq3RJEBZCWJ5SOlg9+ig8/LBZc49WT46Qy4H/nSCq
   Rjtq3F2DrhumUD7wCxZsbcljj+UqvFS9OixbZt8AHBsL//mP3rI1YQL84x9w5gzcc0/+r2nWTA/p
   Ak5V3YirWJfItSdt1OB8XLwIkyfrTzkOSCnYuhWefRY6tEuh5e4lnEury8qo++n35UCMa3eWghw0
   qAfL1003+14ShIUQlnPjBsycqXteb74Jjz+ug0S3biZfwpJpG/OTmqoLK01p9QMNn3yQaiqOCqRR
   7eZFmoYtsNqK22JX4wkJgV27dFaov/6C4cOhUiWzLnG5Thsuh9tpVfSuXfDii7qXe/68rnLlQJKT
   9T9tp04w9v9iGJMwlQuVmvJS8hzKN6gL+/frEQhfX8vd1JzMHuY8kIxZQpQ9mzcr9cQTSq1fX6xs
   TCtXblQ+PhOVl5fO8GRuBqv8XL6s1KefKtW4sVLduim1YsE1lRKXoNSAAToVkqenUrGxFrlXbnln
   XhpvsZ/NVDu83lb/e/hjm95T7dmj1MMPK+XurtS//qXUlSu2vX8BVq7cqLy8PlHu7htUxYrXVfv2
   V9WWT8NVevXqSo0YodTevfpEE98jmJkxS4KwEKLUO7z2rBr5SrqqXl2pYcOU2rUr1wmxsUoNHmy1
   AKzUnWkkMx8+PhNznnj+vFLTpil144ZV2rHvjfkqtN7z+ptTp5SaPNkq98khKkqpX34xKd3oypUb
   Vb9+E5SX1yTVr9+EYn1IKexa//nPX8rNbfcdH4z+WBGqU3tmZ+J7RIKwEMK6EhKUmjXL4jl6LS01
   JV3NHbZQnXRqpG5RTv3pcp/6adbqIl3LEoHBy2tSnkHYy2uSHjXYulWpoUN1TmdfX6UuXSpSWwtz
   LvyYerXq9xnfnFOqVi2HySFtydGC/K7166/haulSpbp0UaqB8wnlzM2snN/BDFDViL3zg5EZJAgL
   Iazj5Eml3n5b/9F+/HGljhyxd4vyFHcxSYUMWaD2lm+vjhlNVQQeWX+Fgyu3NvsPuqUCQ3494XGe
   Q5Xq0EGp5s2V+vxzpa5eNeu6JklIUOqbb5RSOt5Wq5bR0UtPV6pGDaUuXize9W/dUuqnn5Tq2lV/
   mCgik0cLinEtF5c49WLHAyqyr6+6Xt5F9SBMbcAr64SfGKw/GBWRuUFYFmYJIQp2+DA8+aTeH6sU
   7NwJv/4KrVrZu2U5RESAnx8ENFtA/Q2L+a55V1qqSI7REtD5nIfe2Gb2fmNL7VvOb8HZoKE9YMoU
   vVL4zTehRg2zrmuSihX1tZOSMIzbaaNzflMEly7B1Kl6BfbMmfoenToVuZmmbk8zZYFb7msZpPMI
   v7OhQmcWRvehedeGjOw6inC87sj5ba2V+HmRjFlCiIKVLw/9+8MPP2RsjHQcKmMn1IwZ+rPByJHw
   6hFfGjUexR7vAFSEE0NZzGx8GcUcrlHd7P3Gltq3nF81nm62yLJVoQI0b64/qdx3H23b6rjr5cXt
   ZB49e5p3zZAQGDJEZz374w+4775iN9OU7WmmZFRLS4Nr13ImzujDWj7kIzY0bUXnnUvB2ZkXPMPZ
   dXYCQyNvv0d0zu/+xf5ZTCVBWAhRsBYt9MOB3IhLYfM7v3L9v6tpmnKcWc1dqb13MZUaVAf09qLM
   P+jXqM5zLMt6rbm9nGLvW05I0Pte5s5l0OrVDAqxU2rLzB5vRhA+cCDb8aIUcujWTSdiqVXLYk30
   9+9HZOSEHAFWb0+7HRTzH5n4gK5dezBvns714ez8KHXrLmXKpXW0JIJEKuHr3o2pnzwJzs5A9g9G
   dsz5bc7YtTkPZE5YiJIhPV2ptWv1PO/u3fZuTYFO77qk/ug6VUU73aV2Ve2q9ro2z5rLi+7mneNc
   c4ux56fI14mIUGrMGKVq1lTqySeLvW2r2D78UKmJem51zRqlevTIOH7qlFI7duT/ugsXlEpJsX77
   MhS2PS2/BW4NG25XNaqnq096rla7Vl/OutbeGk3yfY9YA2bOCUtPWIiyKrOH9tVXem7Qz09nYrIy
   cyskKQU7vz/C9Q+n43lmBTXbPsX2Dz7lnR8OExi5h/s4oefyznZganB41rVMLcZemCJd5z//gU8+
   gREjYPdunfPQ3tq21VWJgHa1z/Pozm9QagqGu3ve7du5E4KC4PffYf16nf7SBgorhJHXyIQrNxh+
   azEf1nmJCpfLQ73vgVr6Op3bwqoz4OlJw99/sWLLi6igCA00BjYAB4EDgH/G8QDgLLAn49E/j9da
   /ROHEKKIQkN1D83ExBqW2rtpzkrjxESlvv1WqfvuU8q3UbD689GpKv6E3raTufK1GrHqJwarasQW
   eRWtVVy6pH8AR3L6tFLffaeUUio9Nk7FU1ldOJeW85zkZKV+/FGphx7SiTWmT3eoxBpKKbVs2WZV
   u/b/1GxGqi10VpE0VVcNF3W+c7e838s22AOeHZbcogTUB9pnfO0GHAXuASYBbxbyWpv8wEKIIrhy
   RW85MoEl926asgXl7Fmlxo9XaqHzSLW3hpe65DlApV3J+Qe0wD23tnT6tG3vZ0EXKjZSm384mfPg
   kiVK9eql1K+/mpRYw5YiI5UaO1Z/duzS5ZLa5dYy6xd/oWNnezcvi7lBuMAtSkqpC0qpvzO+TgAO
   A3dlPG1DvG8KAAAgAElEQVSd5KpCCMuJj9cVd3KrWROaNgUK3+5hydKC+a00vnmzHH8vOcyqlv50
   ufc68fHw9H0R3Be7kTq7VuE0OmeuXlsXecghLU1v0erdGzp3zrtCVAlwpW4broTn2pr07LOwbp3O
   +V3OulWrTKHU7eY89JDeabVnD2zZUoeO3T30SZ6e1Fu7yr4NLQaT54QNw2gKPAD8CXQF/AzDeBHY
   BbyllLqzrIQQwj6OHoWvv9bbitav1+Xh8mDKdg9LlhbMHTwN0hnAKt7csoG7tswiuc8o9q1VVGsC
   DNR7N/Oq32vKKlqLu3JFF5T95hto0EDPoT/9tMMVITDVrbvbkLL3EDDo9kErFa4wV2Ii/PgjBAZC
   nVvR/NtjJq03DMf13ua3T1q8WBdSmDPH/qUli8GkIGwYhhvwMzBGKZVgGMZM4KOMp6cAnwMjcr8u
   ICAg62tvb2+8vb2L2VwhRL7S0/V+zaAg3V0YORL27oXGjfN9SUHbPTKDsCV7nZnB893IGDqzjeac
   4ARNODboBWouCaWOq/Ptkwv4I2upRVdmCQqCkyfh55/1B4MSzqVjW1y+32LvZuQQFaU/O7b5ciS9
   nP/ixfLnqZh2E6PfC1A914edzNKSdhYWFkZYaKgu1xkZaf4FChuvBioAq4Gx+TzfFNifx3FrD70L
   IbJbuFCpjh2VWrBAqZs3TXqJKXOrltrqo5QunNCr1wUVRjebbhsRd4rZE6X6uW2xe9ro9HSlNm1S
   6umn9Xzvv4fsUmmubrffbE88Yd8GFmbLltupXNeutewWJcMwDGAecEgp9WW24w2UUuczvn0S2G9+
   +BdCWNTzz8MLL5g1pGhKL7e4vc7UVPjlF53VKioKXnutHg8bVWAdjrdt5PJl3dhXXnGYoVmLunIF
   PvsM/vUvardvxJ5KjTh3Du66q/CXWlpyst4xFRioly74+8P8+VAltg4cbam3dnl6wnff2b5x5rj/
   fl0nOWONhdkKitBANyAd+Jvb25EGAIuAfcBe4FegXh6vtdkHESHKjJQUXRIuKckil7NkLze3y6cT
   1KonZqkDFe5XTzwYrX7+OVvOBxtvGynU7t1KvfSSrmD08suOt73IUpKSlHJ21luRlFLe3kqtLlph
   qSLJXbv3gQeuqOBgpdJy7ZRyuPeHUkrFx+tCFYXAkj1hpdRmyHMFdcldiiZESXT5Msydq5PkN26s
   EydYIAGEpedWg4PDqTDsDdrGnqVOeizVa3WnYtAX/OLbIOd+CgeZzyMkBKZNg1On4J//1EUUate2
   d6usx9lZv2+OHYO2bbNySPfrZ/1bf/HFHiZNqsoXCcfpwiIacB7/CwNQajROTrneb47y/gCdmvPr
   r2HRIj1K0sOy6w4kY5YQjuzQIZg+XW+JefJJ/d8OHSx6i8IyFJkiLQ0CAg5y9dNNfJm6lwro4eyr
   See40qg8LRx1aDchAcaMgSee0IUqyoLMXNEZQfivv6x3q5QUWL5cT0Wc2VOVfyb/zAt8jwu3AHj8
   fApBQWtsm6vZFOnpsHatHivfvt2qmc+klKEQjiw6Glq31j2X+fMtHoCLKy4OvvhC13cIDKzKslRf
   1tMLKHrpQJt6+mn9KCsBGG5XTcr4MquQgwXFxMDHH+sKh7Nmwb/7hHAk7V7u4TC70CvLd+DJSOYW
   aaub1f3xB7zzjv7ge+YMfPqp1VKPShAWwpH17QvvvedwQ6TH/rzC66/r6ni7dsGSJfDAA/O4TB2e
   ZRlLGUw/1hSpdKBFpaToYc1nntHddZGjalI75wj8/noJvYyn+Pbt053Gli31bp2VKyEsDLq+04VX
   uo7iZRbwCME53h+2rN1rsoED4e+/9Q9TqZJVbyVBWAh7Ugo2bdIrm2Nj7d2aAqWP9OXa3R244tyQ
   Og970KjCRfbv19t5H3roztKB19B7e+3yRzZ7V+ybb3QmKKH17q0TjQA17q7FY2kriDpT9Ciclqan
   Sr294UjnYXy4zosLHQcy7/O42zliqlblxXeewsNjQo73h06w0rf4P1NRKAWhoXDt2p3POTnZbnW8
   Oau4zHkgq6OFyN+NG0rNnavU/fcr1aKFUjNmKJWQYO9W5Sn+SrJaPexHFW/c3ruZ+uidezetudLa
   LJ98olc5Dx+u1N9/2/beJdCVivXU+oVnzH7d1au6voO7u1LP3H9EHe33mkovV+72L3/w4DteU1iZ
   QpuIj1fq66+Vat1aVwfZv9+il8fM1dGGstQ4RC6GYShrXVuIEm3xYr0p8uGHdY+kTx/9ydvBnDih
   qxxWn/UpT7qtoWmNOKpEZOzdXLMmz1SBwcHhBAWtybbSuq/tF90cOAD16zvcEL6jimjcm70+7zL4
   Wx+Tzj98WCcP+2lxOuM6hOKbFEj1yL90hratW2HDhgLfI3YTFaVLTC5cqLvt/v56pbOFe7yGYaCU
   MvmiEoSFsLXjx3XQbd688HNtTCn9NzQwEDZvhuHD4bVX03Fv5qRXYTlSrt5bt0ps3mZHcrCXH/vi
   mzFk55v5npOerndzzZihM6GOGgVjGyylxqxP9OryIUPAxcXx3iPZbdumdxf8859Wre8sQVgIR3Hz
   ptUXdVhKykuvEL9mOwevNeKdRkt4+Y3qPP88VK5s75blYd8+/Slh/XqIiChbK5utIPKdWexfsIsn
   Yr6947n4eFiwQPd8P7nqS9faEdRxd6Xc0sVQpYpt505LCHODsOONgQlR0u3fD6NHQ5MmcPWqvVtT
   oOj9V1nV81+kLfyemucO0P1GCNvu82XUKAcLwJmrf3r2hAED9IKrP/+UAGwB+1q743d1Al5ek7NK
   WUZGwtix0NRdcXX5BhbMvMlTbSOof3Qj5UJX6d5uuXKOF4BPndJbi6Ki7N0Sk0kQFsISUlLgv/8F
   Ly/o3x8aNtQ9tpo17d2yOygFuxcfYY3HKCrf70HtCwdQHTKqAnl6YuQqG+gQfH110pJRo/Qf2gkT
   oG5de7eq5DpzBp57juDgcN75ZDNn05sRHj6J0NCpPPNMXbo8cI3uR7/lfL37mRTzOl3uOo1ROf/S
   knallN4H9eST0LGj/r4ETVPIcLQQljB+PGzZAq+/rrMvVahg7xbdITkZli7V83re0T/yTIfjtJkx
   iiot6jv2XB7oArOurvZuRemRmAi1ajGg2xuErP0463ADzuFHEKMrBFHDp6ee7+3dW/d4HfE9snUr
   vPqq/hDs76+3+rm52bVJMicshD2kpjrs0Gji875c3BTBiQuufN11MSPeqs6AAQ64IDs9XY8eZG0u
   FVbl4cELtQbww86vmI0vLYmgEonspiObH6zAj9sD7d3Cwp04obOC9OnjMEPj5gZhx/yrIYSj2rhR
   Dznn5oABeN/PEZwOmE/NI0fomraJZkDv2r4wyEES42e6fl2XqwsKgnr1IDxczzcK62rblhZnLgDQ
   kgi82QjAKZpypUYre7bMdM2bO+QuA3M42mdhIRxXcjI88ogelnNQKbcUYeND2VpjEA2f7UadeuXo
   1N1FP+loc3nHjukhxKZN9bDiokV6X5QEYNto04Zn21XHw2MCieih/h148mnTRvbLYpVbcjJ8/z10
   6qQXPJZCjvfxXQhHtXmzzrvrKPNh2cTEQNib/6P9T+/R2LkC14aNocZnP9PZrZJjzuWBbo+bmx6C
   btTI3q0pe9q0odWZEGbM8GHeF7eotP80X7XzZuqbj9q/qtGFCzB7tq7+0K4dBAToahOlkMwJC2Gq
   t9/WQSMgwN4tyXLlH77EbIkg6oor+3qN4fHBztw9witrfiw4OJzAwFCSk8vj7JyKv38/+/+BFY7h
   2jW4cUOv5C+ETd9Hv/4KL78Mzz2nM8q1aWOd+1iJzAkLYS2rVum5SztLS4P//U+vcv54awRdUjbS
   GuhbzQ1euT3fGxwczpgxq4mMnJZ1LDJyAoDtAvGZMzpJ/iuv2OZ+wnTVqulHIWz+PvL21outHHB7
   nzXInLAQpjh9muSz0fSf+Bve3gFZSQ1sKfbcTUKemceeyl355pNrPPjgYcpXPQvA0aoNWP2PYTnO
   DwwMzfGHEyAycpr16/sqpYfuBw+GBx7QyYbT0617T2E1VnsfXb1KnjUUq1cvMwEYpCcshEnCQjYR
   VvEhVq+xTW8g+/BftQSDIXFX6H3iJ+o36ESl6ZMY23QPY95Yw5wru5iNL6Ouz6H2hOnMcKuS1Z7k
   5Lz/97Zqfd/ly3UJwfh4vehq/nyd3lCUWBZ/Hx08qNOOLlumP6yV0rleU0kQFsIEn6w4Qujl1TmO
   6d7ABxYPwsHB4fj7h/LeiUv0ZD3unGZxxX5s+fQrnnj3GQD8fSZm9U6eQw9BX8vVnsz6vrlZtb5v
   QgJ89BGOuRFZFIWp76MC543T0+GPP/QcyoEDOq3rkSN6S1oZJ0FYCBPYqlcZHw9vv32dEyem0hJv
   WhAJQKVblZm1fn9WEDalPf7+/YiMnJBjKFEXUe9v0TbnMGxY4ecIx6JUgYkuTHkfFTpv/MMPOgCP
   HQvPPAPOzlb4QUomCcJCmMDavcoTe+MJ/K4KixZBuXLNAHLs3RzFHNonfWlWezJ7IUFBH2Sr79u/
   eD331FT47TdYvVpvIXGQLEWiiA4c0Pm4t2zJ9xRT3kf5zxtnjMz83//BCy/I+yUvSimrPPSlhSgd
   Vq7cqDw8xivdbdAPD4/31cqVG4t8zfR0pbZ/s0uta/SCijFqqw/HXlOnTyvVr98EBUpVI1b9xGBV
   jVgFSvn4TLRqewoUG6vU9OlKubsr1aWLUsuWKZWWZp17CduJj1eqUiWlUlOLdRkvr0kK0lUPwlQF
   krPek15ekyzTzhIkI/aZHCulJyyECSzZq0y8lsLVh/pTLWIX93GLA4PG4brtKJMbVQVyDv9lzvfm
   Hv6zSi83Px9/rCsYDRqkK0V16mT5ewj7cHPT1ahOnQIPj6JdIymJRy//xZc8gDPJPMb/OE4LwMrr
   D0oJSdYhREFOn4Zp0yyS7vHMGfj6a2gY9D6v3PqGymnX9RODB+uVotkEB4cTFLQmW4Dta78kG1u3
   6tSSJiR1ECXQwIF6odRjj5n3ugsXYOZMmD2bS43cGXeuGQvOL0Zl7Hz18BjPjBlW+mDowCRZhxCW
   tGoV3LxZ5JdnbpkNDIT16+HFF2HQXx9R+a29+tr55HMeNKiH7f945bdAp0sX27ZD2FabNnDokPlB
   eNcuuHQJNmyg7j338I/gcM4FTbL+yEwpI0FYiIKsWqXT55kp6UYaYdO2MD6kBwkJObfMBgdv492k
   NvjVOU1QFS9GbNln3z9W0dG6ix4aCjt2yNaisqZtW/1J0VyPPKIfGezywbEUkOFoIfKTnKzny06c
   gFq1THrJhSNxpPTpT53ov0kt78L2eQfo+XyjrLiW11YOD48JzJjhY/s/YDt2wJdfQkiILobu5wct
   Wti2DcL+UlJ0Kc68RkHi4vSnx+HDHav4hwMzdzhaPvIKkZ9Nm/RQnQkBeN/PEYS2fB3nNs2pduUE
   LiTjlnqN3ivfzNGxtFsqydxefVXv1/T01B8yAgMlAJdVFSrcGYCPHdMfypo3h7/+0klYhFVIEBYi
   PyEhOvNTPlJSYMkSePhhWDFqNVXca+B08ABVe3rqE/KY77VLKsm8TJwIx4/Dm29KD0fc9vff8Oij
   eh1A1aq6hu+PP0qpSSuSOWEh8jNlCty6dcfhmBgdW2fO1J3H996DRx/1u12LfvHifOv32jyVZGws
   1Khx5/G77rLO/UTJlpamF2gtXQqurvZuTZkgc8JCmOFkkx5EnzOo2qAyTksWc2+3nEG2sLqrec8J
   W3grh1Kwdq2e7z1+XFcxksVWQtiEbFESwkqun0ugSdRmmqHgLBDoC93Mq99r1SQbN2/qocMvv9Rz
   fGPHwtChEoCFcGDSExbCRNvH/0br6cOplnpVz/euWZNjuNnHZyKhoVPveJ2PzweEhEyxfgNffFHX
   aB07Fnr3ljy9QtiB9ISFsJJbv61if6+xdKu2P8/5Xrsvupo3T690FUKUGDJOJURuFy7oBU3ZKUXz
   iFXUGfWUTjGZx4pimyy6SkvTW0byIgFYiBJHgrAQuX32GXz1VY5Dp0MOoxS0fKJNvi/z9++Hh8eE
   HMd04YW+xW9TfLyux9qyJbzxhg7GQogST4ajhcht1Sq9wCmbDburEev9DW845T/VY5VFV6dO6UQa
   CxdCnz66XZ07F/16QgiHIguzhMju5Ekd5M6fz7Gq+LHHYMgQ/bCpd97R//XzgyZNbHxzIYS5zF2Y
   VWAQNgyjMbAIqAsoYI5SKtAwjJrAUsAdOAU8o5SKy/VaCcKi5PnmG9i+Xfc8M9y6BXXqQGQk1K5t
   x7YJIRyepXNHpwBvKKXaAp2B1wzDuAcYB6xRSrUE1mV8L0TJt2rVHakqt27VU7FWC8CxsTr/pRCi
   zCkwCCulLiil/s74OgE4DNwFPAZkdhUWAk9Ys5FC2EzTptCvX45DoaHg42OFe0VEwGuv6ST5ISGQ
   mvfqaiFE6WXy6mjDMJoCDwDbgXpKqYsZT10E6lm8ZULYQ1AQ1KyZ49Dq1RYOwps36yT53brpvM6H
   Dunh7/KyTlKIssak/+sNw3ADlgNjlFLxRrZMPEopZRhGnpO/AQEBWV97e3vj7e1dnLYKYXNXNh3i
   X/veoHPn1Za76P79OghLknwhSrywsDDCwsKK/PpCV0cbhlEBWAmsUkp9mXHsCOCtlLpgGEYDYINS
   qnWu18nCLFHi7R76by5ti6T/yZn2booQogSw6MIsQ3d55wGHMgNwhv8BwzK+Hgb8am5DhbA7pfRc
   7LVr+Z7ivGEVasBA8699+DBMnqzvIYQQ+ShsTrgr8DzQ0zCMPRmP/sCnQF/DMCKAXhnfC1Ey3LwJ
   c+fCvffqYsBnz+Z5Wvq1eNwv7qD1P3uZdl2ldFGHgQPB21t/n5JiuXYLIUqdAueElVKbyT9Q97F8
   c4SwokuX4OuvYdYs6NRJL8Lq2TPfakOn56/jnEtnut5bufBr//orfPghpKfrtJIrVoCLi4V/ACFE
   aSPLMUXZERmpA/HGjdC6daGnn1u5m4sdBhR6HgDlysG//w19+0oJQSGEySRtpRD56NUL3hiTzqOP
   S50TIYRpLJ0xS4iSJTERZs+GqKhiXSYhAXbuhJ69c/0vMm6czmMphBAWIEFYlA7nz8PEiTrjVXCw
   DsbFEBYGnp7g5pbt4OXLek5ZFlsJISxEgrAo2U6ehGHDoG1bnYN582b43/+gVatiXTbPLFmrV+sx
   6somLNQSQggTyMIsUbKlpsI998B//nNHusniWL1aJ7TKIY/iDkIIURyyMEuIXM6GHmLoEEVYTNvb
   JYXT06FePdi1C9zd7do+IYTjkoVZovSJitJJNfbutcnt4j/6D6Oahd4OwKCDb926EoCFEBYlQVg4
   rh07YMgQuP9+vSLZagV9s1GKun+twm1wrmHne+6Rmr9CCIuT4WjheA4cAF9fveLZ3x9GjICqVW1y
   65Td+4n2fJxK5yKpV1+SbgghzGPucLQszBKOp25dePttePxxnYkqH8HB4QQGhpKcXB5n51T8/fsx
   aFCPYt367NxV7Kg1gGclAAshbECCsHA8devCU08VeEpwcDhjxqwmMnJa1rHIyAkAxQrEatUqbnq9
   VeTXCyGEOWROWNieUrBhg+7phoYW6RKBgaE5AjBAZOQ0goLW5DgWHByOj89EvL0D8PGZSHBweIHX
   /SX9CZoN71mkNgkhhLmkJyxsJzlZL2768kv99Zgx0K1bES+V91s3Ken28LW5veXLl2Fy3BguZ68P
   lp4OSUng6lqkdgohREGkJyxs46+/9Paen36CTz+Fgwdh9OgiBzdn59Q8j7u4pGV9bWpvOdPateDl
   BRUrZju4axd0716kNgohRGEkCAvbuOceWL8eQkKgf39ybsI1n79/Pzw8JuQ45uExHj+/vlnfm9Jb
   zq7+h77MOuINAwdCXJw++McfOlWlEEJYgQxHC8tKT9eP8rneWq6u0KaNxW6TOZwcFPQBSUnlcHFJ
   w8+vf45h5kJ7y5cvw9y53HruRX7edhfuJyO4K3UjHEdvkVq2TKeq/OQTi7VbCCGyk33CwjLi42HB
   AggM1MXtH38831OtsbUov/vknhP28BjP/LEt6LFnM+nLV7Cv+ZOMjA6gStsm/HR9IHX/WqXLJ61Z
   o6sltWgBly7lGqMWQoi8yT5hYVsnT8JXX+kA3Lu3/m+XLvmebq2tRXnJ3VtueyuajxJ2UeWjhSxv
   9E/eUxH07FiH+QuhXTsgbrHuAc+ZA9Wrww8/QM+eEoCFEFYjPWFRdNu3w6BBMHw4vPaaSXmVfXwm
   Eho6NY/jHxASMsUarQRfX9TRCC7HKOalvMjsmy/i+1oFRo4sJBPmjBlQqxY8/7x12iWEKHWkJyxs
   x9MTTp3KVfm+YKYulrLUkPXVq5CwNoImJzdSBxjauR5vhY+gQgUTXjxmjNn3E0IIc0gQFoW7dAkq
   VYIqVXIeL1fOrAAMpm0tKvKQdXq6Xn09YwbHR/+b6SHtWLYMwlxdaQLg6UmTVXMgjwBsq3lqIYTI
   QSlllYe+tCjR9uxR6qWXlKpeXamQEItccuXKjcrDY7zSabP0w8PjfbVy5casc/r1m5Dj+cyHj8/E
   vC96/bpSgYEqvUULFdf8AfVZmwWqSb0kFRCg1PnzSqnYWKUGD9b/NblN43O0SQghTJER+0yOldIT
   FjmlpcHvv+v50GPH9FzvsWMWKyNoytYis/b3DhiAWrOGG6618av8HQfu6s+YsQYRg8HZOfOk6nq7
   UT7yT+rxgfSGhRBWJUFY5LRrl94XO3YsPP00pk2emmfQoB4FBjdThqxBfzYo9/d1mqel4RZ/keme
   31Fr3QAMMwsgmZvUQwghLEUyZomcHnwQ/vwThgyxSgA2RV7ZsNo2ewe/1/uglK75MGgQdO0KKa7V
   9AmentReMcfsAAx3Bv3uhNOT9XcEfSGEsDTpCZdFSukUkq1aQaNGOZ8rShSzsOxD1lXjEnj64nYe
   v3KI37Y9T9t39WcDf3/4+WeolJxrb28R+Pv3IzJyQtaQ9GhmcbBOHF38xlnsZxJCiLzIPuGy5OZN
   nYAiMFAH4m+/hc6d7d2qOykFW7bACy+goqKIrdyIp/iFGr0eYMwYXWTB0p8VgoPDCQpaw62bBr9s
   +ze75i6i97CnLXsTIUSpZ+4+YQnCZcGlS7p84LffwkMP6f2vvXs7RK83L+rHxdwcF0DcVUXDxOMA
   JAwcjFtw/ourLGbbNt2z3r/f+vcSQpQ6kqxD3On6dUhI0L3LFi2seqvi7LdNSoLFi+GbGYNJrPwc
   q6o+AoeOg6cnbj/OsWq7s6xapasoCSGEDUgQLgvuvlsPQVuZ2Uk2du6E++8nOqYi33wDc+dCp07w
   8fQK9OkDTteLP99rtlWrYPp029xLCFHmyero0uLSJfjoI/j7b7s1If/9tmtuH0hJgSVLUHXrkt61
   O4fu6kPXtnHEx8PmzRAcDP36ZZQbrp6xv9dWARhg8uQCC1AIIYQlSRAu6fbsgZde0iudo6KgalW7
   NaXA/bYxMTB1KqppUy5MmcuJ+Lo4pSTT5vImInr6EhgILVvauMF5GThQqiYJIWxGgnBJdfgw9OgB
   jz2mA/CxY3o8t3lzuzWpoCQbcau2sfuX0/S5tYrnG67HrW0T/aSnJxW/s9F8rxBCOBhZHV1SXb6s
   9/o++aTdkmrkljkn/G5kDC2JIBFX3mnoTf3Ww9i9ux7PPKP397ZtC8TF2X6+VwghrEy2KAn7uXqV
   w+9MJG3579x77SwAv1V8iqNTlvPKK1Czpp3bl51SEBYGX38NU6dC69b2bpEQohQwNwjLcLSjyiyk
   0LcvrF5t79YU7NAhGD2a9OYepO2O59pNvQ3qqocng6Ln8e67DhSA4+Nh5ky4915dnKJXrzuzhgkh
   hI1IEHY0167pxBotW+rVzi++CN7e9m5V3nbuhL59SfHqzf921OcedZjP239PlTUrYPBgau5aQ/na
   DjTUvHIluLvD2rXw1Vdw8CD8859m10QWQghLkeFoR7Jtm65M4OOjJ087d3a8rFa+vhARgarkypau
   77JpcRSzY59hxD+dGTUK6ta1dwMLEBOjM4I0bmzvlgghSimLZ8wyDGM+MAi4pJRql3EsAHgFiMk4
   7X2lVIj5zRU5tG+v0yXedZe9W5Kv1EMRlN+yEQNI2u6G+1fLiHjawXb1XL0KNWrc+QGmTh37tEcI
   IfJhynD0d0D/XMcU8IVS6oGMhwRgc8THQ3LynccrVXKsAKwUrFkDjz1GZFgUjzwSzZotOtoedHUn
   beYwhg51oAD8118wfDh4eMDx4/ZujRBCFKrQIKyU2gTE5vGUg42TlgDHj8PYsdC0KWzdarPbBgeH
   4+MzEW/vAHx8JhIcHF7wC27cgFmzUG3bEu/7Jl+eeIxuT1Rl69YIhrCMpQyma+LfvDZha+HXsrbk
   ZPjxR3j4YXjqqdt7pq2cI1sIISxCKVXoA2gK7M/2/STgFLAXmAdUz+M1Siil0tKUCglRatAgperU
   Uer995U6c8Zmt1+5cqPy8BivdLdWPzw8xquVKzfeefLIkUq1aaPSK1RQJ9sOVC82Xq/uvy9dzZ+v
   VO/ek3JcI/Ph4zPRZj9Lnr7+WqnevZX69VelUlPt2xYhRJmXEftMiq1KqSIXcJgJfJTx9RTgc2BE
   7pMCAgKyvvb29sbbUVf5WtPatfDee3qh1X//q4ecbSj/fM4f3FFU4ebeCCodOoQBRMdVZsTinnTv
   rqdWFy7M+/pJSeWs1HITvfqqXuEshBB2EBYWRlhYWJFfX6QgrJS6lPm1YRjfAr/ndV72IFxm9e2r
   8zvbaZVzfvmcUxP1f5WCDRt0kaXX9rjSF0i+z5OuG+dAtt1FBaWktLobN/QHmOefh/K5fh5HWz0u
   hChTcncwJ0+ebNbri7RP2DCMBtm+fRIo2xXQlYLQUL0qNzfDsGugyB08GxLNVCbw3+3/YeknJ7j/
   fsALr6gAABMHSURBVHj9dRgwALqcXAyDB+O8cc0dqST9/fvh4TEhxzEPj/H4+fW1XuNPnIC339Z7
   e3/5Je9/XyGEKMFM2aK0BPACahuGEYWeD/Y2DKM9epX0SWCUVVvpqOLjYdEinfihYkX4/nsHSg2l
   +fv3IzJyAv+OPMjDbKUGsSyu4EOfin/SYEtzPv8c+vTJ/JyQUTowD5lD10FBH5CUVA4XlzT8/Prn
   XSe4uP78U6eS3L4dXn5ZJwVp1szy9xFCCDuTZB1FceYMfPGFDro9e4Kfn65o5KBDo/tee5tWM2fg
   rHSveFODR6i/8XfHXUC8ejWcPQtDhoCrq71bI4QQJrN4sg6Rh0uX9AKrPXugSZMcTwUHhxMYGEpy
   cnmcnVPx9+9nnd6iCfdLTtYd21nbpjDN5SDeN0NI6+BJ93Xf55jvdTg+PvZugRBC2IQE4aLw9NSP
   XDJL+WVfjRwZqedRrRGIc9+vHfsYc/wnYmMrcPz4w8yeDe3awfsfVaJHlyUw2pdyjlA6MC1N53Ge
   P1/v8ZXczUKIMkoKOOQnIkJvKzp50uSX5L8daI2lW5d1v1ORkwmlD7FUYzsP4XJiCC+/3J4LF2Dd
   Or1e7JFHwKlmxnyvPQPw1aswfTrcfTd88gkMHuxA6baEEML2JAhnl54Of/wB/ftD9+5QpQpUrmzy
   y/PbDmSVvbRXrvDUsT85QXM6sZPqXKcSSXzAFB58MJBZs6BNG8vftshmztTpJPfv1x8G/vxTbzmS
   ICyEKMMkCGcKD9cpDz/4QC8IOn0apk0zqyyQLffSxv/wG3UuGzzBr2ylKwA78GQUc6hSJcHi9yu2
   vn3hyBG9mrxTJ3u3RgghHIIE4UzNmukAsWsXDBsGLi5mX8IWe2n37YNXXoEmAcOZ+dD3xDTaylAW
   s5TB9GMNtT3+Zd29u4VJTMz7+N13Q716tm2LEEI4uLK3RSktDcpZL9VicHA4QUFrsu2l7Vv0RVnD
   hsHWrajmHvzx4k/8+9vqREToTI2jRunKfJa6X7FXdf/1FwQFwapVEBkpi62EEGWSuVuUyk4QvnIF
   5s2Db77RK3PvvdfeLcrf0aMQFISaNQsjTQ9lr605mJivlvGPf1h+GjWvVd0eHhOYMcOn4ECckgLL
   l+vgGxUFr72mu+m1alm2gUIIUUKYG4RL/3D033/rwHD33XDgAPz8s+MG4O3bYeBAUrv2YNW26mxC
   B8CEezzpEzmHIUOss46pyKu6x42D2bPhrbd0isn33pMALIQQZijd+4QXLYIJE/T47dGjZi2ysrX0
   dNi5IZHNUYOZ4bSClwa58OoPcTDJFzcr7+0t8qruzz67s6CCEEIIk5Xuv6CDB8PQoY4ZKHx9ISKC
   lIqufNdnMZ/Pq07lyj0Z8zZEPJu5Liz/XM6WVOCq7lu39MrxPn3uPMER/12FEKIEKfl/RZXSK5o7
   dgSnXKPrFq7dW+zFS0pBWBjMmsXN49FU2r2FCsC9h3z5dskyunWzT/rpzCIP2YekH3L3J7BWAjRt
   CvfcA926FWnFuBBCiPyV3CCclARLl+oKRleuwPr1OmBYSbFSUt68CT/+iAoMJPFaKgur+dP6yC/0
   Qtfu7ZKrdq+tZa+Q1CTmIs+e30aPy6eo4DZUp9xy1Dl0IYQo4Ure6uioKJ19ad486NBBF8Pt39+q
   244AfHwmEho6NY/jHxASMiX/Fy5dinrdjzMNHmLqdX+2Ve6D/xiD/xsUR+U3fMERcjlnFxSkKz8M
   H+5wZRmFEMLRlf4qSlu26J7l5s3YshafWYuXMuZ7bxqufNvkI75P20r9pnczZgzM6VV47V678vOz
   dwuEEKLMKHlB+Lnn9MPGCk1JmZEERCm4vjOCan9vpBLQrYUbA3cuw8PDdm0t1M6dsGIFfPyxw9ZA
   FkKIssAx9wkfPQrvvKN7vA4iv5SUbz/fAQICUO5NWRp0iY4dYU+ELkSf1sGTB3bMcYwAfOsWLFkC
   Dz+sV43XqgWpeX+wEEIIYRuO0xNOS4PgYL3Qau9eGDlSBw4Lr3AuquyLl5KSytEuOYr3KkXR8PWZ
   7PR4lreSVuMaXJepU6FH58WOU7sXYO5cCAiAli11Qo1HH7X6HLoQQojCOcbCrOXLddal+vX1QqvB
   g8HZ2WJtMWVrkcnbj3x9Yd060s6e45dW7/PumdcZ8H81ef11vZPHIa1bpxNN33efvVsihBClWslc
   mNWsGfz3v1YpcWfK1iJTtx+lpEDs5gjqnjhBOfj/9u49OKryjOP490GlgKCAoYCOgK4QbaVTbIo6
   CgYdQyiOoB28d5xWRYuGwIxOLQjFijdqqyDYllFRqQGtFqpR1IhG6cUiFMQLNgoyUxAhaiIXBVN4
   +sfZ6BJz2U325Owmv88Mw97OnnfmzMlvz/u+53kZbG/x7009Q7nYbfE9yYnOOiu9jRMRkfRw91D+
   BV9dx75933wtZAUFUz2oknHgv5Ejb2ryMz89fYK7u2/f7j5zpvtRR7n/s8cod/D9eXnuVVWhtLm0
   9BWPxaYc0JZYbIqXlr5S/waVle633+5+6qnuNTWhtElERJoWz76ks7J1JmZt3gzTpkEsBjt2tMou
   ayVza1HiZzqwjzEs5SVGcMe/HqXokk8YNAg++CAYsj5lYwmMG4eVlYU23pv0ggq1iwsPHBhMZps7
   V6UkRUSySLh/sV9+GebNC6pZXXZZsNbsYYeFusu6mry1KP6Zw6lmGYV8n7XsoRPXcxeP2Z+ZOvgI
   3psDOTm1n275/b1NdTUndU/y5MlBO7JgcQoREalfuCF83XXBGrMLFkC3bilvno5x0frqIsdiUygq
   KjzgM+tev5BjqzbSmb10Zi9jvnU/5z6Wy5gxw1Jud2OSGX9O5ocDkycHqxiFsbahiIi0inBD+K23
   ml0MokW1mhPUvbWoU6d9FBUVfvX6O+/A008P509fnsrQjiPo/WUl/zmsL9+aP42RaQ5gaKyredpX
   bUr84dCDT6mi5zd+ONCvX9rbJiIirSvcEG5BNaZkwipZo0cPD7bZuROeeIL9I0+ntBTmzAmGVa+5
   Bt5//xD6dCqF8ePJnT+f3JDGe5Ppah496nR6rXqNDvfG6P15NVcPu4ZrJxY2f3a0iIhkpIydxdPs
   hebrs2EDjB2Lr1/P7i45/GjGmXzeqz/FxXDBBYm3JIdfz7nRruZdu+CRR2DOHIZ27gx3TYOLLuJZ
   LSEoItImZWwIJzUu2pTXXoPbbmPf3/7BjprO9Ni3j647t/Fk3g3kLH88Y9bu/aqrecKEIIjnz4dh
   w1TXWUSkjcvYEE5mQlVj3OGNZVtZsekc7uqwiOe/PY4euzZDXh69/jIfIsq3RseoC09TOUkRkXYk
   M8pWNuCZZ17l3nvLEsLq7CbHRXfvhoULg/Hegw6C4mK49FLovLc6KDkZdT3nPXuCK/T8/OjaICIi
   oUi1bGVGh3CT3IP1ha+4gj2H9+aDj7syurqE7w3vzsSJMGJEBvXobt0K990X/Ag4+WRYuhQ6ZOYi
   ViIi0jztI4T37oXFi/HZs/michefVe2n7+4NAOwaNY6uz4Y7uSolq1fDPfdAaSlcfDFMnAjHHx91
   q0REJASphnD2XYotXIj378+W35Qw8bOZnNT5Xb7sPyh4Ly+PriXzo21fXaWlwepFGzcGV8IKYBER
   icuqK+EPP4Ql09ewaEknug09geJiKCiADjsyZLxXRETatbbTHe0eDOiOH8+OVRVs2NqF874o4ZzL
   ulNUBLm56Wtri737Ljz3HEyaFHVLREQkQtnfHV1ZCbfeiucez2P372T1ogoOW/MKQz5aRsWI8cyd
   myEB7A7PPw+jRgUznaurYf/+qFslIiJZJLL7hOsuznDTOccwbM3f2f+XJbwR+zE3VD2OL+pGyaAu
   8G8gL4+OCzJkvPfRR2HmzKDU1qRJsGQJqKqViIikKJIQrrs4wzR+zXHLr+eBAT/nNn+PM0/K4e6H
   YPBgoLqk0fHedKy0lLKDD4Y//AGGD8+ge6BERCTbRBLCtYsz/JHxDKKCGg5m8L4KenZYw8qNORxx
   RMKHuzdczzldKy2l7MILw/tuERFpN5ocEzazB81sm5m9mfBaTzMrM7MKM3vBzJKbkrxlCwC7dgVr
   Cw+ignxe4WyWM49rOfLIfxwYwE1oeKWlsuS/pD41NbB4MVx+eTD2KyIiEoJkJmYtAOoWbL4RKHP3
   QcDy+PP67d8f3CtbUEDND06m6Ge7WblyIgCf0wWAleRxNfNTW5yBNK+0BPDJJ3DHHXDssUF383nn
   KYRFRCQ0TYawu68Aquq8fC7wcPzxw8DYejeeMwfPzaV68gzu2PITjmMDOf0PZcGCtcRiU7mEEh5j
   HAWUkRObRVHR2Sk1Pi0rLdW69VY47jhYvx6eegrKy2HsWJWWFBGR0CR1n7CZDQCedvfB8edV7t4j
   /tiAT2ufJ2zjO7v14dquD/HOkQUUTzLGjft67d7mLM5QV31jwrHYFGbPLkx9THjlSujXD/r0SW07
   ERGRuFCKdTQWwvHnn7p7zzrbuAMfnzmOI14Mb+3elMO8tgiIiIhImqUaws2dHb3NzPq4+0dm1hfY
   Xt+HZvTtCz88Fm6eQX5+PvkhLN83evTw5K56P/wQ5s2DZ5+FVau0bq+IiLRYeXk55eXlzd6+uVfC
   s4BP3P1OM7sR6O7uN9bZxr2qKvpazqtXw913B+F7ySXBAsMDB0bbJhERaZPS3h1tZouAM4AcYBsw
   Hfgr8DjQD9gEXODu1XW2C3894aYUFwfr9hYVwZVXRv+DQERE2rSMWsChoGBq61SwasiWLdC7d1Dh
   SkREJGQZFcLgxGJTmT17ZLhB/NlncPjh4X2/iIhIEjJuFaW0VLCqjzusWAHnnw9DhsD/6r9nWERE
   JFO1SiWKZlewqk9NDZSUwNChcMUVcNZZsG6dupxFRCTrtEpyNauCVUMmTIANG2D6dBg9WhWtREQk
   a4UewrHYFIqK6paeboG5c78uuyUiIpLFQr2MHDlyWvNKSLrD22/X/54CWERE2ohQZ0en/N1798Ki
   RUFxDYDXX4eOHdPfOBERkRBk3OzopFRWwi23wIABQQjfeSesXasAFhGRNi0zphTPmgVVVVBWBiee
   GHVrREREWkVmdUeLiIhkscztjt6zB0pLW213IiIimS78EN6+HW6+ORjvnTcvCGMREREJOYSvugpy
   c4OFFF56CZYtg06dQt2liIhItgh3Yla/flBRAb16hbobERGRbKSJWSIiImmSuROzRERE5AAKYRER
   kYgohEVERCKiEBYREYmIQlhERCQiCmEREZGIKIRFREQiohAWERGJiEJYREQkIgphERGRiCiERURE
   IqIQFhERiYhCWEREJCIKYRERkYgohEVERCKiEBYREYmIQlhERCQiCmEREZGIKIRFREQiohAWERGJ
   iEJYREQkIgphERGRiCiERUREIqIQFhERiYhCWEREJCItCmEz22Rm68xsjZmtTFejJHrl5eVRN0Fa
   QMcve+nYtS8tvRJ2IN/dh7j70HQ0SDKD/hBkNx2/7KVj176kozva0vAdIiIi7U46roRfNLNVZnZV
   OhokIiLSXpi7N39js77uvtXMegFlQJG7r4i/1/wvFhERyVLunnQP8cEt3NHW+P+VZrYEGAqsSLUR
   IiIi7VGzu6PNrIuZdYs/PhQoAN5MV8NERETaupZcCfcGlphZ7fc86u4vpKVVIiIi7UCLxoRFRESk
   +UKpmGVmhWb2rpm9Z2a/CGMfEh4VYckeZvagmW0zszcTXutpZmVmVmFmL5hZ9yjbKA1r4PjNMLPN
   8fNvjZkVRtlGqZ+ZHW1mL5vZ22b2lplNjL+e0vmX9hA2s4OAuUAh8B3gYjM7Id37kVCpCEv2WEBw
   riW6EShz90HA8vhzyUz1HT8Hfhc//4a4+3MRtEuaVgNMdvfvAqcA18azLqXzL4wr4aHA++6+yd1r
   gMXAmBD2I+HS7PYsEL8lsKrOy+cCD8cfPwyMbdVGSdIaOH6g8y/juftH7r42/ngXsB44ihTPvzBC
   +CjgvwnPN8dfk+yhIizZrbe7b4s/3kYwiVKyS5GZvWFmD2g4IfOZ2QBgCPAvUjz/wghhzfTKfqe5
   +xBgFEEXy7CoGyTN48HMS52T2eX3wDHA94GtwG+jbY40xsy6Ak8Cxe6+M/G9ZM6/MEJ4C3B0wvOj
   Ca6GJUskFmEBaouwSPbYZmZ9IKhqB2yPuD2SAnff7nHA/ej8y1hmdghBAC9096Xxl1M6/8II4VXA
   QDMbYGYdgQuBp0LYj4RARVjahKeAy+OPLweWNvJZyTDxP9y1zkPnX0ayoEjGA8A77n5PwlspnX+h
   3CdsZqOAe4CDgAfc/fa070RCYWbHEFz9wtdFWHT8MpSZLQLOAHIIxp+mA38FHgf6AZuAC9y9Oqo2
   SsPqOX6/AvIJuqId+AC4OmGMUTKEmZ0OvAqs4+su518CK0nh/FOxDhERkYiEUqxDREREmqYQFhER
   iYhCWEREJCIKYRERkYgohEVERCKiEBYREYmIQlhERCQi/wd4D7KK6KLanwAAAABJRU5ErkJggg==
   "
   >
   </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="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.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="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.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:                Thu, 21 May 2015   Prob (F-statistic):           4.98e-10
   Time:                        05:56:22   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>