{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dates in timeseries models" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function\n", "import statsmodels.api as sm\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting started" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data = sm.datasets.sunspots.load()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Right now an annual date series must be datetimes at the end of the year." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from datetime import datetime\n", "dates = sm.tsa.datetools.dates_from_range('1700', length=len(data.endog))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using Pandas\n", "\n", "Make a pandas TimeSeries or DataFrame" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "endog = pd.Series(data.endog, index=dates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instantiate the model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ar_model = sm.tsa.AR(endog, freq='A')\n", "pandas_ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Out-of-sample prediction" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "pred = pandas_ar_res.predict(start='2005', end='2015')\n", "print(pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using explicit dates" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ar_model = sm.tsa.AR(data.endog, dates=dates, freq='A')\n", "ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1)\n", "pred = ar_res.predict(start='2005', end='2015')\n", "print(pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This just returns a regular array, but since the model has date information attached, you can get the prediction dates in a roundabout way." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "print(ar_res.data.predict_dates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note: This attribute only exists if predict has been called. It holds the dates associated with the last call to predict." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }