Plot Interaction of Categorical Factors
=======================================


.. _categorical_interaction_plot_notebook:

`Link to Notebook GitHub <https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/categorical_interaction_plot.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>In this example, we will vizualize the interaction between categorical factors. First, we will create some categorical data are initialized. Then plotted using the interaction_plot function which internally recodes the x-factor categories to ingegers.</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">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
   <span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
   <span class="kn">from</span> <span class="nn">statsmodels.graphics.factorplots</span> <span class="kn">import</span> <span class="n">interaction_plot</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>
   Populating the interactive namespace from numpy and matplotlib
   
   </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;[2]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">12345</span><span class="p">)</span>
   <span class="n">weight</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">repeat</span><span class="p">([</span><span class="s">&#39;low&#39;</span><span class="p">,</span> <span class="s">&#39;hi&#39;</span><span class="p">,</span> <span class="s">&#39;low&#39;</span><span class="p">,</span> <span class="s">&#39;hi&#39;</span><span class="p">],</span> <span class="mi">15</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;weight&#39;</span><span class="p">)</span>
   <span class="n">nutrition</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">repeat</span><span class="p">([</span><span class="s">&#39;lo_carb&#39;</span><span class="p">,</span> <span class="s">&#39;hi_carb&#39;</span><span class="p">],</span> <span class="mi">30</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s">&#39;nutrition&#39;</span><span class="p">)</span>
   <span class="n">days</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">60</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;[3]:
   </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="n">fig</span> <span class="o">=</span> <span class="n">interaction_plot</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">weight</span><span class="p">,</span> <span class="n">trace</span><span class="o">=</span><span class="n">nutrition</span><span class="p">,</span> <span class="n">response</span><span class="o">=</span><span class="n">days</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">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_png output_subarea ">
   <img src="data:image/png;base64,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
   gg==
   "
   >
   </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>