Interactions and ANOVA
======================


.. _interactions_anova_notebook:

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

.. raw:: html

   
   <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>Note: This script is based heavily on Jonathan Taylor&#39;s class notes <a href="http://www.stanford.edu/class/stats191/interactions.html">http://www.stanford.edu/class/stats191/interactions.html</a></p>
   <p>Download and format data:</p>
   </div>
   </div>
   </div>
   <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">from</span> <span class="nn">statsmodels.compat</span> <span class="kn">import</span> <span class="n">urlopen</span>
   <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="n">np</span><span class="o">.</span><span class="n">set_printoptions</span><span class="p">(</span><span class="n">precision</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">suppress</span><span class="o">=</span><span class="bp">True</span><span class="p">)</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">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
   <span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s">&quot;display.width&quot;</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</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.formula.api</span> <span class="kn">import</span> <span class="n">ols</span>
   <span class="kn">from</span> <span class="nn">statsmodels.graphics.api</span> <span class="kn">import</span> <span class="n">interaction_plot</span><span class="p">,</span> <span class="n">abline_plot</span>
   <span class="kn">from</span> <span class="nn">statsmodels.stats.anova</span> <span class="kn">import</span> <span class="n">anova_lm</span>
   
   <span class="k">try</span><span class="p">:</span>
       <span class="n">salary_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">&#39;salary.table&#39;</span><span class="p">)</span>
   <span class="k">except</span><span class="p">:</span>  <span class="c"># recent pandas can read URL without urlopen</span>
       <span class="n">url</span> <span class="o">=</span> <span class="s">&#39;http://stats191.stanford.edu/data/salary.table&#39;</span>
       <span class="n">fh</span> <span class="o">=</span> <span class="n">urlopen</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
       <span class="n">salary_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="n">fh</span><span class="p">)</span>
       <span class="n">salary_table</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s">&#39;salary.table&#39;</span><span class="p">)</span>
   
   <span class="n">E</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">E</span>
   <span class="n">M</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">M</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">X</span>
   <span class="n">S</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">S</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>Take a look at 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;[2]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="n">symbols</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;D&#39;</span><span class="p">,</span> <span class="s">&#39;^&#39;</span><span class="p">]</span>
   <span class="n">colors</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;r&#39;</span><span class="p">,</span> <span class="s">&#39;g&#39;</span><span class="p">,</span> <span class="s">&#39;blue&#39;</span><span class="p">]</span>
   <span class="n">factor_groups</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s">&#39;E&#39;</span><span class="p">,</span><span class="s">&#39;M&#39;</span><span class="p">])</span>
   <span class="k">for</span> <span class="n">values</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_groups</span><span class="p">:</span>
       <span class="n">i</span><span class="p">,</span><span class="n">j</span> <span class="o">=</span> <span class="n">values</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;X&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;S&#39;</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="n">symbols</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
                  <span class="n">s</span><span class="o">=</span><span class="mi">144</span><span class="p">)</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Experience&#39;</span><span class="p">);</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Salary&#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">
   <p>Fit a linear model:</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">formula</span> <span class="o">=</span> <span class="s">&#39;S ~ C(E) + C(M) + X&#39;</span>
   <span class="n">lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="n">formula</span><span class="p">,</span> <span class="n">salary_table</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">lm</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:                      S   R-squared:                       0.957
   Model:                            OLS   Adj. R-squared:                  0.953
   Method:                 Least Squares   F-statistic:                     226.8
   Date:                Wed, 20 May 2015   Prob (F-statistic):           2.23e-27
   Time:                        21:52:52   Log-Likelihood:                -381.63
   No. Observations:                  46   AIC:                             773.3
   Df Residuals:                      41   BIC:                             782.4
   Df Model:                           4                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   Intercept   8035.5976    386.689     20.781      0.000      7254.663  8816.532
   C(E)[T.2]   3144.0352    361.968      8.686      0.000      2413.025  3875.045
   C(E)[T.3]   2996.2103    411.753      7.277      0.000      2164.659  3827.762
   C(M)[T.1]   6883.5310    313.919     21.928      0.000      6249.559  7517.503
   X            546.1840     30.519     17.896      0.000       484.549   607.819
   ==============================================================================
   Omnibus:                        2.293   Durbin-Watson:                   2.237
   Prob(Omnibus):                  0.318   Jarque-Bera (JB):                1.362
   Skew:                          -0.077   Prob(JB):                        0.506
   Kurtosis:                       2.171   Cond. No.                         33.5
   ==============================================================================
   
   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>Have a look at the created design matrix: </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">lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">exog</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 output_prompt">
       Out[4]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   array([[ 1.,  0.,  0.,  1.,  1.],
          [ 1.,  0.,  1.,  0.,  1.],
          [ 1.,  0.,  1.,  1.,  1.],
          [ 1.,  1.,  0.,  0.,  1.],
          [ 1.,  0.,  1.,  0.,  1.]])
   </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>Or since we initially passed in a DataFrame, we have a DataFrame available in</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="n">lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">orig_exog</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 output_prompt">
       Out[5]:</div>
   
   <div class="output_html rendered_html output_subarea output_pyout">
   <div style="max-height:1000px;max-width:1500px;overflow:auto;">
   <table border="1" class="dataframe">
     <thead>
       <tr style="text-align: right;">
         <th></th>
         <th>Intercept</th>
         <th>C(E)[T.2]</th>
         <th>C(E)[T.3]</th>
         <th>C(M)[T.1]</th>
         <th>X</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <th>0</th>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>1</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>2</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 1</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>3</th>
         <td> 1</td>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>4</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
     </tbody>
   </table>
   </div>
   </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 keep a reference to the original untouched data in</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">lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">frame</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 output_prompt">
       Out[6]:</div>
   
   <div class="output_html rendered_html output_subarea output_pyout">
   <div style="max-height:1000px;max-width:1500px;overflow:auto;">
   <table border="1" class="dataframe">
     <thead>
       <tr style="text-align: right;">
         <th></th>
         <th>S</th>
         <th>X</th>
         <th>E</th>
         <th>M</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <th>0</th>
         <td> 13876</td>
         <td> 1</td>
         <td> 1</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>1</th>
         <td> 11608</td>
         <td> 1</td>
         <td> 3</td>
         <td> 0</td>
       </tr>
       <tr>
         <th>2</th>
         <td> 18701</td>
         <td> 1</td>
         <td> 3</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>3</th>
         <td> 11283</td>
         <td> 1</td>
         <td> 2</td>
         <td> 0</td>
       </tr>
       <tr>
         <th>4</th>
         <td> 11767</td>
         <td> 1</td>
         <td> 3</td>
         <td> 0</td>
       </tr>
     </tbody>
   </table>
   </div>
   </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>Influence statistics</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">infl</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">get_influence</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">infl</span><span class="o">.</span><span class="n">summary_table</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>
   ==================================================================================================
          obs      endog     fitted     Cook&apos;s   student.   hat diag    dffits   ext.stud.     dffits
                              value          d   residual              internal   residual           
   --------------------------------------------------------------------------------------------------
            0  13876.000  15465.313      0.104     -1.683      0.155     -0.722     -1.723     -0.739
            1  11608.000  11577.992      0.000      0.031      0.130      0.012      0.031      0.012
            2  18701.000  18461.523      0.001      0.247      0.109      0.086      0.244      0.085
            3  11283.000  11725.817      0.005     -0.458      0.113     -0.163     -0.453     -0.162
            4  11767.000  11577.992      0.001      0.197      0.130      0.076      0.195      0.075
            5  20872.000  19155.532      0.092      1.787      0.126      0.678      1.838      0.698
            6  11772.000  12272.001      0.006     -0.513      0.101     -0.172     -0.509     -0.170
            7  10535.000   9127.966      0.056      1.457      0.116      0.529      1.478      0.537
            8  12195.000  12124.176      0.000      0.074      0.123      0.028      0.073      0.027
            9  12313.000  12818.185      0.005     -0.516      0.091     -0.163     -0.511     -0.161
           10  14975.000  16557.681      0.084     -1.655      0.134     -0.650     -1.692     -0.664
           11  21371.000  19701.716      0.078      1.728      0.116      0.624      1.772      0.640
           12  19800.000  19553.891      0.001      0.252      0.096      0.082      0.249      0.081
           13  11417.000  10220.334      0.033      1.227      0.098      0.405      1.234      0.408
           14  20263.000  20100.075      0.001      0.166      0.093      0.053      0.165      0.053
           15  13231.000  13216.544      0.000      0.015      0.114      0.005      0.015      0.005
           16  12884.000  13364.369      0.004     -0.488      0.082     -0.146     -0.483     -0.145
           17  13245.000  13910.553      0.007     -0.674      0.075     -0.192     -0.669     -0.191
           18  13677.000  13762.728      0.000     -0.089      0.113     -0.032     -0.087     -0.031
           19  15965.000  17650.049      0.082     -1.747      0.119     -0.642     -1.794     -0.659
           20  12336.000  11312.702      0.021      1.043      0.087      0.323      1.044      0.323
           21  21352.000  21192.443      0.001      0.163      0.091      0.052      0.161      0.051
           22  13839.000  14456.737      0.006     -0.624      0.070     -0.171     -0.619     -0.170
           23  22884.000  21340.268      0.052      1.579      0.095      0.511      1.610      0.521
           24  16978.000  18742.417      0.083     -1.822      0.111     -0.644     -1.877     -0.664
           25  14803.000  15549.105      0.008     -0.751      0.065     -0.199     -0.747     -0.198
           26  17404.000  19288.601      0.093     -1.944      0.110     -0.684     -2.016     -0.709
           27  22184.000  22284.811      0.000     -0.103      0.096     -0.034     -0.102     -0.033
           28  13548.000  12405.070      0.025      1.162      0.083      0.350      1.167      0.352
           29  14467.000  13497.438      0.018      0.987      0.086      0.304      0.987      0.304
           30  15942.000  16641.473      0.007     -0.705      0.068     -0.190     -0.701     -0.189
           31  23174.000  23377.179      0.001     -0.209      0.108     -0.073     -0.207     -0.072
           32  23780.000  23525.004      0.001      0.260      0.092      0.083      0.257      0.082
           33  25410.000  24071.188      0.040      1.370      0.096      0.446      1.386      0.451
           34  14861.000  14043.622      0.014      0.834      0.091      0.263      0.831      0.262
           35  16882.000  17733.841      0.012     -0.863      0.077     -0.249     -0.860     -0.249
           36  24170.000  24469.547      0.003     -0.312      0.127     -0.119     -0.309     -0.118
           37  15990.000  15135.990      0.018      0.878      0.104      0.300      0.876      0.299
           38  26330.000  25163.556      0.035      1.202      0.109      0.420      1.209      0.422
           39  17949.000  18826.209      0.017     -0.897      0.093     -0.288     -0.895     -0.287
           40  25685.000  26108.099      0.008     -0.452      0.169     -0.204     -0.447     -0.202
           41  27837.000  26802.108      0.039      1.087      0.141      0.440      1.089      0.441
           42  18838.000  19918.577      0.033     -1.119      0.117     -0.407     -1.123     -0.408
           43  17483.000  16774.542      0.018      0.743      0.138      0.297      0.739      0.295
           44  19207.000  20464.761      0.052     -1.313      0.131     -0.511     -1.325     -0.515
           45  19346.000  18959.278      0.009      0.423      0.208      0.216      0.419      0.214
   ==================================================================================================
   
   </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>or get a dataframe</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="n">df_infl</span> <span class="o">=</span> <span class="n">infl</span><span class="o">.</span><span class="n">summary_frame</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;[9]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">df_infl</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 output_prompt">
       Out[9]:</div>
   
   <div class="output_html rendered_html output_subarea output_pyout">
   <div style="max-height:1000px;max-width:1500px;overflow:auto;">
   <table border="1" class="dataframe">
     <thead>
       <tr style="text-align: right;">
         <th></th>
         <th>dfb_Intercept</th>
         <th>dfb_C(E)[T.2]</th>
         <th>dfb_C(E)[T.3]</th>
         <th>dfb_C(M)[T.1]</th>
         <th>dfb_X</th>
         <th>cooks_d</th>
         <th>dffits</th>
         <th>dffits_internal</th>
         <th>hat_diag</th>
         <th>standard_resid</th>
         <th>student_resid</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <th>0</th>
         <td>-0.505123</td>
         <td> 0.376134</td>
         <td> 0.483977</td>
         <td>-0.369677</td>
         <td> 0.399111</td>
         <td> 0.104186</td>
         <td>-0.738880</td>
         <td>-0.721753</td>
         <td> 0.155327</td>
         <td>-1.683099</td>
         <td>-1.723037</td>
       </tr>
       <tr>
         <th>1</th>
         <td> 0.004663</td>
         <td> 0.000145</td>
         <td> 0.006733</td>
         <td>-0.006220</td>
         <td>-0.004449</td>
         <td> 0.000029</td>
         <td> 0.011972</td>
         <td> 0.012120</td>
         <td> 0.130266</td>
         <td> 0.031318</td>
         <td> 0.030934</td>
       </tr>
       <tr>
         <th>2</th>
         <td> 0.013627</td>
         <td> 0.000367</td>
         <td> 0.036876</td>
         <td> 0.030514</td>
         <td>-0.034970</td>
         <td> 0.001492</td>
         <td> 0.085380</td>
         <td> 0.086377</td>
         <td> 0.109021</td>
         <td> 0.246931</td>
         <td> 0.244082</td>
       </tr>
       <tr>
         <th>3</th>
         <td>-0.083152</td>
         <td>-0.074411</td>
         <td> 0.009704</td>
         <td> 0.053783</td>
         <td> 0.105122</td>
         <td> 0.005338</td>
         <td>-0.161773</td>
         <td>-0.163364</td>
         <td> 0.113030</td>
         <td>-0.457630</td>
         <td>-0.453173</td>
       </tr>
       <tr>
         <th>4</th>
         <td> 0.029382</td>
         <td> 0.000917</td>
         <td> 0.042425</td>
         <td>-0.039198</td>
         <td>-0.028036</td>
         <td> 0.001166</td>
         <td> 0.075439</td>
         <td> 0.076340</td>
         <td> 0.130266</td>
         <td> 0.197257</td>
         <td> 0.194929</td>
       </tr>
     </tbody>
   </table>
   </div>
   </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>Now plot the reiduals within the groups separately:</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">resid</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">resid</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">));</span>
   <span class="k">for</span> <span class="n">values</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_groups</span><span class="p">:</span>
       <span class="n">i</span><span class="p">,</span><span class="n">j</span> <span class="o">=</span> <span class="n">values</span>
       <span class="n">group_num</span> <span class="o">=</span> <span class="n">i</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span>  <span class="c"># for plotting purposes</span>
       <span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">group_num</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">group</span><span class="p">)</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">resid</span><span class="p">[</span><span class="n">group</span><span class="o">.</span><span class="n">index</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="n">symbols</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
               <span class="n">s</span><span class="o">=</span><span class="mi">144</span><span class="p">,</span> <span class="n">edgecolors</span><span class="o">=</span><span class="s">&#39;black&#39;</span><span class="p">)</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Group&#39;</span><span class="p">);</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Residuals&#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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
   JP8/b2RpQauFlfIAAAAASUVORK5CYII=
   "
   >
   </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>Now we will test some interactions using anova or f_test</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="n">interX_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&quot;S ~ C(E) * X + C(M)&quot;</span><span class="p">,</span> <span class="n">salary_table</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">interX_lm</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:                      S   R-squared:                       0.961
   Model:                            OLS   Adj. R-squared:                  0.955
   Method:                 Least Squares   F-statistic:                     158.6
   Date:                Wed, 20 May 2015   Prob (F-statistic):           8.23e-26
   Time:                        21:52:54   Log-Likelihood:                -379.47
   No. Observations:                  46   AIC:                             772.9
   Df Residuals:                      39   BIC:                             785.7
   Df Model:                           6                                         
   Covariance Type:            nonrobust                                         
   ===============================================================================
                     coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   -------------------------------------------------------------------------------
   Intercept    7256.2800    549.494     13.205      0.000      6144.824  8367.736
   C(E)[T.2]    4172.5045    674.966      6.182      0.000      2807.256  5537.753
   C(E)[T.3]    3946.3649    686.693      5.747      0.000      2557.396  5335.333
   C(M)[T.1]    7102.4539    333.442     21.300      0.000      6428.005  7776.903
   X             632.2878     53.185     11.888      0.000       524.710   739.865
   C(E)[T.2]:X  -125.5147     69.863     -1.797      0.080      -266.826    15.796
   C(E)[T.3]:X  -141.2741     89.281     -1.582      0.122      -321.861    39.313
   ==============================================================================
   Omnibus:                        0.432   Durbin-Watson:                   2.179
   Prob(Omnibus):                  0.806   Jarque-Bera (JB):                0.590
   Skew:                           0.144   Prob(JB):                        0.744
   Kurtosis:                       2.526   Cond. No.                         69.7
   ==============================================================================
   
   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>Do an ANOVA check</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="kn">from</span> <span class="nn">statsmodels.stats.api</span> <span class="kn">import</span> <span class="n">anova_lm</span>
   
   <span class="n">table1</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">lm</span><span class="p">,</span> <span class="n">interX_lm</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table1</span><span class="p">)</span>
   
   <span class="n">interM_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&quot;S ~ X + C(E)*C(M)&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">salary_table</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">interM_lm</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   
   <span class="n">table2</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">lm</span><span class="p">,</span> <span class="n">interM_lm</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table2</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>
      df_resid              ssr  df_diff         ss_diff         F    Pr(&gt;F)
   0        41  43280719.492876        0             NaN       NaN       NaN
   1        39  39410679.807560        2  3870039.685316  1.914856  0.160964
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      S   R-squared:                       0.999
   Model:                            OLS   Adj. R-squared:                  0.999
   Method:                 Least Squares   F-statistic:                     5517.
   Date:                Wed, 20 May 2015   Prob (F-statistic):           1.67e-55
   Time:                        21:52:54   Log-Likelihood:                -298.74
   No. Observations:                  46   AIC:                             611.5
   Df Residuals:                      39   BIC:                             624.3
   Df Model:                           6                                         
   Covariance Type:            nonrobust                                         
   =======================================================================================
                             coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ---------------------------------------------------------------------------------------
   Intercept            9472.6854     80.344    117.902      0.000      9310.175  9635.196
   C(E)[T.2]            1381.6706     77.319     17.870      0.000      1225.279  1538.063
   C(E)[T.3]            1730.7483    105.334     16.431      0.000      1517.690  1943.806
   C(M)[T.1]            3981.3769    101.175     39.351      0.000      3776.732  4186.022
   C(E)[T.2]:C(M)[T.1]  4902.5231    131.359     37.322      0.000      4636.825  5168.222
   C(E)[T.3]:C(M)[T.1]  3066.0351    149.330     20.532      0.000      2763.986  3368.084
   X                     496.9870      5.566     89.283      0.000       485.728   508.246
   ==============================================================================
   Omnibus:                       74.761   Durbin-Watson:                   2.244
   Prob(Omnibus):                  0.000   Jarque-Bera (JB):             1037.873
   Skew:                          -4.103   Prob(JB):                    4.25e-226
   Kurtosis:                      24.776   Cond. No.                         79.0
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
      df_resid              ssr  df_diff          ss_diff           F        Pr(&gt;F)
   0        41  43280719.492876        0              NaN         NaN           NaN
   1        39   1178167.864864        2  42102551.628012  696.844466  3.025504e-31
   
   </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>The design matrix as a DataFrame</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">interM_lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">orig_exog</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 output_prompt">
       Out[13]:</div>
   
   <div class="output_html rendered_html output_subarea output_pyout">
   <div style="max-height:1000px;max-width:1500px;overflow:auto;">
   <table border="1" class="dataframe">
     <thead>
       <tr style="text-align: right;">
         <th></th>
         <th>Intercept</th>
         <th>C(E)[T.2]</th>
         <th>C(E)[T.3]</th>
         <th>C(M)[T.1]</th>
         <th>C(E)[T.2]:C(M)[T.1]</th>
         <th>C(E)[T.3]:C(M)[T.1]</th>
         <th>X</th>
       </tr>
     </thead>
     <tbody>
       <tr>
         <th>0</th>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>1</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>2</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>3</th>
         <td> 1</td>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
       <tr>
         <th>4</th>
         <td> 1</td>
         <td> 0</td>
         <td> 1</td>
         <td> 0</td>
         <td> 0</td>
         <td> 0</td>
         <td> 1</td>
       </tr>
     </tbody>
   </table>
   </div>
   </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>The design matrix as an ndarray</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">interM_lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">exog</span>
   <span class="n">interM_lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">exog_names</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[14]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   [&apos;Intercept&apos;,
    &apos;C(E)[T.2]&apos;,
    &apos;C(E)[T.3]&apos;,
    &apos;C(M)[T.1]&apos;,
    &apos;C(E)[T.2]:C(M)[T.1]&apos;,
    &apos;C(E)[T.3]:C(M)[T.1]&apos;,
    &apos;X&apos;]
   </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;[15]:
   </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">interM_lm</span><span class="o">.</span><span class="n">get_influence</span><span class="p">()</span>
   <span class="n">resid</span> <span class="o">=</span> <span class="n">infl</span><span class="o">.</span><span class="n">resid_studentized_internal</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="k">for</span> <span class="n">values</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_groups</span><span class="p">:</span>
       <span class="n">i</span><span class="p">,</span><span class="n">j</span> <span class="o">=</span> <span class="n">values</span>
       <span class="n">idx</span> <span class="o">=</span> <span class="n">group</span><span class="o">.</span><span class="n">index</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">resid</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="n">symbols</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
               <span class="n">s</span><span class="o">=</span><span class="mi">144</span><span class="p">,</span> <span class="n">edgecolors</span><span class="o">=</span><span class="s">&#39;black&#39;</span><span class="p">)</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;X&#39;</span><span class="p">);</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;standardized resids&#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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">IndexError</span>                                Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-175-b9ade982a4ac&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      5</span>     i<span class="ansiblue">,</span>j <span class="ansiblue">=</span> values<span class="ansiblue"></span>
   <span class="ansigreen">      6</span>     idx <span class="ansiblue">=</span> group<span class="ansiblue">.</span>index<span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 7</span><span class="ansired">     plt.scatter(X[idx], resid[idx], marker=symbols[j], color=colors[i-1],
   </span><span class="ansigreen">      8</span>             s=144, edgecolors=&apos;black&apos;)
   <span class="ansigreen">      9</span> plt<span class="ansiblue">.</span>xlabel<span class="ansiblue">(</span><span class="ansiblue">&apos;X&apos;</span><span class="ansiblue">)</span><span class="ansiblue">;</span><span class="ansiblue"></span>
   
   <span class="ansired">IndexError</span>: unsupported iterator index</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_text output_subarea ">
   <pre>
   &lt;matplotlib.figure.Figure at 0x7fd0d8b76210&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>Looks like one observation is an outlier.</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">drop_idx</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="n">resid</span><span class="p">)</span><span class="o">.</span><span class="n">argmax</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">drop_idx</span><span class="p">)</span>  <span class="c"># zero-based index</span>
   <span class="n">idx</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">drop_idx</span><span class="p">)</span>
   
   <span class="n">lm32</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;S ~ C(E) + X + C(M)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">salary_table</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">idx</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">lm32</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
   
   <span class="n">interX_lm32</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;S ~ C(E) * X + C(M)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">salary_table</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">idx</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">interX_lm32</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
   
   
   <span class="n">table3</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">lm32</span><span class="p">,</span> <span class="n">interX_lm32</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table3</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
   
   
   <span class="n">interM_lm32</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;S ~ X + C(E) * C(M)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">salary_table</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">idx</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   
   <span class="n">table4</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">lm32</span><span class="p">,</span> <span class="n">interM_lm32</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table4</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#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_subarea output_stream output_stdout output_text">
   <pre>
   32
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      S   R-squared:                       0.955
   Model:                            OLS   Adj. R-squared:                  0.950
   Method:                 Least Squares   F-statistic:                     211.7
   Date:                Wed, 20 May 2015   Prob (F-statistic):           2.45e-26
   Time:                        21:52:55   Log-Likelihood:                -373.79
   No. Observations:                  45   AIC:                             757.6
   Df Residuals:                      40   BIC:                             766.6
   Df Model:                           4                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   Intercept   8044.7518    392.781     20.482      0.000      7250.911  8838.592
   C(E)[T.2]   3129.5286    370.470      8.447      0.000      2380.780  3878.277
   C(E)[T.3]   2999.4451    416.712      7.198      0.000      2157.238  3841.652
   C(M)[T.1]   6866.9856    323.991     21.195      0.000      6212.175  7521.796
   X            545.7855     30.912     17.656      0.000       483.311   608.260
   ==============================================================================
   Omnibus:                        2.511   Durbin-Watson:                   2.265
   Prob(Omnibus):                  0.285   Jarque-Bera (JB):                1.400
   Skew:                          -0.044   Prob(JB):                        0.496
   Kurtosis:                       2.140   Cond. No.                         33.1
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      S   R-squared:                       0.959
   Model:                            OLS   Adj. R-squared:                  0.952
   Method:                 Least Squares   F-statistic:                     147.7
   Date:                Wed, 20 May 2015   Prob (F-statistic):           8.97e-25
   Time:                        21:52:55   Log-Likelihood:                -371.70
   No. Observations:                  45   AIC:                             757.4
   Df Residuals:                      38   BIC:                             770.0
   Df Model:                           6                                         
   Covariance Type:            nonrobust                                         
   ===============================================================================
                     coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   -------------------------------------------------------------------------------
   Intercept    7266.0887    558.872     13.001      0.000      6134.711  8397.466
   C(E)[T.2]    4162.0846    685.728      6.070      0.000      2773.900  5550.269
   C(E)[T.3]    3940.4359    696.067      5.661      0.000      2531.322  5349.549
   C(M)[T.1]    7088.6387    345.587     20.512      0.000      6389.035  7788.243
   X             631.6892     53.950     11.709      0.000       522.473   740.905
   C(E)[T.2]:X  -125.5009     70.744     -1.774      0.084      -268.714    17.712
   C(E)[T.3]:X  -139.8410     90.728     -1.541      0.132      -323.511    43.829
   ==============================================================================
   Omnibus:                        0.617   Durbin-Watson:                   2.194
   Prob(Omnibus):                  0.734   Jarque-Bera (JB):                0.728
   Skew:                           0.162   Prob(JB):                        0.695
   Kurtosis:                       2.468   Cond. No.                         68.7
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   
      df_resid              ssr  df_diff         ss_diff         F    Pr(&gt;F)
   0        40  43209096.482552        0             NaN       NaN       NaN
   1        38  39374237.269069        2  3834859.213482  1.850508  0.171042
   
   
      df_resid              ssr  df_diff          ss_diff            F        Pr(&gt;F)
   0        40  43209096.482552        0              NaN          NaN           NaN
   1        38    171188.119937        2  43037908.362615  4776.734853  2.291239e-46
   
   
   
   </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> Replot the residuals</p>
   </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">try</span><span class="p">:</span>
       <span class="n">resid</span> <span class="o">=</span> <span class="n">interM_lm32</span><span class="o">.</span><span class="n">get_influence</span><span class="p">()</span><span class="o">.</span><span class="n">summary_frame</span><span class="p">()[</span><span class="s">&#39;standard_resid&#39;</span><span class="p">]</span>
   <span class="k">except</span><span class="p">:</span>
       <span class="n">resid</span> <span class="o">=</span> <span class="n">interM_lm32</span><span class="o">.</span><span class="n">get_influence</span><span class="p">()</span><span class="o">.</span><span class="n">summary_frame</span><span class="p">()[</span><span class="s">&#39;standard_resid&#39;</span><span class="p">]</span>
   
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="k">for</span> <span class="n">values</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_groups</span><span class="p">:</span>
       <span class="n">i</span><span class="p">,</span><span class="n">j</span> <span class="o">=</span> <span class="n">values</span>
       <span class="n">idx</span> <span class="o">=</span> <span class="n">group</span><span class="o">.</span><span class="n">index</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">resid</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="n">symbols</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
               <span class="n">s</span><span class="o">=</span><span class="mi">144</span><span class="p">,</span> <span class="n">edgecolors</span><span class="o">=</span><span class="s">&#39;black&#39;</span><span class="p">)</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;X[~[32]]&#39;</span><span class="p">);</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;standardized resids&#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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
   9/8BFJaYUvimUkMAAAAASUVORK5CYII=
   "
   >
   </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> Plot the fitted values</p>
   </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="n">lm_final</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;S ~ X + C(E)*C(M)&#39;</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">salary_table</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="n">drop_idx</span><span class="p">]))</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="n">mf</span> <span class="o">=</span> <span class="n">lm_final</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">orig_exog</span>
   <span class="n">lstyle</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;-&#39;</span><span class="p">,</span><span class="s">&#39;--&#39;</span><span class="p">]</span>
   
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="k">for</span> <span class="n">values</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_groups</span><span class="p">:</span>
       <span class="n">i</span><span class="p">,</span><span class="n">j</span> <span class="o">=</span> <span class="n">values</span>
       <span class="n">idx</span> <span class="o">=</span> <span class="n">group</span><span class="o">.</span><span class="n">index</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">S</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">marker</span><span class="o">=</span><span class="n">symbols</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span>
                   <span class="n">s</span><span class="o">=</span><span class="mi">144</span><span class="p">,</span> <span class="n">edgecolors</span><span class="o">=</span><span class="s">&#39;black&#39;</span><span class="p">)</span>
       <span class="c"># drop NA because there is no idx 32 in the final model</span>
       <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">mf</span><span class="o">.</span><span class="n">X</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">dropna</span><span class="p">(),</span> <span class="n">lm_final</span><span class="o">.</span><span class="n">fittedvalues</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">dropna</span><span class="p">(),</span>
               <span class="n">ls</span><span class="o">=</span><span class="n">lstyle</span><span class="p">[</span><span class="n">j</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">&#39;Experience&#39;</span><span class="p">);</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">&#39;Salary&#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">
   <p>From our first look at the data, the difference between Master&#39;s and PhD in the management group is different than in the non-management group. This is an interaction between the two qualitative variables management,M and education,E. We can visualize this by first removing the effect of experience, then plotting the means within each of the 6 groups using interaction.plot.</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="n">U</span> <span class="o">=</span> <span class="n">S</span> <span class="o">-</span> <span class="n">X</span> <span class="o">*</span> <span class="n">interX_lm32</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;X&#39;</span><span class="p">]</span>
   
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="n">interaction_plot</span><span class="p">(</span><span class="n">E</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">U</span><span class="p">,</span> <span class="n">colors</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;red&#39;</span><span class="p">,</span><span class="s">&#39;blue&#39;</span><span class="p">],</span> <span class="n">markers</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;^&#39;</span><span class="p">,</span><span class="s">&#39;D&#39;</span><span class="p">],</span>
           <span class="n">markersize</span><span class="o">=</span><span class="mi">10</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">gca</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[19]:</div>
   
   
   <div class="output_png output_subarea output_pyout">
   <img src="data:image/png;base64,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
   "
   >
   </div>
   
   </div>
   
   <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="minority-employment-data">Minority Employment Data</h2>
   </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="k">try</span><span class="p">:</span>
       <span class="n">minority_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s">&#39;minority.table&#39;</span><span class="p">)</span>
   <span class="k">except</span><span class="p">:</span>  <span class="c"># don&#39;t have data already</span>
       <span class="n">url</span> <span class="o">=</span> <span class="s">&#39;http://stats191.stanford.edu/data/minority.table&#39;</span>
       <span class="n">minority_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
   
   <span class="n">factor_group</span> <span class="o">=</span> <span class="n">minority_table</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s">&#39;ETHN&#39;</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">6</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="n">colors</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;purple&#39;</span><span class="p">,</span> <span class="s">&#39;green&#39;</span><span class="p">]</span>
   <span class="n">markers</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;o&#39;</span><span class="p">,</span> <span class="s">&#39;v&#39;</span><span class="p">]</span>
   <span class="k">for</span> <span class="n">factor</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_group</span><span class="p">:</span>
       <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;JPERF&#39;</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span>
                   <span class="n">marker</span><span class="o">=</span><span class="n">markers</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">12</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">&#39;TEST&#39;</span><span class="p">);</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">&#39;JPERF&#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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">HTTPError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-180-83c26c0c5424&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      3</span> <span class="ansigreen">except</span><span class="ansiblue">:</span>  <span class="ansired"># don&apos;t have data already</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span>     url <span class="ansiblue">=</span> <span class="ansiblue">&apos;http://stats191.stanford.edu/data/minority.table&apos;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 5</span><span class="ansired">     </span>minority_table <span class="ansiblue">=</span> pd<span class="ansiblue">.</span>read_table<span class="ansiblue">(</span>url<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      6</span> <span class="ansiblue"></span>
   <span class="ansigreen">      7</span> factor_group <span class="ansiblue">=</span> minority_table<span class="ansiblue">.</span>groupby<span class="ansiblue">(</span><span class="ansiblue">[</span><span class="ansiblue">&apos;ETHN&apos;</span><span class="ansiblue">]</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/pandas/io/parsers.pyc</span> in <span class="ansicyan">parser_f</span><span class="ansiblue">(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, skiprows, skipfooter, skip_footer, na_values, na_fvalues, true_values, false_values, delimiter, converters, dtype, usecols, engine, delim_whitespace, as_recarray, na_filter, compact_ints, use_unsigned, low_memory, buffer_lines, warn_bad_lines, error_bad_lines, keep_default_na, thousands, comment, decimal, parse_dates, keep_date_col, dayfirst, date_parser, memory_map, float_precision, nrows, iterator, chunksize, verbose, encoding, squeeze, mangle_dupe_cols, tupleize_cols, infer_datetime_format, skip_blank_lines)</span>
   <span class="ansigreen">    463</span>                     skip_blank_lines=skip_blank_lines)
   <span class="ansigreen">    464</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 465</span><span class="ansired">         </span><span class="ansigreen">return</span> _read<span class="ansiblue">(</span>filepath_or_buffer<span class="ansiblue">,</span> kwds<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    466</span> <span class="ansiblue"></span>
   <span class="ansigreen">    467</span>     parser_f<span class="ansiblue">.</span>__name__ <span class="ansiblue">=</span> name<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/pandas/io/parsers.pyc</span> in <span class="ansicyan">_read</span><span class="ansiblue">(filepath_or_buffer, kwds)</span>
   <span class="ansigreen">    227</span> <span class="ansiblue"></span>
   <span class="ansigreen">    228</span>     filepath_or_buffer, _ = get_filepath_or_buffer(filepath_or_buffer,
   <span class="ansigreen">--&gt; 229</span><span class="ansired">                                                    encoding)
   </span><span class="ansigreen">    230</span> <span class="ansiblue"></span>
   <span class="ansigreen">    231</span>     <span class="ansigreen">if</span> kwds<span class="ansiblue">.</span>get<span class="ansiblue">(</span><span class="ansiblue">&apos;date_parser&apos;</span><span class="ansiblue">,</span> None<span class="ansiblue">)</span> <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/pandas/io/common.pyc</span> in <span class="ansicyan">get_filepath_or_buffer</span><span class="ansiblue">(filepath_or_buffer, encoding)</span>
   <span class="ansigreen">    116</span> <span class="ansiblue"></span>
   <span class="ansigreen">    117</span>     <span class="ansigreen">if</span> _is_url<span class="ansiblue">(</span>filepath_or_buffer<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 118</span><span class="ansired">         </span>req <span class="ansiblue">=</span> _urlopen<span class="ansiblue">(</span>str<span class="ansiblue">(</span>filepath_or_buffer<span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    119</span>         <span class="ansigreen">return</span> maybe_read_encoded_stream<span class="ansiblue">(</span>req<span class="ansiblue">,</span> encoding<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    120</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">urlopen</span><span class="ansiblue">(url, data, timeout, cafile, capath, cadefault, context)</span>
   <span class="ansigreen">    152</span>     <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    153</span>         opener <span class="ansiblue">=</span> _opener<span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 154</span><span class="ansired">     </span><span class="ansigreen">return</span> opener<span class="ansiblue">.</span>open<span class="ansiblue">(</span>url<span class="ansiblue">,</span> data<span class="ansiblue">,</span> timeout<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    155</span> <span class="ansiblue"></span>
   <span class="ansigreen">    156</span> <span class="ansigreen">def</span> install_opener<span class="ansiblue">(</span>opener<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">open</span><span class="ansiblue">(self, fullurl, data, timeout)</span>
   <span class="ansigreen">    435</span>         <span class="ansigreen">for</span> processor <span class="ansigreen">in</span> self<span class="ansiblue">.</span>process_response<span class="ansiblue">.</span>get<span class="ansiblue">(</span>protocol<span class="ansiblue">,</span> <span class="ansiblue">[</span><span class="ansiblue">]</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    436</span>             meth <span class="ansiblue">=</span> getattr<span class="ansiblue">(</span>processor<span class="ansiblue">,</span> meth_name<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 437</span><span class="ansired">             </span>response <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">,</span> response<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    438</span> <span class="ansiblue"></span>
   <span class="ansigreen">    439</span>         <span class="ansigreen">return</span> response<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">http_response</span><span class="ansiblue">(self, request, response)</span>
   <span class="ansigreen">    548</span>         <span class="ansigreen">if</span> <span class="ansigreen">not</span> <span class="ansiblue">(</span><span class="ansicyan">200</span> <span class="ansiblue">&lt;=</span> code <span class="ansiblue">&lt;</span> <span class="ansicyan">300</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    549</span>             response = self.parent.error(
   <span class="ansigreen">--&gt; 550</span><span class="ansired">                 &apos;http&apos;, request, response, code, msg, hdrs)
   </span><span class="ansigreen">    551</span> <span class="ansiblue"></span>
   <span class="ansigreen">    552</span>         <span class="ansigreen">return</span> response<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">error</span><span class="ansiblue">(self, proto, *args)</span>
   <span class="ansigreen">    467</span>             http_err <span class="ansiblue">=</span> <span class="ansicyan">0</span><span class="ansiblue"></span>
   <span class="ansigreen">    468</span>         args <span class="ansiblue">=</span> <span class="ansiblue">(</span>dict<span class="ansiblue">,</span> proto<span class="ansiblue">,</span> meth_name<span class="ansiblue">)</span> <span class="ansiblue">+</span> args<span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 469</span><span class="ansired">         </span>result <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_call_chain<span class="ansiblue">(</span><span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    470</span>         <span class="ansigreen">if</span> result<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    471</span>             <span class="ansigreen">return</span> result<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">_call_chain</span><span class="ansiblue">(self, chain, kind, meth_name, *args)</span>
   <span class="ansigreen">    407</span>             func <span class="ansiblue">=</span> getattr<span class="ansiblue">(</span>handler<span class="ansiblue">,</span> meth_name<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    408</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 409</span><span class="ansired">             </span>result <span class="ansiblue">=</span> func<span class="ansiblue">(</span><span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    410</span>             <span class="ansigreen">if</span> result <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    411</span>                 <span class="ansigreen">return</span> result<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">http_error_302</span><span class="ansiblue">(self, req, fp, code, msg, headers)</span>
   <span class="ansigreen">    654</span>         fp<span class="ansiblue">.</span>close<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    655</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 656</span><span class="ansired">         </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>parent<span class="ansiblue">.</span>open<span class="ansiblue">(</span>new<span class="ansiblue">,</span> timeout<span class="ansiblue">=</span>req<span class="ansiblue">.</span>timeout<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    657</span> <span class="ansiblue"></span>
   <span class="ansigreen">    658</span>     http_error_301 <span class="ansiblue">=</span> http_error_303 <span class="ansiblue">=</span> http_error_307 <span class="ansiblue">=</span> http_error_302<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">open</span><span class="ansiblue">(self, fullurl, data, timeout)</span>
   <span class="ansigreen">    435</span>         <span class="ansigreen">for</span> processor <span class="ansigreen">in</span> self<span class="ansiblue">.</span>process_response<span class="ansiblue">.</span>get<span class="ansiblue">(</span>protocol<span class="ansiblue">,</span> <span class="ansiblue">[</span><span class="ansiblue">]</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    436</span>             meth <span class="ansiblue">=</span> getattr<span class="ansiblue">(</span>processor<span class="ansiblue">,</span> meth_name<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 437</span><span class="ansired">             </span>response <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">,</span> response<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    438</span> <span class="ansiblue"></span>
   <span class="ansigreen">    439</span>         <span class="ansigreen">return</span> response<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">http_response</span><span class="ansiblue">(self, request, response)</span>
   <span class="ansigreen">    548</span>         <span class="ansigreen">if</span> <span class="ansigreen">not</span> <span class="ansiblue">(</span><span class="ansicyan">200</span> <span class="ansiblue">&lt;=</span> code <span class="ansiblue">&lt;</span> <span class="ansicyan">300</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    549</span>             response = self.parent.error(
   <span class="ansigreen">--&gt; 550</span><span class="ansired">                 &apos;http&apos;, request, response, code, msg, hdrs)
   </span><span class="ansigreen">    551</span> <span class="ansiblue"></span>
   <span class="ansigreen">    552</span>         <span class="ansigreen">return</span> response<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">error</span><span class="ansiblue">(self, proto, *args)</span>
   <span class="ansigreen">    473</span>         <span class="ansigreen">if</span> http_err<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    474</span>             args <span class="ansiblue">=</span> <span class="ansiblue">(</span>dict<span class="ansiblue">,</span> <span class="ansiblue">&apos;default&apos;</span><span class="ansiblue">,</span> <span class="ansiblue">&apos;http_error_default&apos;</span><span class="ansiblue">)</span> <span class="ansiblue">+</span> orig_args<span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 475</span><span class="ansired">             </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>_call_chain<span class="ansiblue">(</span><span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    476</span> <span class="ansiblue"></span>
   <span class="ansigreen">    477</span> <span class="ansired"># XXX probably also want an abstract factory that knows when it makes</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">_call_chain</span><span class="ansiblue">(self, chain, kind, meth_name, *args)</span>
   <span class="ansigreen">    407</span>             func <span class="ansiblue">=</span> getattr<span class="ansiblue">(</span>handler<span class="ansiblue">,</span> meth_name<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    408</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 409</span><span class="ansired">             </span>result <span class="ansiblue">=</span> func<span class="ansiblue">(</span><span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    410</span>             <span class="ansigreen">if</span> result <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    411</span>                 <span class="ansigreen">return</span> result<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">http_error_default</span><span class="ansiblue">(self, req, fp, code, msg, hdrs)</span>
   <span class="ansigreen">    556</span> <span class="ansigreen">class</span> HTTPDefaultErrorHandler<span class="ansiblue">(</span>BaseHandler<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    557</span>     <span class="ansigreen">def</span> http_error_default<span class="ansiblue">(</span>self<span class="ansiblue">,</span> req<span class="ansiblue">,</span> fp<span class="ansiblue">,</span> code<span class="ansiblue">,</span> msg<span class="ansiblue">,</span> hdrs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 558</span><span class="ansired">         </span><span class="ansigreen">raise</span> HTTPError<span class="ansiblue">(</span>req<span class="ansiblue">.</span>get_full_url<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">,</span> code<span class="ansiblue">,</span> msg<span class="ansiblue">,</span> hdrs<span class="ansiblue">,</span> fp<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    559</span> <span class="ansiblue"></span>
   <span class="ansigreen">    560</span> <span class="ansigreen">class</span> HTTPRedirectHandler<span class="ansiblue">(</span>BaseHandler<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">HTTPError</span>: HTTP Error 404: Not Found</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;[21]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">min_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;JPERF ~ TEST&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">minority_table</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">min_lm</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-181-9d22ebbe63c2&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>min_lm <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;JPERF ~ TEST&apos;</span><span class="ansiblue">,</span> data<span class="ansiblue">=</span>minority_table<span class="ansiblue">)</span><span class="ansiblue">.</span>fit<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>min_lm<span class="ansiblue">.</span>summary<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;minority_table&apos; is not defined</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;[22]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><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">6</span><span class="p">,</span><span class="mi">6</span><span class="p">));</span>
   <span class="k">for</span> <span class="n">factor</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_group</span><span class="p">:</span>
       <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;JPERF&#39;</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span>
                   <span class="n">marker</span><span class="o">=</span><span class="n">markers</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">12</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
   
   <span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">&#39;TEST&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">&#39;JPERF&#39;</span><span class="p">)</span>
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">model_results</span> <span class="o">=</span> <span class="n">min_lm</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-182-d9e4c8602668&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> fig<span class="ansiblue">,</span> ax <span class="ansiblue">=</span> plt<span class="ansiblue">.</span>subplots<span class="ansiblue">(</span>figsize<span class="ansiblue">=</span><span class="ansiblue">(</span><span class="ansicyan">6</span><span class="ansiblue">,</span><span class="ansicyan">6</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue">;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span><span class="ansigreen">for</span> factor<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_group<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span>     ax.scatter(group[&apos;TEST&apos;], group[&apos;JPERF&apos;], color=colors[factor],
   <span class="ansigreen">      4</span>                 marker=markers[factor], s=12**2)
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;factor_group&apos; is not defined</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   6lsAAAAASUVORK5CYII=
   "
   >
   </div>
   
   </div>
   
   </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">min_lm2</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;JPERF ~ TEST + TEST:ETHN&#39;</span><span class="p">,</span>
           <span class="n">data</span><span class="o">=</span><span class="n">minority_table</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">min_lm2</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-183-f6a4c64c17ca&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> min_lm2 = ols(&apos;JPERF ~ TEST + TEST:ETHN&apos;,
   <span class="ansigreen">----&gt; 2</span><span class="ansired">         data=minority_table).fit()
   </span><span class="ansigreen">      3</span> <span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>min_lm2<span class="ansiblue">.</span>summary<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;minority_table&apos; is not defined</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;[24]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><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">6</span><span class="p">,</span><span class="mi">6</span><span class="p">));</span>
   <span class="k">for</span> <span class="n">factor</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_group</span><span class="p">:</span>
       <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;JPERF&#39;</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span>
                   <span class="n">marker</span><span class="o">=</span><span class="n">markers</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">12</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
   
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm2</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">],</span>
                    <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm2</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;purple&#39;</span><span class="p">);</span>
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm2</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">],</span>
           <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm2</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">min_lm2</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST:ETHN&#39;</span><span class="p">],</span>
           <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;green&#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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-184-f8432b7c2f24&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> fig<span class="ansiblue">,</span> ax <span class="ansiblue">=</span> plt<span class="ansiblue">.</span>subplots<span class="ansiblue">(</span>figsize<span class="ansiblue">=</span><span class="ansiblue">(</span><span class="ansicyan">6</span><span class="ansiblue">,</span><span class="ansicyan">6</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue">;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span><span class="ansigreen">for</span> factor<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_group<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span>     ax.scatter(group[&apos;TEST&apos;], group[&apos;JPERF&apos;], color=colors[factor],
   <span class="ansigreen">      4</span>                 marker=markers[factor], s=12**2)
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;factor_group&apos; is not defined</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   6lsAAAAASUVORK5CYII=
   "
   >
   </div>
   
   </div>
   
   </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="n">min_lm3</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;JPERF ~ TEST + ETHN&#39;</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">minority_table</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">min_lm3</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-185-5f2d6b39420c&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>min_lm3 <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;JPERF ~ TEST + ETHN&apos;</span><span class="ansiblue">,</span> data <span class="ansiblue">=</span> minority_table<span class="ansiblue">)</span><span class="ansiblue">.</span>fit<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>min_lm3<span class="ansiblue">.</span>summary<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;minority_table&apos; is not defined</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="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">6</span><span class="p">,</span><span class="mi">6</span><span class="p">));</span>
   <span class="k">for</span> <span class="n">factor</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_group</span><span class="p">:</span>
       <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;JPERF&#39;</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span>
                   <span class="n">marker</span><span class="o">=</span><span class="n">markers</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">12</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
   
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm3</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">],</span>
                    <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm3</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;purple&#39;</span><span class="p">);</span>
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm3</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">min_lm3</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;ETHN&#39;</span><span class="p">],</span>
           <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm3</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;green&#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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-186-3e445d581db3&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> fig<span class="ansiblue">,</span> ax <span class="ansiblue">=</span> plt<span class="ansiblue">.</span>subplots<span class="ansiblue">(</span>figsize<span class="ansiblue">=</span><span class="ansiblue">(</span><span class="ansicyan">6</span><span class="ansiblue">,</span><span class="ansicyan">6</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue">;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span><span class="ansigreen">for</span> factor<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_group<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span>     ax.scatter(group[&apos;TEST&apos;], group[&apos;JPERF&apos;], color=colors[factor],
   <span class="ansigreen">      4</span>                 marker=markers[factor], s=12**2)
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;factor_group&apos; is not defined</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   6lsAAAAASUVORK5CYII=
   "
   >
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[27]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">min_lm4</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;JPERF ~ TEST * ETHN&#39;</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">minority_table</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">min_lm4</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-187-45bd21e99036&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>min_lm4 <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;JPERF ~ TEST * ETHN&apos;</span><span class="ansiblue">,</span> data <span class="ansiblue">=</span> minority_table<span class="ansiblue">)</span><span class="ansiblue">.</span>fit<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>min_lm4<span class="ansiblue">.</span>summary<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;minority_table&apos; is not defined</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;[28]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><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="k">for</span> <span class="n">factor</span><span class="p">,</span> <span class="n">group</span> <span class="ow">in</span> <span class="n">factor_group</span><span class="p">:</span>
       <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">group</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">group</span><span class="p">[</span><span class="s">&#39;JPERF&#39;</span><span class="p">],</span> <span class="n">color</span><span class="o">=</span><span class="n">colors</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span>
                   <span class="n">marker</span><span class="o">=</span><span class="n">markers</span><span class="p">[</span><span class="n">factor</span><span class="p">],</span> <span class="n">s</span><span class="o">=</span><span class="mi">12</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
   
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">],</span>
                    <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">],</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;purple&#39;</span><span class="p">);</span>
   <span class="n">fig</span> <span class="o">=</span> <span class="n">abline_plot</span><span class="p">(</span><span class="n">intercept</span> <span class="o">=</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Intercept&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;ETHN&#39;</span><span class="p">],</span>
           <span class="n">slope</span> <span class="o">=</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST&#39;</span><span class="p">]</span> <span class="o">+</span> <span class="n">min_lm4</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;TEST:ETHN&#39;</span><span class="p">],</span>
           <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&#39;green&#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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-188-2572d5e3e956&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> fig<span class="ansiblue">,</span> ax <span class="ansiblue">=</span> plt<span class="ansiblue">.</span>subplots<span class="ansiblue">(</span>figsize<span class="ansiblue">=</span><span class="ansiblue">(</span><span class="ansicyan">8</span><span class="ansiblue">,</span><span class="ansicyan">6</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue">;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span><span class="ansigreen">for</span> factor<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_group<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span>     ax.scatter(group[&apos;TEST&apos;], group[&apos;JPERF&apos;], color=colors[factor],
   <span class="ansigreen">      4</span>                 marker=markers[factor], s=12**2)
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;factor_group&apos; is not defined</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeYAAAFwCAYAAABtrNiRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
   AAALEgAACxIB0t1+/AAAEA9JREFUeJzt3F+I5eddx/HP190qFKxVAgWTlVYbaiu0VjFtrdIpKbjm
   wkAFJfUP/gGDEPHO2F6Y9UKlN1JKJYaQll6ZCy0YJSQI7dBS2qQVk7Z2t2TVwO5Giq21iPRil369
   mNM4TnbnnNk9s/vdOa8XHDi/+T17zsPDZN55zvzmV90dAGCG77rREwAA/o8wA8AgwgwAgwgzAAwi
   zAAwiDADwCBLw1xVH66qr1bVF/cZ88Gqeq6qnq2qN693igCwOVbZMX8kyckrnayqu5K8trtvT/I7
   SR5c09wAYOMsDXN3fyrJN/YZ8gtJProY+1SSV1bVq9YzPQDYLOv4HfOtSc7tOj6f5LY1vC4AbJx1
   XfxVe47d5xMArsLxNbzGhSQndh3ftvja/1NVYg3ARunuvRvXpdaxY34sya8nSVW9Ncl/dfdXLzew
   uz0O8fHAAw/c8DlswsM6W+Oj8LDGh/+4Wkt3zFX1V0nekeSWqjqX5IEkL1uE9qHufryq7qqqs0n+
   J8lvXvVsAGDDLQ1zd9+zwpj71jMdANhs7vx1hGxtbd3oKWwE63z4rPHhs8Zz1bV8Dn6gN6rq6/Ve
   AHCjVVX6Bl38BQCsiTADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgz
   AAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAw
   iDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDC
   DACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMA
   DCLMADCIMAPAIMIMAIMIMwAMsjTMVXWyqs5U1XNVdf9lzt9SVU9U1TNV9aWq+o1DmSkAbIDq7iuf
   rDqW5CtJ3pXkQpLPJbmnu0/vGnMqyfd093ur6pbF+Fd196U9r9X7vRcAHCVVle6ug/67ZTvmO5Kc
   7e7nu/tikkeT3L1nzL8necXi+SuSfH1vlAGA1Rxfcv7WJOd2HZ9P8pY9Yx5O8vGqeiHJ9yb5pfVN
   DwA2y7Id8yqfPb8vyTPd/YNJfjzJX1TV917zzABgAy3bMV9IcmLX8Yns7Jp3++kkf5Ik3f0vVfVv
   SV6X5PN7X+zUqVMvPt/a2srW1taBJwwAE21vb2d7e/uaX2fZxV/Hs3Mx151JXkjydF568defJ/lm
   d/9xVb0qyT8meWN3/+ee13LxFwAb42ov/tp3x9zdl6rqviRPJjmW5JHuPl1V9y7OP5TkT5N8pKqe
   zc5H43+wN8oAwGr23TGv9Y3smAHYIIf151IAwHUkzAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIM
   AIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAM
   IswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgw
   A8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwA
   gwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMMjSMFfVyao6U1XPVdX9
   VxizVVX/VFVfqqrttc8SADZEdfeVT1YdS/KVJO9KciHJ55Lc092nd415ZZJPJ/m57j5fVbd099cu
   81q933sBwFFSVenuOui/W7ZjviPJ2e5+vrsvJnk0yd17xrwnyd909/kkuVyUAYDVLAvzrUnO7To+
   v/jabrcn+YGq+kRVfb6qfm2dEwSATXJ8yflVPnt+WZKfSHJnkpcn+UxVfba7n7vWyQHAplkW5gtJ
   Tuw6PpGdXfNu55J8rbu/leRbVfXJJG9K8pIwnzp16sXnW1tb2draOviMAWCg7e3tbG9vX/PrLLv4
   63h2Lv66M8kLSZ7OSy/++tEkH0ryc0m+J8lTSX65u7+857Vc/AXAxrjai7/23TF396Wqui/Jk0mO
   JXmku09X1b2L8w9195mqeiLJF5J8O8nDe6MMAKxm3x3zWt/IjhmADXJYfy4FAFxHwgwAgwgzAAwi
   zAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDAD
   wCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACD
   CDMADCLMADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLM
   ADCIMAPAIMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPA
   IMIMAIMsDXNVnayqM1X1XFXdv8+4n6qqS1X17vVOEQA2x75hrqpjST6U5GSSNyS5p6pef4Vx70/y
   RJI6hHkCwEZYtmO+I8nZ7n6+uy8meTTJ3ZcZ93tJ/jrJf6x5fgCwUZaF+dYk53Ydn1987UVVdWt2
   Yv3g4ku9ttkBwIZZFuZVIvuBJH/Y3Z2dj7F9lA0AV+n4kvMXkpzYdXwiO7vm3X4yyaNVlSS3JPn5
   qrrY3Y/tfbFTp069+HxraytbW1sHnzEADLS9vZ3t7e1rfp3a2ehe4WTV8SRfSXJnkheSPJ3knu4+
   fYXxH0nyd939scuc6/3eCwCOkqpKdx/4U+R9d8zdfamq7kvyZJJjSR7p7tNVde/i/ENXNVsA4LL2
   3TGv9Y3smAHYIFe7Y3bnLwAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESYAWAQ
   YQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESYAWAQYQaAQYQZ
   AAYRZgAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESYAWAQYQaAQYQZAAYRZgAY
   RJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESYAWAQYQaAQYQZAAYRZgAYRJgBYBBh
   BoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESYAWCQlcJcVSer6kxVPVdV91/m/K9U1bNV9YWq
   +nRVvXH9UwWAo6+6e/8BVceSfCXJu5JcSPK5JPd09+ldY96W5Mvd/c2qOpnkVHe/dc/r9LL3AoCj
   oqrS3XXQf7fKjvmOJGe7+/nuvpjk0SR37x7Q3Z/p7m8uDp9KcttBJwIArBbmW5Oc23V8fvG1K/nt
   JI9fy6QAYFMdX2HMyp8/V9U7k/xWkrdf9YwAYIOtEuYLSU7sOj6RnV3z/7O44OvhJCe7+xuXe6FT
   p069+HxraytbW1sHmCoAzLW9vZ3t7e1rfp1VLv46np2Lv+5M8kKSp/PSi79+KMnHk/xqd3/2Cq/j
   4i8ANsbVXvy1dMfc3Zeq6r4kTyY5luSR7j5dVfcuzj+U5I+SfH+SB6sqSS529x0HnQwAbLqlO+a1
   vZEdMwAb5DD/XAoAuE6EGQAGEWYAGESYAWAQYQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABhFmABhE
   mAFgEGEGgEGEGQAGEWYAGESYAWAQYQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEG
   gEGEGQAGEWYAGESYAWAQYQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAG
   EWYAGESYAWAQYQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABhFmABhEmAFgEGEGgEGEGQAGEWYAGESY
   AWAQYQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABlka5qo6WVVnquq5qrr/CmM+uDj/bFW9ef3TBIDN
   sG+Yq+pYkg8lOZnkDUnuqarX7xlzV5LXdvftSX4nyYOHNFeW2N7evtFT2AjW+fBZ48NnjedatmO+
   I8nZ7n6+uy8meTTJ3XvG/EKSjyZJdz+V5JVV9aq1z5Sl/Id2fVjnw2eND581nmtZmG9Ncm7X8fnF
   15aNue3apwYAm2dZmHvF16mr/HcAwC7VfeWGVtVbk5zq7pOL4/cm+XZ3v3/XmL9Mst3djy6OzyR5
   R3d/dc9riTUAG6W7925clzq+5Pznk9xeVa9O8kKSX05yz54xjyW5L8mji5D/194oX+3kAGDT7Bvm
   7r5UVfcleTLJsSSPdPfpqrp3cf6h7n68qu6qqrNJ/ifJbx76rAHgiNr3o2wA4Ppa+52/3JDk8C1b
   46r6lcXafqGqPl1Vb7wR87yZrfJ9vBj3U1V1qarefT3ndxSs+LNiq6r+qaq+VFXb13mKR8IKPy9u
   qaonquqZxTr/xg2Y5k2rqj5cVV+tqi/uM+ZgzevutT2y83H32SSvTvKyJM8kef2eMXcleXzx/C1J
   PrvOORz1x4pr/LYk37d4ftIar3+Nd437eJK/T/KLN3reN9Njxe/jVyb55yS3LY5vudHzvtkeK67z
   qSR/9p01TvL1JMdv9NxvlkeSn03y5iRfvML5Azdv3TtmNyQ5fEvXuLs/093fXBw+FX9XflCrfB8n
   ye8l+esk/3E9J3dErLLG70nyN919Pkm6+2vXeY5HwSrr/O9JXrF4/ookX+/uS9dxjje17v5Ukm/s
   M+TAzVt3mN2Q5PCtssa7/XaSxw91RkfP0jWuqluz8wPuO7egdbHGwazyfXx7kh+oqk9U1eer6teu
   2+yOjlXW+eEkP1ZVLyR5NsnvX6e5bYoDN2/Zn0sdlBuSHL6V16qq3pnkt5K8/fCmcyStssYfSPKH
   3d1VVXnp9zT7W2WNX5bkJ5LcmeTlST5TVZ/t7ucOdWZHyyrr/L4kz3T3VlX9SJJ/qKo3dfd/H/Lc
   NsmBmrfuMF9IcmLX8Yns/N/BfmNuW3yN1ayyxllc8PVwkpPdvd/HLLzUKmv8k9n52/1k5/dyP19V
   F7v7seszxZveKmt8LsnXuvtbSb5VVZ9M8qYkwry6Vdb5p5P8SZJ0979U1b8leV127mPBtTtw89b9
   UfaLNySpqu/Ozg1J9v6geizJrycv3lnssjck4YqWrnFV/VCSjyX51e4+ewPmeLNbusbd/cPd/Zru
   fk12fs/8u6J8IKv8rPjbJD9TVceq6uXZuXDmy9d5nje7Vdb5TJJ3Jcnid5+vS/Kv13WWR9uBm7fW
   HXO7IcmhW2WNk/xRku9P8uBiR3exu++4UXO+2ay4xlyDFX9WnKmqJ5J8Icm3kzzc3cJ8ACt+L/9p
   ko9U1bPZ2az9QXf/5w2b9E2mqv4qyTuS3FJV55I8kJ1fw1x189xgBAAGWfsNRgCAqyfMADCIMAPA
   IMIMAIMIMwAMIswAMIgwA8AgwgwAg/wv8WRGA5RxA/sAAAAASUVORK5CYII=
   "
   >
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[29]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="c"># is there any effect of ETHN on slope or intercept?</span>
   <span class="n">table5</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">min_lm</span><span class="p">,</span> <span class="n">min_lm4</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table5</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-189-129d94cb4fbc&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> <span class="ansired"># is there any effect of ETHN on slope or intercept?</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>table5 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>min_lm<span class="ansiblue">,</span> min_lm4<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table5<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;min_lm&apos; is not defined</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;[30]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="c"># is there any effect of ETHN on intercept</span>
   <span class="n">table6</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">min_lm</span><span class="p">,</span> <span class="n">min_lm3</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table6</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-190-c31cb02af7ce&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> <span class="ansired"># is there any effect of ETHN on intercept</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>table6 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>min_lm<span class="ansiblue">,</span> min_lm3<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table6<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;min_lm&apos; is not defined</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;[31]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="c"># is there any effect of ETHN on slope</span>
   <span class="n">table7</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">min_lm</span><span class="p">,</span> <span class="n">min_lm2</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table7</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-191-8848959d255f&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> <span class="ansired"># is there any effect of ETHN on slope</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>table7 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>min_lm<span class="ansiblue">,</span> min_lm2<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table7<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;min_lm&apos; is not defined</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;[32]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="c"># is it just the slope or both?</span>
   <span class="n">table8</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">min_lm2</span><span class="p">,</span> <span class="n">min_lm4</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table8</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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-192-b62ed8a937ec&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> <span class="ansired"># is it just the slope or both?</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>table8 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>min_lm2<span class="ansiblue">,</span> min_lm4<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table8<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;min_lm2&apos; is not defined</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="one-way-anova">One-way ANOVA</h2>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[33]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">try</span><span class="p">:</span>
       <span class="n">rehab_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">&#39;rehab.table&#39;</span><span class="p">)</span>
   <span class="k">except</span><span class="p">:</span>
       <span class="n">url</span> <span class="o">=</span> <span class="s">&#39;http://stats191.stanford.edu/data/rehab.csv&#39;</span>
       <span class="n">rehab_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s">&quot;,&quot;</span><span class="p">)</span>
       <span class="n">rehab_table</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="s">&#39;rehab.table&#39;</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">fig</span> <span class="o">=</span> <span class="n">rehab_table</span><span class="o">.</span><span class="n">boxplot</span><span class="p">(</span><span class="s">&#39;Time&#39;</span><span class="p">,</span> <span class="s">&#39;Fitness&#39;</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span> <span class="n">grid</span><span class="o">=</span><span class="bp">False</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 code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[34]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">rehab_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;Time ~ C(Fitness)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">rehab_table</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="n">table9</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">rehab_lm</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">table9</span><span class="p">)</span>
   
   <span class="k">print</span><span class="p">(</span><span class="n">rehab_lm</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">orig_exog</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>
               df  sum_sq     mean_sq          F    PR(&gt;F)
   C(Fitness)   2     672  336.000000  16.961538  0.000041
   Residual    21     416   19.809524        NaN       NaN
       Intercept  C(Fitness)[T.2]  C(Fitness)[T.3]
   0           1                0                0
   1           1                0                0
   2           1                0                0
   3           1                0                0
   4           1                0                0
   5           1                0                0
   6           1                0                0
   7           1                0                0
   8           1                1                0
   9           1                1                0
   10          1                1                0
   11          1                1                0
   12          1                1                0
   13          1                1                0
   14          1                1                0
   15          1                1                0
   16          1                1                0
   17          1                1                0
   18          1                0                1
   19          1                0                1
   20          1                0                1
   21          1                0                1
   22          1                0                1
   23          1                0                1
   
   </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;[35]:
   </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">rehab_lm</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:                   Time   R-squared:                       0.618
   Model:                            OLS   Adj. R-squared:                  0.581
   Method:                 Least Squares   F-statistic:                     16.96
   Date:                Wed, 20 May 2015   Prob (F-statistic):           4.13e-05
   Time:                        21:53:03   Log-Likelihood:                -68.286
   No. Observations:                  24   AIC:                             142.6
   Df Residuals:                      21   BIC:                             146.1
   Df Model:                           2                                         
   Covariance Type:            nonrobust                                         
   ===================================================================================
                         coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   -----------------------------------------------------------------------------------
   Intercept          38.0000      1.574     24.149      0.000        34.728    41.272
   C(Fitness)[T.2]    -6.0000      2.111     -2.842      0.010       -10.390    -1.610
   C(Fitness)[T.3]   -14.0000      2.404     -5.824      0.000       -18.999    -9.001
   ==============================================================================
   Omnibus:                        0.163   Durbin-Watson:                   2.209
   Prob(Omnibus):                  0.922   Jarque-Bera (JB):                0.211
   Skew:                          -0.163   Prob(JB):                        0.900
   Kurtosis:                       2.675   Cond. No.                         3.80
   ==============================================================================
   
   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">
   <h2 id="two-way-anova">Two-way ANOVA</h2>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[36]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">try</span><span class="p">:</span>
       <span class="n">kidney_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s">&#39;./kidney.table&#39;</span><span class="p">)</span>
   <span class="k">except</span><span class="p">:</span>
       <span class="n">url</span> <span class="o">=</span> <span class="s">&#39;http://stats191.stanford.edu/data/kidney.table&#39;</span>
       <span class="n">kidney_table</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">delimiter</span><span class="o">=</span><span class="s">&quot; *&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_stderr output_text">
   <pre>
   /usr/lib/python2.7/dist-packages/pandas/io/parsers.py:639: ParserWarning: Falling back to the &apos;python&apos; engine because the &apos;c&apos; engine does not support regex separators; you can avoid this warning by specifying engine=&apos;python&apos;.
     ParserWarning)
   
   </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>Explore the dataset</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[37]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">kidney_table</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s">&#39;Weight&#39;</span><span class="p">,</span> <span class="s">&#39;Duration&#39;</span><span class="p">])</span><span class="o">.</span><span class="n">size</span><span class="p">()</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[37]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   Weight  Duration
   1       1           10
           2           10
   2       1           10
           2           10
   3       1           10
           2           10
   dtype: int64
   </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>Balanced panel</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[38]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">kt</span> <span class="o">=</span> <span class="n">kidney_table</span>
   <span class="n">plt</span><span class="o">.</span><span class="n">figure</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">fig</span> <span class="o">=</span> <span class="n">interaction_plot</span><span class="p">(</span><span class="n">kt</span><span class="p">[</span><span class="s">&#39;Weight&#39;</span><span class="p">],</span> <span class="n">kt</span><span class="p">[</span><span class="s">&#39;Duration&#39;</span><span class="p">],</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">kt</span><span class="p">[</span><span class="s">&#39;Days&#39;</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span>
           <span class="n">colors</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;red&#39;</span><span class="p">,</span> <span class="s">&#39;blue&#39;</span><span class="p">],</span> <span class="n">markers</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;D&#39;</span><span class="p">,</span><span class="s">&#39;^&#39;</span><span class="p">],</span> <span class="n">ms</span><span class="o">=</span><span class="mi">10</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">gca</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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
   AAAASUVORK5CYII=
   "
   >
   </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 have things available in the calling namespace available in the formula evaluation namespace</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[39]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">kidney_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration) * C(Weight)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">kt</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   
   <span class="n">table10</span> <span class="o">=</span> <span class="n">anova_lm</span><span class="p">(</span><span class="n">kidney_lm</span><span class="p">)</span>
   
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration) + C(Weight)&#39;</span><span class="p">,</span>
                   <span class="n">data</span><span class="o">=</span><span class="n">kt</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(),</span> <span class="n">kidney_lm</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">kt</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(),</span>
                  <span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration) + C(Weight, Sum)&#39;</span><span class="p">,</span>
                      <span class="n">data</span><span class="o">=</span><span class="n">kt</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">anova_lm</span><span class="p">(</span><span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Weight)&#39;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">kt</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(),</span>
                  <span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration) + C(Weight, Sum)&#39;</span><span class="p">,</span>
                      <span class="n">data</span><span class="o">=</span><span class="n">kt</span><span class="p">)</span><span class="o">.</span><span class="n">fit</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>
      df_resid        ssr  df_diff   ss_diff        F    Pr(&gt;F)
   0        56  29.624856        0       NaN      NaN       NaN
   1        54  28.989198        2  0.635658  0.59204  0.556748
      df_resid        ssr  df_diff    ss_diff          F    Pr(&gt;F)
   0        58  46.596147        0        NaN        NaN       NaN
   1        56  29.624856        2  16.971291  16.040454  0.000003
      df_resid        ssr  df_diff   ss_diff         F   Pr(&gt;F)
   0        57  31.964549        0       NaN       NaN      NaN
   1        56  29.624856        1  2.339693  4.422732  0.03997
   
   </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="sum-of-squares">Sum of squares</h2>
   <p> Illustrates the use of different types of sums of squares (I,II,II)
    and how the Sum contrast can be used to produce the same output between
    the 3.</p>
   <p> Types I and II are equivalent under a balanced design.</p>
   <p> Don&#39;t use Type III with non-orthogonal contrast - ie., Treatment</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[40]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">sum_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration, Sum) * C(Weight, Sum)&#39;</span><span class="p">,</span>
               <span class="n">data</span><span class="o">=</span><span class="n">kt</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">anova_lm</span><span class="p">(</span><span class="n">sum_lm</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">sum_lm</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">sum_lm</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="mi">3</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>
                                    df     sum_sq   mean_sq          F    PR(&gt;F)
   C(Duration, Sum)                  1   2.339693  2.339693   4.358293  0.041562
   C(Weight, Sum)                    2  16.971291  8.485645  15.806745  0.000004
   C(Duration, Sum):C(Weight, Sum)   2   0.635658  0.317829   0.592040  0.556748
   Residual                         54  28.989198  0.536837        NaN       NaN
                                       sum_sq  df          F    PR(&gt;F)
   C(Duration, Sum)                  2.339693   1   4.358293  0.041562
   C(Weight, Sum)                   16.971291   2  15.806745  0.000004
   C(Duration, Sum):C(Weight, Sum)   0.635658   2   0.592040  0.556748
   Residual                         28.989198  54        NaN       NaN
                                        sum_sq  df           F        PR(&gt;F)
   Intercept                        156.301830   1  291.153237  2.077589e-23
   C(Duration, Sum)                   2.339693   1    4.358293  4.156170e-02
   C(Weight, Sum)                    16.971291   2   15.806745  3.944502e-06
   C(Duration, Sum):C(Weight, Sum)    0.635658   2    0.592040  5.567479e-01
   Residual                          28.989198  54         NaN           NaN
   
   </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;[41]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">nosum_lm</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&#39;np.log(Days+1) ~ C(Duration, Treatment) * C(Weight, Treatment)&#39;</span><span class="p">,</span>
               <span class="n">data</span><span class="o">=</span><span class="n">kt</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">anova_lm</span><span class="p">(</span><span class="n">nosum_lm</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">nosum_lm</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="mi">2</span><span class="p">))</span>
   <span class="k">print</span><span class="p">(</span><span class="n">anova_lm</span><span class="p">(</span><span class="n">nosum_lm</span><span class="p">,</span> <span class="n">typ</span><span class="o">=</span><span class="mi">3</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>
                                                df     sum_sq   mean_sq          F    PR(&gt;F)
   C(Duration, Treatment)                        1   2.339693  2.339693   4.358293  0.041562
   C(Weight, Treatment)                          2  16.971291  8.485645  15.806745  0.000004
   C(Duration, Treatment):C(Weight, Treatment)   2   0.635658  0.317829   0.592040  0.556748
   Residual                                     54  28.989198  0.536837        NaN       NaN
                                                   sum_sq  df          F    PR(&gt;F)
   C(Duration, Treatment)                        2.339693   1   4.358293  0.041562
   C(Weight, Treatment)                         16.971291   2  15.806745  0.000004
   C(Duration, Treatment):C(Weight, Treatment)   0.635658   2   0.592040  0.556748
   Residual                                     28.989198  54        NaN       NaN
                                                   sum_sq  df          F    PR(&gt;F)
   Intercept                                    10.427596   1  19.424139  0.000050
   C(Duration, Treatment)                        0.054293   1   0.101134  0.751699
   C(Weight, Treatment)                         11.703387   2  10.900317  0.000106
   C(Duration, Treatment):C(Weight, Treatment)   0.635658   2   0.592040  0.556748
   Residual                                     28.989198  54        NaN       NaN
   
   </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>