Maximum Likelihood Estimation (Generic models)
==============================================


.. _generic_mle_notebook:

`Link to Notebook GitHub <https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/generic_mle.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>This tutorial explains how to quickly implement new maximum likelihood models in <code>statsmodels</code>. We give two examples: </p>
   <ol>
   <li>Probit model for binary dependent variables</li>
   <li>Negative binomial model for count data</li>
   </ol>
   <p>The <code>GenericLikelihoodModel</code> class eases the process by providing tools such as automatic numeric differentiation and a unified interface to <code>scipy</code> optimization functions. Using <code>statsmodels</code>, users can fit new MLE models simply by &quot;plugging-in&quot; a log-likelihood function. </p>
   </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="example-1-probit-model">Example 1: Probit model</h2>
   </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">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">stats</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">from</span> <span class="nn">statsmodels.base.model</span> <span class="kn">import</span> <span class="n">GenericLikelihoodModel</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>The <code>Spector</code> dataset is distributed with <code>statsmodels</code>. You can access a vector of values for the dependent variable (<code>endog</code>) and a matrix of regressors (<code>exog</code>) like this:</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">data</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">spector</span><span class="o">.</span><span class="n">load_pandas</span><span class="p">()</span>
   <span class="n">exog</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">exog</span>
   <span class="n">endog</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">endog</span>
   <span class="k">print</span><span class="p">(</span><span class="n">sm</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">spector</span><span class="o">.</span><span class="n">NOTE</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">exog</span><span class="o">.</span><span class="n">head</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>
   ::
   
       Number of Observations - 32
   
       Number of Variables - 4
   
       Variable name definitions::
   
           Grade - binary variable indicating whether or not a student&apos;s grade
                   improved.  1 indicates an improvement.
           TUCE  - Test score on economics test
           PSI   - participation in program
           GPA   - Student&apos;s grade point average
   
       GPA  TUCE  PSI
   0  2.66    20    0
   1  2.89    22    0
   2  3.28    24    0
   3  2.92    12    0
   4  4.00    21    0
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Them, we add a constant to the matrix of regressors:</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">exog</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">add_constant</span><span class="p">(</span><span class="n">exog</span><span class="p">,</span> <span class="n">prepend</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>To create your own Likelihood Model, you simply need to overwrite the loglike method.</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="k">class</span> <span class="nc">MyProbit</span><span class="p">(</span><span class="n">GenericLikelihoodModel</span><span class="p">):</span>
       <span class="k">def</span> <span class="nf">loglike</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
           <span class="n">exog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">exog</span>
           <span class="n">endog</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">endog</span>
           <span class="n">q</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">endog</span> <span class="o">-</span> <span class="mi">1</span>
           <span class="k">return</span> <span class="n">stats</span><span class="o">.</span><span class="n">norm</span><span class="o">.</span><span class="n">logcdf</span><span class="p">(</span><span class="n">q</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">exog</span><span class="p">,</span> <span class="n">params</span><span class="p">))</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Estimate the model and print a summary:</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">sm_probit_manual</span> <span class="o">=</span> <span class="n">MyProbit</span><span class="p">(</span><span class="n">endog</span><span class="p">,</span> <span class="n">exog</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">sm_probit_manual</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Optimization terminated successfully.
            Current function value: 0.400588
            Iterations: 292
            Function evaluations: 494
                                  MyProbit Results                               
   ==============================================================================
   Dep. Variable:                  GRADE   Log-Likelihood:                -12.819
   Model:                       MyProbit   AIC:                             33.64
   Method:            Maximum Likelihood   BIC:                             39.50
   Date:                Thu, 21 May 2015                                         
   Time:                        05:57:34                                         
   No. Observations:                  32                                         
   Df Residuals:                      28                                         
   Df Model:                           3                                         
   ==============================================================================
                    coef    std err          z      P&gt;|z|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const         -7.4523      2.542     -2.931      0.003       -12.435    -2.469
   GPA            1.6258      0.694      2.343      0.019         0.266     2.986
   TUCE           0.0517      0.084      0.617      0.537        -0.113     0.216
   PSI            1.4263      0.595      2.397      0.017         0.260     2.593
   ==============================================================================
   
   </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>Compare your Probit implementation to <code>statsmodels</code>&#39; &quot;canned&quot; implementation:</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">sm_probit_canned</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">Probit</span><span class="p">(</span><span class="n">endog</span><span class="p">,</span> <span class="n">exog</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Optimization terminated successfully.
            Current function value: 0.400588
            Iterations 6
   
   </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;[7]:
   </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">sm_probit_canned</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">sm_probit_manual</span><span class="o">.</span><span class="n">params</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>
   const   -7.452320
   GPA      1.625810
   TUCE     0.051729
   PSI      1.426332
   dtype: float64
   [-7.45233176  1.62580888  0.05172971  1.42631954]
   
   </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;[8]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="n">sm_probit_canned</span><span class="o">.</span><span class="n">cov_params</span><span class="p">())</span>
   <span class="k">print</span><span class="p">(</span><span class="n">sm_probit_manual</span><span class="o">.</span><span class="n">cov_params</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>
             const       GPA      TUCE       PSI
   const  6.464166 -1.169668 -0.101173 -0.594792
   GPA   -1.169668  0.481473 -0.018914  0.105439
   TUCE  -0.101173 -0.018914  0.007038  0.002472
   PSI   -0.594792  0.105439  0.002472  0.354070
   [[  6.46416800e+00  -1.16966624e+00  -1.01173183e-01  -5.94789038e-01]
    [ -1.16966624e+00   4.81472117e-01  -1.89134561e-02   1.05438228e-01]
    [ -1.01173183e-01  -1.89134561e-02   7.03758366e-03   2.47189376e-03]
    [ -5.94789038e-01   1.05438228e-01   2.47189376e-03   3.54069514e-01]]
   
   </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>Notice that the <code>GenericMaximumLikelihood</code> class provides automatic differentiation, so we didn&#39;t have to provide Hessian or Score functions in order to calculate the covariance estimates.</p>
   </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="example-2-negative-binomial-regression-for-count-data">Example 2: Negative Binomial Regression for Count Data</h2>
   <p>Consider a negative binomial regression model for count data with
   log-likelihood (type NB-2) function expressed as:</p>
   <p>$$
       \mathcal{L}(\beta_j; y, \alpha) = \sum_{i=1}^n y_i ln 
       \left ( \frac{\alpha exp(X_i'\beta)}{1+\alpha exp(X_i'\beta)} \right ) -
       \frac{1}{\alpha} ln(1+\alpha exp(X_i'\beta)) + ln \Gamma (y_i + 1/\alpha) - ln \Gamma (y_i+1) - ln \Gamma (1/\alpha)
   $$</p>
   <p>with a matrix of regressors $X$, a vector of coefficients $\beta$,
   and the negative binomial heterogeneity parameter $\alpha$. </p>
   <p>Using the <code>nbinom</code> distribution from <code>scipy</code>, we can write this likelihood
   simply as:</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[9]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="kn">from</span> <span class="nn">scipy.stats</span> <span class="kn">import</span> <span class="n">nbinom</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;[10]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">def</span> <span class="nf">_ll_nb2</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">,</span> <span class="n">alph</span><span class="p">):</span>
       <span class="n">mu</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">))</span>
       <span class="n">size</span> <span class="o">=</span> <span class="mi">1</span><span class="o">/</span><span class="n">alph</span>
       <span class="n">prob</span> <span class="o">=</span> <span class="n">size</span><span class="o">/</span><span class="p">(</span><span class="n">size</span><span class="o">+</span><span class="n">mu</span><span class="p">)</span>
       <span class="n">ll</span> <span class="o">=</span> <span class="n">nbinom</span><span class="o">.</span><span class="n">logpmf</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">prob</span><span class="p">)</span>
       <span class="k">return</span> <span class="n">ll</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h3 id="new-model-class">New Model Class</h3>
   <p>We create a new model class which inherits from <code>GenericLikelihoodModel</code>:</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="kn">from</span> <span class="nn">statsmodels.base.model</span> <span class="kn">import</span> <span class="n">GenericLikelihoodModel</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;[12]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="k">class</span> <span class="nc">NBin</span><span class="p">(</span><span class="n">GenericLikelihoodModel</span><span class="p">):</span>
       <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">endog</span><span class="p">,</span> <span class="n">exog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">):</span>
           <span class="nb">super</span><span class="p">(</span><span class="n">NBin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">endog</span><span class="p">,</span> <span class="n">exog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">)</span>
           
       <span class="k">def</span> <span class="nf">nloglikeobs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
           <span class="n">alph</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
           <span class="n">beta</span> <span class="o">=</span> <span class="n">params</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
           <span class="n">ll</span> <span class="o">=</span> <span class="n">_ll_nb2</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">endog</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">exog</span><span class="p">,</span> <span class="n">beta</span><span class="p">,</span> <span class="n">alph</span><span class="p">)</span>
           <span class="k">return</span> <span class="o">-</span><span class="n">ll</span> 
       
       <span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start_params</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">maxiter</span><span class="o">=</span><span class="mi">10000</span><span class="p">,</span> <span class="n">maxfun</span><span class="o">=</span><span class="mi">5000</span><span class="p">,</span> <span class="o">**</span><span class="n">kwds</span><span class="p">):</span>
           <span class="c"># we have one additional parameter and we need to add it for summary</span>
           <span class="bp">self</span><span class="o">.</span><span class="n">exog_names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;alpha&#39;</span><span class="p">)</span>
           <span class="k">if</span> <span class="n">start_params</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
               <span class="c"># Reasonable starting values</span>
               <span class="n">start_params</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exog</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="o">.</span><span class="mi">5</span><span class="p">)</span>
               <span class="c"># intercept</span>
               <span class="n">start_params</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</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="bp">self</span><span class="o">.</span><span class="n">endog</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
           <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">NBin</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">start_params</span><span class="o">=</span><span class="n">start_params</span><span class="p">,</span> 
                                        <span class="n">maxiter</span><span class="o">=</span><span class="n">maxiter</span><span class="p">,</span> <span class="n">maxfun</span><span class="o">=</span><span class="n">maxfun</span><span class="p">,</span> 
                                        <span class="o">**</span><span class="n">kwds</span><span class="p">)</span> 
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Two important things to notice: </p>
   <ul>
   <li><code>nloglikeobs</code>: This function should return one evaluation of the negative log-likelihood function per observation in your dataset (i.e. rows of the endog/X matrix). </li>
   <li><code>start_params</code>: A one-dimensional array of starting values needs to be provided. The size of this array determines the number of parameters that will be used in optimization.</li>
   </ul>
   <p>That&#39;s it! You&#39;re done!</p>
   <h3 id="usage-example">Usage Example</h3>
   <p>The <a href="http://vincentarelbundock.github.com/Rdatasets/doc/COUNT/medpar.html">Medpar</a>
   dataset is hosted in CSV format at the <a href="http://vincentarelbundock.github.com/Rdatasets">Rdatasets repository</a>. We use the <code>read_csv</code>
   function from the <a href="http://pandas.pydata.org">Pandas library</a> to load the data
   in memory. We then print the first few columns: </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="kn">import</span> <span class="nn">statsmodels.api</span> <span class="kn">as</span> <span class="nn">sm</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;[14]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">medpar</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">get_rdataset</span><span class="p">(</span><span class="s">&quot;medpar&quot;</span><span class="p">,</span> <span class="s">&quot;COUNT&quot;</span><span class="p">,</span> <span class="n">cache</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">data</span>
   
   <span class="n">medpar</span><span class="o">.</span><span class="n">head</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-356-9195ad73837e&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>medpar <span class="ansiblue">=</span> sm<span class="ansiblue">.</span>datasets<span class="ansiblue">.</span>get_rdataset<span class="ansiblue">(</span><span class="ansiblue">&quot;medpar&quot;</span><span class="ansiblue">,</span> <span class="ansiblue">&quot;COUNT&quot;</span><span class="ansiblue">,</span> cache<span class="ansiblue">=</span>True<span class="ansiblue">)</span><span class="ansiblue">.</span>data<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansiblue"></span>
   <span class="ansigreen">      3</span> medpar<span class="ansiblue">.</span>head<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/datasets/utils.pyc</span> in <span class="ansicyan">get_rdataset</span><span class="ansiblue">(dataname, package, cache)</span>
   <span class="ansigreen">    284</span>                      &quot;master/doc/&quot;+package+&quot;/rst/&quot;)
   <span class="ansigreen">    285</span>     cache <span class="ansiblue">=</span> _get_cache<span class="ansiblue">(</span>cache<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 286</span><span class="ansired">     </span>data<span class="ansiblue">,</span> from_cache <span class="ansiblue">=</span> _get_data<span class="ansiblue">(</span>data_base_url<span class="ansiblue">,</span> dataname<span class="ansiblue">,</span> cache<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    287</span>     data <span class="ansiblue">=</span> read_csv<span class="ansiblue">(</span>data<span class="ansiblue">,</span> index_col<span class="ansiblue">=</span><span class="ansicyan">0</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    288</span>     data <span class="ansiblue">=</span> _maybe_reset_index<span class="ansiblue">(</span>data<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/datasets/utils.pyc</span> in <span class="ansicyan">_get_data</span><span class="ansiblue">(base_url, dataname, cache, extension)</span>
   <span class="ansigreen">    215</span>     url <span class="ansiblue">=</span> base_url <span class="ansiblue">+</span> <span class="ansiblue">(</span>dataname <span class="ansiblue">+</span> <span class="ansiblue">&quot;.%s&quot;</span><span class="ansiblue">)</span> <span class="ansiblue">%</span> extension<span class="ansiblue"></span>
   <span class="ansigreen">    216</span>     <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 217</span><span class="ansired">         </span>data<span class="ansiblue">,</span> from_cache <span class="ansiblue">=</span> _urlopen_cached<span class="ansiblue">(</span>url<span class="ansiblue">,</span> cache<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    218</span>     <span class="ansigreen">except</span> HTTPError <span class="ansigreen">as</span> err<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    219</span>         <span class="ansigreen">if</span> <span class="ansiblue">&apos;404&apos;</span> <span class="ansigreen">in</span> str<span class="ansiblue">(</span>err<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/datasets/utils.pyc</span> in <span class="ansicyan">_urlopen_cached</span><span class="ansiblue">(url, cache)</span>
   <span class="ansigreen">    206</span>     <span class="ansired"># not using the cache or didn&apos;t find it in cache</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">    207</span>     <span class="ansigreen">if</span> <span class="ansigreen">not</span> from_cache<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 208</span><span class="ansired">         </span>data <span class="ansiblue">=</span> urlopen<span class="ansiblue">(</span>url<span class="ansiblue">)</span><span class="ansiblue">.</span>read<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    209</span>         <span class="ansigreen">if</span> cache <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span>  <span class="ansired"># then put it in the cache</span><span class="ansiblue"></span>
   <span class="ansigreen">    210</span>             _cache_it<span class="ansiblue">(</span>data<span class="ansiblue">,</span> cache_path<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">https_open</span><span class="ansiblue">(self, req)</span>
   <span class="ansigreen">   1238</span>         <span class="ansigreen">def</span> https_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">   1239</span>             return self.do_open(httplib.HTTPSConnection, req,
   <span class="ansigreen">-&gt; 1240</span><span class="ansired">                 context=self._context)
   </span><span class="ansigreen">   1241</span> <span class="ansiblue"></span>
   <span class="ansigreen">   1242</span>         https_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>The model we are interested in has a vector of non-negative integers as
   dependent variable (<code>los</code>), and 5 regressors: <code>Intercept</code>, <code>type2</code>,
   <code>type3</code>, <code>hmo</code>, <code>white</code>.</p>
   <p>For estimation, we need to create two variables to hold our regressors and the outcome variable. These can be ndarrays or pandas objects.</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[15]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">y</span> <span class="o">=</span> <span class="n">medpar</span><span class="o">.</span><span class="n">los</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">medpar</span><span class="p">[[</span><span class="s">&quot;type2&quot;</span><span class="p">,</span> <span class="s">&quot;type3&quot;</span><span class="p">,</span> <span class="s">&quot;hmo&quot;</span><span class="p">,</span> <span class="s">&quot;white&quot;</span><span class="p">]]</span>
   <span class="n">X</span><span class="p">[</span><span class="s">&quot;constant&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</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-357-0ead9bc6ed8a&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>y <span class="ansiblue">=</span> medpar<span class="ansiblue">.</span>los<span class="ansiblue"></span>
   <span class="ansigreen">      2</span> X <span class="ansiblue">=</span> medpar<span class="ansiblue">[</span><span class="ansiblue">[</span><span class="ansiblue">&quot;type2&quot;</span><span class="ansiblue">,</span> <span class="ansiblue">&quot;type3&quot;</span><span class="ansiblue">,</span> <span class="ansiblue">&quot;hmo&quot;</span><span class="ansiblue">,</span> <span class="ansiblue">&quot;white&quot;</span><span class="ansiblue">]</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> X<span class="ansiblue">[</span><span class="ansiblue">&quot;constant&quot;</span><span class="ansiblue">]</span> <span class="ansiblue">=</span> <span class="ansicyan">1</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;medpar&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>Then, we fit the model and extract some information: </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">mod</span> <span class="o">=</span> <span class="n">NBin</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span>
   <span class="n">res</span> <span class="o">=</span> <span class="n">mod</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">ValueError</span>                                Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-358-da1a4b1dfc20&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>mod <span class="ansiblue">=</span> NBin<span class="ansiblue">(</span>y<span class="ansiblue">,</span> X<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> res <span class="ansiblue">=</span> mod<span class="ansiblue">.</span>fit<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">&lt;ipython-input-354-2754543c01a4&gt;</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwds)</span>
   <span class="ansigreen">      1</span> <span class="ansigreen">class</span> NBin<span class="ansiblue">(</span>GenericLikelihoodModel<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span>     <span class="ansigreen">def</span> __init__<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwds<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 3</span><span class="ansired">         </span>super<span class="ansiblue">(</span>NBin<span class="ansiblue">,</span> self<span class="ansiblue">)</span><span class="ansiblue">.</span>__init__<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwds<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">def</span> nloglikeobs<span class="ansiblue">(</span>self<span class="ansiblue">,</span> params<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, loglike, score, hessian, missing, extra_params_names, **kwds)</span>
   <span class="ansigreen">    537</span>         <span class="ansired">#somewhere: CacheWriteWarning: &apos;df_model&apos; cannot be overwritten</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">    538</span>         super(GenericLikelihoodModel, self).__init__(endog, exog,
   <span class="ansigreen">--&gt; 539</span><span class="ansired">                                                      missing=missing)
   </span><span class="ansigreen">    540</span> <span class="ansiblue"></span>
   <span class="ansigreen">    541</span>         <span class="ansired"># this won&apos;t work for ru2nmnl, maybe np.ndim of a dict?</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwargs)</span>
   <span class="ansigreen">    184</span> <span class="ansiblue"></span>
   <span class="ansigreen">    185</span>     <span class="ansigreen">def</span> __init__<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">=</span>None<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 186</span><span class="ansired">         </span>super<span class="ansiblue">(</span>LikelihoodModel<span class="ansiblue">,</span> self<span class="ansiblue">)</span><span class="ansiblue">.</span>__init__<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    187</span>         self<span class="ansiblue">.</span>initialize<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    188</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwargs)</span>
   <span class="ansigreen">     58</span>         hasconst <span class="ansiblue">=</span> kwargs<span class="ansiblue">.</span>pop<span class="ansiblue">(</span><span class="ansiblue">&apos;hasconst&apos;</span><span class="ansiblue">,</span> None<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     59</span>         self.data = self._handle_data(endog, exog, missing, hasconst,
   <span class="ansigreen">---&gt; 60</span><span class="ansired">                                       **kwargs)
   </span><span class="ansigreen">     61</span>         self<span class="ansiblue">.</span>k_constant <span class="ansiblue">=</span> self<span class="ansiblue">.</span>data<span class="ansiblue">.</span>k_constant<span class="ansiblue"></span>
   <span class="ansigreen">     62</span>         self<span class="ansiblue">.</span>exog <span class="ansiblue">=</span> self<span class="ansiblue">.</span>data<span class="ansiblue">.</span>exog<span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">_handle_data</span><span class="ansiblue">(self, endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">     82</span> <span class="ansiblue"></span>
   <span class="ansigreen">     83</span>     <span class="ansigreen">def</span> _handle_data<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> missing<span class="ansiblue">,</span> hasconst<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">---&gt; 84</span><span class="ansired">         </span>data <span class="ansiblue">=</span> handle_data<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> missing<span class="ansiblue">,</span> hasconst<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     85</span>         <span class="ansired"># kwargs arrays could have changed, easier to just attach here</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">     86</span>         <span class="ansigreen">for</span> key <span class="ansigreen">in</span> kwargs<span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">handle_data</span><span class="ansiblue">(endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">    564</span>     klass <span class="ansiblue">=</span> handle_data_class_factory<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    565</span>     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,
   <span class="ansigreen">--&gt; 566</span><span class="ansired">                  **kwargs)
   </span>
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">     74</span>         <span class="ansired"># this has side-effects, attaches k_constant and const_idx</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">     75</span>         self<span class="ansiblue">.</span>_handle_constant<span class="ansiblue">(</span>hasconst<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">---&gt; 76</span><span class="ansired">         </span>self<span class="ansiblue">.</span>_check_integrity<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     77</span>         self<span class="ansiblue">.</span>_cache <span class="ansiblue">=</span> resettable_cache<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     78</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">_check_integrity</span><span class="ansiblue">(self)</span>
   <span class="ansigreen">    363</span>         <span class="ansigreen">if</span> self<span class="ansiblue">.</span>exog <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    364</span>             <span class="ansigreen">if</span> len<span class="ansiblue">(</span>self<span class="ansiblue">.</span>exog<span class="ansiblue">)</span> <span class="ansiblue">!=</span> len<span class="ansiblue">(</span>self<span class="ansiblue">.</span>endog<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 365</span><span class="ansired">                 </span><span class="ansigreen">raise</span> ValueError<span class="ansiblue">(</span><span class="ansiblue">&quot;endog and exog matrices are different sizes&quot;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    366</span> <span class="ansiblue"></span>
   <span class="ansigreen">    367</span>     <span class="ansigreen">def</span> wrap_output<span class="ansiblue">(</span>self<span class="ansiblue">,</span> obj<span class="ansiblue">,</span> how<span class="ansiblue">=</span><span class="ansiblue">&apos;columns&apos;</span><span class="ansiblue">,</span> names<span class="ansiblue">=</span>None<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">ValueError</span>: endog and exog matrices are different sizes</pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p> Extract parameter estimates, standard errors, p-values, AIC, etc.:</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">print</span><span class="p">(</span><span class="s">&#39;Parameters: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;Standard errors: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">bse</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;P-values: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">pvalues</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="s">&#39;AIC: &#39;</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">aic</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   Parameters:  [ 0.46872448  0.48360119 -0.01740479  5.20584496]
   Standard errors:  [ 0.02640602  0.10380518  0.00231847  0.17121765]
   P-values:  [  3.27237100e-22   2.73579870e-05   1.59061643e-09   4.18120169e-32]
   AIC:  76.8763100345
   
   </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>As usual, you can obtain a full list of available information by typing
   <code>dir(res)</code>.
   We can also look at the summary of the estimation results.</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="k">print</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">summary</span><span class="p">())</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
                               OLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       0.933
   Model:                            OLS   Adj. R-squared:                  0.928
   Method:                 Least Squares   F-statistic:                     211.8
   Date:                Thu, 21 May 2015   Prob (F-statistic):           6.30e-27
   Time:                        05:57:37   Log-Likelihood:                -34.438
   No. Observations:                  50   AIC:                             76.88
   Df Residuals:                      46   BIC:                             84.52
   Df Model:                           3                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   x1             0.4687      0.026     17.751      0.000         0.416     0.522
   x2             0.4836      0.104      4.659      0.000         0.275     0.693
   x3            -0.0174      0.002     -7.507      0.000        -0.022    -0.013
   const          5.2058      0.171     30.405      0.000         4.861     5.550
   ==============================================================================
   Omnibus:                        0.655   Durbin-Watson:                   2.896
   Prob(Omnibus):                  0.721   Jarque-Bera (JB):                0.360
   Skew:                           0.207   Prob(JB):                        0.835
   Kurtosis:                       3.026   Cond. No.                         221.
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h3 id="testing">Testing</h3>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>We can check the results by using the statsmodels implementation of the Negative Binomial model, which uses the analytic score function and Hessian.</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">res_nbin</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">NegativeBinomial</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">disp</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res_nbin</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">ValueError</span>                                Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-361-8468673374f5&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>res_nbin <span class="ansiblue">=</span> sm<span class="ansiblue">.</span>NegativeBinomial<span class="ansiblue">(</span>y<span class="ansiblue">,</span> X<span class="ansiblue">)</span><span class="ansiblue">.</span>fit<span class="ansiblue">(</span>disp<span class="ansiblue">=</span><span class="ansicyan">0</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>res_nbin<span class="ansiblue">.</span>summary<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/discrete/discrete_model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, loglike_method, offset, exposure, missing, **kwargs)</span>
   <span class="ansigreen">   1960</span>         super(NegativeBinomial, self).__init__(endog, exog, offset=offset,
   <span class="ansigreen">   1961</span>                                                exposure<span class="ansiblue">=</span>exposure<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">-&gt; 1962</span><span class="ansired">                                                missing=missing, **kwargs)
   </span><span class="ansigreen">   1963</span>         self<span class="ansiblue">.</span>loglike_method <span class="ansiblue">=</span> loglike_method<span class="ansiblue"></span>
   <span class="ansigreen">   1964</span>         self<span class="ansiblue">.</span>_initialize<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/discrete/discrete_model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, offset, exposure, missing, **kwargs)</span>
   <span class="ansigreen">    710</span>         super(CountModel, self).__init__(endog, exog, missing=missing,
   <span class="ansigreen">    711</span>                                          offset<span class="ansiblue">=</span>offset<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 712</span><span class="ansired">                                          exposure=exposure, **kwargs)
   </span><span class="ansigreen">    713</span>         <span class="ansigreen">if</span> exposure <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    714</span>             self<span class="ansiblue">.</span>exposure <span class="ansiblue">=</span> np<span class="ansiblue">.</span>log<span class="ansiblue">(</span>self<span class="ansiblue">.</span>exposure<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/discrete/discrete_model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwargs)</span>
   <span class="ansigreen">    152</span>     &quot;&quot;&quot;
   <span class="ansigreen">    153</span>     <span class="ansigreen">def</span> __init__<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 154</span><span class="ansired">         </span>super<span class="ansiblue">(</span>DiscreteModel<span class="ansiblue">,</span> self<span class="ansiblue">)</span><span class="ansiblue">.</span>__init__<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    155</span>         self<span class="ansiblue">.</span>raise_on_perfect_prediction <span class="ansiblue">=</span> True<span class="ansiblue"></span>
   <span class="ansigreen">    156</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwargs)</span>
   <span class="ansigreen">    184</span> <span class="ansiblue"></span>
   <span class="ansigreen">    185</span>     <span class="ansigreen">def</span> __init__<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">=</span>None<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 186</span><span class="ansired">         </span>super<span class="ansiblue">(</span>LikelihoodModel<span class="ansiblue">,</span> self<span class="ansiblue">)</span><span class="ansiblue">.</span>__init__<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    187</span>         self<span class="ansiblue">.</span>initialize<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    188</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, **kwargs)</span>
   <span class="ansigreen">     58</span>         hasconst <span class="ansiblue">=</span> kwargs<span class="ansiblue">.</span>pop<span class="ansiblue">(</span><span class="ansiblue">&apos;hasconst&apos;</span><span class="ansiblue">,</span> None<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     59</span>         self.data = self._handle_data(endog, exog, missing, hasconst,
   <span class="ansigreen">---&gt; 60</span><span class="ansired">                                       **kwargs)
   </span><span class="ansigreen">     61</span>         self<span class="ansiblue">.</span>k_constant <span class="ansiblue">=</span> self<span class="ansiblue">.</span>data<span class="ansiblue">.</span>k_constant<span class="ansiblue"></span>
   <span class="ansigreen">     62</span>         self<span class="ansiblue">.</span>exog <span class="ansiblue">=</span> self<span class="ansiblue">.</span>data<span class="ansiblue">.</span>exog<span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">_handle_data</span><span class="ansiblue">(self, endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">     82</span> <span class="ansiblue"></span>
   <span class="ansigreen">     83</span>     <span class="ansigreen">def</span> _handle_data<span class="ansiblue">(</span>self<span class="ansiblue">,</span> endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> missing<span class="ansiblue">,</span> hasconst<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">---&gt; 84</span><span class="ansired">         </span>data <span class="ansiblue">=</span> handle_data<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">,</span> missing<span class="ansiblue">,</span> hasconst<span class="ansiblue">,</span> <span class="ansiblue">**</span>kwargs<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     85</span>         <span class="ansired"># kwargs arrays could have changed, easier to just attach here</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">     86</span>         <span class="ansigreen">for</span> key <span class="ansigreen">in</span> kwargs<span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">handle_data</span><span class="ansiblue">(endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">    564</span>     klass <span class="ansiblue">=</span> handle_data_class_factory<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> exog<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    565</span>     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,
   <span class="ansigreen">--&gt; 566</span><span class="ansired">                  **kwargs)
   </span>
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">__init__</span><span class="ansiblue">(self, endog, exog, missing, hasconst, **kwargs)</span>
   <span class="ansigreen">     74</span>         <span class="ansired"># this has side-effects, attaches k_constant and const_idx</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">     75</span>         self<span class="ansiblue">.</span>_handle_constant<span class="ansiblue">(</span>hasconst<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">---&gt; 76</span><span class="ansired">         </span>self<span class="ansiblue">.</span>_check_integrity<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     77</span>         self<span class="ansiblue">.</span>_cache <span class="ansiblue">=</span> resettable_cache<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">     78</span> <span class="ansiblue"></span>
   
   <span class="ansigreen">/build/buildd/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/data.pyc</span> in <span class="ansicyan">_check_integrity</span><span class="ansiblue">(self)</span>
   <span class="ansigreen">    363</span>         <span class="ansigreen">if</span> self<span class="ansiblue">.</span>exog <span class="ansigreen">is</span> <span class="ansigreen">not</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    364</span>             <span class="ansigreen">if</span> len<span class="ansiblue">(</span>self<span class="ansiblue">.</span>exog<span class="ansiblue">)</span> <span class="ansiblue">!=</span> len<span class="ansiblue">(</span>self<span class="ansiblue">.</span>endog<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 365</span><span class="ansired">                 </span><span class="ansigreen">raise</span> ValueError<span class="ansiblue">(</span><span class="ansiblue">&quot;endog and exog matrices are different sizes&quot;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    366</span> <span class="ansiblue"></span>
   <span class="ansigreen">    367</span>     <span class="ansigreen">def</span> wrap_output<span class="ansiblue">(</span>self<span class="ansiblue">,</span> obj<span class="ansiblue">,</span> how<span class="ansiblue">=</span><span class="ansiblue">&apos;columns&apos;</span><span class="ansiblue">,</span> names<span class="ansiblue">=</span>None<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansired">ValueError</span>: endog and exog matrices are different sizes</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;[20]:
   </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">res_nbin</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   [-0.05795545 -0.26782087  0.04121061 -0.03813886  0.2689528   0.03816338
    -0.04412225  0.01723781  0.17801126  0.66355537  1.2929678 ]
   
   </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="k">print</span><span class="p">(</span><span class="n">res_nbin</span><span class="o">.</span><span class="n">bse</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   <div class="output_subarea output_stream output_stdout output_text">
   <pre>
   [ 0.00608972  0.02269311  0.00414701  0.00339952  0.02994536  0.00146324
     0.02005237  0.03614508  0.07426319  0.0247713   0.01861005]
   
   </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 we could compare them to results obtained using the MASS implementation for R:</p>
   <pre><code>url = &#39;http://vincentarelbundock.github.com/Rdatasets/csv/COUNT/medpar.csv&#39;
   medpar = read.csv(url)
   f = los~factor(type)+hmo+white
   
   library(MASS)
   mod = glm.nb(f, medpar)
   coef(summary(mod))
                    Estimate Std. Error   z value      Pr(&gt;|z|)
   (Intercept)    2.31027893 0.06744676 34.253370 3.885556e-257
   factor(type)2  0.22124898 0.05045746  4.384861  1.160597e-05
   factor(type)3  0.70615882 0.07599849  9.291748  1.517751e-20
   hmo           -0.06795522 0.05321375 -1.277024  2.015939e-01
   white         -0.12906544 0.06836272 -1.887951  5.903257e-02
   </code></pre><h3 id="numerical-precision">Numerical precision</h3>
   <p>The <code>statsmodels</code> generic MLE and <code>R</code> parameter estimates agree up to the fourth decimal. The standard errors, however, agree only up to the second decimal. This discrepancy is the result of imprecision in our Hessian numerical estimates. In the current context, the difference between <code>MASS</code> and <code>statsmodels</code> standard error estimates is substantively irrelevant, but it highlights the fact that users who need very precise estimates may not always want to rely on default settings when using numerical derivatives. In such cases, it is better to use analytical derivatives with the <code>LikelihoodModel</code> class.</p>
   </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>