bounds_t_test: Bounds t-test for no cointegration

View source: R/bounds_test.R

bounds_t_testR Documentation

Bounds t-test for no cointegration

Description

bounds_t_test performs the t-bounds test for no cointegration Pesaran et al. (2001). It is a t-test on the parameters of a UECM (Unrestricted Error Correction Model).

Usage

bounds_t_test(
  object,
  case,
  alpha = NULL,
  pvalue = TRUE,
  exact = FALSE,
  R = 40000,
  vcov_matrix = NULL
)

Arguments

object

An object of class 'ardl' or 'uecm'.

case

An integer (1, 3 or 5) or a character string specifying whether the 'intercept' and/or the 'trend' have to participate in the short-run relationship (see section 'Cases' below). Note that the t-bounds test can't be applied for cases 2 and 4.

alpha

A numeric value between 0 and 1 indicating the significance level of the critical value bounds. If NULL (default), no critical value bounds for a specific level of significance are provide, only the p-value. See section 'alpha, bounds and p-value' below for details.

pvalue

A logical indicating whether you want the p-value to be provided. The default is TRUE. See section 'alpha, bounds and p-value' below for details.

exact

A logical indicating whether you want asymptotic (T = 1000) or exact sample size critical value bounds and p-value. The default is FALSE for asymptotic. See section 'alpha, bounds and p-value' below for details.

R

An integer indicating how many iterations will be used if exact = TRUE. Default is 40000.

vcov_matrix

The estimated covariance matrix of the random variable that the test uses to estimate the test statistic. The default is vcov(object) (when vcov_matrix = NULL), but other estimations of the covariance matrix of the regression's estimated coefficients can also be used (e.g., using vcovHC or vcovHAC). Only applicable if the input object is of class "uecm".

Value

A list with class "htest" containing the following components:

method

a character string indicating what type of test was performed.

alternative

a character string describing the alternative hypothesis.

statistic

the value of the test statistic.

null.value

the value of the population parameters k (the number of independent variables) and T (the number of observations) specified by the null hypothesis.

data.name

a character string giving the name(s) of the data.

parameters

numeric vector containing the critical value bounds.

p.value

the p-value of the test.

PSS2001parameters

numeric vector containing the critical value bounds as presented by Pesaran et al. (2001). See section 'alpha, bounds and p-value' below for details.

tab

data.frame containing the statistic, the critical value bounds, the alpha level of significance and the p-value.

Hypothesis testing

\Delta y_{t} = c_{0} + c_{1}t + \pi_{y}y_{t-1} + \sum_{j=1}^{k}\pi_{j}x_{j,t-1} + \sum_{i=1}^{p-1}\psi_{y,i}\Delta y_{t-i} + \sum_{j=1}^{k}\sum_{l=1}^{q_{j}-1} \psi_{j,l}\Delta x_{j,t-l} + \sum_{j=1}^{k}\omega_{j}\Delta x_{j,t} + \epsilon_{t}

\mathbf{H_{0}:} \pi_{y} = 0

\mathbf{H_{1}:} \pi_{y} \neq 0

alpha, bounds and p-value

In this section it is explained how the critical value bounds and p-values are obtained.

  • If exact = FALSE, then the asymptotic (T = 1000) critical value bounds and p-value are provided.

  • Only the asymptotic critical value bounds and p-values, and only for k <= 10 are precalculated, everything else has to be computed.

  • Precalculated critical value bounds and p-values were simulated using set.seed(2020) and R = 70000.

  • Precalculated critical value bounds exist only for alpha being one of the 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.15 or 0.2, everything else has to be computed.

  • If alpha is one of the 0.1, 0.05, 0.025 or 0.01 (and exact = FALSE and k <= 10), PSS2001parameters shows the critical value bounds presented in Pesaran et al. (2001) (less precise).

Cases

According to Pesaran et al. (2001), we distinguish the long-run relationship (cointegrating equation) (and thus the bounds-test and the Restricted ECMs) between 5 different cases. These differ in terms of whether the 'intercept' and/or the 'trend' are restricted to participate in the long-run relationship or they are unrestricted and so they participate in the short-run relationship.

Case 1:
  • No intercept and no trend.

  • case inputs: 1 or "n" where "n" stands for none.

Case 2:
  • Restricted intercept and no trend.

  • case inputs: 2 or "rc" where "rc" stands for restricted constant.

Case 3:
  • Unrestricted intercept and no trend.

  • case inputs: 3 or "uc" where "uc" stands for unrestricted constant.

Case 4:
  • Unrestricted intercept and restricted trend.

  • case inputs: 4 or "ucrt" where "ucrt" stands for unrestricted constant and restricted trend.

Case 5:
  • Unrestricted intercept and unrestricted trend.

  • case inputs: 5 or "ucut" where "ucut" stands for unrestricted constant and unrestricted trend.

Note that you can't restrict (or leave unrestricted) a parameter that doesn't exist in the input model. For example, you can't compute recm(object, case=3) if the object is an ARDL (or UECM) model with no intercept. The same way, you can't compute bounds_f_test(object, case=5) if the object is an ARDL (or UECM) model with no linear trend.

References

Pesaran, M. H., Shin, Y., & Smith, R. J. (2001). Bounds testing approaches to the analysis of level relationships. Journal of Applied Econometrics, 16(3), 289-326

Author(s)

Kleanthis Natsiopoulos, klnatsio@gmail.com

See Also

bounds_f_test ardl uecm

Examples

data(denmark)

## How to use cases under different models (regarding deterministic terms)

## Construct an ARDL(3,1,3,2) model with different deterministic terms -

# Without constant
ardl_3132_n <- ardl(LRM ~ LRY + IBO + IDE -1, data = denmark, order = c(3,1,3,2))

# With constant
ardl_3132_c <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))

# With constant and trend
ardl_3132_ct <- ardl(LRM ~ LRY + IBO + IDE + trend(LRM), data = denmark, order = c(3,1,3,2))

## t-bounds test for no level relationship (no cointegration) ----------

# For the model without a constant
bounds_t_test(ardl_3132_n, case = 1)
# or
bounds_t_test(ardl_3132_n, case = "n")

# For the model with a constant
# Including the constant term in the short-run relationship (unrestricted constant)
bounds_t_test(ardl_3132_c, case = "uc")
# or
bounds_t_test(ardl_3132_c, case = 3)

# For the model with constant and trend
# Including the constant term and the trend in the short-run relationship
# (unrestricted constant and unrestricted trend)
bounds_t_test(ardl_3132_ct, case = "ucut")
# or
bounds_t_test(ardl_3132_ct, case = 5)

## Note that you can't use bounds t-test for cases 2 and 4, or use a wrong model

# For example, the following tests will produce an error:
## Not run: 
bounds_t_test(ardl_3132_n, case = 2)
bounds_t_test(ardl_3132_c, case = 4)
bounds_t_test(ardl_3132_ct, case = 3)

## End(Not run)

## Asymptotic p-value and critical value bounds (assuming T = 1000) ----

# Include critical value bounds for a certain level of significance

# t-statistic is larger than the I(1) bound (for a=0.05) as expected (p-value < 0.05)
btt <- bounds_t_test(ardl_3132_c, case = 3, alpha = 0.05)
btt
btt$tab

# Traditional but less precise critical value bounds, as presented in Pesaran et al. (2001)
btt$PSS2001parameters

# t-statistic doesn't exceed the I(1) bound (for a=0.005) as p-value is greater than 0.005
bounds_t_test(ardl_3132_c, case = 3, alpha = 0.005)

## Exact sample size p-value and critical value bounds -----------------

# Setting a seed is suggested to allow the replication of results
# 'R' can be increased for more accurate resutls

# t-statistic is smaller than the I(1) bound (for a=0.01) as expected (p-value > 0.01)
# Note that the exact sample p-value (0.009874) is very different than the asymptotic (0.005538)
# It can take more than 90 seconds
## Not run: 
set.seed(2020)
bounds_t_test(ardl_3132_c, case = 3, alpha = 0.01, exact = TRUE)

## End(Not run)

ARDL documentation built on Aug. 21, 2023, 9:10 a.m.