Weighted Least Squares
======================


.. _wls_notebook:

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

.. raw:: html

   
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[1]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
   <span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
   <span class="kn">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">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
   <span class="kn">from</span> <span class="nn">statsmodels.sandbox.regression.predstd</span> <span class="kn">import</span> <span class="n">wls_prediction_std</span>
   <span class="kn">from</span> <span class="nn">statsmodels.iolib.table</span> <span class="kn">import</span> <span class="p">(</span><span class="n">SimpleTable</span><span class="p">,</span> <span class="n">default_txt_fmt</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">seed</span><span class="p">(</span><span class="mi">1024</span><span class="p">)</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="wls-estimation">WLS Estimation</h2>
   <h3 id="artificial-data-heteroscedasticity-2-groups">Artificial data: Heteroscedasticity 2 groups</h3>
   <p>Model assumptions:</p>
   <ul>
   <li>Misspecification: true model is quadratic, estimate only linear</li>
   <li>Independent noise/error term</li>
   <li>Two groups for error variance, low and high variance groups</li>
   </ul>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[2]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">nsample</span> <span class="o">=</span> <span class="mi">50</span>
   <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="n">nsample</span><span class="p">)</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">5</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
   <span class="n">X</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">add_constant</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
   <span class="n">beta</span> <span class="o">=</span> <span class="p">[</span><span class="mf">5.</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.01</span><span class="p">]</span>
   <span class="n">sig</span> <span class="o">=</span> <span class="mf">0.5</span>
   <span class="n">w</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="n">nsample</span><span class="p">)</span>
   <span class="n">w</span><span class="p">[</span><span class="n">nsample</span> <span class="o">*</span> <span class="mi">6</span><span class="o">/</span><span class="mi">10</span><span class="p">:]</span> <span class="o">=</span> <span class="mi">3</span>
   <span class="n">y_true</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">beta</span><span class="p">)</span>
   <span class="n">e</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="n">nsample</span><span class="p">)</span>
   <span class="n">y</span> <span class="o">=</span> <span class="n">y_true</span> <span class="o">+</span> <span class="n">sig</span> <span class="o">*</span> <span class="n">w</span> <span class="o">*</span> <span class="n">e</span> 
   <span class="n">X</span> <span class="o">=</span> <span class="n">X</span><span class="p">[:,[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</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">
   <h3 id="wls-knowing-the-true-variance-ratio-of-heteroscedasticity">WLS knowing the true variance ratio of heteroscedasticity</h3>
   </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">mod_wls</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">WLS</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">weights</span><span class="o">=</span><span class="mf">1.</span><span class="o">/</span><span class="n">w</span><span class="p">)</span>
   <span class="n">res_wls</span> <span class="o">=</span> <span class="n">mod_wls</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res_wls</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>
                               WLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       0.910
   Model:                            WLS   Adj. R-squared:                  0.909
   Method:                 Least Squares   F-statistic:                     487.9
   Date:                Thu, 21 May 2015   Prob (F-statistic):           8.52e-27
   Time:                        05:58:00   Log-Likelihood:                -57.048
   No. Observations:                  50   AIC:                             118.1
   Df Residuals:                      48   BIC:                             121.9
   Df Model:                           1                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const          5.2726      0.185     28.488      0.000         4.900     5.645
   x1             0.4379      0.020     22.088      0.000         0.398     0.478
   ==============================================================================
   Omnibus:                        5.040   Durbin-Watson:                   2.242
   Prob(Omnibus):                  0.080   Jarque-Bera (JB):                6.431
   Skew:                           0.024   Prob(JB):                       0.0401
   Kurtosis:                       4.756   Cond. No.                         17.0
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </pre>
   </div>
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="ols-vs-wls">OLS vs. WLS</h2>
   <p>Estimate an OLS model for comparison: </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">res_ols</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">OLS</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res_ols</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">res_wls</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>
   [ 5.24256099  0.43486879]
   [ 5.27260714  0.43794441]
   
   </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 the WLS standard errors to  heteroscedasticity corrected OLS standard errors:</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">se</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([[</span><span class="n">res_wls</span><span class="o">.</span><span class="n">bse</span><span class="p">],</span> <span class="p">[</span><span class="n">res_ols</span><span class="o">.</span><span class="n">bse</span><span class="p">],</span> <span class="p">[</span><span class="n">res_ols</span><span class="o">.</span><span class="n">HC0_se</span><span class="p">],</span> 
                   <span class="p">[</span><span class="n">res_ols</span><span class="o">.</span><span class="n">HC1_se</span><span class="p">],</span> <span class="p">[</span><span class="n">res_ols</span><span class="o">.</span><span class="n">HC2_se</span><span class="p">],</span> <span class="p">[</span><span class="n">res_ols</span><span class="o">.</span><span class="n">HC3_se</span><span class="p">]])</span>
   <span class="n">se</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">se</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
   <span class="n">colnames</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;x1&#39;</span><span class="p">,</span> <span class="s">&#39;const&#39;</span><span class="p">]</span>
   <span class="n">rownames</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;WLS&#39;</span><span class="p">,</span> <span class="s">&#39;OLS&#39;</span><span class="p">,</span> <span class="s">&#39;OLS_HC0&#39;</span><span class="p">,</span> <span class="s">&#39;OLS_HC1&#39;</span><span class="p">,</span> <span class="s">&#39;OLS_HC3&#39;</span><span class="p">,</span> <span class="s">&#39;OLS_HC3&#39;</span><span class="p">]</span>
   <span class="n">tabl</span> <span class="o">=</span> <span class="n">SimpleTable</span><span class="p">(</span><span class="n">se</span><span class="p">,</span> <span class="n">colnames</span><span class="p">,</span> <span class="n">rownames</span><span class="p">,</span> <span class="n">txt_fmt</span><span class="o">=</span><span class="n">default_txt_fmt</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">tabl</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>
   =====================
             x1   const 
   ---------------------
   WLS     0.1851 0.0198
   OLS     0.2707 0.0233
   OLS_HC0 0.194  0.0281
   OLS_HC1 0.198  0.0287
   OLS_HC3 0.2003 0.029 
   OLS_HC3 0.207   0.03 
   ---------------------
   
   </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>Calculate OLS prediction interval:</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">covb</span> <span class="o">=</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">cov_params</span><span class="p">()</span>
   <span class="n">prediction_var</span> <span class="o">=</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">mse_resid</span> <span class="o">+</span> <span class="p">(</span><span class="n">X</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">covb</span><span class="p">,</span><span class="n">X</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
   <span class="n">prediction_std</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">prediction_var</span><span class="p">)</span>
   <span class="n">tppf</span> <span class="o">=</span> <span class="n">stats</span><span class="o">.</span><span class="n">t</span><span class="o">.</span><span class="n">ppf</span><span class="p">(</span><span class="mf">0.975</span><span class="p">,</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">df_resid</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;[7]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="n">prstd_ols</span><span class="p">,</span> <span class="n">iv_l_ols</span><span class="p">,</span> <span class="n">iv_u_ols</span> <span class="o">=</span> <span class="n">wls_prediction_std</span><span class="p">(</span><span class="n">res_ols</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>Draw a plot to compare predicted values in WLS and OLS:</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">prstd</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="n">iv_u</span> <span class="o">=</span> <span class="n">wls_prediction_std</span><span class="p">(</span><span class="n">res_wls</span><span class="p">)</span>
   
   <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s">&#39;o&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;Data&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y_true</span><span class="p">,</span> <span class="s">&#39;b-&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;True&quot;</span><span class="p">)</span>
   <span class="c"># OLS</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">fittedvalues</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_u_ols</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;OLS&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_l_ols</span><span class="p">,</span> <span class="s">&#39;r--&#39;</span><span class="p">)</span>
   <span class="c"># WLS</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">res_wls</span><span class="o">.</span><span class="n">fittedvalues</span><span class="p">,</span> <span class="s">&#39;g--.&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_u</span><span class="p">,</span> <span class="s">&#39;g--&#39;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s">&quot;WLS&quot;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv_l</span><span class="p">,</span> <span class="s">&#39;g--&#39;</span><span class="p">)</span>
   <span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s">&quot;best&quot;</span><span class="p">);</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt"></div>
   
   
   <div class="output_png output_subarea ">
   <img src="data:image/png;base64,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
   EEIIk/w/eYR5k3Fc5w4AAAAASUVORK5CYII=
   "
   >
   </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="feasible-weighted-least-squares-2-stage-fwls-">Feasible Weighted Least Squares (2-stage FWLS)</h2>
   </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">resid1</span> <span class="o">=</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">resid</span><span class="p">[</span><span class="n">w</span><span class="o">==</span><span class="mf">1.</span><span class="p">]</span>
   <span class="n">var1</span> <span class="o">=</span> <span class="n">resid1</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">ddof</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">res_ols</span><span class="o">.</span><span class="n">df_model</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
   <span class="n">resid2</span> <span class="o">=</span> <span class="n">res_ols</span><span class="o">.</span><span class="n">resid</span><span class="p">[</span><span class="n">w</span><span class="o">!=</span><span class="mf">1.</span><span class="p">]</span>
   <span class="n">var2</span> <span class="o">=</span> <span class="n">resid2</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">ddof</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">res_ols</span><span class="o">.</span><span class="n">df_model</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
   <span class="n">w_est</span> <span class="o">=</span> <span class="n">w</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
   <span class="n">w_est</span><span class="p">[</span><span class="n">w</span><span class="o">!=</span><span class="mf">1.</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">var2</span><span class="p">)</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">var1</span><span class="p">)</span>
   <span class="n">res_fwls</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">WLS</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="mf">1.</span><span class="o">/</span><span class="n">w_est</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
   <span class="k">print</span><span class="p">(</span><span class="n">res_fwls</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>
                               WLS Regression Results                            
   ==============================================================================
   Dep. Variable:                      y   R-squared:                       0.914
   Model:                            WLS   Adj. R-squared:                  0.912
   Method:                 Least Squares   F-statistic:                     507.1
   Date:                Thu, 21 May 2015   Prob (F-statistic):           3.65e-27
   Time:                        05:58:01   Log-Likelihood:                -55.777
   No. Observations:                  50   AIC:                             115.6
   Df Residuals:                      48   BIC:                             119.4
   Df Model:                           1                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const          5.2710      0.177     29.828      0.000         4.916     5.626
   x1             0.4390      0.019     22.520      0.000         0.400     0.478
   ==============================================================================
   Omnibus:                        4.076   Durbin-Watson:                   2.251
   Prob(Omnibus):                  0.130   Jarque-Bera (JB):                4.336
   Skew:                           0.003   Prob(JB):                        0.114
   Kurtosis:                       4.443   Cond. No.                         16.5
   ==============================================================================
   
   Warnings:
   [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
   
   </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>