Skip to content

Commit

Permalink
ENH: Add VARMAX example notebook stub.
Browse files Browse the repository at this point in the history
  • Loading branch information
ChadFulton committed Sep 9, 2015
1 parent 1c56d5f commit 24afab2
Showing 1 changed file with 140 additions and 0 deletions.
140 changes: 140 additions & 0 deletions examples/notebooks/statespace_varmax.ipynb
@@ -0,0 +1,140 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# VARMAX models\n",
"\n",
"This is a notebook stub for VARMAX models. Full development will be done after impulse response functions are available."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dta = sm.datasets.webuse('lutkepohl2', 'http://www.stata-press.com/data/r12/')\n",
"dta.index = dta.qtr\n",
"endog = dta.ix['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc', 'dln_consump']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model specification\n",
"\n",
"The `VARMAX` class in Statsmodels allows estimation of VAR, VMA, and VARMA models (through the `order` argument), optionally with a constant term (via the `trend` argument). Exogenous regressors may also be included (as usual in Statsmodels, by the `exog` argument), and in this way a time trend may be added. Finally, the class allows measurement error (via the `measurement_error` argument) and allows specifying either a diagonal or unstructured innovation covariance matrix (via the `error_cov_type` argument)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 1: VAR\n",
"\n",
"Below is a simple VARX(2) model in two endogenous variables and an exogenous series, but no constant term. Notice that we needed to allow for more iterations than the default (which is `maxiter=50`) in order for the likelihood estimation to converge. This is not unusual in VAR models which have to estimate a large number of parameters, often on a relatively small number of time series: this model, for example, estimates 27 parameters off of 75 observations of 3 variables."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# exog = pd.Series(np.arange(len(endog)), index=endog.index, name='trend')\n",
"exog = endog['dln_consump']\n",
"mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(2,0), trend='nc', exog=exog)\n",
"res = mod.fit(maxiter=1000)\n",
"print res.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 2: VMA\n",
"\n",
"A vector moving average model can also be formulated. Below we show a VMA(2) on the same data, but where the innovations to the process are uncorrelated. In this example we leave out the exogenous regressor but now include the constant term."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(0,2), error_cov_type='diagonal')\n",
"res = mod.fit(maxiter=1000)\n",
"print res.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Caution: VARMA(p,q) specifications\n",
"\n",
"Although the model allows estimating VARMA(p,q) specifications, these models are not identified without additional restrictions on the representation matrices, which are not built-in. For this reason, it is recommended that the user proceed with error (and indeed a warning is issued when these models are specified). Nonetheless, they may in some circumstances provide useful information."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(1,1))\n",
"res = mod.fit(maxiter=1000)\n",
"print res.summary()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

0 comments on commit 24afab2

Please sign in to comment.