Dates in timeseries models
==========================


.. _tsa_dates_notebook:

`Link to Notebook GitHub <https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/tsa_dates.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">statsmodels.api</span> <span class="kn">as</span> <span class="nn">sm</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">pandas</span> <span class="kn">as</span> <span class="nn">pd</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="getting-started">Getting started</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">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">sunspots</span><span class="o">.</span><span class="n">load</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>Right now an annual date series must be datetimes at the end of the year.</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="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
   <span class="n">dates</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">tsa</span><span class="o">.</span><span class="n">datetools</span><span class="o">.</span><span class="n">dates_from_range</span><span class="p">(</span><span class="s1">&#39;1700&#39;</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">endog</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="using-pandas">Using Pandas</h2>
   <p>Make a pandas TimeSeries or DataFrame</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">endog</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">TimeSeries</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">endog</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">dates</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>Instantiate the model</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">ar_model</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">tsa</span><span class="o">.</span><span class="n">AR</span><span class="p">(</span><span class="n">endog</span><span class="p">,</span> <span class="n">freq</span><span class="o">=</span><span class="s1">&#39;A&#39;</span><span class="p">)</span>
   <span class="n">pandas_ar_res</span> <span class="o">=</span> <span class="n">ar_model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">maxlag</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">&#39;mle&#39;</span><span class="p">,</span> <span class="n">disp</span><span class="o">=-</span><span class="mi">1</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">TypeError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-287-9645410370ec&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> ar_model <span class="ansiblue">=</span> sm<span class="ansiblue">.</span>tsa<span class="ansiblue">.</span>AR<span class="ansiblue">(</span>endog<span class="ansiblue">,</span> freq<span class="ansiblue">=</span><span class="ansiblue">&apos;A&apos;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>pandas_ar_res <span class="ansiblue">=</span> ar_model<span class="ansiblue">.</span>fit<span class="ansiblue">(</span>maxlag<span class="ansiblue">=</span><span class="ansicyan">9</span><span class="ansiblue">,</span> method<span class="ansiblue">=</span><span class="ansiblue">&apos;mle&apos;</span><span class="ansiblue">,</span> disp<span class="ansiblue">=</span><span class="ansiblue">-</span><span class="ansicyan">1</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">fit</span><span class="ansiblue">(self, maxlag, method, ic, trend, transparams, start_params, solver, maxiter, full_output, disp, callback, **kwargs)</span>
   <span class="ansigreen">    578</span>                                          method<span class="ansiblue">=</span>solver<span class="ansiblue">,</span> maxiter<span class="ansiblue">=</span>maxiter<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    579</span>                                          full_output<span class="ansiblue">=</span>full_output<span class="ansiblue">,</span> disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 580</span><span class="ansired">                                          callback=callback, **kwargs)
   </span><span class="ansigreen">    581</span> <span class="ansiblue"></span>
   <span class="ansigreen">    582</span>             params <span class="ansiblue">=</span> mlefit<span class="ansiblue">.</span>params<span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">fit</span><span class="ansiblue">(self, start_params, method, maxiter, full_output, disp, fargs, callback, retall, skip_hessian, **kwargs)</span>
   <span class="ansigreen">    423</span>                                                        callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    424</span>                                                        retall<span class="ansiblue">=</span>retall<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 425</span><span class="ansired">                                                        full_output=full_output)
   </span><span class="ansigreen">    426</span> <span class="ansiblue"></span>
   <span class="ansigreen">    427</span>         <span class="ansired">#NOTE: this is for fit_regularized and should be generalized</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/optimizer.pyc</span> in <span class="ansicyan">_fit</span><span class="ansiblue">(self, objective, gradient, start_params, fargs, kwargs, hessian, method, maxiter, full_output, disp, callback, retall)</span>
   <span class="ansigreen">    182</span>                             disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span> maxiter<span class="ansiblue">=</span>maxiter<span class="ansiblue">,</span> callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    183</span>                             retall<span class="ansiblue">=</span>retall<span class="ansiblue">,</span> full_output<span class="ansiblue">=</span>full_output<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 184</span><span class="ansired">                             hess=hessian)
   </span><span class="ansigreen">    185</span> <span class="ansiblue"></span>
   <span class="ansigreen">    186</span>         <span class="ansired"># this is stupid TODO: just change this to something sane</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/optimizer.pyc</span> in <span class="ansicyan">_fit_lbfgs</span><span class="ansiblue">(f, score, start_params, fargs, kwargs, disp, maxiter, callback, retall, full_output, hess)</span>
   <span class="ansigreen">    380</span>                                          callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span> args<span class="ansiblue">=</span>fargs<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    381</span>                                          bounds<span class="ansiblue">=</span>bounds<span class="ansiblue">,</span> disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 382</span><span class="ansired">                                          **extra_kwargs)
   </span><span class="ansigreen">    383</span> <span class="ansiblue"></span>
   <span class="ansigreen">    384</span>     <span class="ansigreen">if</span> full_output<span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">fmin_l_bfgs_b</span><span class="ansiblue">(func, x0, fprime, args, approx_grad, bounds, m, factr, pgtol, epsilon, iprint, maxfun, maxiter, disp, callback, maxls)</span>
   <span class="ansigreen">    191</span> <span class="ansiblue"></span>
   <span class="ansigreen">    192</span>     res = _minimize_lbfgsb(fun, x0, args=args, jac=jac, bounds=bounds,
   <span class="ansigreen">--&gt; 193</span><span class="ansired">                            **opts)
   </span><span class="ansigreen">    194</span>     d = {&apos;grad&apos;: res[&apos;jac&apos;],
   <span class="ansigreen">    195</span>          <span class="ansiblue">&apos;task&apos;</span><span class="ansiblue">:</span> res<span class="ansiblue">[</span><span class="ansiblue">&apos;message&apos;</span><span class="ansiblue">]</span><span class="ansiblue">,</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">_minimize_lbfgsb</span><span class="ansiblue">(fun, x0, args, jac, bounds, disp, maxcor, ftol, gtol, eps, maxfun, maxiter, iprint, callback, maxls, **unknown_options)</span>
   <span class="ansigreen">    328</span>                 <span class="ansired"># minimization routine wants f and g at the current x</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">    329</span>                 <span class="ansired"># Overwrite f and g:</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 330</span><span class="ansired">                 </span>f<span class="ansiblue">,</span> g <span class="ansiblue">=</span> func_and_grad<span class="ansiblue">(</span>x<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    331</span>         <span class="ansigreen">elif</span> task_str<span class="ansiblue">.</span>startswith<span class="ansiblue">(</span><span class="ansiblue">b&apos;NEW_X&apos;</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    332</span>             <span class="ansired"># new iteration</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">func_and_grad</span><span class="ansiblue">(x)</span>
   <span class="ansigreen">    271</span>     <span class="ansigreen">if</span> jac <span class="ansigreen">is</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    272</span>         <span class="ansigreen">def</span> func_and_grad<span class="ansiblue">(</span>x<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 273</span><span class="ansired">             </span>f <span class="ansiblue">=</span> fun<span class="ansiblue">(</span>x<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    274</span>             g <span class="ansiblue">=</span> _approx_fprime_helper<span class="ansiblue">(</span>x<span class="ansiblue">,</span> fun<span class="ansiblue">,</span> epsilon<span class="ansiblue">,</span> args<span class="ansiblue">=</span>args<span class="ansiblue">,</span> f0<span class="ansiblue">=</span>f<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    275</span>             <span class="ansigreen">return</span> f<span class="ansiblue">,</span> g<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.pyc</span> in <span class="ansicyan">function_wrapper</span><span class="ansiblue">(*wrapper_args)</span>
   <span class="ansigreen">    287</span>     <span class="ansigreen">def</span> function_wrapper<span class="ansiblue">(</span><span class="ansiblue">*</span>wrapper_args<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    288</span>         ncalls<span class="ansiblue">[</span><span class="ansicyan">0</span><span class="ansiblue">]</span> <span class="ansiblue">+=</span> <span class="ansicyan">1</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 289</span><span class="ansired">         </span><span class="ansigreen">return</span> function<span class="ansiblue">(</span><span class="ansiblue">*</span><span class="ansiblue">(</span>wrapper_args <span class="ansiblue">+</span> args<span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    290</span> <span class="ansiblue"></span>
   <span class="ansigreen">    291</span>     <span class="ansigreen">return</span> ncalls<span class="ansiblue">,</span> function_wrapper<span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">&lt;lambda&gt;</span><span class="ansiblue">(params, *args)</span>
   <span class="ansigreen">    401</span> <span class="ansiblue"></span>
   <span class="ansigreen">    402</span>         nobs <span class="ansiblue">=</span> self<span class="ansiblue">.</span>endog<span class="ansiblue">.</span>shape<span class="ansiblue">[</span><span class="ansicyan">0</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 403</span><span class="ansired">         </span>f <span class="ansiblue">=</span> <span class="ansigreen">lambda</span> params<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">:</span> <span class="ansiblue">-</span>self<span class="ansiblue">.</span>loglike<span class="ansiblue">(</span>params<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">)</span> <span class="ansiblue">/</span> nobs<span class="ansiblue"></span>
   <span class="ansigreen">    404</span>         score <span class="ansiblue">=</span> <span class="ansigreen">lambda</span> params<span class="ansiblue">:</span> <span class="ansiblue">-</span>self<span class="ansiblue">.</span>score<span class="ansiblue">(</span>params<span class="ansiblue">)</span> <span class="ansiblue">/</span> nobs<span class="ansiblue"></span>
   <span class="ansigreen">    405</span>         <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">loglike</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    351</span> <span class="ansiblue"></span>
   <span class="ansigreen">    352</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 353</span><span class="ansired">             </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>_loglike_mle<span class="ansiblue">(</span>params<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    354</span> <span class="ansiblue"></span>
   <span class="ansigreen">    355</span>     <span class="ansigreen">def</span> score<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">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">_loglike_mle</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    301</span> <span class="ansiblue"></span>
   <span class="ansigreen">    302</span>         <span class="ansired"># get inv(Vp) Hamilton 5.3.7</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 303</span><span class="ansired">         </span>Vpinv <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_presample_varcov<span class="ansiblue">(</span>params<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    304</span> <span class="ansiblue"></span>
   <span class="ansigreen">    305</span>         diffpVpinv <span class="ansiblue">=</span> np<span class="ansiblue">.</span>dot<span class="ansiblue">(</span>np<span class="ansiblue">.</span>dot<span class="ansiblue">(</span>diffp<span class="ansiblue">.</span>T<span class="ansiblue">,</span> Vpinv<span class="ansiblue">)</span><span class="ansiblue">,</span> diffp<span class="ansiblue">)</span><span class="ansiblue">.</span>item<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">_presample_varcov</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    258</span>         <span class="ansigreen">for</span> i <span class="ansigreen">in</span> range<span class="ansiblue">(</span><span class="ansicyan">1</span><span class="ansiblue">,</span> p1<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    259</span>             Vpinv[i-1, i-1:] = np.correlate(params0, params0[:i],
   <span class="ansigreen">--&gt; 260</span><span class="ansired">                                             old_behavior=False)[:-1]
   </span><span class="ansigreen">    261</span>             Vpinv[i-1, i-1:] -= np.correlate(params0[-i:], params0,
   <span class="ansigreen">    262</span>                                              old_behavior=False)[:-1]
   
   <span class="ansired">TypeError</span>: correlate() got an unexpected keyword argument &apos;old_behavior&apos;</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>Out-of-sample prediction</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">pred</span> <span class="o">=</span> <span class="n">pandas_ar_res</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="s1">&#39;2005&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;2015&#39;</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">pred</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">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-288-81ba69e2b7f0&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span>pred <span class="ansiblue">=</span> pandas_ar_res<span class="ansiblue">.</span>predict<span class="ansiblue">(</span>start<span class="ansiblue">=</span><span class="ansiblue">&apos;2005&apos;</span><span class="ansiblue">,</span> end<span class="ansiblue">=</span><span class="ansiblue">&apos;2015&apos;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      2</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>pred<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;pandas_ar_res&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">
   <h2 id="using-explicit-dates">Using explicit dates</h2>
   </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">ar_model</span> <span class="o">=</span> <span class="n">sm</span><span class="o">.</span><span class="n">tsa</span><span class="o">.</span><span class="n">AR</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">endog</span><span class="p">,</span> <span class="n">dates</span><span class="o">=</span><span class="n">dates</span><span class="p">,</span> <span class="n">freq</span><span class="o">=</span><span class="s1">&#39;A&#39;</span><span class="p">)</span>
   <span class="n">ar_res</span> <span class="o">=</span> <span class="n">ar_model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">maxlag</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s1">&#39;mle&#39;</span><span class="p">,</span> <span class="n">disp</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
   <span class="n">pred</span> <span class="o">=</span> <span class="n">ar_res</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="s1">&#39;2005&#39;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;2015&#39;</span><span class="p">)</span>
   <span class="k">print</span><span class="p">(</span><span class="n">pred</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">TypeError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-289-bddd2fb1643c&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">      1</span> ar_model <span class="ansiblue">=</span> sm<span class="ansiblue">.</span>tsa<span class="ansiblue">.</span>AR<span class="ansiblue">(</span>data<span class="ansiblue">.</span>endog<span class="ansiblue">,</span> dates<span class="ansiblue">=</span>dates<span class="ansiblue">,</span> freq<span class="ansiblue">=</span><span class="ansiblue">&apos;A&apos;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">----&gt; 2</span><span class="ansired"> </span>ar_res <span class="ansiblue">=</span> ar_model<span class="ansiblue">.</span>fit<span class="ansiblue">(</span>maxlag<span class="ansiblue">=</span><span class="ansicyan">9</span><span class="ansiblue">,</span> method<span class="ansiblue">=</span><span class="ansiblue">&apos;mle&apos;</span><span class="ansiblue">,</span> disp<span class="ansiblue">=</span><span class="ansiblue">-</span><span class="ansicyan">1</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      3</span> pred <span class="ansiblue">=</span> ar_res<span class="ansiblue">.</span>predict<span class="ansiblue">(</span>start<span class="ansiblue">=</span><span class="ansiblue">&apos;2005&apos;</span><span class="ansiblue">,</span> end<span class="ansiblue">=</span><span class="ansiblue">&apos;2015&apos;</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">      4</span> <span class="ansigreen">print</span><span class="ansiblue">(</span>pred<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">fit</span><span class="ansiblue">(self, maxlag, method, ic, trend, transparams, start_params, solver, maxiter, full_output, disp, callback, **kwargs)</span>
   <span class="ansigreen">    578</span>                                          method<span class="ansiblue">=</span>solver<span class="ansiblue">,</span> maxiter<span class="ansiblue">=</span>maxiter<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    579</span>                                          full_output<span class="ansiblue">=</span>full_output<span class="ansiblue">,</span> disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 580</span><span class="ansired">                                          callback=callback, **kwargs)
   </span><span class="ansigreen">    581</span> <span class="ansiblue"></span>
   <span class="ansigreen">    582</span>             params <span class="ansiblue">=</span> mlefit<span class="ansiblue">.</span>params<span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">fit</span><span class="ansiblue">(self, start_params, method, maxiter, full_output, disp, fargs, callback, retall, skip_hessian, **kwargs)</span>
   <span class="ansigreen">    423</span>                                                        callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    424</span>                                                        retall<span class="ansiblue">=</span>retall<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 425</span><span class="ansired">                                                        full_output=full_output)
   </span><span class="ansigreen">    426</span> <span class="ansiblue"></span>
   <span class="ansigreen">    427</span>         <span class="ansired">#NOTE: this is for fit_regularized and should be generalized</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/optimizer.pyc</span> in <span class="ansicyan">_fit</span><span class="ansiblue">(self, objective, gradient, start_params, fargs, kwargs, hessian, method, maxiter, full_output, disp, callback, retall)</span>
   <span class="ansigreen">    182</span>                             disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span> maxiter<span class="ansiblue">=</span>maxiter<span class="ansiblue">,</span> callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    183</span>                             retall<span class="ansiblue">=</span>retall<span class="ansiblue">,</span> full_output<span class="ansiblue">=</span>full_output<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 184</span><span class="ansired">                             hess=hessian)
   </span><span class="ansigreen">    185</span> <span class="ansiblue"></span>
   <span class="ansigreen">    186</span>         <span class="ansired"># this is stupid TODO: just change this to something sane</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/optimizer.pyc</span> in <span class="ansicyan">_fit_lbfgs</span><span class="ansiblue">(f, score, start_params, fargs, kwargs, disp, maxiter, callback, retall, full_output, hess)</span>
   <span class="ansigreen">    380</span>                                          callback<span class="ansiblue">=</span>callback<span class="ansiblue">,</span> args<span class="ansiblue">=</span>fargs<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">    381</span>                                          bounds<span class="ansiblue">=</span>bounds<span class="ansiblue">,</span> disp<span class="ansiblue">=</span>disp<span class="ansiblue">,</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 382</span><span class="ansired">                                          **extra_kwargs)
   </span><span class="ansigreen">    383</span> <span class="ansiblue"></span>
   <span class="ansigreen">    384</span>     <span class="ansigreen">if</span> full_output<span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">fmin_l_bfgs_b</span><span class="ansiblue">(func, x0, fprime, args, approx_grad, bounds, m, factr, pgtol, epsilon, iprint, maxfun, maxiter, disp, callback, maxls)</span>
   <span class="ansigreen">    191</span> <span class="ansiblue"></span>
   <span class="ansigreen">    192</span>     res = _minimize_lbfgsb(fun, x0, args=args, jac=jac, bounds=bounds,
   <span class="ansigreen">--&gt; 193</span><span class="ansired">                            **opts)
   </span><span class="ansigreen">    194</span>     d = {&apos;grad&apos;: res[&apos;jac&apos;],
   <span class="ansigreen">    195</span>          <span class="ansiblue">&apos;task&apos;</span><span class="ansiblue">:</span> res<span class="ansiblue">[</span><span class="ansiblue">&apos;message&apos;</span><span class="ansiblue">]</span><span class="ansiblue">,</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">_minimize_lbfgsb</span><span class="ansiblue">(fun, x0, args, jac, bounds, disp, maxcor, ftol, gtol, eps, maxfun, maxiter, iprint, callback, maxls, **unknown_options)</span>
   <span class="ansigreen">    328</span>                 <span class="ansired"># minimization routine wants f and g at the current x</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">    329</span>                 <span class="ansired"># Overwrite f and g:</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 330</span><span class="ansired">                 </span>f<span class="ansiblue">,</span> g <span class="ansiblue">=</span> func_and_grad<span class="ansiblue">(</span>x<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    331</span>         <span class="ansigreen">elif</span> task_str<span class="ansiblue">.</span>startswith<span class="ansiblue">(</span><span class="ansiblue">b&apos;NEW_X&apos;</span><span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    332</span>             <span class="ansired"># new iteration</span><span class="ansiblue"></span><span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.pyc</span> in <span class="ansicyan">func_and_grad</span><span class="ansiblue">(x)</span>
   <span class="ansigreen">    271</span>     <span class="ansigreen">if</span> jac <span class="ansigreen">is</span> None<span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    272</span>         <span class="ansigreen">def</span> func_and_grad<span class="ansiblue">(</span>x<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 273</span><span class="ansired">             </span>f <span class="ansiblue">=</span> fun<span class="ansiblue">(</span>x<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    274</span>             g <span class="ansiblue">=</span> _approx_fprime_helper<span class="ansiblue">(</span>x<span class="ansiblue">,</span> fun<span class="ansiblue">,</span> epsilon<span class="ansiblue">,</span> args<span class="ansiblue">=</span>args<span class="ansiblue">,</span> f0<span class="ansiblue">=</span>f<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    275</span>             <span class="ansigreen">return</span> f<span class="ansiblue">,</span> g<span class="ansiblue"></span>
   
   <span class="ansigreen">/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.pyc</span> in <span class="ansicyan">function_wrapper</span><span class="ansiblue">(*wrapper_args)</span>
   <span class="ansigreen">    287</span>     <span class="ansigreen">def</span> function_wrapper<span class="ansiblue">(</span><span class="ansiblue">*</span>wrapper_args<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    288</span>         ncalls<span class="ansiblue">[</span><span class="ansicyan">0</span><span class="ansiblue">]</span> <span class="ansiblue">+=</span> <span class="ansicyan">1</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 289</span><span class="ansired">         </span><span class="ansigreen">return</span> function<span class="ansiblue">(</span><span class="ansiblue">*</span><span class="ansiblue">(</span>wrapper_args <span class="ansiblue">+</span> args<span class="ansiblue">)</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    290</span> <span class="ansiblue"></span>
   <span class="ansigreen">    291</span>     <span class="ansigreen">return</span> ncalls<span class="ansiblue">,</span> function_wrapper<span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/base/model.pyc</span> in <span class="ansicyan">&lt;lambda&gt;</span><span class="ansiblue">(params, *args)</span>
   <span class="ansigreen">    401</span> <span class="ansiblue"></span>
   <span class="ansigreen">    402</span>         nobs <span class="ansiblue">=</span> self<span class="ansiblue">.</span>endog<span class="ansiblue">.</span>shape<span class="ansiblue">[</span><span class="ansicyan">0</span><span class="ansiblue">]</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 403</span><span class="ansired">         </span>f <span class="ansiblue">=</span> <span class="ansigreen">lambda</span> params<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">:</span> <span class="ansiblue">-</span>self<span class="ansiblue">.</span>loglike<span class="ansiblue">(</span>params<span class="ansiblue">,</span> <span class="ansiblue">*</span>args<span class="ansiblue">)</span> <span class="ansiblue">/</span> nobs<span class="ansiblue"></span>
   <span class="ansigreen">    404</span>         score <span class="ansiblue">=</span> <span class="ansigreen">lambda</span> params<span class="ansiblue">:</span> <span class="ansiblue">-</span>self<span class="ansiblue">.</span>score<span class="ansiblue">(</span>params<span class="ansiblue">)</span> <span class="ansiblue">/</span> nobs<span class="ansiblue"></span>
   <span class="ansigreen">    405</span>         <span class="ansigreen">try</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">loglike</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    351</span> <span class="ansiblue"></span>
   <span class="ansigreen">    352</span>         <span class="ansigreen">else</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 353</span><span class="ansired">             </span><span class="ansigreen">return</span> self<span class="ansiblue">.</span>_loglike_mle<span class="ansiblue">(</span>params<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    354</span> <span class="ansiblue"></span>
   <span class="ansigreen">    355</span>     <span class="ansigreen">def</span> score<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">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">_loglike_mle</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    301</span> <span class="ansiblue"></span>
   <span class="ansigreen">    302</span>         <span class="ansired"># get inv(Vp) Hamilton 5.3.7</span><span class="ansiblue"></span><span class="ansiblue"></span>
   <span class="ansigreen">--&gt; 303</span><span class="ansired">         </span>Vpinv <span class="ansiblue">=</span> self<span class="ansiblue">.</span>_presample_varcov<span class="ansiblue">(</span>params<span class="ansiblue">)</span><span class="ansiblue"></span>
   <span class="ansigreen">    304</span> <span class="ansiblue"></span>
   <span class="ansigreen">    305</span>         diffpVpinv <span class="ansiblue">=</span> np<span class="ansiblue">.</span>dot<span class="ansiblue">(</span>np<span class="ansiblue">.</span>dot<span class="ansiblue">(</span>diffp<span class="ansiblue">.</span>T<span class="ansiblue">,</span> Vpinv<span class="ansiblue">)</span><span class="ansiblue">,</span> diffp<span class="ansiblue">)</span><span class="ansiblue">.</span>item<span class="ansiblue">(</span><span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansigreen">/statsmodels-0.6.1/debian/python-statsmodels/usr/lib/python2.7/dist-packages/statsmodels/tsa/ar_model.pyc</span> in <span class="ansicyan">_presample_varcov</span><span class="ansiblue">(self, params)</span>
   <span class="ansigreen">    258</span>         <span class="ansigreen">for</span> i <span class="ansigreen">in</span> range<span class="ansiblue">(</span><span class="ansicyan">1</span><span class="ansiblue">,</span> p1<span class="ansiblue">)</span><span class="ansiblue">:</span><span class="ansiblue"></span>
   <span class="ansigreen">    259</span>             Vpinv[i-1, i-1:] = np.correlate(params0, params0[:i],
   <span class="ansigreen">--&gt; 260</span><span class="ansired">                                             old_behavior=False)[:-1]
   </span><span class="ansigreen">    261</span>             Vpinv[i-1, i-1:] -= np.correlate(params0[-i:], params0,
   <span class="ansigreen">    262</span>                                              old_behavior=False)[:-1]
   
   <span class="ansired">TypeError</span>: correlate() got an unexpected keyword argument &apos;old_behavior&apos;</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>This just returns a regular array, but since the model has date information attached, you can get the prediction dates in a roundabout way.</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="k">print</span><span class="p">(</span><span class="n">ar_res</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">predict_dates</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">NameError</span>                                 Traceback (most recent call last)
   <span class="ansigreen">&lt;ipython-input-290-19edfc1685b6&gt;</span> in <span class="ansicyan">&lt;module&gt;</span><span class="ansiblue">()</span>
   <span class="ansigreen">----&gt; 1</span><span class="ansired"> </span><span class="ansigreen">print</span><span class="ansiblue">(</span>ar_res<span class="ansiblue">.</span>data<span class="ansiblue">.</span>predict_dates<span class="ansiblue">)</span><span class="ansiblue"></span>
   
   <span class="ansired">NameError</span>: name &apos;ar_res&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>Note: This attribute only exists if predict has been called. It holds the dates associated with the last call to predict.</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>