[go: up one dir, main page]

Skip to content

Econometric Analysis of Explosive Time Series

License

GPL-3.0, GPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
GPL-3.0
LICENSE.md
Notifications You must be signed in to change notification settings

kvasilopoulos/exuber

exuber

CRAN_Status_Badge Project Status: Active – The project has reached a stable, usable state and is being actively developed. Lifecycle: stable R build status codecov

Testing for and dating periods of explosive dynamics (exuberance) in time series using the univariate and panel recursive unit root tests proposed by Phillips et al. (2015) and Pavlidis et al. (2016). The recursive least-squares algorithm utilizes the matrix inversion lemma to avoid matrix inversion which results in significant speed improvements. Simulation of a variety of periodically-collapsing bubble processes.

Overview

Testing for explosive dynamics is comprised of two distinct parts :

  • Estimation
  • Critical Values

Some Context: Conventional testing techniques compute critical values,and p-values from a standard distribution, where the user does not need to specify critical values explicitly. However, the recent literature in explosive dynamics require the use of non-standard distributions, which require the use of techniques that sample empirical distributions in order to calculate the critical values.

Estimation

The cornerstone function of the package is:

  • radf(): Recursive Augmented Dickey-Fuller Test.

This function offers a vectorized estimation (i.e. single and/or multiple time-series) for individual and panel estimation. The estimation can parse data from multiple classes and handle dates as index.

Critical Values

There are several options for generating critical values:

  • radf_mc_cv(): Monte Carlo
  • radf_wb_cv(): Wild Bootstrap
  • radf_sb_cv(): Sieve Bootstrap (Panel)

On default exuber will use Monte Carlo simulated critical values if no other option is provided. The package offers these critical values in the form of data (up to 600 observations), that are obtained with the mc_cv() function.

Analysis

For the analysis you should include both the output from estimation (object) and critical values (cv). The below methods break the process into small simple steps:

  • summary() summarizes the model.
  • diagnostics() shows which series reject the null hypothesis .
  • datestamp() computes the origination, termination and duration of episodes (if any).

These combined provide a comprehensive analysis on the exuberant behavior of the model.

Installation

# Install release version from CRAN
install.packages("exuber")

You can install the development version of exuber from GitHub.

# install.packages("devtools")
devtools::install_github("kvasilopoulos/exuber")

If you encounter a clear bug, please file a reproducible example on GitHub.

Usage

library(exuber)

rsim_data <- radf(sim_data)

summary(rsim_data)
#> Using `radf_crit` for `cv`.
#> 
#> -- Summary (minw = 19, lag = 0) ------------------- Monte Carlo (nrep = 2000) --
#> 
#> psy1 :
#> # A tibble: 3 x 5
#>   stat  tstat   `90`    `95`  `99`
#>   <fct> <dbl>  <dbl>   <dbl> <dbl>
#> 1 adf   -2.46 -0.413 -0.0812 0.652
#> 2 sadf   1.95  0.988  1.29   1.92 
#> 3 gsadf  5.19  1.71   1.97   2.57 
#> 
#> psy2 :
#> # A tibble: 3 x 5
#>   stat  tstat   `90`    `95`  `99`
#>   <fct> <dbl>  <dbl>   <dbl> <dbl>
#> 1 adf   -2.86 -0.413 -0.0812 0.652
#> 2 sadf   7.88  0.988  1.29   1.92 
#> 3 gsadf  7.88  1.71   1.97   2.57 
#> 
#> evans :
#> # A tibble: 3 x 5
#>   stat  tstat   `90`    `95`  `99`
#>   <fct> <dbl>  <dbl>   <dbl> <dbl>
#> 1 adf   -5.83 -0.413 -0.0812 0.652
#> 2 sadf   5.28  0.988  1.29   1.92 
#> 3 gsadf  5.99  1.71   1.97   2.57 
#> 
#> div :
#> # A tibble: 3 x 5
#>   stat  tstat   `90`    `95`  `99`
#>   <fct> <dbl>  <dbl>   <dbl> <dbl>
#> 1 adf   -1.95 -0.413 -0.0812 0.652
#> 2 sadf   1.11  0.988  1.29   1.92 
#> 3 gsadf  1.34  1.71   1.97   2.57 
#> 
#> blan :
#> # A tibble: 3 x 5
#>   stat  tstat   `90`    `95`  `99`
#>   <fct> <dbl>  <dbl>   <dbl> <dbl>
#> 1 adf   -5.15 -0.413 -0.0812 0.652
#> 2 sadf   3.93  0.988  1.29   1.92 
#> 3 gsadf 11.0   1.71   1.97   2.57

diagnostics(rsim_data)
#> Using `radf_crit` for `cv`.
#> 
#> -- Diagnostics (option = gsadf) --------------------------------- Monte Carlo --
#> 
#> psy1:     Rejects H0 at the 1% significance level
#> psy2:     Rejects H0 at the 1% significance level
#> evans:    Rejects H0 at the 1% significance level
#> div:      Cannot reject H0 
#> blan:     Rejects H0 at the 1% significance level

datestamp(rsim_data)
#> Using `radf_crit` for `cv`.
#> 
#> -- Datestamp (min_duration = 0) --------------------------------- Monte Carlo --
#> 
#> psy1 :
#>   Start Peak End Duration   Signal Ongoing
#> 1    44   48  56       12 positive   FALSE
#> 
#> psy2 :
#>   Start Peak End Duration   Signal Ongoing
#> 1    22   40  41       19 positive   FALSE
#> 2    62   70  71        9 positive   FALSE
#> 
#> evans :
#>   Start Peak End Duration   Signal Ongoing
#> 1    20   20  21        1 positive   FALSE
#> 2    44   44  45        1 positive   FALSE
#> 3    66   67  68        2 positive   FALSE
#> 
#> blan :
#>   Start Peak End Duration   Signal Ongoing
#> 1    34   36  37        3 positive   FALSE
#> 2    84   86  87        3 positive   FALSE

autoplot(rsim_data)
#> Using `radf_crit` for `cv`.


Please note that the ‘exuber’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.