uecm {ARDL} | R Documentation |

## Unrestricted ECM regression

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

`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 underlying ARDL model (e.g.,
for the UECM of an ARDL(1,0,2) model it should be |

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

is:

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

```
\psi_{j,l} = 0 \;\; \forall \;\; q_{j} \leq 1, \;\;\;\;\; \psi_{y,i}
= 0 \;\; if \;\; p = 1
```

In addition, `x_{j,t-1}`

and `\Delta x_{j,t}`

cancel out
becoming `x_{j,t} \;\; \forall \;\; q_{j} = 0`

### Author(s)

Kleanthis Natsiopoulos, klnatsio@gmail.com

### See Also

### Examples

```
data(denmark)
## Estimate the UECM, conditional to it's underlying ARDL(3,1,3,2) -----
# 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)
## Post-estimation testing ---------------------------------------------
library(lmtest) # for bgtest(), bptest(), and resettest()
library(tseries) # for jarque.bera.test()
library(strucchange) # for efp(), and sctest()
# Breusch-Godfrey test for higher-order serial correlation
bgtest(uecm_3132, order = 4)
# Breusch-Pagan test against heteroskedasticity
bptest(uecm_3132)
# Ramsey's RESET test for functional form
## 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)
uecm_3132_lm <- to_lm(uecm_3132, data_class = "ts")
resettest(uecm_3132_lm, power = 2)
# Jarque-Bera test for normality
jarque.bera.test(residuals(uecm_3132))
# CUSUM test for structural change detection
## Not run:
# This produces an error.
# efp() does not understand special functions such as "d()" and "L()"
efp(uecm_3132$full_formula, data = uecm_3132$model)
## End(Not run)
uecm_3132_lm_names <- to_lm(uecm_3132, fix_names = TRUE)
fluctuation <- efp(uecm_3132_lm_names$full_formula,
data = uecm_3132_lm_names$model)
sctest(fluctuation)
plot(fluctuation)
```

*ARDL*version 0.2.4 Index]