Maintainer: | Rob J Hyndman, Rebecca Killick |
Contact: | Rob.Hyndman at monash.edu |
Version: | 2024-10-30 |
URL: | https://CRAN.R-project.org/view=TimeSeries |
Source: | https://github.com/cran-task-views/TimeSeries/ |
Contributions: | Suggestions and improvements for this task view are very welcome and can be made through issues or pull requests on GitHub or via e-mail to the maintainer address. For further details see the Contributing guide. |
Citation: | Rob J Hyndman, Rebecca Killick (2024). CRAN Task View: Time Series Analysis. Version 2024-10-30. URL https://CRAN.R-project.org/view=TimeSeries. |
Installation: | The packages from this task view can be installed automatically using the ctv package. For example, ctv::install.views("TimeSeries", coreOnly = TRUE) installs all the core packages or ctv::update.views("TimeSeries") installs all packages that are not yet installed and up-to-date. See the CRAN Task View Initiative for more details. |
Base R ships with a lot of functionality useful for time series, in particular in the stats package. This is complemented by many packages on CRAN, which are briefly summarized below. There is overlap between the tools for time series and those designed for specific domains including Econometrics, Finance and Environmetrics.
The packages in this view can be roughly structured into the following topics. If you think that some package is missing from the list, please let us know, either via e-mail to the maintainer or by submitting an issue or pull request in the GitHub repository linked above.
"ts"
that can represent regularly spaced time series (using numeric time stamps). Hence, it is particularly well-suited for annual, monthly, quarterly data, etc.ma
from forecast, and rollmean
from zoo. The latter also provides a general function rollapply
, along with other specific rolling statistics functions. slider calculates a diverse and comprehensive set of type-stable running functions for any R data types. tsibble provides slide_tsibble()
for rolling statistics, tile_tsibble()
for non-overlapping sliding windows, and stretch_tsibble()
for expanding windows. tbrf provides rolling functions based on date and time windows instead of n-lagged observations. roll provides parallel functions for computing rolling statistics. runner provides tools for running any R function in rolling windows or date windows. runstats provides fast computational methods for some running sample statistics. For data.table, froll()
can be used for high-performance rolling statistics.plot()
applied to ts
objects. (Partial) autocorrelation functions plots are implemented in acf()
and pacf()
. Alternative versions are provided by Acf()
and Pacf()
in forecast, along with a combination display using tsdisplay()
. Seasonal displays are obtained using monthplot()
in stats, seasonplot
in forecast, and seasplot
in tsutils. feasts provides various time series graphics for tsibble objects including time plots, season plots, subseries plots, ACF and PACF plots, and some combination displays. Interactive graphics for tsibbles using htmlwidgets are provided by tsibbletalk. dCovTS computes and plots the distance covariance and correlation functions of time series. ggseas provides additional ggplot2 graphics for seasonally adjusted series and rolling statistics. Calendar plots are implemented in sugrrants. gravitas allows for visualizing probability distributions conditional on bivariate temporal granularities. dygraphs provides an interface to the Dygraphs interactive time series charting library. TSstudio provides some interactive visualization tools for time series. ZRA plots forecast objects from the forecast package using dygraphs. Basic fan plots of forecast distributions are provided by forecast and vars. More flexible fan plots of any sequential distributions are implemented in fanplot."ts"
can only deal with numeric time stamps, but many more classes are available for storing time/date information and computing with it. For an overview see R Help Desk: Date and Time Classes in R by Gabor Grothendieck and Thomas Petzoldt in R News 4(1), 29-32."yearmon"
and "yearqtr"
from zoo allow for more convenient computation with monthly and quarterly observations, respectively."Date"
from the base package is the basic class for dealing with dates in daily data. The dates are internally stored as the number of days since 1970-01-01.dates()
, hours()
and date/time (intraday) in chron()
. There is no support for time zones and daylight savings time. Internally, "chron"
objects are (fractional) days since 1970-01-01."POSIXct"
and "POSIXlt"
implement the POSIX standard for date/time (intraday) information and also support time zones and daylight savings time. However, the time zone computations require some care and might be system-dependent. Internally, "POSIXct"
objects are the number of seconds since 1970-01-01 00:00:00 GMT. Package lubridate provides functions that facilitate certain POSIX-based computations, while clock provides a comprehensive library for date-time manipulations using a new family of orthogonal date-time classes (durations, time points, zoned-times, and calendars). A general purpose date/time converter is provided by timeless (archived), while anytime converts various inputs into POSIXct
or Date
objects. Various recurrent calendar calculations are possibly using almanac. timechange allows for efficient manipulation of date-times accounting for time zones and daylight saving times. wktmo converts weekly data to monthly data in several ways."timeDate"
is provided in the timeDate package (previously: fCalendar). It is aimed at financial time/date information and deals with time zones and daylight savings times via a new concept of “financial centers”. Internally, it stores all information in "POSIXct"
and does all computations in GMT only. Calendar functionality, e.g., including information about weekends and holidays for various stock exchanges, is also included. qlcal allows access to various financial exchange calendars via QuantLib."ti"
class for time/date information."mondate"
class from the mondate package facilitates computing with dates in terms of months."ts"
is the basic class for regularly spaced time series using numeric time stamps."ts"
.shift()
for lead/lag operations. Further basic time series functionalities are offered by DTSg which is based on data.table. dtts provides high-frequency time series support via nanotime and data.table."POSIXct"
time stamps, intended especially for financial applications. These include "irts"
from tseries."timeSeries"
in timeSeries (previously: fSeries) implements time series with "timeDate"
time stamps."tis"
in tis implements time series with "ti"
time stamps.ts
objects to PostgreSQL relations.tsibble
format. fabletools provides tools for extending the fable framework.ts
objects, while modeltime provides time series forecasting tools for use with the ‘tidymodels’ ecosystem. Forecast resampling tools for use with modeltime
are provided by modeltime.resample.HoltWinters()
in stats provides some basic models with partial optimization, ETS()
from fable and ets()
from forecast provide a larger set of models and facilities with full optimization. smooth implements some generalizations of exponential smoothing. legion implements multivariate versions of exponential smoothing. The MAPA package combines exponential smoothing models at different levels of temporal aggregation to improve forecast accuracy. Some Bayesian extensions of exponential smoothing are contained in Rlgt.THETA()
function from fable, thetaf()
function from forecast, and theta()
from tsutils. An alternative and extended implementation is provided in forecTheta.ar()
in stats (with model selection).arima()
in stats is the basic function for ARIMA, SARIMA, RegARIMA, and subset ARIMA models. It is enhanced in the fable package via the ARIMA()
function which allows for automatic modelling. Similar functionality is provided in the forecast package via the auto.arima()
function. arma()
in the tseries package provides different algorithms for ARMA and subset ARMA models. arima2 provides a random-restart estimation algorithm to replace stats::arima()
. Other estimation methods including the innovations algorithm are provided by itsmr. Package gsarima contains functionality for Generalized SARIMA time series simulation. bayesforecast fits Bayesian time series models including seasonal ARIMA and ARIMAX models. BayesARIMAX implements Bayesian estimation of ARIMAX models. Robust ARIMA modeling is provided in the robustarima package. The mar1s package handles multiplicative AR(1) with seasonal processes. TSTutorial provides an interactive tutorial for Box-Jenkins modelling. Improved prediction intervals for ARIMA and structural time series models are provided by tsPI. ARIMA models with multiple seasonal periods can be handled with tfarima and smooth.arfima
function in the arfima and the tfarima packages.StructTS()
in stats, while automatic modelling and forecasting are provided by UComp and autostsm. statespacer implements univariate state space models including structural and SARIMA models. Bayesian structural time series models are implemented in bsts Robust Kalman filtering is provided by RobKF.garch()
from tseries fits basic GARCH models. Many variations on GARCH models are provided by rugarch and tsgarch. Other univariate GARCH packages include fGarch which implements ARIMA models with a wide class of GARCH innovations. bayesforecast fits Bayesian time series models including several variations of GARCH models. There are many more GARCH packages described in the Finance task view.Box.test()
in the stats package. Additional tests are given by portes, WeightedPortTest, and testcorr .tsoutliers
and tsclean
functions in the forecast package provide some simple heuristic methods for identifying and correcting outliers. tsrobprep provides methods for replacing missing values and outliers using a model-based approach. ctbi implements a procedure to clean, decompose and aggregate time series.Fpsn()
which implements a “Functional pruning segment neighborhood” dynamic programming algorithm (univariate data, square loss, computes best model for a certain number of changes/segments). fpop provides Fpop()
which implements a “Functional pruning optimal partitioning” dynamic programming algorithm (univariate data, square loss, computes best model for a certain penalty for each change), as well as multiBinSeg()
which is an efficient implementation of the popular binary segmentation heuristic (multi-variate data, Gaussian loss, computes sequence of models from 1 segment to a given max number of segments). A tidy framework for several changepoint detection algorithms is implemented in tidychangepoint.na.interp()
from the forecast package. imputeTestbench provides tools for testing and comparing imputation methods. mtsdi implements an EM algorithm for imputing missing values in multivariate normal time series, accounting for spatial and temporal correlations. Imputation methods for multivariate locally stationary time series are in mvLSWimpute.accuracy()
function from the fable and forecast packages. Distributional forecast evaluation using scoring rules is available in fable, scoringRules and scoringutils. The Diebold-Mariano test for comparing the forecast accuracy of two models is implemented in the dm.test()
function in forecast. ForeComp generates a size-power tradeoff plot for a given Diebold-Mariano test. A multivariate version of the Diebold-Mariano test is provided by multDM. tsutils implements the Nemenyi test for comparing forecasts. greybox provides ro()
for general rolling origin evaluation of forecasts. tstests implements several tests for time series goodness of fit and forecast evaluation.spectrum()
in the stats package, including the periodogram, smoothed periodogram and AR estimates. Bayesian spectral inference is provided by bspec, beyondWhittle and regspec. quantspec includes methods to compute and plot Laplace periodograms for univariate time series. The Lomb-Scargle periodogram for unevenly sampled time series is computed by lomb. peacots provides inference for periodograms using an Ornstein-Uhlenbeck state space model. spectral uses Fourier and Hilbert transforms for spectral filtering. psd produces adaptive, sine-multitaper spectral density estimates. kza provides Kolmogorov-Zurbenko Adaptive Filters including break detection, spectral analysis, wavelets and KZ Fourier Transforms. multitaper also provides some multitaper spectral analysis tools. Higher-order spectral analysis is implemented in rhosa, including bispectrum, bicoherence, cross-bispectrum and cross-bicoherence.fourier
function.filter()
in stats provides autoregressive and moving average linear filtering of multiple univariate time series. The robfilter package provides several robust time series filters. smooth()
from the stats package computes Tukey’s running median smoothers, 3RS3R, 3RSS, 3R, etc. sleekts computes the 4253H twice smoothing method. mFilter implements several filters for smoothing and extracting trend and cyclical components including Hodrick-Prescott and Butterworth filters. Several filters are provided by signal including a Butterworth filter and a Savitsky-Golay filter. hpfilter implements one- and two-sided Hodrick-Prescott filters. smoots provides nonparametric estimation of the time trend and its derivatives.decompose()
, and STL decomposition in stl()
. Enhanced STL decomposition is available in stlplus. stR provides Seasonal-Trend decomposition based on Regression. smooth and tsutils implement extended versions of classical decomposition.ar()
in the basic stats package including order selection via the AIC. These models are restricted to be stationary. MTS is an all-purpose toolkit for analysing multivariate time series including VAR, VARMA, seasonal VARMA, VAR models with exogenous variables, multivariate regression with time series errors, and much more. Possibly non-stationary VAR models are fitted in the mAr package, which also allows VAR models in principal component space. Fractionally cointegrated VAR models are handled by FCVAR. sparsevar allows estimation of sparse VAR and VECM models, bigtime estimates large sparse VAR, VARX and VARMA models, while BigVAR estimates VAR and VARX models with structured lasso penalties and svars implements data-driven structural VARs. sstvars provides a toolkit for reduced form and structural smooth transition VARs. Shrinkage estimation methods for VARs are implemented in VARshrink. More elaborate models are provided in package vars and tsDyn. Another implementation with bootstrapped prediction intervals is given in VAR.etp. bvartools assists in the set-up of Bayesian VAR models, while BVAR and bayesianVARs provide toolkits for hierarchical Bayesian VAR models. bsvars, bsvarSIGNs, and bvarsv include efficient algorithms for estimating Bayesian Structural VAR models. BMTAR and mtarm implement Bayesian Multivariate Threshold AR models. Factor-augmented VAR (FAVAR) models are estimated by a Bayesian method with FAVAR. BGVAR implements Bayesian Global VAR models. mlVAR provides multi-level vector autoregression. gmvarkit estimates Gaussian mixture VAR models. GNAR provides methods for fitting network AR models, while graphicalVAR and tsnet both estimate graphical VAR models. gdpc implements generalized dynamic principal components. pcdpca extends dynamic principal components to periodically correlated multivariate time series. mgm estimates time-varying mixed graphical models and mixed VAR models via regularized regression. nets provides estimation of sparse VARs using long run partial correlation networks for time series data. Factor-adjusted VARs using network estimation and forecasting for high-dimensional time series is implemented in fnets.tsibble
format. They are computed using tsfeatures for a list or matrix of time series in ts
format. In both packages, many built-in feature functions are included, and users can add their own. Rcatch22 provides fast computation of 22 features identified as particularly useful. theft calculates time series features from various R and Python packages, while theftdlc is a companion package providing analysis and visualization functions. Feature extraction for ordinal time series is provided by otsfeatures.tsboot()
for time series bootstrapping, including block bootstrap with several variants. blocklength allows for selecting the optimal block-length for a dependent bootstrap. tsbootstrap()
from tseries provides fast stationary and block bootstrapping. Maximum entropy bootstrap for time series is available in meboot. BootPR computes bias-corrected forecasting and bootstrap prediction intervals for autoregressive time series. bootUR implements bootstrap unit root tests.simulate()
in forecast package or generate()
in fable, given a specific model. gratis generates new time series with diverse and controllable characteristics using mixture autoregression models. synthesis generates synthetic time series from commonly used statistical models, including linear, nonlinear and chaotic systems. tssim flexibly simulates daily or monthly time series using seasonal, calendar, and outlier components.