# gmwm

# Project Details

**Project Title**: Generalized Method of Wavelet Moments (GMWM)

**Project URL**: http://cran.r-project.org/web/packages/gmwm/

**Code Repository**: https://github.com/SMAC-Group/gmwm

**Project Version**: 2.1.0

**Project Status**: Active

**Project Description**: Generalized Method of Wavelet Moments (GMWM) is an estimation technique for the parameters of time series models. It uses the wavelet variance in a moment matching approach that makes it particularly suitable for the estimation of certain state-space models. Furthermore, there exists a robust implementation of GMWM, which allows the robust estimation of some state-space models and ARIMA models. Lastly, the package provides the ability to quickly generate time series data, perform different wavelet decompositions, and visualizations.

**Supplementary Data Package**: https://github.com/SMAC-Group/imudata
Contains real world Inertial Measurement Unit (IMU) data of a stationary sensor.

**Supplementary Data Package**: https://github.com/SMAC-Group/smacdata houses multiple example datasets used in publications and papers from
different fields.

# Features

## Highlights

- High performing C++ routines to calculate wavelet variance, GMWM estimator, and more!
- Inference and Model Selection for the GMWM estimator,.
- Straightforward model specification of state-space model (or latent time series models) via natural inputs.
- Graphical features that enable the exploration of the Wavelet Variance and GMWM Estimation results.

## Generalized Method of Wavelet Moments (GMWM)

- Efficient implementation of GMWM estimation techniques for ARMA and state-space models.
- Obtain results for time series with over two million observations in under 1.5 seconds!
- Effortlessly obtain initial starting values with a new grid search algorithm or use your own.
- Switch between different weighting matrices (e.g.
`approx`

,`bootstrap`

,`asymptotic`

)

## Decomposition Methods

- The decomposition of process is available in three different C++ functions.
- Discrete Wavelet Transform (DWT)
- Maximal Overlap Discrete Wavelet Transform (MODWT)
- Allan Variance (AVAR)

- Support for the following Daubechies wavelets:
- d2 - Haar filter

- Extendable filter collection
- Support a pull request to add a new filter!

## Wavelet Variance

- Calculate the Wavelet Variance for a set of data underneath the Haar wavelet filter with either robust or classical techniques.
- Visualize the Wavelet Variance with
`plot(wvar(x))`

- Compare the results of wavelet variances using
`compare.wvar()`

## Time Series Processed Model Syntax

- New model syntax that enables users to quickly specify models via
`ts.model`

S3 object. - Specify models with initial starting parameters or let the built in grid search algorithm guess initial parameter values.
`AR1()`

creates an AR1 modeling component with the program set to guess initial values.`AR1(phi = .3, sigma2 = 1)`

creates an AR1 modeling component with user supplied initial values.

- Support exists for:
- Autoregressive order 1 (
`AR1(phi,sigma2)`

) - Normal White Noise (
`WN(sigma2)`

) - Random Walk (
`RW(sigma2)`

) - Quantization Noise (
`QN(q2)`

) - Moving Averages of order Q (
`MA(q)`

) - Autoregressive of order P (
`AR(p)`

) - Autoregressive - Moving Averages of orders P,Q (
`ARMA(p,q,sigma2)`

)

- Autoregressive order 1 (
- Chain different processes together through the use of the plus operator
- E.g.
`mod = AR1() + WN()`

or `mod = AR1(phi = .9, sigma2 = 1) + WN(sigma2 = .1)

- E.g.
- Repeat processes through the use of the times operator
- E.g.
`mod = 3*AR1()`

- E.g.

## Process Generation

- Computationally sound algorithms for generating:
- Autoregressive - moving averages (
`ARMA`

) - Autoregressive processes of Order 1, P (
`AR1`

or`AR`

) - Moving Averages of Order Q (
`MA`

) - Normal White Noise (
`WN`

) - Random Walk (
`RW`

) - Quantization Noise (
`QN`

)

- Autoregressive - moving averages (
- Quick generation of latent processes via
`gen.gts(model, N)`

## Latent Time Series Demonstration

- See how different time series processes combine together via
`demo.lts()`

.