midas_r {midasr} | R Documentation |
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 |
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 |
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.
Value
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 |
Author(s)
Virmantas Kvedaras, Vaidotas Zemlys
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
##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)))