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 default optimisation function is optim with argument method="BFGS". Other supported functions are nls
weight_gradients: a named list containing gradient functions of weights. The weight gradient function must return the matrix with dimensions dk×q, where dk and q are the number of coefficients in unrestricted and restricted regressions correspondingly. The names of the list should coincide with the names of weights used in formula. The default value is NULL, which means that the numeric approximation of weight function gradient is calculated. If the argument is not NULL, but the name of the weight used in formula is not present, it is assumed that there exists an R function which has the name of the weight function appended with _gradient.
...: additional arguments supplied to optimisation function
Returns
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 midas_u
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
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τ(i) must be of higher (or of the same) frequency as the dependent variable yt.
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.
Examples
##The parameter functiontheta_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 coefficientstheta0 <- theta_h0(c(-0.1,10,-10,-10),4*12)##Plot the coefficientsplot(theta0)##Generate the predictor variablexx <- ts(arima.sim(model = list(ar =0.6),600*12), frequency =12)##Simulate the response variabley <- midas_sim(500, xx, theta0)x <- window(xx, start=start(y))##Fit restricted modelmr <- 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 regressionmr_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) modelmr_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)))
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