ardl {ARDL} | R Documentation |

## ARDL model regression

### 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(...)
## S3 method for class 'uecm'
ardl(object, ...)
## 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 |

`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 |

`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,q_{1},\dots,q_{k})`

is:

```
y_{t} = c_{0} + c_{1}t + \sum_{i=1}^{p}b_{y,i}y_{t-i} +
\sum_{j=1}^{k}\sum_{l=0}^{q_{j}}b_{j,l}x_{j,t-l} + \epsilon_{t}
```

### Author(s)

Kleanthis Natsiopoulos, klnatsio@gmail.com

### See Also

### Examples

```
data(denmark)
## Estimate an ARDL(3,1,3,2) model -------------------------------------
ardl_3132 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark, order = c(3,1,3,2))
summary(ardl_3132)
## Add dummies or other variables that should stay fixed ---------------
d_74Q1_75Q3 <- ifelse(time(denmark) >= 1974 & time(denmark) <= 1975.5, 1, 0)
# the date can also be setted as below
d_74Q1_75Q3_ <- ifelse(time(denmark) >= "1974 Q1" & time(denmark) <= "1975 Q3", 1, 0)
identical(d_74Q1_75Q3, d_74Q1_75Q3_)
den <- cbind(denmark, d_74Q1_75Q3)
ardl_3132_d <- ardl(LRM ~ LRY + IBO + IDE | d_74Q1_75Q3,
data = den, order = c(3,1,3,2))
summary(ardl_3132_d)
compare <- data.frame(AIC = c(AIC(ardl_3132), AIC(ardl_3132_d)),
BIC = c(BIC(ardl_3132), BIC(ardl_3132_d)))
rownames(compare) <- c("no dummy", "with dummy")
compare
## Estimate an ARDL(3,1,3,2) model with a linear trend -----------------
ardl_3132_tr <- ardl(LRM ~ LRY + IBO + IDE + trend(LRM),
data = denmark, order = c(3,1,3,2))
# Alternative time trend specifications:
# time(LRM) 1974 + (0, 1, ..., 55)/4 time(data)
# trend(LRM) (1, 2, ..., 55)/4 (1:n)/freq
# trend(LRM, scale = FALSE) (1, 2, ..., 55) 1:n
## Subsample ARDL regression (start after 1975 Q4) ---------------------
ardl_3132_sub <- ardl(LRM ~ LRY + IBO + IDE, data = denmark,
order = c(3,1,3,2), start = "1975 Q4")
# the date can also be setted as below
ardl_3132_sub2 <- ardl(LRM ~ LRY + IBO + IDE, data = denmark,
order = c(3,1,3,2), start = c(1975,4))
identical(ardl_3132_sub, ardl_3132_sub2)
summary(ardl_3132_sub)
## Ease of use ---------------------------------------------------------
# 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)
## Post-estimation testing ---------------------------------------------
# See examples in the help file of the uecm() function
```

*ARDL*version 0.2.4 Index]