Time Series analysis tsa

statsmodels.tsa contains model classes and functions that are useful for time series analysis. Basic models include univariate autoregressive models (AR), vector autoregressive models (VAR) and univariate autoregressive moving average models (ARMA). Non-linear models include Markov switching dynamic regression and autoregression. It also includes descriptive statistics for time series, for example autocorrelation, partial autocorrelation function and periodogram, as well as the corresponding theoretical properties of ARMA or related processes. It also includes methods to work with autoregressive and moving average lag-polynomials. Additionally, related statistical tests and some useful helper functions are available.

Estimation is either done by exact or conditional Maximum Likelihood or conditional least-squares, either using Kalman Filter or direct filters.

Currently, functions and classes have to be imported from the corresponding module, but the main classes will be made available in the statsmodels.tsa namespace. The module structure is within statsmodels.tsa is

  • stattools : empirical properties and tests, acf, pacf, granger-causality, adf unit root test, kpss test, bds test, ljung-box test and others.
  • ar_model : univariate autoregressive process, estimation with conditional and exact maximum likelihood and conditional least-squares
  • arima_model : univariate ARMA process, estimation with conditional and exact maximum likelihood and conditional least-squares
  • vector_ar, var : vector autoregressive process (VAR) estimation models, impulse response analysis, forecast error variance decompositions, and data visualization tools
  • kalmanf : estimation classes for ARMA and other models with exact MLE using Kalman Filter
  • arma_process : properties of arma processes with given parameters, this includes tools to convert between ARMA, MA and AR representation as well as acf, pacf, spectral density, impulse response function and similar
  • sandbox.tsa.fftarma : similar to arma_process but working in frequency domain
  • tsatools : additional helper functions, to create arrays of lagged variables, construct regressors for trend, detrend and similar.
  • filters : helper function for filtering time series
  • regime_switching : Markov switching dynamic regression and autoregression models

Some additional functions that are also useful for time series analysis are in other parts of statsmodels, for example additional statistical tests.

Some related functions are also available in matplotlib, nitime, and scikits.talkbox. Those functions are designed more for the use in signal processing where longer time series are available and work more often in the frequency domain.

Descriptive Statistics and Tests

stattools.acovf
stattools.acf
stattools.pacf
stattools.pacf_yw
stattools.pacf_ols
stattools.ccovf
stattools.ccf
stattools.periodogram
stattools.adfuller
stattools.kpss
stattools.coint
stattools.bds
stattools.q_stat
stattools.grangercausalitytests
stattools.levinson_durbin
stattools.arma_order_select_ic
x13.x13_arima_select_order(endog[, …]) Perform automatic seaonal ARIMA order identification using x12/x13 ARIMA.
x13.x13_arima_analysis(endog[, maxorder, …]) Perform x13-arima analysis for monthly or quarterly data.

Estimation

The following are the main estimation classes, which can be accessed through statsmodels.tsa.api and their result classes

Univariate Autogressive Processes (AR)

ar_model.AR
ar_model.ARResults

Autogressive Moving-Average Processes (ARMA) and Kalman Filter

arima_model.ARMA
arima_model.ARMAResults
arima_model.ARIMA
arima_model.ARIMAResults
kalmanf.kalmanfilter.KalmanFilter

Exponential Smoothing

holtwinters.ExponentialSmoothing(endog[, …]) Holt Winter’s Exponential Smoothing
holtwinters.SimpleExpSmoothing(endog) Simple Exponential Smoothing wrapper(…)
holtwinters.Holt(endog[, exponential, damped]) Holt’s Exponential Smoothing wrapper(…)
holtwinters.HoltWintersResults(model, …) Holt Winter’s Exponential Smoothing Results

Vector Autogressive Processes (VAR)

vector_ar.var_model.VAR(endog[, exog, …]) Fit VAR(p) process and do lag order selection
vector_ar.var_model.VARResults(endog, …[, …]) Estimate VAR(p) process with fixed number of lags
vector_ar.dynamic.DynamicVAR(data[, …]) Estimates time-varying vector autoregression (VAR(p)) using equation-by-equation least squares

See also

tutorial VAR documentation

Vector Autogressive Processes (VAR)

Besides estimation, several process properties and additional results after estimation are available for vector autoregressive processes.

vector_ar.var_model.LagOrderResults(ics, …) Results class for choosing a model’s lag order.
vector_ar.var_model.VAR(endog[, exog, …]) Fit VAR(p) process and do lag order selection
vector_ar.var_model.VARProcess(coefs, …[, …]) Class represents a known VAR(p) process
vector_ar.var_model.VARResults(endog, …[, …]) Estimate VAR(p) process with fixed number of lags
vector_ar.irf.IRAnalysis(model[, P, …]) Impulse response analysis class.
vector_ar.var_model.FEVD(model[, P, periods]) Compute and plot Forecast error variance decomposition and asymptotic standard errors
vector_ar.hypothesis_test_results.HypothesisTestResults(…) Results class for hypothesis tests.
vector_ar.hypothesis_test_results.CausalityTestResults(…) Results class for Granger-causality and instantaneous causality.
vector_ar.hypothesis_test_results.NormalityTestResults(…) Results class for the Jarque-Bera-test for nonnormality.
vector_ar.hypothesis_test_results.WhitenessTestResults(…) Results class for the Portmanteau-test for residual autocorrelation.
vector_ar.dynamic.DynamicVAR(data[, …]) Estimates time-varying vector autoregression (VAR(p)) using equation-by-equation least squares

See also

tutorial VAR documentation

Vector Error Correction Models (VECM)

vector_ar.vecm.select_order(data, maxlags[, …]) Compute lag order selections based on each of the available information criteria.
vector_ar.vecm.select_coint_rank(endog, …) Calculate the cointegration rank of a VECM.
vector_ar.vecm.CointRankResults(rank, neqs, …) A class for holding the results from testing the cointegration rank.
vector_ar.vecm.VECM(endog[, exog, …]) Class representing a Vector Error Correction Model (VECM).
vector_ar.vecm.VECMResults(endog, exog, …) Class for holding estimation related results of a vector error correction model (VECM).
vector_ar.vecm.coint_johansen(endog, …) Perform the Johansen cointegration test for determining the cointegration rank of a VECM.

Regime switching models

regime_switching.markov_regression.MarkovRegression
regime_switching.markov_autoregression.MarkovAutoregression

ARMA Process

The following are tools to work with the theoretical properties of an ARMA process for given lag-polynomials.

arima_process.ArmaProcess([ar, ma, nobs]) Theoretical properties of an ARMA process for specified lag-polynomials
arima_process.ar2arma(ar_des, p, q[, n, …]) Find arma approximation to ar process
arima_process.arma2ar(ar, ma[, lags]) Get the AR representation of an ARMA process
arima_process.arma2ma(ar, ma[, lags]) Get the MA representation of an ARMA process
arima_process.arma_acf(ar, ma[, lags]) Theoretical autocorrelation function of an ARMA process
arima_process.arma_acovf(ar, ma[, nobs]) Theoretical autocovariance function of ARMA process
arima_process.arma_generate_sample(ar, ma, …) Generate a random sample of an ARMA process
arima_process.arma_impulse_response(ar, ma) Get the impulse response function (MA representation) for ARMA process
arima_process.arma_pacf(ar, ma[, lags]) Partial autocorrelation function of an ARMA process
arima_process.arma_periodogram(ar, ma[, …]) Periodogram for ARMA process given by lag-polynomials ar and ma
arima_process.deconvolve(num, den[, n]) Deconvolves divisor out of signal, division of polynomials for n terms
arima_process.index2lpol(coeffs, index) Expand coefficients to lag poly
arima_process.lpol2index(ar) Remove zeros from lag polynomial
arima_process.lpol_fiar(d[, n]) AR representation of fractional integration
arima_process.lpol_fima(d[, n]) MA representation of fractional integration
arima_process.lpol_sdiff(s) return coefficients for seasonal difference (1-L^s)
sandbox.tsa.fftarma.ArmaFft

Time Series Filters

filters.bk_filter.bkfilter(X[, low, high, K]) Baxter-King bandpass filter
filters.hp_filter.hpfilter(X[, lamb]) Hodrick-Prescott filter
filters.cf_filter.cffilter(X[, low, high, drift]) Christiano Fitzgerald asymmetric, random walk filter
filters.filtertools.convolution_filter(x, filt) Linear filtering via convolution.
filters.filtertools.recursive_filter(x, ar_coeff) Autoregressive, or recursive, filtering.
filters.filtertools.miso_lfilter(ar, ma, x) use nd convolution to merge inputs, then use lfilter to produce output
filters.filtertools.fftconvolve3(in1[, in2, …]) Convolve two N-dimensional arrays using FFT.
filters.filtertools.fftconvolveinv(in1, in2) Convolve two N-dimensional arrays using FFT.
seasonal.seasonal_decompose(x[, model, …]) Seasonal decomposition using moving averages

TSA Tools

tsatools.add_trend(x[, trend, prepend, …]) Adds a trend and/or constant to an array.
tsatools.detrend(x[, order, axis]) Detrend an array with a trend of given order along axis 0 or 1
tsatools.lagmat(x, maxlag[, trim, original, …]) Create 2d array of lags
tsatools.lagmat2ds(x, maxlag0[, maxlagex, …]) Generate lagmatrix for 2d array, columns arranged by variables

VARMA Process

varma_process.VarmaPoly(ar[, ma]) class to keep track of Varma polynomial format

Interpolation

interp.denton.dentonm(indicator, benchmark) Modified Denton’s method to convert low-frequency to high-frequency data.