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.987
   Model:                            OLS   Adj. R-squared:                  0.986
   Method:                 Least Squares   F-statistic:                     1144.
   Date:                Wed, 20 May 2015   Prob (F-statistic):           3.40e-43
   Time:                        21:54:25   Log-Likelihood:                 6.3967
   No. Observations:                  50   AIC:                            -4.793
   Df Residuals:                      46   BIC:                             2.855
   Df Model:                           3                                         
   Covariance Type:            nonrobust                                         
   ==============================================================================
                    coef    std err          t      P&gt;|t|      [95.0% Conf. Int.]
   ------------------------------------------------------------------------------
   const          4.9942      0.076     66.009      0.000         4.842     5.146
   x1             0.4894      0.012     41.941      0.000         0.466     0.513
   x2             0.5587      0.046     12.179      0.000         0.466     0.651
   x3            -0.0189      0.001    -18.405      0.000        -0.021    -0.017
   ==============================================================================
   Omnibus:                        2.461   Durbin-Watson:                   2.238
   Prob(Omnibus):                  0.292   Jarque-Bera (JB):                2.149
   Skew:                          -0.397   Prob(JB):                        0.342
   Kurtosis:                       2.368   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.5228   5.0181   5.4707   5.8502   6.137    6.3259   6.4267   6.4627
      6.4665   6.4755   6.5246   6.6417   6.842    7.1262   7.4802   7.8773
      8.2829   8.6597   8.9743   9.2023   9.3327   9.3694   9.3307   9.2462
      9.1519   9.0847   9.0757   9.1456   9.3009   9.5333   9.8206  10.1305
     10.4263  10.6722  10.8397  10.9122  10.8877  10.779   10.6117  10.4201
     10.2413  10.1096  10.05    10.0752  10.1824  10.3547  10.5633  10.7725
     10.9452  11.0496]
   
   </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.0536  10.9118  10.6462  10.3066   9.9588   9.6683   9.484    9.4268
      9.4841   9.6128]
   
   </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,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
   30xLnvbvtwNStWvbmbzExAu4T1AQfPmlraW6/3548EF7A/FK51uFd18WT32WC7F43IQJExg/fjzv
   vvsubdu2ZefOnfTq1Yt27dqxYsUKChcunGUScuTIEW655RamTJnCPffcQ2JiIsuWLSMgIOCC40pO
   TsY/J3PrIpInUkeHXh8XQfK//phySfTpm3FD2exsOpudUSrJY0uXwt1320Lve+9NO/zTT/bQZ5/B
   XXfZvKdBAzfcz3HsBUNDbSJ11VUwahQ8/LBduSfewxiTKw976bNlddzTDh8+bEqUKGE++eSTDMeP
   HTtmKlasaKZNm2aMMSYiIsJ07dr1rNd///33pkyZMtm+X0REhLnzzjvNvffea0qWLGmuvvpqs2bN
   mrTna9asacaNG2fq169vAgMDzalTp8y3335rmjdvbsqUKWMaNmxoYmNj087fsmWLadWqlSlZsqRp
   166d6d27d1qcW7duNY7jmFOnThljjPnnn39Mjx49TNWqVU3ZsmVNp06dzL///msCAwONn5+fKVGi
   hClZsqTZvXv3WZ/v559/bq688kpTpkwZExwcbDZu3Jgh5hdffNE0aNDAlC5d2tx7770mISEh08/f
   W78PRFx17Mgps2TYN+ari7uag5Q2B50y5gglzAb/+ia2zG3mi0v7mtmtJpo5Pb4w0ePWmRUxx8zh
   w5lfa/78pSYoaIix6+LtIyhosJk/f2neflJiffqpMRUrGrNkiTHGmJMnjfnoI2NatDCmenVjxo41
   5u+/czmGX34xpnFjY8LCjElJyeWbFWynfy9lP89x5WSXLuxjCdSCBQuMv79/WpKRXvfu3c19991n
   jMk6gTpy5IgpX7686d69u1mwYIE5cODAOe8XERFhChcubObMmWOSk5PNiy++aGrXrm2Sk5ONMTYZ
   adSokdm5c6dJSEgwO3fuNOXLlzcLFiwwxhizePFiU758efP36f+9zZo1M/379zcnT540cXFxpmTJ
   kuaBBx4wxpydQN18882mc+fO5tChQyYpKcnExcUZY4yJjY011apVyxBnZGRk2ue7adMmU7x4cbNk
   yRKTnJxsXnjhBXPppZeapKQkY4wxtWrVMtdee63Zs2ePOXDggKlbt6554403Mv38vfX7QCQ7kpKM
   +frdHeajhqPMFr9LzJYSV5nvu7xsjm75yz6//6DZu+An89vzc8yaB8abn1v0Mr/WusnsLHmFSXAC
   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
   AAAAAElFTkSuQmCC
   "
   >
   </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.994189
   x1                  0.489395
   np.sin(x1)          0.558671
   I((x1 - 5) ** 2)   -0.018856
   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.0536,  10.9118,  10.6462,  10.3066,   9.9588,   9.6683,
            9.484 ,   9.4268,   9.4841,   9.6128])
   </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>