to_lm: Convert dynlm model (ardl, uecm, recm) to lm model

View source: R/to_lm.R

to_lmR Documentation

Convert dynlm model (ardl, uecm, recm) to lm model

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.

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, klnatsio@gmail.com

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

## Convert UECM into lm ------------------------------------------------

uecm_3132 <- uecm(ardl_3132)
uecm_3132_lm <- to_lm(uecm_3132)
summary(uecm_3132)$coefficients
summary(uecm_3132_lm)$coefficients

## Convert RECM into lm ------------------------------------------------

recm_3132 <- recm(ardl_3132, case = 2)
recm_3132_lm <- to_lm(recm_3132)
summary(recm_3132)$coefficients
summary(recm_3132_lm)$coefficients

## Use the lm model to forecast ----------------------------------------

# Forecast using the in-sample data
insample_data <- ardl_3132$model
head(insample_data)
predicted_values <- predict(ardl_3132_lm, newdata = insample_data)

# The predicted values are expected to be the same as the fitted values
ardl_3132$fitted.values
predicted_values

# Convert to ts class for the plot
predicted_values <- ts(predicted_values, start = c(1974,4), frequency=4)
plot(denmark$LRM, lwd=4) #The input dependent variable
lines(ardl_3132$fitted.values, lwd=4, col="blue") #The fitted values
lines(predicted_values, lty=2, lwd=2, col="red") #The predicted values

## Convert to lm for post-estimation testing ---------------------------

# Ramsey's RESET test for functional form
library(lmtest) # for resettest()
library(strucchange) # for efp(), and sctest()

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

# 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 documentation built on Aug. 21, 2023, 9:10 a.m.