Learn R Programming

midasr (version 0.5)

midas_r: Restricted MIDAS regression

Description

Estimate restricted MIDAS regression using non-linear least squares.

Usage

midas_r(formula, data, start, Ofunction = "optim", weight_gradients = NULL,
  ...)

Arguments

formula
formula for restricted MIDAS regression or midas_r object. Formula must include fmls function
data
a named list containing data with mixed frequencies
start
the starting values for optimisation. Must be a list with named elements.
Ofunction
the list with information which R function to use for optimisation. The list must have element named Ofunction which contains character string of chosen R function. Other elements of the list are the arguments passed to this function. The de
weight_gradients
a named list containing gradient functions of weights. The weight gradient function must return the matrix with dimensions $d_k \times q$, where $d_k$ and $q$ are the number of coefficients in unrestricted and restricted regressions correspondingly. The n
...
additional arguments supplied to optimisation function

Value

  • a midas_r object which is the list with the following elements:
  • coefficientsthe estimates of parameters of restrictions
  • midas_coefficientsthe estimates of MIDAS coefficients of MIDAS regression
  • modelmodel data
  • unrestrictedunrestricted regression estimated using midas_u
  • term_infothe named list. Each element is a list with the information about the term, such as its frequency, function for weights, gradient function of weights, etc.
  • fn0optimisation function for non-linear least squares problem solved in restricted MIDAS regression
  • rhsthe function which evaluates the right-hand side of the MIDAS regression
  • gen_midas_coefthe function which generates the MIDAS coefficients of MIDAS regression
  • optthe output of optimisation procedure
  • argmap_optthe list containing the name of optimisation function together with arguments for optimisation function
  • start_optthe starting values used in optimisation
  • start_listthe starting values as a list
  • callthe call to the function
  • termsterms object
  • gradientgradient of NLS objective function
  • hessianhessian of NLS objective function
  • gradDgradient function of MIDAS weight functions
  • Zenvthe environment in which data is placed
  • use_gradientTRUE if user supplied gradient is used, FALSE otherwise
  • nobsthe number of effective observations
  • convergencethe convergence message
  • fitted.valuesthe fitted values of MIDAS regression
  • residualsthe residuals of MIDAS regression

Details

Given MIDAS regression:

$$y_t = \sum_{j=1}^p\alpha_jy_{t-j} +\sum_{i=0}^{k}\sum_{j=0}^{l_i}\beta_{j}^{(i)}x_{tm_i-j}^{(i)} + u_t,$$

estimate the parameters of the restriction

$$\beta_j^{(i)}=g^{(i)}(j,\lambda).$$

Such model is a generalisation of so called ADL-MIDAS regression. It is not required that all the coefficients should be restricted, i.e the function $g^{(i)}$ might be an identity function. Model with no restrictions is called U-MIDAS model. The regressors $x_\tau^{(i)}$ must be of higher (or of the same) frequency as the dependent variable $y_t$.

MIDAS-AR* (a model with a common factor, see (Clements and Galvao, 2008)) can be estimated by specifying additional argument, see an example.

The restriction function must return the restricted coefficients of the MIDAS regression.

References

Clements, M. and Galvao, A., Macroeconomic Forecasting With Mixed-Frequency Data: Forecasting Output Growth in the United States, Journal of Business and Economic Statistics, Vol.26 (No.4), (2008) 546-554

Examples

Run this code
##The parameter function
theta_h0 <- function(p, dk, ...) {
   i <- (1:dk-1)/100
   pol <- p[3]*i + p[4]*i^2
   (p[1] + p[2]*i)*exp(pol)
}

##Generate coefficients
theta0 <- theta_h0(c(-0.1,10,-10,-10),4*12)

##Plot the coefficients
plot(theta0)

##Generate the predictor variable
xx <- ts(arima.sim(model = list(ar = 0.6), 600 * 12), frequency = 12)

##Simulate the response variable
y <- midas_sim(500, xx, theta0)

x <- window(xx, start=start(y))

##Fit restricted model
mr <- midas_r(y~fmls(x,4*12-1,12,theta_h0)-1,
              list(y=y,x=x),
              start=list(x=c(-0.1,10,-10,-10)))

##Include intercept and trend in regression
mr_it <- midas_r(y~fmls(x,4*12-1,12,theta_h0)+trend,
                 list(data.frame(y=y,trend=1:500),x=x),
                 start=list(x=c(-0.1,10,-10,-10)))

data("USrealgdp")
data("USunempr")

y.ar <- diff(log(USrealgdp))
xx <- window(diff(USunempr), start = 1949)
trend <- 1:length(y.ar)

##Fit AR(1) model
mr_ar <- midas_r(y.ar ~ trend + mls(y.ar, 1, 1) +
                 fmls(xx, 11, 12, nealmon),
                 start = list(xx = rep(0, 3)))

##First order MIDAS-AR* restricted model
mr_arstar <-  midas_r(y.ar ~ trend + mls(y.ar, 1, 1, "*")
                     + fmls(xx, 11, 12, nealmon),
                     start = list(xx = rep(0, 3)))

Run the code above in your browser using DataLab