| midas_r | R Documentation | 
Estimate restricted MIDAS regression using non-linear least squares.
midas_r(
  formula,
  data,
  start,
  Ofunction = "optim",
  weight_gradients = NULL,
  ...
)
| formula | formula for restricted MIDAS regression or  | 
| 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  | 
| weight_gradients | a named list containing gradient functions of weights. The weight gradient function must return the matrix with dimensions
 | 
| ... | additional arguments supplied to optimisation function | 
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.
a midas_r object which is the list with the following elements:
| coefficients | the estimates of parameters of restrictions | 
| midas_coefficients | the estimates of MIDAS coefficients of MIDAS regression | 
| model | model data | 
| unrestricted | unrestricted regression estimated using  | 
| term_info | the 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. | 
| fn0 | optimisation function for non-linear least squares problem solved in restricted MIDAS regression | 
| rhs | the function which evaluates the right-hand side of the MIDAS regression | 
| gen_midas_coef | the function which generates the MIDAS coefficients of MIDAS regression | 
| opt | the output of optimisation procedure | 
| argmap_opt | the list containing the name of optimisation function together with arguments for optimisation function | 
| start_opt | the starting values used in optimisation | 
| start_list | the starting values as a list | 
| call | the call to the function | 
| terms | terms object | 
| gradient | gradient of NLS objective function | 
| hessian | hessian of NLS objective function | 
| gradD | gradient function of MIDAS weight functions | 
| Zenv | the environment in which data is placed | 
| use_gradient | TRUE if user supplied gradient is used, FALSE otherwise | 
| nobs | the number of effective observations | 
| convergence | the convergence message | 
| fitted.values | the fitted values of MIDAS regression | 
| residuals | the residuals of MIDAS regression | 
Virmantas Kvedaras, Vaidotas Zemlys
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
##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)))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.