ARDL
ARDL
BugReports https://github.com/Natsiopoulos/ARDL/issues
License GPL-3
URL https://github.com/Natsiopoulos/ARDL
Encoding UTF-8
LazyData true
Depends R (>= 3.5.0)
Suggests strucchange, tseries, qpcR, sandwich, testthat (>= 3.0.0)
Imports aod, dplyr, dynlm, gridExtra, ggplot2, lmtest, msm, stringr,
zoo
RoxygenNote 7.2.3
Config/testthat/edition 3
NeedsCompilation no
Author Kleanthis Natsiopoulos [aut, cre]
(<https://orcid.org/0000-0003-1180-2984>),
Nickolaos Tzeremes [aut] (<https://orcid.org/0000-0002-6938-3404>)
Maintainer Kleanthis Natsiopoulos <[email protected]>
Repository CRAN
Date/Publication 2023-08-21 08:02:41 UTC
1
2 ardl
R topics documented:
ardl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
auto_ardl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
bounds_f_test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
bounds_t_test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
coint_eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
denmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
multipliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
NT2022 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
plot_delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
plot_lr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
PSS2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
recm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
to_lm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
uecm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Index 38
Description
A simple way to construct complex ARDL specifications providing just the model order additional
to the model formula. It uses dynlm under the hood. ardl is a generic function and the default
method constructs an ’ardl’ model while the other method takes a model of class ’uecm’ and
converts in into an ’ardl’.
Usage
ardl(...)
## Default S3 method:
ardl(formula, data, order, start = NULL, end = NULL, ...)
Arguments
... Additional arguments to be passed to the low level regression fitting functions.
object An object of class ’uecm’.
formula A "formula" describing the linear model. Details for model specification are
given under ’Details’.
ardl 3
data A time series object (e.g., "ts", "zoo" or "zooreg") or a data frame containing the
variables in the model. In the case of a data frame, it is coerced into a ts object
with start = 1, end = nrow(data) and frequency = 1. If not found in data, the
variables are NOT taken from any environment.
order A specification of the order of the ARDL model. A numeric vector of the same
length as the total number of variables (excluding the fixed ones, see ’Details’).
It should only contain positive integers or 0. An integer could be provided if all
variables are of the same order.
start Start of the time period which should be used for fitting the model.
end End of the time period which should be used for fitting the model.
Details
The formula should contain only variables that exist in the data provided through data plus some
additional functions supported by dynlm (i.e., trend()).
You can also specify fixed variables that are not supposed to be lagged (e.g. dummies etc.) simply
by placing them after |. For example, y ~ x1 + x2 | z1 + z2 where z1 and z2 are the fixed variables
and should not be considered in order. Note that the | notion should not be confused with the same
notion in dynlm where it introduces instrumental variables.
Value
ardl returns an object of class c("dynlm", "lm", "ardl"). In addition, attributes ’order’, ’data’,
’parsed_formula’ and ’full_formula’ are provided.
Mathematical Formula
The general form of an ARDL(p, q1 , . . . , qk ) is:
p qj
k X
X X
yt = c0 + c1 t + by,i yt−i + bj,l xj,t−l + t
i=1 j=1 l=0
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
uecm, recm
Examples
data(denmark)
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
summary(ardl_3132)
4 ardl
# The model specification of the ardl_3132 model can be created as easy as order=c(3,1,3,2)
# or else, it could be done using the dynlm package as:
library(dynlm)
m <- dynlm(LRM ~ L(LRM, 1) + L(LRM, 2) + L(LRM, 3) + LRY + L(LRY, 1) + IBO + L(IBO, 1) +
L(IBO, 2) + L(IBO, 3) + IDE + L(IDE, 1) + L(IDE, 2), data = denmark)
identical(m$coefficients, ardl_3132$coefficients)
# The full formula can be extracted from the ARDL model, and this is equal to
ardl_3132$full_formula
m2 <- dynlm(ardl_3132$full_formula, data = ardl_3132$data)
identical(m$coefficients, m2$coefficients)
Description
It searches for the best ARDL order specification, according to the selected criterion, taking into
account the constraints provided.
Usage
auto_ardl(
formula,
data,
max_order,
fixed_order = -1,
starting_order = NULL,
selection = "AIC",
selection_minmax = c("min", "max"),
grid = FALSE,
search_type = c("horizontal", "vertical"),
start = NULL,
end = NULL,
...
)
Arguments
formula A "formula" describing the linear model. Details for model specification are
given under ’Details’ in the help file of the ardl function.
data A time series object (e.g., "ts", "zoo" or "zooreg") or a data frame containing the
variables in the model. In the case of a data frame, it is coerced into a ts object
with start = 1, end = nrow(data) and frequency = 1. If not found in data, the
variables are NOT taken from any environment.
max_order It sets the maximum order for each variable where the search is taking place. A
numeric vector of the same length as the total number of variables (excluding
the fixed ones, see ’Details’ in the help file of the ardl function). It should only
contain positive integers. An integer could be provided if the maximum order
for all variables is the same.
fixed_order It allows setting a fixed order for some variables. The algorithm will not search
for any other order than this. A numeric vector of the same length as the to-
tal number of variables (excluding the fixed ones). It should contain positive
integers or 0 to set as a constraint. A -1 should be provided for any vari-
able that should not be constrained. fixed_order overrides the corresponding
max_order and starting_order.
6 auto_ardl
starting_order Specifies the order for each variable from which each search will start. It is a
numeric vector of the same length as the total number of variables (excluding
the fixed ones). It should contain positive integers or 0 or only one integer could
be provided if the starting order for all variables is the same. Default is set
to NULL. If unspecified (NULL) and grid = FALSE, then all possible ARDL(p)
models are calculated (constraints are taken into account), where p is the min-
imum value in max_order. Note that where starting_order is provided, its
first element will be the minimum value of p that the searching algorithm will
consider (think of it like a ’minimum p order’ restriction) (see ’Searching algo-
rithm’ below). If grid = TRUE, only the first argument (p) will have an effect.
selection A character string specifying the selection criterion according to which the can-
didate models will be ranked. Default is AIC. Any other selection criterion can
be used (a user specified or a function from another package) as long as it can be
applied as selection(model). The preferred model is the one with the smaller
value of the selection criterion. If the selection criterion works the other way
around (the bigger the better), selection_minmax = "max" should also be sup-
plied (see ’Examples’ below).
selection_minmax
A character string that indicates whether the criterion in selection is supposed
to be minimized (default) or maximized.
grid If FALSE (default), the stepwise searching regression algorithm will search for
the best model by adding and subtracting terms corresponding to different ARDL
orders. If TRUE, the whole set of all possible ARDL models (accounting for con-
straints) will be evaluated. Note that this method can be very time-consuming in
case that max_order is big and there are many independent variables that create
a very big number of possible combinations.
search_type A character string describing the search type. If "horizontal" (default), the
searching algorithm increases or decreases by 1 the order of each variable in
each iteration. When the order of the last variable has been accessed, it begins
again from the first variable until it converges. If "vertical", the searching algo-
rithm increases or decreases by 1 the order of a variable until it converges. Then
it continues the same for the next variable. The two options result to very similar
top orders. The default ("horizontal"), sometimes is a little more accurate, but
the "vertical" is almost 2 times faster. Not applicable if grid = TRUE.
start Start of the time period which should be used for fitting the model.
end End of the time period which should be used for fitting the model.
... Additional arguments to be passed to the low level regression fitting functions.
Value
auto_ardl returns a list which contains:
Searching algorithm
The algorithm performs the optimization process starting from multiple starting points concerning
the autoregressive order p. The searching algorithm will perform a complete search, each time
starting from a different starting order. These orders are presented in the tables below, for grid =
FALSE and different values of starting_order.
starting_order = NULL:
p q1 q2 q3
3 0 1 2
4 0 1 2
: : : :
P 0 1 2
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
ardl
Examples
data(denmark)
# Up to 5 for the autoregressive order (p) and 4 for the rest (q1, q2, q3)
# Using the defaults search_type = "horizontal", grid = FALSE and selection = "AIC"
# ("Not run" indications only for testing purposes)
## Not run:
model1 <- auto_ardl(LRM ~ LRY + IBO + IDE, data = denmark,
max_order = c(5,4,4,4))
model1$top_orders
# Using other criteria like adjusted R squared (the bigger the better)
adjr2 <- function(x) { summary(x)$adj.r.squared }
model1_adjr2 <- auto_ardl(LRM ~ LRY + IBO + IDE, data = denmark,
max_order = c(5,4,4,4), selection = "adjr2",
selection_minmax = "max")
model1_adjr2$top_orders
library(qpcR)
model1_aicc <- auto_ardl(LRM ~ LRY + IBO + IDE, data = denmark,
max_order = c(5,4,4,4), selection = "AICc")
model1_aicc$top_orders
adjr2 <- function(x){ Rsq.ad(x) }
model1_adjr2 <- auto_ardl(LRM ~ LRY + IBO + IDE, data = denmark,
max_order = c(5,4,4,4), selection = "adjr2",
selection_minmax = "max")
model1_adjr2$top_orders
# The searching algorithm will start from the following starting orders:
# p q1 q2 q3
# 1 1 3 2
# 2 1 3 2
# 3 1 3 2
# 4 1 3 2
# 5 1 3 2
# If starting_order = NULL, the starting orders for each iteration will be:
# p q1 q2 q3
# 1 1 1 1
# 2 2 2 2
# 3 3 3 3
# 4 4 4 4
# 5 5 5 5
}
## Set the starting date for the regression (data starts at "1974 Q1") -
## End(Not run)
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,
10 bounds_f_test
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 relation-
ship (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 es-
timated 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.
bounds_f_test 11
tab data.frame containing the statistic, the critical value bounds, the alpha level of
significance and the p-value.
Hypothesis testing
k p−1 j −1
k qX k
X X X X
∆yt = c0 +c1 t+πy yt−1 + πj xj,t−1 + ψy,i ∆yt−i + ψj,l ∆xj,t−l + ωj ∆xj,t +t
j=1 i=1 j=1 l=1 j=1
Cases 1, 3, 5:
H0 :πy = π1 = · · · = πk = 0
H1 :πy 6= π1 6= · · · 6= πk 6= 0
Case 2:
H0 :πy = π1 = · · · = πk = c0 = 0
H1 :πy 6= π1 6= · · · 6= πk 6= c0 6= 0
Case 4:
H0 :πy = π1 = · · · = πk = c1 = 0
H1 :πy 6= π1 6= · · · 6= πk 6= c1 6= 0
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 pro-
vided.
• 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).
12 bounds_f_test
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.
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, <[email protected]>
See Also
bounds_t_test ardl uecm
Examples
data(denmark)
# Without constant
ardl_3132_n <- ardl(LRM ~ LRY + IBO + IDE -1, data = denmark, order = c(3,1,3,2))
# With constant
bounds_f_test 13
ardl_3132_c <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
## Note that you can't restrict a deterministic term that doesn't exist
## End(Not run)
# 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)
14 bounds_t_test
bft
bft$tab
# Traditional but less precise critical value bounds, as presented in Pesaran et al. (2001)
bft$PSS2001parameters
# 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)
# 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")
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
)
bounds_t_test 15
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 es-
timated 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
k p−1 j −1
k qX k
X X X X
∆yt = c0 +c1 t+πy yt−1 + πj xj,t−1 + ψy,i ∆yt−i + ψj,l ∆xj,t−l + ωj ∆xj,t +t
j=1 i=1 j=1 l=1 j=1
16 bounds_t_test
H0 :πy = 0
H1 :πy 6= 0
• If exact = FALSE, then the asymptotic (T = 1000) critical value bounds and p-value are pro-
vided.
• 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.
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
bounds_t_test 17
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
bounds_f_test ardl uecm
Examples
data(denmark)
# 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))
## Note that you can't use bounds t-test for cases 2 and 4, or use a wrong model
## End(Not run)
# 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)
# 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)
Description
Creates the cointegrating equation (long-run level relationship) providing an ’ardl’, ’uecm’ or ’recm’
model.
Usage
coint_eq(object, case)
## Default S3 method:
coint_eq(object, case)
coint_eq 19
Arguments
object An object of class ’ardl’, ’uecm’ or ’recm’.
case An integer from 1-5 or a character string specifying whether the ’intercept’
and/or the ’trend’ have to participate in the long-run level relationship (coin-
tegrating equation) (see section ’Cases’ below). If the input object is of class
’recm’, case is not needed as the model is already under a certain case.
... Currently unused argument.
Value
coint_eq returns an numeric vector containing the cointegrating equation.
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.
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, <[email protected]>
See Also
plot_lr ardl uecm recm bounds_f_test bounds_t_test
20 denmark
Examples
data(denmark)
library(zoo) # for cbind.zoo()
# The bounds F-test under both cases reject the Null Hypothesis of no level relationship.
bounds_f_test(ardl_3132, case = 2)
bounds_f_test(ardl_3132, case = 3)
# The bounds t-test also rejects the NUll Hypothesis of no level relationship.
bounds_t_test(ardl_3132, case = 3)
denmark The Danish data on money income prices and interest rates
Description
This data set contains the series used by S. Johansen and K. Juselius for estimating a money demand
function of Denmark.
multipliers 21
Usage
denmark
Format
A time-series object with 55 rows and 5 variables. Time period from 1974:Q1 until 1987:Q3.
Details
An object of class "zooreg" "zoo".
Source
https://onlinelibrary.wiley.com/doi/10.1111/j.1468-0084.1990.mp52002003.x
References
Johansen, S. and Juselius, K. (1990), Maximum Likelihood Estimation and Inference on Cointe-
gration – with Applications to the Demand for Money, Oxford Bulletin of Economics and Statistics,
52, 2, 169–210.
Description
multipliers is a generic function used to estimate short-run (impact), delay, interim and long-run
(total) multipliers, accompanied by their corresponding standard errors, t-statistics and p-values.
Usage
multipliers(object, type = "lr", vcov_matrix = NULL, se = FALSE)
Arguments
object An object of class ’ardl’ or ’uecm’.
type A character string describing the type of multipliers. Use "lr" for long-run (total)
multipliers (default), "sr" or 0 for short-run (impact) multipliers or an integer
between 1 and 200 for delay and interim multipliers.
vcov_matrix The estimated covariance matrix of the random variable that the transformation
function uses to estimate the standard errors (and so the t-statistics and p-values)
of the multipliers. The default is vcov(object) (when vcov_matrix = NULL),
but other estimations of the covariance matrix of the regression’s estimated co-
efficients can also be used (e.g., using vcovHC or vcovHAC).
se A logical indicating whether you want standard errors for delay multipliers to be
provided. The default is FALSE. Note that this parameter does not refer to the
standard errors for the long-run and short-run multipliers, for which are always
calculated. IMPORTANT: Calculating standard errors for long periods of delays
may cause your computer to run out of memory and terminate your R session,
losing important unsaved work. As a rule of thumb, try not to exceed type = 19
when se = TRUE.
Details
The function invokes two different methods, one for objects of class ’ardl’ and one for objects of
class ’uecm’. This is because of the different (but equivalent) transformation functions that are
used for each class/model (’ardl’ and ’uecm’) to estimate the multipliers.
type = 0 is equivalent to type = "sr".
Note that the interim multipliers are the cumulative sum of the delays, and that the sum of the
interim multipliers (for long enough periods) and thus a distant enough interim multiplier match the
long-run multipliers.
The delay (interim) multiplier can be interpreted as the effect on the dependent variable in period
t+s, resulting from an instant (sustained) shock to an independent variable in period t.
The delta method is used for approximating the standard errors (and thus the t-statistics and p-
values) of the estimated long-run and delay multipliers.
Value
multipliers returns (for long and short run multipliers) a data.frame containing the independent
variables (including possibly existing intercept or trend and excluding the fixed variables) and their
corresponding standard errors, t-statistics and p-values. For delay and interim multipliers it returns a
list with a data.frame for each variable, containing the delay and interim multipliers for each period.
Mathematical Formula
Short-Run Multipliers:
As derived from an ARDL:
∂yt
= bj,0 j ∈ {1, . . . , k}
∂xj,t
multipliers 23
∂yt
= ωj j ∈ {1, . . . , k}
∂xj,t
c0
c1
min{p,s}
∂yt+s X ∂yt+(s−i)
Delayxj ,s = = bj,s + by,i bj,s = 0 ∀ s > q
∂xj,t i=1
∂xj,t
s
X
Interimxj ,s = Delayxj ,s
i=0
min{p,s}
X
Delayintercept,s = c0 + by,i Delayintercept,s−i c0 = 0 ∀ s 6= 0
i=1
s
X
Interimintercept,s = Delayintercept,s
i=0
min{p,s}
X
Delaytrend,s = c1 + by,i Delaytrend,s−i c1 = 0 ∀ s 6= 0
i=1
s
X
Interimtrend,s = Delaytrend,s
i=0
Long-Run Multipliers:
Pqj
∂yt+∞ l=0 bj,l
= θj = P p j ∈ {1, . . . , k}
∂xj,t 1 − i=1 by,i
c
µ= Pp0
1− i=1 by,i
c
δ= Pp1
1− i=1 by,i
∂yt+∞ πj
= θj = j ∈ {1, . . . , k}
∂xj,t −πy
Constant and Linear Trend:
c0
µ=
−πy
c1
δ=
−πy
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
ardl, uecm, plot_delay
Examples
data(denmark)
# From an UECM
uecm_3132 <- uecm(ardl_3132)
mult_uecm <- multipliers(uecm_3132)
mult_uecm
all.equal(mult_ardl, mult_uecm)
mult_lr
sum(mult_inter80$`(Intercept)`$Delay)
mult_inter80$`(Intercept)`$Interim[nrow(mult_inter80$`(Intercept)`)]
sum(mult_inter80$LRY$Delay)
mult_inter80$LRY$Interim[nrow(mult_inter80$LRY)]
sum(mult_inter80$IBO$Delay)
mult_inter80$IBO$Interim[nrow(mult_inter80$IBO)]
sum(mult_inter80$IDE$Delay)
mult_inter80$IDE$Interim[nrow(mult_inter80$IDE)]
plot(mult_inter80$LRY$Delay, type='l')
plot(mult_inter80$LRY$Interim, type='l')
Description
This data set contains the series used by Natsiopoulos and Tzeremes (2022) for re-estimating the
UK earnings equation. The clean format of the data retrieved from the Data Archive of Natsiopoulos
and Tzeremes (2022).
Usage
NT2022
Format
A time-series object with 196 rows and 9 variables. Time period from 1971:Q1 until 2019:Q4.
time time variable
w real wage
Prod labor productivity
UR unemployment rate
Wedge wedge effect
Union union power
D7475 income policies 1974:Q1-1975:Q4
D7579 income policies 1975:Q1-1979:Q4
UnionR union membership
26 plot_delay
Details
An object of class "zooreg" "zoo".
Source
http://qed.econ.queensu.ca/jae/datasets/natsiopoulos001/
References
Kleanthis Natsiopoulos and Nickolaos G. Tzeremes, (2022), "ARDL bounds test for Cointegration:
Replicating the Pesaran et al. (2001) Results for the UK Earnings Equation Using R", Journal of
Applied Econometrics, 37, 5, 1079–1090. doi:10.1002/jae.2919
Description
Creates plots for the delay multipliers and their uncertainty intervals based on their estimated stan-
dard errors. This is a basic ggplot with a few customizable parameters.
Usage
plot_delay(
multipliers,
facets_ncol = 2,
interval = FALSE,
interval_color = "blue",
show.legend = FALSE,
xlab = "Period",
ylab = "Delay",
...
)
Arguments
multipliers A list returned from multipliers, in which type is a positive integer to return
delay multipliers.
facets_ncol If a positive integer, it indicates the number of the columns in the facet. If
FALSE, each plot is created separately. The default is 2.
interval If FALSE (default), no uncertainty intervals are drawn. If a positive integer, the
intervals are this number times the standard error. If a number between 0 and 1
(e.g. 0.95), the equivalent confidence interval is drawn (e.g. 95% CI). In case of
the confidence intervals, they are based on the Gaussian distribution.
interval_color The color of the uncertainty intervals. Default is "blue".
show.legend A logical indicating whether the interval legend is shown. Default is FALSE.
plot_lr 27
xlab, ylab Names displayed at the x and y axes respectively. Default is "Period" and "De-
lay" respectively.
... Currently unused argument.
Value
Author(s)
See Also
multipliers
Examples
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
delay_mult <- multipliers(ardl_3132, type = 12, se = TRUE)
plot_delay(delay_mult)
plot_delay(delay_mult, facets_ncol = 1)
plot_delay(delay_mult, interval = 1)
## Add 95% confidence intervals, change color and add legend -----------
Description
Creates a plot for the long-run relationship in comparison with the dependent variable, and the fitted
values of the model. This is a basic ggplot with a few customizable parameters.
28 plot_lr
Usage
plot_lr(
object,
coint_eq,
facets = FALSE,
show_fitted = FALSE,
show.legend = FALSE,
xlab = "Time",
...
)
Arguments
object An object of class ‘ardl‘.
coint_eq The objected returned from coint_eq.
facets A logical indicating whether the long-run relationship appears in a separate plot.
Default is FALSE.
show_fitted A logical indicating whether the fitted values are shown. Default is FALSE.
show.legend A logical indicating whether the legend is shown. Default is FALSE.
xlab Name displayed at the x axis. Default is "Time".
... Currently unused argument.
Value
plot_lr returns a ggplot object.
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
coint_eq
Examples
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
ce2 <- coint_eq(ardl_3132, case = 2)
Description
This data set contains the series used by Pesaran et al. (2001) for estimating the UK earnings equa-
tion. The clean format of the data retrieved from the Data Archive of Natsiopoulos and Tzeremes
(2022).
Usage
PSS2001
Format
A time-series object with 112 rows and 7 variables. Time period from 1970:Q1 until 1997:Q4.
w real wage
Prod labor productivity
UR unemployment rate
Wedge wedge effect
Union union power
D7475 income policies 1974:Q1-1975:Q4
D7579 income policies 1975:Q1-1979:Q4
Details
An object of class "zooreg" "zoo".
Source
http://qed.econ.queensu.ca/jae/datasets/pesaran001/ http://qed.econ.queensu.ca/jae/
datasets/natsiopoulos001/
References
M. Hashem Pesaran, Richard J. Smith, and Yongcheol Shin, (2001), "Bounds Testing Approaches
to the Analysis of Level Relationships", Journal of Applied Econometrics, 16, 3, 289–326.
Kleanthis Natsiopoulos and Nickolaos G. Tzeremes, (2022), "ARDL bounds test for Cointegration:
Replicating the Pesaran et al. (2001) Results for the UK Earnings Equation Using R", Journal of
Applied Econometrics, 37, 5, 1079–1090. doi:10.1002/jae.2919
30 recm
Description
Creates the Restricted Error Correction Model (RECM). This is the conditional RECM, which is
the RECM of the underlying ARDL.
Usage
recm(object, case)
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 relation-
ship (cointegrating equation) (see section ’Cases’ below).
Details
Note that the statistical significance of ’ect’ in a RECM should not be tested using the corre-
sponding t-statistic (or the p-value) because it doesn’t follow a standard t-distribution. Instead,
the bounds_t_test should be used.
Value
recm returns an object of class c("dynlm", "lm", "recm"). In addition, attributes ’order’, ’data’,
’parsed_formula’ and ’full_formula’ are provided.
Mathematical Formula
The formula of a Restricted ECM conditional to an ARDL(p, q1 , . . . , qk ) is:
p−1 j −1
k qX k
X X X
∆yt = c0 + c1 t + ψy,i ∆yt−i + ψj,l ∆xj,t−l + ωj ∆xj,t + πy ECTt + t
i=1 j=1 l=1 j=1
ψj,l = 0 ∀ qj = 1, ψj,l = ωj = 0 ∀ qj = 0
Under Case 1: • c0 = c1 = 0
Pk
• ECT = yt−1 − ( j=1 θj xj,t−1 )
Under Case 2: • c0 = c1 = 0
Pk
• ECT = yt−1 − (µ + j=1 θj xj,t−1 )
Under Case 3: • c1 = 0
Pk
• ECT = yt−1 − ( j=1 θj xj,t−1 )
Under Case 4: • c1 = 0
recm 31
Pk
• ECT = yt−1 − (δ(t − 1) + j=1 θj xj,t−1 )
Pk
Under Case 5: • ECT = yt−1 − ( j=1 θj xj,t−1 )
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.
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)
See Also
ardl uecm
32 to_lm
Examples
data(denmark)
Description
Takes a dynlm model of class ’ardl’, ’uecm’ or ’recm’ and converts it into an lm model. This
can help using the model as a regular lm model with functions that are not compatible with dynlm
models such as the predict function to forecast.
Usage
to_lm(object, fix_names = FALSE, data_class = NULL, ...)
Arguments
object An object of class ’ardl’, ’uecm’ or ’recm’.
fix_names A logical, indicating whether the variable names should be rewritten without
special functions and character in the names such as "d()" or "L()". When
fix_names = TRUE, the characters "(", and "," are replaces with ".", and ")" and
spaces are deleted. The name of the dependent variable is always transformed,
regardless of the value of this parameter. Default is FALSE.
to_lm 33
data_class If "ts", it converts the data class to ts (see examples for its usage). The default
is NULL, which uses the same data provided in the original object.
... Currently unused argument.
Value
to_lm returns an object of class "lm".
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
ardl, uecm, recm
Examples
## Convert ARDL into lm ------------------------------------------------
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
ardl_3132_lm <- to_lm(ardl_3132)
summary(ardl_3132)$coefficients
summary(ardl_3132_lm)$coefficients
# The predicted values are expected to be the same as the fitted values
ardl_3132$fitted.values
predicted_values
## Not run:
# This produces an error.
# resettest() cannot use data of class 'zoo' such as the 'denmark' data
# used to build the original model
resettest(uecm_3132, type = c("regressor"))
## End(Not run)
## End(Not run)
Description
uecm is a generic function used to construct Unrestricted Error Correction Models (UECM). The
function invokes two different methods. The default method works exactly like ardl. The other
method requires an object of class ’ardl’. Both methods create the conditional UECM, which is
the UECM of the underlying ARDL.
Usage
uecm(...)
uecm 35
## Default S3 method:
uecm(formula, data, order, start = NULL, end = NULL, ...)
Arguments
... Additional arguments to be passed to the low level regression fitting functions.
object An object of class ’ardl’.
formula A "formula" describing the linear model. Details for model specification are
given under ’Details’.
data A time series object (e.g., "ts", "zoo" or "zooreg") or a data frame containing the
variables in the model. In the case of a data frame, it is coerced into a ts object
with start = 1, end = nrow(data) and frequency = 1. If not found in data, the
variables are NOT taken from any environment.
order A specification of the order of the underlying ARDL model (e.g., for the UECM
of an ARDL(1,0,2) model it should be order = c(1,0,2)). A numeric vector
of the same length as the total number of variables (excluding the fixed ones,
see ’Details’). It should only contain positive integers or 0. An integer could be
provided if all variables are of the same order.
start Start of the time period which should be used for fitting the model.
end End of the time period which should be used for fitting the model.
Details
The formula should contain only variables that exist in the data provided through data plus some
additional functions supported by dynlm (i.e., trend()).
You can also specify fixed variables that are not supposed to be lagged (e.g. dummies etc.) simply
by placing them after |. For example, y ~ x1 + x2 | z1 + z2 where z1 and z2 are the fixed variables
and should not be considered in order. Note that the | notion should not be confused with the same
notion in dynlm where it introduces instrumental variables.
Value
uecm returns an object of class c("dynlm", "lm", "uecm"). In addition, attributes ’order’, ’data’,
’parsed_formula’ and ’full_formula’ are provided.
Mathematical Formula
The formula of an Unrestricted ECM conditional to an ARDL(p, q1 , . . . , qk ) is:
k p−1 j −1
k qX k
X X X X
∆yt = c0 +c1 t+πy yt−1 + πj xj,t−1 + ψy,i ∆yt−i + ψj,l ∆xj,t−l + ωj ∆xj,t +t
j=1 i=1 j=1 l=1 j=1
ψj,l = 0 ∀ qj ≤ 1, ψy,i = 0 if p = 1
In addition, xj,t−1 and ∆xj,t cancel out becoming xj,t ∀ qj = 0
36 uecm
Author(s)
Kleanthis Natsiopoulos, <[email protected]>
See Also
ardl recm
Examples
data(denmark)
# Indirectly
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
uecm_3132 <- uecm(ardl_3132)
# Directly
uecm_3132_ <- uecm(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
identical(uecm_3132, uecm_3132_)
summary(uecm_3132)
## End(Not run)
# efp() does not understand special functions such as "d()" and "L()"
efp(uecm_3132$full_formula, data = uecm_3132$model)
## End(Not run)
AIC, 6
ardl, 2, 5, 7, 12, 17, 19, 24, 31, 33, 34, 36
auto_ardl, 5
bounds_f_test, 9, 17, 19
bounds_t_test, 12, 14, 19, 30
denmark, 20
38