Learn R Programming

VGAM (version 1.1-9)

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)

Value

An object of class "vglmff" (see

vglmff-class). The object is used by modelling functions such as vglm and vgam.

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.

Author

T. W. Yee

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
if (FALSE) {
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