Prediction (out of sample)
==========================


.. _predict_notebook:

`Link to Notebook GitHub <https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/predict.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">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 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="artificial-data">Artificial data</h2>
   </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">sig</span> <span class="o">=</span> <span class="mf">0.25</span>
   <span class="n">x1</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">x1</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x1</span><span class="p">),</span> <span class="p">(</span><span class="n">x1</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="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.02</span><span class="p">]</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">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">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>
   </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="estimation">Estimation</h2>
   </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">olsmod</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="n">olsres</span> <span class="o">=</span> <span class="n">olsmod</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">olsres</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.984
   Model:                            OLS   Adj. R-squared:                  0.983
   Method:                 Least Squares   F-statistic:                     956.6
   Date:                Thu, 21 May 2015   Prob (F-statistic):           1.96e-41
   Time:                        05:56:14   Log-Likelihood:                 1.2217
   No. Observations:                  50   AIC:                             5.557
   Df Residuals:                      46   BIC:                             13.20
   Df Model:                           3                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const          4.9654      0.084     59.175      0.000         4.796     5.134
   x1             0.5088      0.013     39.314      0.000         0.483     0.535
   x2             0.5651      0.051     11.109      0.000         0.463     0.668
   x3            -0.0206      0.001    -18.144      0.000        -0.023    -0.018
   ==============================================================================
   Omnibus:                        0.840   Durbin-Watson:                   2.269
   Prob(Omnibus):                  0.657   Jarque-Bera (JB):                0.577
   Skew:                          -0.263   Prob(JB):                        0.749
   Kurtosis:                       2.972   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">
   <h2 id="in-sample-prediction">In-sample prediction</h2>
   </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">ypred</span> <span class="o">=</span> <span class="n">olsres</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">ypred</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>
   [  4.44997408   4.96265684   5.43161584   5.82605136   6.12627912
      6.32696437   6.4379984    6.4828734    6.49482276   6.51136093
      6.56811991   6.69299498   6.90156162   7.1945165    7.55756297
      7.96376004   8.37794864   8.76252818   9.08363424   9.31670235
      9.45050393   9.48899104   9.45064714   9.36545023   9.26994764
      9.20125134   9.19094055   9.25987342   9.41476003   9.64705998
      9.93438555  10.24417991  10.53906618  10.78298825  10.9471348
     11.01467283  10.98351335  10.86665452  10.69004615  10.4883262
     10.29912985  10.15690615  10.08725815  10.10273638  10.20077685
     10.36412228  10.56365745  10.76319271  10.92540989  11.01799353]
   
   </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="create-a-new-sample-of-explanatory-variables-xnew-predict-and-plot">Create a new sample of explanatory variables Xnew, predict and plot</h2>
   </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">x1n</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="mf">20.5</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
   <span class="n">Xnew</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">x1n</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x1n</span><span class="p">),</span> <span class="p">(</span><span class="n">x1n</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">Xnew</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">Xnew</span><span class="p">)</span>
   <span class="n">ynewpred</span> <span class="o">=</span>  <span class="n">olsres</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">Xnew</span><span class="p">)</span> <span class="c"># predict out of sample</span>
   <span class="k">print</span><span class="p">(</span><span class="n">ynewpred</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>
   [ 11.00539682  10.84456472  10.55765996  10.1951886    9.82363439
      9.50918122   9.30150901   9.2216303    9.25674569   9.36337756]
   
   </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="plot-comparison">Plot comparison</h2>
   </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="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</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">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x1</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">x1</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="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">hstack</span><span class="p">((</span><span class="n">x1</span><span class="p">,</span> <span class="n">x1n</span><span class="p">)),</span> <span class="n">np</span><span class="o">.</span><span class="n">hstack</span><span class="p">((</span><span class="n">ypred</span><span class="p">,</span> <span class="n">ynewpred</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 prediction&quot;</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,iVBORw0KGgoAAAANSUhEUgAAAlAAAAGjCAYAAADjDCtvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
   AAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8zuUfx/HXdxub45zlFBoph5SUQ2EdZkooIkmRUvJr
   owPJIXNKKhVLKr9IlPyKiEUjzZwVKqfInM+KOe98/f74soxhm3v73vf2fj4e92Pzve/7e3/u7bb7
   c1/X5/pcljEGEREREck4L6cDEBEREfE0SqBEREREMkkJlIiIiEgmKYESERERySQlUCIiIiKZpARK
   REREJJOumEBZljXRsqxDlmWtv+DYO5ZlbbYs63fLsmZaluWf/WGKiIiIuI+rjUBNAlpcdCwSqGWM
   qQtsBV7PjsBERERE3NUVEyhjzBLg2EXHFhhjUs79cxVQMZtiExEREXFL11oD1Q34wRWBiIiIiHiK
   LCdQlmUNABKMMV+5MB4RERERt+eTlTtZltUVeBC47wq30SZ7IiIi4jGMMVZGb5vpBMqyrBZAH6CZ
   MSbuKoFk9vTiJsLCwggLC3M6DMkC/e48m35/nku/O89mWRnOnYCrtzGYBiwHaliWtceyrG5AOFAY
   WGBZ1jrLsj7KarAiIiIinuiKI1DGmMfTOTwxm2IRERER8QjqRC7pCgwMdDoEySL97jybfn+eS7+7
   vMXKrjoly7KMaqBERETEE1iWlb1F5Ncqs0VaknspwRYREU+V4wkU6I1TlEiLiIhnUw2UiIiISCYp
   gRIRERHJJCVQIiIiIpmkBEpEREQkk5RAnVOlShUKFixI0aJFKV68OHfddReffPJJhgred+7ciZeX
   FykpKTkQqYiIiDjNkVV46YmIiGbs2Eji433w9U0iNLQ5LVs2zbFzWJbF3Llzuffeezl58iRRUVH0
   6tWLVatWMXFixpqva3WhiIhI3uAWCVRERDS9ev1ITMyI1GMxMQMAMpwAueIc5xUpUoRWrVpx3XXX
   0bBhQ1555RV27tzJwIED2b59O/7+/jzzzDMMHjwYgKZN7fMXK1YMgIULF1KqVCm6d+/OH3/8gWVZ
   BAcHM27cOPz9/TMVi4iIiLgft5jCGzs2Mk3iAxATM4Lw8AU5eo6L3XHHHVSsWJElS5ZQuHBhpk6d
   yvHjx4mIiGD8+PHMnj0bgCVLlgBw/PhxTp48SYMGDQAYMGAABw4cYPPmzezZs0e7dIuIiOQSbpFA
   xcenPxAWF+edo+dIT/ny5Tl27BjNmjWjVq1aANSpU4eOHTuyePFiIP2pu4CAAO677z7y5ctHqVKl
   eOmll1JvLyIiIp7NLabwfH2T0j3u55eco+dIz759+yhRogSrVq2iX79+bNy4kYSEBOLj4+nQocNl
   73fo0CF69erF0qVLOXnyJCkpKZQoUeKaYhERERH34BYjUKGhzQkIGJDmWEBAf0JCgnL0HBf75Zdf
   2LdvH3fddRedOnXi4YcfZu/evcTGxtKjR4/UVXfpbUvSv39/vL292bBhA8ePH2fKlClapSciIpJL
   uMUI1Pki7/DwQcTFeePnl0xISItMFX+74hznp+JOnDhBdHQ0vXv35sknn6R27dqcOnWK4sWLkz9/
   flavXs1XX31FcHAwAKVLl8bLy4uYmBiqV68OwKlTp/D396do0aLs27ePd955J8NxiIiIiHuzsmvp
   vWVZJr1zW5bllsv9q1atyqFDh/Dx8cHLy4tatWrRuXNnevTogWVZzJgxg1deeYWjR4/SrFkzqlat
   SmxsLF988QUAgwcPZvz48SQlJTF//nwKFy7MU089xZYtW6hevTqdO3fmgw8+YPfu3Q4/U/fgrq8D
   ERHJm869L2V4p3slUOIIvQ5ERMSdZDaBcosaKBERERFPogRKREREJJOUQImIiIhkkhIoERERkUxS
   AiUiIiKSSUqgRERERDJJCZSIiIhIJimBEhEREckkJVAiIiIimaQE6pzChQtTpEgRihQpgpeXFwUL
   Fkz997Rp05wOT0RERNyItnJJR9WqVfnss8+49957L7kuKSkJHx+32IPZo3nC60BERPIObeXiYlFR
   UVSsWJG3336bcuXK0a1bNyZPnkyTJk3S3M7Ly4vt27cDEB8fz6uvvkrlypW57rrreOGFF4iLi3Mi
   fBEREckGSqAy4NChQxw7dozdu3fz6aefXnXkpF+/fmzbto3ff/+dbdu2sW/fPoYOHZpD0YqIiEh2
   c7sEyrJcc3ElLy8vhgwZQr58+fDz87vibY0xTJgwgffee49ixYpRuHBhXn/9db7++mvXBiUiIiKO
   cbtiHncsiyldujT58+fP0G2PHDnCmTNnuP3221OPGWNISUnJrvBEREQkh7ldAuWOrIuGtAoVKsSZ
   M2dS/33w4MHU70uVKkWBAgXYtGkT5cqVy7EYRUREJOe43RSeJ6hbty4bN27k999/Jy4ujrCwsNTr
   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
   "
   >
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <h2 id="Predicting-with-Formulas">Predicting with Formulas<a class="anchor-link" href="#Predicting-with-Formulas">&#182;</a></h2>
   </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>Using formulas can make both estimation and prediction a lot easier</p>
   </div>
   </div>
   </div>
   <div class="cell border-box-sizing code_cell rendered">
   <div class="input">
   <div class="prompt input_prompt">
   In&nbsp;[7]:
   </div>
   <div class="inner_cell">
       <div class="input_area">
   <div class="highlight"><pre><span class="kn">from</span> <span class="nn">statsmodels.formula.api</span> <span class="kn">import</span> <span class="n">ols</span>
   
   <span class="n">data</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;x1&quot;</span> <span class="p">:</span> <span class="n">x1</span><span class="p">,</span> <span class="s">&quot;y&quot;</span> <span class="p">:</span> <span class="n">y</span><span class="p">}</span>
   
   <span class="n">res</span> <span class="o">=</span> <span class="n">ols</span><span class="p">(</span><span class="s">&quot;y ~ x1 + np.sin(x1) + I((x1-5)**2)&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">fit</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>We use the <code>I</code> to indicate use of the Identity transform. Ie., we don&#39;t want any expansion magic from using <code>**2</code></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">res</span><span class="o">.</span><span class="n">params</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[8]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   Intercept           4.965353
   x1                  0.508755
   np.sin(x1)          0.565142
   I((x1 - 5) ** 2)   -0.020615
   dtype: float64
   </pre>
   </div>
   
   </div>
   
   </div>
   </div>
   
   </div>
   <div class="cell border-box-sizing text_cell rendered">
   <div class="prompt input_prompt">
   </div>
   <div class="inner_cell">
   <div class="text_cell_render border-box-sizing rendered_html">
   <p>Now we only have to pass the single variable and we get the transformed right-hand side variables automatically</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="n">res</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">exog</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">x1</span><span class="o">=</span><span class="n">x1n</span><span class="p">))</span>
   </pre></div>
   
   </div>
   </div>
   </div>
   
   <div class="output_wrapper">
   <div class="output">
   
   
   <div class="output_area"><div class="prompt output_prompt">
       Out[9]:</div>
   
   
   <div class="output_text output_subarea output_pyout">
   <pre>
   array([ 11.00539682,  10.84456472,  10.55765996,  10.1951886 ,
            9.82363439,   9.50918122,   9.30150901,   9.2216303 ,
            9.25674569,   9.36337756])
   </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>