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 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">URLError</span>                                  Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-438-e34bb7e2457e&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">     15</span> <span class="ansigreen">except</span><span class="ansiblue">:</span>  <span class="ansired"># recent pandas can read URL without urlopen</span><span class="ansiblue"></span>
   <span class="ansigreen">     16</span>     url <span class="ansiblue">=</span> <span class="ansiblue">&apos;http://stats191.stanford.edu/data/salary.table&apos;</span><span class="ansiblue"></span>
   <span class="ansigreen">---&gt; 17</span><span class="ansired">     </span>fh <span class="ansiblue">=</span> urlopen<span class="ansiblue">(</span>url<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     18</span>     salary_table <span class="ansiblue">=</span> pd<span class="ansiblue">.</span>read_table<span class="ansiblue">(</span>fh<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     19</span>     salary_table<span class="ansiblue">.</span>to_csv<span class="ansiblue">(</span><span class="ansiblue">&apos;salary.table&apos;</span><span class="ansiblue">)</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">    429</span>             req <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    430</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 431</span><span class="ansired">         </span>response <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_open<span class="ansiblue">(</span>req<span class="ansiblue">,</span> data<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    432</span> <span class="ansiblue"></span>
   <span class="ansigreen">    433</span>         <span class="ansired"># post-process response</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, req, data)</span>
   <span class="ansigreen">    447</span>         protocol <span class="ansiblue">=</span> req<span class="ansiblue">.</span>get_type<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    448</span>         result = self._call_chain(self.handle_open, protocol, protocol +
   <span class="ansigreen">--&gt; 449</span><span class="ansired">                                   &apos;_open&apos;, req)
   </span><span class="ansigreen">    450</span>         <span class="ansigreen">if</span> result<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    451</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_open</span><span class="ansiblue">(self, req)</span>
   <span class="ansigreen">   1225</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1226</span>     <span class="ansigreen">def</span> http_open<span class="ansiblue">(</span>self<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1227</span><span class="ansired">         </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>do_open<span class="ansiblue">(</span>httplib<span class="ansiblue">.</span>HTTPConnection<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1228</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1229</span>     http_request <span class="ansiblue">=</span> AbstractHTTPHandler<span class="ansiblue">.</span>do_request_<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">do_open</span><span class="ansiblue">(self, http_class, req, **http_conn_args)</span>
   <span class="ansigreen">   1195</span>         <span class="ansigreen">except</span> socket<span class="ansiblue">.</span>error<span class="ansiblue">,</span> err<span class="ansiblue">:</span> <span class="ansired"># XXX what error?</span><span class="ansiblue"></span>
   <span class="ansigreen">   1196</span>             h<span class="ansiblue">.</span>close<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1197</span><span class="ansired">             </span><span class="ansigreen">raise</span> URLError<span class="ansiblue">(</span>err<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1198</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">   1199</span>             <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">URLError</span>: &lt;urlopen error [Errno -2] Name or service not known&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>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_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-439-66af8762e78f&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      2</span> symbols <span class="ansiblue">=</span> <span class="ansiblue">[</span><span class="ansiblue">&apos;D&apos;</span><span class="ansiblue">,</span> <span class="ansiblue">&apos;^&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> colors <span class="ansiblue">=</span> <span class="ansiblue">[</span><span class="ansiblue">&apos;r&apos;</span><span class="ansiblue">,</span> <span class="ansiblue">&apos;g&apos;</span><span class="ansiblue">,</span> <span class="ansiblue">&apos;blue&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 4</span><span class="ansired"> </span>factor_groups <span class="ansiblue">=</span> salary_table<span class="ansiblue">.</span>groupby<span class="ansiblue">(</span><span class="ansiblue">[</span><span class="ansiblue">&apos;E&apos;</span><span class="ansiblue">,</span><span class="ansiblue">&apos;M&apos;</span><span class="ansiblue">]</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansigreen">for</span> values<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_groups<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      6</span>     i<span class="ansiblue">,</span>j <span class="ansiblue">=</span> values<span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;salary_table&apos; is not defined</pre>
   </div>
   </div>
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_text output_subarea ">
   <pre>
   &lt;matplotlib.figure.Figure at 0x7fb5971e7610&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>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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-440-95ded19c3a72&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> formula <span class="ansiblue">=</span> <span class="ansiblue">&apos;S ~ C(E) + C(M) + X&apos;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>lm <span class="ansiblue">=</span> ols<span class="ansiblue">(</span>formula<span class="ansiblue">,</span> salary_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">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>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;salary_table&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">
   <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"></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-441-e9012a047d1f&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>exog<span class="ansiblue">[</span><span class="ansiblue">:</span><span class="ansicyan">5</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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"></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-442-0d890acdc576&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>data<span class="ansiblue">.</span>orig_exog<span class="ansiblue">[</span><span class="ansiblue">:</span><span class="ansicyan">5</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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"></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-443-7c0e717ac664&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>data<span class="ansiblue">.</span>frame<span class="ansiblue">[</span><span class="ansiblue">:</span><span class="ansicyan">5</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-444-a1537ce8cfa3&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>infl <span class="ansiblue">=</span> lm<span class="ansiblue">.</span>get_influence<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>infl<span class="ansiblue">.</span>summary_table<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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_const</th>
         <th>dfb_GNPDEFL</th>
         <th>dfb_GNP</th>
         <th>dfb_UNEMP</th>
         <th>dfb_ARMED</th>
         <th>dfb_POP</th>
         <th>dfb_YEAR</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.016406</td>
         <td>-0.234566</td>
         <td>-0.045095</td>
         <td>-0.121513</td>
         <td>-0.149026</td>
         <td> 0.211057</td>
         <td> 0.013388</td>
         <td> 0.140840</td>
         <td> 1.014472</td>
         <td> 0.992915</td>
         <td> 0.424537</td>
         <td> 1.156014</td>
         <td> 1.181112</td>
       </tr>
       <tr>
         <th>1</th>
         <td>-0.020608</td>
         <td>-0.289091</td>
         <td> 0.124453</td>
         <td> 0.156964</td>
         <td> 0.287700</td>
         <td>-0.161890</td>
         <td> 0.025958</td>
         <td> 0.040561</td>
         <td>-0.508591</td>
         <td>-0.532850</td>
         <td> 0.564978</td>
         <td>-0.467568</td>
         <td>-0.446281</td>
       </tr>
       <tr>
         <th>2</th>
         <td>-0.008382</td>
         <td> 0.007161</td>
         <td>-0.016799</td>
         <td> 0.009575</td>
         <td> 0.002227</td>
         <td> 0.014871</td>
         <td> 0.008103</td>
         <td> 0.002930</td>
         <td> 0.135299</td>
         <td> 0.143218</td>
         <td> 0.362075</td>
         <td> 0.190101</td>
         <td> 0.179590</td>
       </tr>
       <tr>
         <th>3</th>
         <td> 0.018093</td>
         <td> 0.907968</td>
         <td>-0.500022</td>
         <td>-0.495996</td>
         <td> 0.089996</td>
         <td> 0.711142</td>
         <td>-0.040056</td>
         <td> 0.244193</td>
         <td>-1.495156</td>
         <td>-1.307421</td>
         <td> 0.372228</td>
         <td>-1.697900</td>
         <td>-1.941705</td>
       </tr>
       <tr>
         <th>4</th>
         <td> 1.871260</td>
         <td>-0.219351</td>
         <td> 1.611418</td>
         <td> 1.561520</td>
         <td> 1.169337</td>
         <td>-1.081513</td>
         <td>-1.864186</td>
         <td> 0.613917</td>
         <td> 2.333153</td>
         <td> 2.073021</td>
         <td> 0.615511</td>
         <td> 1.638429</td>
         <td> 1.844027</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_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-447-1f49e6986775&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>resid <span class="ansiblue">=</span> lm<span class="ansiblue">.</span>resid<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> plt<span class="ansiblue">.</span>figure<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">      3</span> <span class="ansigreen">for</span> values<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_groups<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span>     i<span class="ansiblue">,</span>j <span class="ansiblue">=</span> values<span class="ansiblue"></span>
   <span class="ansigreen">      5</span>     group_num <span class="ansiblue">=</span> i<span class="ansiblue">*</span><span class="ansicyan">2</span> <span class="ansiblue">+</span> j <span class="ansiblue">-</span> <span class="ansicyan">1</span>  <span class="ansired"># for plotting purposes</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-448-1875cf9774f0&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>interX_lm <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&quot;S ~ C(E) * X + C(M)&quot;</span><span class="ansiblue">,</span> salary_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>interX_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;salary_table&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">
   <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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-449-0c9af2b17bde&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> <span class="ansigreen">from</span> statsmodels<span class="ansiblue">.</span>stats<span class="ansiblue">.</span>api <span class="ansigreen">import</span> anova_lm<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 3</span><span class="ansired"> </span>table1 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>lm<span class="ansiblue">,</span> interX_lm<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table1<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;lm&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">
   <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"></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-450-54036886e7c2&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>interM_lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>data<span class="ansiblue">.</span>orig_exog<span class="ansiblue">[</span><span class="ansiblue">:</span><span class="ansicyan">5</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;interM_lm&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">
   <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"></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-451-f8ee67f5a751&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>interM_lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>exog<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> interM_lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>exog_names<span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;interM_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;[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">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-452-b9ade982a4ac&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>infl <span class="ansiblue">=</span> interM_lm<span class="ansiblue">.</span>get_influence<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> resid <span class="ansiblue">=</span> infl<span class="ansiblue">.</span>resid_studentized_internal<span class="ansiblue"></span>
   <span class="ansigreen">      3</span> plt<span class="ansiblue">.</span>figure<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="ansigreen">      4</span> <span class="ansigreen">for</span> values<span class="ansiblue">,</span> group <span class="ansigreen">in</span> factor_groups<span class="ansiblue">:</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="ansired">NameError</span>: name &apos;interM_lm&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">
   <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>
   226
   
   </pre>
   </div>
   </div>
   
   <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-453-a8a74da84db4&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> drop_idx <span class="ansiblue">=</span> abs<span class="ansiblue">(</span>resid<span class="ansiblue">)</span><span class="ansiblue">.</span>argmax<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>drop_idx<span class="ansiblue">)</span>  <span class="ansired"># zero-based index</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 3</span><span class="ansired"> </span>idx <span class="ansiblue">=</span> salary_table<span class="ansiblue">.</span>index<span class="ansiblue">.</span>drop<span class="ansiblue">(</span>drop_idx<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansiblue"></span>
   <span class="ansigreen">      5</span> lm32 <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;S ~ C(E) + X + C(M)&apos;</span><span class="ansiblue">,</span> data<span class="ansiblue">=</span>salary_table<span class="ansiblue">,</span> subset<span class="ansiblue">=</span>idx<span class="ansiblue">)</span><span class="ansiblue">.</span>fit<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;salary_table&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">
   <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_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-454-b457d7767b76&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      2</span>     resid <span class="ansiblue">=</span> interM_lm32<span class="ansiblue">.</span>get_influence<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">.</span>summary_frame<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">[</span><span class="ansiblue">&apos;standard_resid&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">except</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 4</span><span class="ansired">     </span>resid <span class="ansiblue">=</span> interM_lm32<span class="ansiblue">.</span>get_influence<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">.</span>summary_frame<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">[</span><span class="ansiblue">&apos;standard_resid&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansiblue"></span>
   <span class="ansigreen">      6</span> plt<span class="ansiblue">.</span>figure<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="ansired">NameError</span>: name &apos;interM_lm32&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">
   <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_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-455-25e9e43f896a&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>lm_final <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;S ~ X + C(E)*C(M)&apos;</span><span class="ansiblue">,</span> data <span class="ansiblue">=</span> salary_table<span class="ansiblue">.</span>drop<span class="ansiblue">(</span><span class="ansiblue">[</span>drop_idx<span class="ansiblue">]</span><span class="ansiblue">)</span><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> mf <span class="ansiblue">=</span> lm_final<span class="ansiblue">.</span>model<span class="ansiblue">.</span>data<span class="ansiblue">.</span>orig_exog<span class="ansiblue"></span>
   <span class="ansigreen">      3</span> lstyle <span class="ansiblue">=</span> <span class="ansiblue">[</span><span class="ansiblue">&apos;-&apos;</span><span class="ansiblue">,</span><span class="ansiblue">&apos;--&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansiblue"></span>
   <span class="ansigreen">      5</span> plt<span class="ansiblue">.</span>figure<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="ansired">NameError</span>: name &apos;salary_table&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">
   <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"></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-456-1bfcb96c9336&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>U <span class="ansiblue">=</span> S <span class="ansiblue">-</span> X <span class="ansiblue">*</span> interX_lm32<span class="ansiblue">.</span>params<span class="ansiblue">[</span><span class="ansiblue">&apos;X&apos;</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansiblue"></span>
   <span class="ansigreen">      3</span> plt<span class="ansiblue">.</span>figure<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="ansigreen">      4</span> interaction_plot(E, M, U, colors=[&apos;red&apos;,&apos;blue&apos;], markers=[&apos;^&apos;,&apos;D&apos;],
   <span class="ansigreen">      5</span>         markersize=10, ax=plt.gca())
   
   <span class="ansired">NameError</span>: name &apos;S&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="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">URLError</span>                                  Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-457-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">    429</span>             req <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    430</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 431</span><span class="ansired">         </span>response <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_open<span class="ansiblue">(</span>req<span class="ansiblue">,</span> data<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    432</span> <span class="ansiblue"></span>
   <span class="ansigreen">    433</span>         <span class="ansired"># post-process response</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, req, data)</span>
   <span class="ansigreen">    447</span>         protocol <span class="ansiblue">=</span> req<span class="ansiblue">.</span>get_type<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    448</span>         result = self._call_chain(self.handle_open, protocol, protocol +
   <span class="ansigreen">--&gt; 449</span><span class="ansired">                                   &apos;_open&apos;, req)
   </span><span class="ansigreen">    450</span>         <span class="ansigreen">if</span> result<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    451</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_open</span><span class="ansiblue">(self, req)</span>
   <span class="ansigreen">   1225</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1226</span>     <span class="ansigreen">def</span> http_open<span class="ansiblue">(</span>self<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1227</span><span class="ansired">         </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>do_open<span class="ansiblue">(</span>httplib<span class="ansiblue">.</span>HTTPConnection<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1228</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1229</span>     http_request <span class="ansiblue">=</span> AbstractHTTPHandler<span class="ansiblue">.</span>do_request_<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">do_open</span><span class="ansiblue">(self, http_class, req, **http_conn_args)</span>
   <span class="ansigreen">   1195</span>         <span class="ansigreen">except</span> socket<span class="ansiblue">.</span>error<span class="ansiblue">,</span> err<span class="ansiblue">:</span> <span class="ansired"># XXX what error?</span><span class="ansiblue"></span>
   <span class="ansigreen">   1196</span>             h<span class="ansiblue">.</span>close<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1197</span><span class="ansired">             </span><span class="ansigreen">raise</span> URLError<span class="ansiblue">(</span>err<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1198</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">   1199</span>             <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">URLError</span>: &lt;urlopen error [Errno -2] Name or service not known&gt;</pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[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-458-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-459-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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
   QmCC
   "
   >
   </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-460-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-461-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,iVBORw0KGgoAAAANSUhEUgAAAXcAAAFCCAYAAAAKd53gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
   AAALEgAACxIB0t1+/AAADpBJREFUeJzt3V+InfWdx/H3ZxNdVljXloAXicVuG8QuKHZpTLddeorC
   znpRoYWVtLb0D60sKHtnai/q3LS73pVSkOBa6VVzYYWmiyjdbQ9bRF3D1qhrIsm6QqJFqm2ldHuR
   kO9ezGkyO2bOn8mZmfjN+wUD5znPb57z88eZt4+/yYmpKiRJvfzRZk9AkjR/xl2SGjLuktSQcZek
   hoy7JDVk3CWpoYlxT/LdJK8neX7MmG8nOZrkUJIb5jtFSdKsprlzfwhYWO1kkluA91fVTuArwP1z
   mpskaY0mxr2qfgb8esyQTwDfG419GrgiyZXzmZ4kaS3msee+HTi+7PgEsGMO15UkrdHWOV0nK47f
   9ncaJPHvOZCkNaiqlY2daB537q8CVy073jF67m2qyq8q7r333k2fw4Xy5Vq4Fq7F+K+1mkfcDwCf
   A0iyG/hNVb0+h+tKktZo4rZMku8DHwO2JTkO3AtcAlBV+6rq0SS3JDkG/A74wnpOWJI02cS4V9We
   KcbcOZ/pXBwGg8FmT+GC4Vqc5Vqc5Vqcv5zPns5ML5TURr2WJHWRhNqkX6hKki4wxl2SGjLuktSQ
   cZekhoy7JDVk3CWpIeMuSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrI
   uEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk
   3CWpIeMuSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy
   7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJamhi3JMsJDmS5GiSvec4vy3JY0meTfJCks+vy0wlSVNL
   Va1+MtkCvATcDLwKPAPsqarDy8YsAn9cVfck2TYaf2VVnVpxrRr3WpKkt0tCVWXW75t0574LOFZV
   r1TVSWA/cOuKMb8ALh89vhx4c2XYJUkba+uE89uB48uOTwA3rhjzAPCTJK8Bfwr83fymJ0lai0lx
   n2Yf5WvAs1U1SPI+4MdJrq+q364cuLi4eObxYDBgMBjMMFVJ6m84HDIcDs/7OpP23HcDi1W1MDq+
   BzhdVfctG/Mo8I2qemJ0/G/A3qo6uOJa7rlL0ozWa8/9ILAzydVJLgVuAw6sGHOEpV+4kuRK4Brg
   5VknIkman7HbMlV1KsmdwOPAFuDBqjqc5I7R+X3AN4GHkhxi6V8Wd1fVr9Z53pKkMcZuy8z1hdyW
   kaSZrde2jCTpHci4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ0Zd0lqyLhLUkPGXZIaMu6S
   1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJ
   asi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLsk
   NWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJamhi3JMsJDmS
   5GiSvauMGST5eZIXkgznPktJ0kxSVaufTLYALwE3A68CzwB7qurwsjFXAE8Af1NVJ5Jsq6o3znGt
   GvdakqS3S0JVZdbvm3Tnvgs4VlWvVNVJYD9w64oxnwZ+UFUnAM4VdknSxpoU9+3A8WXHJ0bPLbcT
   eHeSnyY5mOSz85ygJGl2Wyecn2Yf5RLgg8BNwGXAk0meqqqjKwcuLi6eeTwYDBgMBlNPVJIuBsPh
   kOFweN7XmbTnvhtYrKqF0fE9wOmqum/ZmL3An1TV4uj4n4HHqurhFddyz12SZrRee+4HgZ1Jrk5y
   KXAbcGDFmB8CH02yJcllwI3Ai7NORJI0P2O3ZarqVJI7gceBLcCDVXU4yR2j8/uq6kiSx4DngNPA
   A1Vl3CVpE43dlpnrC7ktI0kzW69tGUnSO5Bxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy
   7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ0Z
   d0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy7pLUkHGXpIaM
   uyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ0Zd0lqyLhLUkPG
   XZIaMu6S1NDEuCdZSHIkydEke8eM+1CSU0k+Od8pSpJmNTbuSbYA3wEWgA8Ae5Jcu8q4+4DHgKzD
   PCVJM5h0574LOFZVr1TVSWA/cOs5xt0FPAz8cs7zkyStwaS4bweOLzs+MXrujCTbWQr+/aOnam6z
   kyStydYJ56cJ9beAr1ZVJQljtmUWFxfPPB4MBgwGgykuL0kXj+FwyHA4PO/rpGr1fifZDSxW1cLo
   +B7gdFXdt2zMy5wN+jbgf4EvV9WBFdeqca8lSXq7JFTVzL/LnBT3rcBLwE3Aa8B/AHuq6vAq4x8C
   flRVj5zjnHGXpBmtNe5jt2Wq6lSSO4HHgS3Ag1V1OMkdo/P71jRbSdK6GnvnPtcX8s5dkma21jt3
   P6EqSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy7pLU
   kHGXpIaMuyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ0Zd0lq
   yLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1
   ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWpIeMuSQ1NFfckC0mOJDmaZO85
   zn8myaEkzyV5Isl185+qJGlaqarxA5ItwEvAzcCrwDPAnqo6vGzMh4EXq+qtJAvAYlXtXnGdmvRa
   kqT/LwlVlVm/b5o7913Asap6papOAvuBW5cPqKonq+qt0eHTwI5ZJyJJmp9p4r4dOL7s+MToudV8
   CXj0fCYlSTo/W6cYM/VeSpKPA18EPnKu84uLi2ceDwYDBoPBtJeWpIvCcDhkOBye93Wm2XPfzdIe
   +sLo+B7gdFXdt2LcdcAjwEJVHTvHddxzl6QZreee+0FgZ5Krk1wK3AYcWPHi72Ep7LefK+ySpI01
   cVumqk4luRN4HNgCPFhVh5PcMTq/D/g68C7g/iQAJ6tq1/pNW5I0zsRtmbm9kNsykjSz9dyWkSS9
   wxh3SWrIuEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZek
   hoy7JDVk3CWpIeMuSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDRl3SWrIuEtS
   Q8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqSHjLkkNGXdJasi4S1JDxl2SGjLuktSQcZekhoy7JDVk3CWp
   IeMuSQ0Zd0lqyLhLUkPGXZIaMu6S1JBxl6SGjLskNWTcJakh4y5JDU2Me5KFJEeSHE2yd5Ux3x6d
   P5TkhvlPs5fhcLjZU7hguBZnuRZnuRbnb2zck2wBvgMsAB8A9iS5dsWYW4D3V9VO4CvA/es01zZ8
   457lWpzlWpzlWpy/SXfuu4BjVfVKVZ0E9gO3rhjzCeB7AFX1NHBFkivnPlNJ0tQmxX07cHzZ8YnR
   c5PG7Dj/qUmS1ipVtfrJ5FPAQlV9eXR8O3BjVd21bMyPgH+qqidGx/8K3F1V/7niWqu/kCRpVVWV
   Wb9n64TzrwJXLTu+iqU783FjdoyeO+/JSZLWZtK2zEFgZ5Krk1wK3AYcWDHmAPA5gCS7gd9U1etz
   n6kkaWpj79yr6lSSO4HHgS3Ag1V1OMkdo/P7qurRJLckOQb8DvjCus9akjTW2D13SdI709w/oeqH
   ns6atBZJPjNag+eSPJHkus2Y50aY5n0xGvehJKeSfHIj57dRpvz5GCT5eZIXkgw3eIobZoqfj21J
   Hkvy7GgtPr8J09wQSb6b5PUkz48ZM1s3q2puXyxt3RwDrgYuAZ4Frl0x5hbg0dHjG4Gn5jmHC+Vr
   yrX4MPBno8cLF/NaLBv3E+BfgE9t9rw36T1xBfBfwI7R8bbNnvcmrsUi8I9/WAfgTWDrZs99ndbj
   r4EbgOdXOT9zN+d95+6Hns6auBZV9WRVvTU6fJq+nw+Y5n0BcBfwMPDLjZzcBppmHT4N/KCqTgBU
   1RsbPMeNMs1a/AK4fPT4cuDNqjq1gXPcMFX1M+DXY4bM3M15x90PPZ01zVos9yXg0XWd0eaZuBZJ
   trP0w/2Hv76i4y+DpnlP7ATeneSnSQ4m+eyGzW5jTbMWDwB/keQ14BDwDxs0twvRzN2c9OfcZzXt
   D+TKP/Pe8Qd56n+mJB8Hvgh8ZP2ms6mmWYtvAV+tqkoS3v4e6WCadbgE+CBwE3AZ8GSSp6rq6LrO
   bONNsxZfA56tqkGS9wE/TnJ9Vf12ned2oZqpm/OO+9w+9NTANGvB6JeoD7D0SeBx/1n2TjbNWvwl
   sH+p62wD/jbJyapa+bmKd7Jp1uE48EZV/R74fZJ/B64HusV9mrX4K+AbAFX130n+B7iGpc/fXGxm
   7ua8t2X80NNZE9ciyXuAR4Dbq+rYJsxxo0xci6r686p6b1W9l6V9979vFnaY7ufjh8BHk2xJchlL
   vzx7cYPnuRGmWYsjwM0Ao/3la4CXN3SWF46ZuznXO/fyQ09nTLMWwNeBdwH3j+5YT1bVrs2a83qZ
   ci3am/Ln40iSx4DngNPAA1XVLu5Tvie+CTyU5BBLN6J3V9WvNm3S6yjJ94GPAduSHAfuZWmLbs3d
   9ENMktSQ/5s9SWrIuEtSQ8Zdkhoy7pLUkHGXpIaMuyQ1ZNwlqaH/A1UpwgNbgnbUAAAAAElFTkSu
   QmCC
   "
   >
   </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-462-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-463-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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
   QmCC
   "
   >
   </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-464-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-465-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,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
   IMIMAIMIMwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMI
   MwAMIswAMIgwA8AgwgwAgwgzAAwizAAwiDADwCDCDACDCDMADCLMADCIMAPAIMIMAIMIMwAMIswA
   MIgwA8AgwgwAgywNc1Udq6oTVfVoVd1ynjGfWux/pKpesf5psoqtra1LPYVDwTrvP2u8/6zxXLuG
   uaqOJPl0kmNJXprkxqp6yY4x1yd5UXdfk+SDSe7Yp7myhH9oF4d13n/WeP9Z47mWnTFfm+Rkdz/W
   3U8kuSfJDTvGvDnJ3ydJd38lyXOq6nlrnykAHALLwnxlklPbtk8vvrZszFUXPjUAOHyqu8+/s+qt
   SY519wcW2+9M8uru/tC2Mf+U5G+6+8HF9r8k+XB3/9eOY53/gwDgAOru2uv3XLFk/+NJnr9t+/k5
   e0a825irFl+74MkBwGGz7FL2Q0muqaqrq+qZSd6W5N4dY+5N8u4kqarrkvy0u7+/9pkCwCGw6xlz
   d5+pqpuTPJDkSJK7u/t4Vd202H9nd99XVddX1ckkv0jy3n2fNQAcULveYwYALq61P/nLA0n237I1
   rqp3LNb261X1YFW97FLM83K2ys/xYtyrqupMVb3lYs7vIFjxd8VGVX2tqr5ZVVsXeYoHwgq/L45W
   1f1V9fBind9zCaZ52aqqv6uq71fVN3YZs7fmdffaXjl7uftkkquTPCPJw0lesmPM9UnuW7x/dZIv
   r3MOB/214hq/JsnvLd4fs8brX+Nt4/4tyT8neeulnvfl9Frx5/g5Sf47yVWL7aOXet6X22vFdd5M
   8te/WuMkP0pyxaWe++XySvKnSV6R5Bvn2b/n5q37jNkDSfbf0jXu7i91988Wm1+J/1e+V6v8HCfJ
   h5J8NskPLubkDohV1vjtST7X3aeTpLt/eJHneBCsss7fS/LsxftnJ/lRd5+5iHO8rHX3F5P8ZJch
   e27eusPsgST7b5U13u79Se7b1xkdPEvXuKquzNlfcL96BK0/1tibVX6Or0ny3Kr696p6qKreddFm
   d3Csss53JfmjqvpukkeS/NVFmtthsefmLft/zHu16i+nnf+n2S+11a28VlX1hiTvS/La/ZvOgbTK
   Gn8yyUe6u6uq8ps/0+xulTV+RpJXJnljkmcl+VJVfbm7H93XmR0sq6zzR5M83N0bVfXCJF+oqpd3
   98/3eW6HyZ6at+4wr+2BJJzXKmucxR983ZWzT27b7TILv2mVNf7jJPecbXKOJvnzqnqiu3f+P3/O
   bZU1PpXkh939yyS/rKr/SPLyJMK8ulXW+U+SfDxJuvt/qup/k7w4Z59jwYXbc/PWfSnbA0n239I1
   rqoXJPl8knd298lLMMfL3dI17u4/7O4/6O4/yNn7zH8pynuyyu+Kf0zyuqo6UlXPytk/nPnWRZ7n
   5W6VdT6R5E1Jsrj3+eIk37moszzY9ty8tZ4xtweS7LtV1jjJx5L8fpI7Fmd0T3T3tZdqzpebFdeY
   C7Di74oTVXV/kq8neTLJXd0tzHuw4s/yJ5J8pqoeydmTtQ93948v2aQvM1X1D0len+RoVZ1KclvO
   3oZ52s3zgBEAGGTtDxgBAJ4+YQaAQYQZAAYRZgAYRJgBYBBhBoBBhBkABvl/7eRZlpwSXtYAAAAA
   SUVORK5CYII=
   "
   >
   </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-466-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-467-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-468-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-469-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_subarea output_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">URLError</span>                                  Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-470-f592f2c5b222&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="ansiblue"></span>
   <span class="ansigreen">      4</span>     url <span class="ansiblue">=</span> <span class="ansiblue">&apos;http://stats191.stanford.edu/data/rehab.csv&apos;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 5</span><span class="ansired">     </span>rehab_table <span class="ansiblue">=</span> pd<span class="ansiblue">.</span>read_table<span class="ansiblue">(</span>url<span class="ansiblue">,</span> delimiter<span class="ansiblue">=</span><span class="ansiblue">&quot;,&quot;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      6</span>     rehab_table<span class="ansiblue">.</span>to_csv<span class="ansiblue">(</span><span class="ansiblue">&apos;rehab.table&apos;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      7</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">    429</span>             req <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    430</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 431</span><span class="ansired">         </span>response <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_open<span class="ansiblue">(</span>req<span class="ansiblue">,</span> data<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    432</span> <span class="ansiblue"></span>
   <span class="ansigreen">    433</span>         <span class="ansired"># post-process response</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, req, data)</span>
   <span class="ansigreen">    447</span>         protocol <span class="ansiblue">=</span> req<span class="ansiblue">.</span>get_type<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    448</span>         result = self._call_chain(self.handle_open, protocol, protocol +
   <span class="ansigreen">--&gt; 449</span><span class="ansired">                                   &apos;_open&apos;, req)
   </span><span class="ansigreen">    450</span>         <span class="ansigreen">if</span> result<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    451</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_open</span><span class="ansiblue">(self, req)</span>
   <span class="ansigreen">   1225</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1226</span>     <span class="ansigreen">def</span> http_open<span class="ansiblue">(</span>self<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1227</span><span class="ansired">         </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>do_open<span class="ansiblue">(</span>httplib<span class="ansiblue">.</span>HTTPConnection<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1228</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1229</span>     http_request <span class="ansiblue">=</span> AbstractHTTPHandler<span class="ansiblue">.</span>do_request_<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">do_open</span><span class="ansiblue">(self, http_class, req, **http_conn_args)</span>
   <span class="ansigreen">   1195</span>         <span class="ansigreen">except</span> socket<span class="ansiblue">.</span>error<span class="ansiblue">,</span> err<span class="ansiblue">:</span> <span class="ansired"># XXX what error?</span><span class="ansiblue"></span>
   <span class="ansigreen">   1196</span>             h<span class="ansiblue">.</span>close<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1197</span><span class="ansired">             </span><span class="ansigreen">raise</span> URLError<span class="ansiblue">(</span>err<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1198</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">   1199</span>             <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">URLError</span>: &lt;urlopen error [Errno -2] Name or service not known&gt;</pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-471-ba617da218fc&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>rehab_lm <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;Time ~ C(Fitness)&apos;</span><span class="ansiblue">,</span> data<span class="ansiblue">=</span>rehab_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> table9 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>rehab_lm<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>table9<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>rehab_lm<span class="ansiblue">.</span>model<span class="ansiblue">.</span>data<span class="ansiblue">.</span>orig_exog<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;rehab_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;[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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-472-2b2c1df214c7&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span><span class="ansigreen">print</span><span class="ansiblue">(</span>rehab_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;rehab_lm&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="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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">URLError</span>                                  Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-473-b6b45eb9c5b0&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="ansiblue"></span>
   <span class="ansigreen">      4</span>     url <span class="ansiblue">=</span> <span class="ansiblue">&apos;http://stats191.stanford.edu/data/kidney.table&apos;</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 5</span><span class="ansired">     </span>kidney_table <span class="ansiblue">=</span> pd<span class="ansiblue">.</span>read_table<span class="ansiblue">(</span>url<span class="ansiblue">,</span> delimiter<span class="ansiblue">=</span><span class="ansiblue">&quot; *&quot;</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">    429</span>             req <span class="ansiblue">=</span> meth<span class="ansiblue">(</span>req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    430</span> <span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 431</span><span class="ansired">         </span>response <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_open<span class="ansiblue">(</span>req<span class="ansiblue">,</span> data<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    432</span> <span class="ansiblue"></span>
   <span class="ansigreen">    433</span>         <span class="ansired"># post-process response</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, req, data)</span>
   <span class="ansigreen">    447</span>         protocol <span class="ansiblue">=</span> req<span class="ansiblue">.</span>get_type<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    448</span>         result = self._call_chain(self.handle_open, protocol, protocol +
   <span class="ansigreen">--&gt; 449</span><span class="ansired">                                   &apos;_open&apos;, req)
   </span><span class="ansigreen">    450</span>         <span class="ansigreen">if</span> result<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    451</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_open</span><span class="ansiblue">(self, req)</span>
   <span class="ansigreen">   1225</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1226</span>     <span class="ansigreen">def</span> http_open<span class="ansiblue">(</span>self<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1227</span><span class="ansired">         </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>do_open<span class="ansiblue">(</span>httplib<span class="ansiblue">.</span>HTTPConnection<span class="ansiblue">,</span> req<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1228</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1229</span>     http_request <span class="ansiblue">=</span> AbstractHTTPHandler<span class="ansiblue">.</span>do_request_<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/urllib2.pyc</span> in <span class="ansicyan">do_open</span><span class="ansiblue">(self, http_class, req, **http_conn_args)</span>
   <span class="ansigreen">   1195</span>         <span class="ansigreen">except</span> socket<span class="ansiblue">.</span>error<span class="ansiblue">,</span> err<span class="ansiblue">:</span> <span class="ansired"># XXX what error?</span><span class="ansiblue"></span>
   <span class="ansigreen">   1196</span>             h<span class="ansiblue">.</span>close<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1197</span><span class="ansired">             </span><span class="ansigreen">raise</span> URLError<span class="ansiblue">(</span>err<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">   1198</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">   1199</span>             <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">URLError</span>: &lt;urlopen error [Errno -2] Name or service not known&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>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"></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-474-2e414de92632&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>kidney_table<span class="ansiblue">.</span>groupby<span class="ansiblue">(</span><span class="ansiblue">[</span><span class="ansiblue">&apos;Weight&apos;</span><span class="ansiblue">,</span> <span class="ansiblue">&apos;Duration&apos;</span><span class="ansiblue">]</span><span class="ansiblue">)</span><span class="ansiblue">.</span>size<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;kidney_table&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">
   <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_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-475-e6704152aff6&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>kt <span class="ansiblue">=</span> kidney_table<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> plt<span class="ansiblue">.</span>figure<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="ansigreen">      3</span> fig = interaction_plot(kt[&apos;Weight&apos;], kt[&apos;Duration&apos;], np.log(kt[&apos;Days&apos;]+1),
   <span class="ansigreen">      4</span>         colors=[&apos;red&apos;, &apos;blue&apos;], markers=[&apos;D&apos;,&apos;^&apos;], ms=10, ax=plt.gca())
   
   <span class="ansired">NameError</span>: name &apos;kidney_table&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">
   <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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-476-a2ff4752a520&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>kidney_lm <span class="ansiblue">=</span> ols<span class="ansiblue">(</span><span class="ansiblue">&apos;np.log(Days+1) ~ C(Duration) * C(Weight)&apos;</span><span class="ansiblue">,</span> data<span class="ansiblue">=</span>kt<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="ansiblue"></span>
   <span class="ansigreen">      3</span> table10 <span class="ansiblue">=</span> anova_lm<span class="ansiblue">(</span>kidney_lm<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansiblue"></span>
   <span class="ansigreen">      5</span> print(anova_lm(ols(&apos;np.log(Days+1) ~ C(Duration) + C(Weight)&apos;,
   
   <span class="ansired">NameError</span>: name &apos;kt&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="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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-477-46f87d0de498&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> sum_lm = ols(&apos;np.log(Days+1) ~ C(Duration, Sum) * C(Weight, Sum)&apos;,
   <span class="ansigreen">----&gt; 2</span><span class="ansired">             data=kt).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>anova_lm<span class="ansiblue">(</span>sum_lm<span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>anova_lm<span class="ansiblue">(</span>sum_lm<span class="ansiblue">,</span> typ<span class="ansiblue">=</span><span class="ansicyan">2</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;kt&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;[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_text output_pyerr">
   <pre>
   <span class="ansired">---------------------------------------------------------------------------</span>
   <span class="ansired">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-478-f63f83741440&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> nosum_lm = ols(&apos;np.log(Days+1) ~ C(Duration, Treatment) * C(Weight, Treatment)&apos;,
   <span class="ansigreen">----&gt; 2</span><span class="ansired">             data=kt).fit()
   </span><span class="ansigreen">      3</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>anova_lm<span class="ansiblue">(</span>nosum_lm<span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>anova_lm<span class="ansiblue">(</span>nosum_lm<span class="ansiblue">,</span> typ<span class="ansiblue">=</span><span class="ansicyan">2</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      5</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>anova_lm<span class="ansiblue">(</span>nosum_lm<span class="ansiblue">,</span> typ<span class="ansiblue">=</span><span class="ansicyan">3</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;kt&apos; is not defined</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>