bounds_f_test {ARDL}R Documentation

Bounds Wald-test for no cointegration

Description

bounds_f_test performs the Wald bounds-test for no cointegration Pesaran et al. (2001). It is a Wald test on the parameters of a UECM (Unrestricted Error Correction Model) expressed either as a Chisq-statistic or as an F-statistic.

Usage

bounds_f_test(
  object,
  case,
  alpha = NULL,
  pvalue = TRUE,
  exact = FALSE,
  R = 40000,
  test = c("F", "Chisq"),
  vcov_matrix = NULL
)

Arguments

object

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

case

An integer from 1-5 or a character string specifying whether the 'intercept' and/or the 'trend' have to participate in the short-run or the long-run relationship (cointegrating equation) (see section 'Cases' below).

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.

test

A character vector indicating whether you want the Wald test to be expressed as 'F' or as 'Chisq' statistic. Default is "F".

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}

Cases 1, 3, 5:

\mathbf{H_{0}:} \pi_{y} = \pi_{1} = \dots = \pi_{k} = 0

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

Case 2:

\mathbf{H_{0}:} \pi_{y} = \pi_{1} = \dots = \pi_{k} = c_{0} = 0

\mathbf{H_{1}:} \pi_{y} \neq \pi_{1} \neq \dots \neq \pi_{k} \neq c_{0} \neq 0

Case 4:

\mathbf{H_{0}:} \pi_{y} = \pi_{1} = \dots = \pi_{k} = c_{1} = 0

\mathbf{H_{1}:} \pi_{y} \neq \pi_{1} \neq \dots \neq \pi_{k} \neq c_{1} \neq 0

alpha, bounds and p-value

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

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_t_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))

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

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

# For the model with a constant
# Including the constant term in the long-run relationship (restricted constant)
bounds_f_test(ardl_3132_c, case = 2)
# or
bounds_f_test(ardl_3132_c, case = "rc")

# Including the constant term in the short-run relationship (unrestricted constant)
bounds_f_test(ardl_3132_c, case = "uc")
# or
bounds_f_test(ardl_3132_c, case = 3)

# For the model with constant and trend
# Including the constant term in the short-run and the trend in the long-run relationship
# (unrestricted constant and restricted trend)
bounds_f_test(ardl_3132_ct, case = "ucrt")
# or
bounds_f_test(ardl_3132_ct, case = 4)

# 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_f_test(ardl_3132_ct, case = "ucut")
# or
bounds_f_test(ardl_3132_ct, case = 5)

## Note that you can't restrict a deterministic term that doesn't exist

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

## End(Not run)

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

# Include critical value bounds for a certain level of significance

# F-statistic is larger than the I(1) bound (for a=0.05) as expected (p-value < 0.05)
bft <- bounds_f_test(ardl_3132_c, case = 2, alpha = 0.05)
bft
bft$tab

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

# F-statistic is slightly larger than the I(1) bound (for a=0.005)
# as p-value is slightly smaller than 0.005
bounds_f_test(ardl_3132_c, case = 2, 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

# F-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.01285) is very different than the asymptotic (0.004418)
# It can take more than 30 seconds
## Not run: 
set.seed(2020)
bounds_f_test(ardl_3132_c, case = 2, alpha = 0.01, exact = TRUE)

## End(Not run)

## "F" and "Chisq" statistics ------------------------------------------

# The p-value is the same, the test-statistic and critical value bounds are different but analogous
bounds_f_test(ardl_3132_c, case = 2, alpha = 0.01)
bounds_f_test(ardl_3132_c, case = 2, alpha = 0.01, test = "Chisq")

[Package ARDL version 0.2.4 Index]