Learn R Programming

VGAM (version 1.0-4)

rrar: Nested reduced-rank autoregressive models for multiple time series

Description

Estimates the parameters of a nested reduced-rank autoregressive model for multiple time series.

Usage

rrar(Ranks = 1, coefstart = NULL)

Arguments

Ranks

Vector of integers: the ranks of the model. Each value must be at least one and no more than M, where M is the number of response variables in the time series. The length of Ranks is the lag, which is often denoted by the symbol L in the literature.

coefstart

Optional numerical vector of initial values for the coefficients. By default, the family function chooses these automatically.

Value

An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm and vgam.

Details

Full details are given in Ahn and Reinsel (1988). Convergence may be very slow, so setting maxits = 50, say, may help. If convergence is not obtained, you might like to try inputting different initial values.

Setting trace = TRUE in vglm is useful for monitoring the progress at each iteration.

References

Ahn, S. and Reinsel, G. C. (1988) Nested reduced-rank autoregressive models for multiple time series. Journal of the American Statistical Association, 83, 849--856.

See Also

vglm, grain.us.

Examples

Run this code
# NOT RUN {
year <- seq(1961 + 1/12, 1972 + 10/12, by = 1/12)
par(mar = c(4, 4, 2, 2) + 0.1, mfrow = c(2, 2))
for (ii in 1:4) {
  plot(year, grain.us[, ii], main = names(grain.us)[ii], las = 1,
       type = "l", xlab = "", ylab = "", col = "blue")
  points(year, grain.us[, ii], pch = "*", col = "blue")
}
apply(grain.us, 2, mean)  # mu vector
cgrain <- scale(grain.us, scale = FALSE)  # Center the time series only
fit <- vglm(cgrain ~ 1, rrar(Ranks = c(4, 1)), trace = TRUE)
summary(fit)

print(fit@misc$Ak1, digits = 2)
print(fit@misc$Cmatrices, digits = 3)
print(fit@misc$Dmatrices, digits = 3)
print(fit@misc$omegahat, digits = 3)
print(fit@misc$Phimatrices, digits = 2)

par(mar = c(4, 4, 2, 2) + 0.1, mfrow = c(4, 1))
for (ii in 1:4) {
  plot(year, fit@misc$Z[, ii], main = paste("Z", ii, sep = ""),
       type = "l", xlab = "", ylab = "", las = 1, col = "blue")
  points(year, fit@misc$Z[, ii], pch = "*", col = "blue")
}
# }

Run the code above in your browser using DataLab