bounds_f_test {ARDL}  R Documentation 
Bounds Waldtest for no cointegration
Description
bounds_f_test
performs the Wald boundstest 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 Chisqstatistic
or as an Fstatistic.
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 
case 
An integer from 15 or a character string specifying whether the 'intercept' and/or the 'trend' have to participate in the shortrun or the longrun 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 
pvalue 
A logical indicating whether you want the pvalue to be
provided. The default is 
exact 
A logical indicating whether you want asymptotic (T = 1000) or
exact sample size critical value bounds and pvalue. The default is

R 
An integer indicating how many iterations will be used if

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

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 
data.name 
a character string giving the name(s) of the data. 
parameters 
numeric vector containing the critical value bounds. 
p.value 
the pvalue of the test. 
PSS2001parameters 
numeric vector containing the critical value bounds as presented by Pesaran et al. (2001). See section 'alpha, bounds and pvalue' below for details. 
tab 
data.frame containing the statistic, the critical value bounds, the alpha level of significance and the pvalue. 
Hypothesis testing
\Delta y_{t} = c_{0} + c_{1}t +
\pi_{y}y_{t1} + \sum_{j=1}^{k}\pi_{j}x_{j,t1} +
\sum_{i=1}^{p1}\psi_{y,i}\Delta y_{ti} +
\sum_{j=1}^{k}\sum_{l=1}^{q_{j}1} \psi_{j,l}\Delta x_{j,tl} +
\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 pvalue
In this section it is explained how the critical value bounds and pvalues are obtained.
If
exact = FALSE
, then the asymptotic (T = 1000) critical value bounds and pvalue are provided.Only the asymptotic critical value bounds and pvalues, and only for k <= 10 are precalculated, everything else has to be computed.
Precalculated critical value bounds and pvalues were simulated using
set.seed(2020)
andR = 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 (andexact = 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 longrun relationship (cointegrating equation) (and thus the boundstest 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 longrun relationship or they are unrestricted and so they participate in the shortrun 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), 289326
Author(s)
Kleanthis Natsiopoulos, klnatsio@gmail.com
See Also
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))
## Fbounds 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 longrun 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 shortrun 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 shortrun and the trend in the longrun 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 shortrun 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 pvalue and critical value bounds (assuming T = 1000) 
# Include critical value bounds for a certain level of significance
# Fstatistic is larger than the I(1) bound (for a=0.05) as expected (pvalue < 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
# Fstatistic is slightly larger than the I(1) bound (for a=0.005)
# as pvalue is slightly smaller than 0.005
bounds_f_test(ardl_3132_c, case = 2, alpha = 0.005)
## Exact sample size pvalue and critical value bounds 
# Setting a seed is suggested to allow the replication of results
# 'R' can be increased for more accurate resutls
# Fstatistic is smaller than the I(1) bound (for a=0.01) as expected (pvalue > 0.01)
# Note that the exact sample pvalue (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 pvalue is the same, the teststatistic 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")