Constraint matrices for coefficients of vector genelized time series family functions in VGAMextra.
1 2 3 4 5 6
A symbolic description of the model being fitted. Must match that
formula specified in the
Vector of POSITIVE integers greater than 1 indicating the order
for each response. It must match the orders entered in the
Vector of integers specifying the position of the ARMA coefficient
at which constraints initiate FOR each response.
If negative, it is recycled and the absolute value is used. The default
Particularly, if only one coefficient is being estimated, i.e, an AR
or MA process of order-1 is being fitted, then NO restrictions over the
(unique) coefficient are needed. Consequently,
Vector of POSITIVE integers strictly less than '
The number of responses in the model fitted. Must match the number of
responses given in
Vector of POSITIVE integers. Thus far, restrictions handled are
geometric sequences and arithmetic progressions.
See below for further details.
NOTE: Except for the
Model, all arguments of length 1 are
Resp ≥ 2.
Time Series family functions in VGAMextra that are derived from AR(p) or MA(q) processes include the drift term (or mean) and the white noise standard deviation as the first two elements in the vector parameter. For an MA(4), for example, it is given by
(μ, σ[e], φ, φ, φ, φ).
Thus, constraint matrices on coefficients can be stated from the
second coefficient, i.e., from
φ. This feature is specified with
offset = -2 by default.
In other words,
offset indicates the exact position at
which parameter restrictions commence. For example,
offset = -3
indicates that φ is the first coefficient over
which constraints are applied. Then, in order to successfully utilize
this argument, it must be greater than or equal to 2 in absolute value.
Otherwise, an error message will be displayed as no single restriction
are amenable with φ only.
lags.cm = 1, i.e, a AR or MA process of order one
is being fitted, then NO constraints are required either, as only one
coefficient is directly considered.
Hence, the miminum absolute value for argument
As for the
factorSeq argument, its defaul value is 2.
factorSeq = 4,
lags.cm = 5,
offset = -3, and
whichCoeff = 1. The coefficient restrictions if a
geometric progression is assumed are
θ = θ^4,
θ = θ^5,
θ = θ^6,
If coefficient restrictions are in arithmetic sequence, constraints are given by
θ = 4 * θ,
θ = 5 * θ,
θ = 6 * θ,
The difference lies on thelink function used:
loglink for the first case, and
identitylink for the latter.
Note that conditions above are equivalent to test the following two Null Hypotheses:
Ho: θ[k] = θ^k
Ho: θ[k] = k * θ
for k = 3, 4, 5.
Simpler hypotheses can be tested by properly setting all arguments
For instance, the default list of constraint matrices returned by
cm.ARMA() allows to test
H: θ[k] = θ^k
for k = 2, in a TS model of order-2 with one response.
A list of constraint matrices with specific restrictions over the AR(p), MA(q) or ARMA (p, q) coefficients. Each matrix returned is conformable with the VGAM/VGLM framework.
Paragrpah above means that each constraint matrix returned by
cm.ARMA() is full-rank with M rows (number of parameters),
as required by VGAM. Note that constraint matrices within
the VGAM/VGLM framework are M by M identity matrices
Restrictions currently handled by
cm.ARMA() are (increasing)
arithmetic and geometric progressions.
Hypotheses above can be tested by properly applying parameter link functions. If the test
Ho: θ[k] = θ^k,
arises, then constraint matrices returned by
conformable to the use of
On the other hand, the following hypothesis
Ho: θ[k] = k * θ ,
properly adapts to the link function
identitylink. k = 2, 3,\ ldots.
For further details on parameter link functions within VGAM, see
cm.ARMA() can be utilized to compute constraint matrices
for many VGLTSM fmaily functions, e.g.,
MAXff in VGAMextra.
More improvements such as restrictions on the drift parameter and white noise standard deviation will be set later.
Victor Miranda and T. W. Yee
Yee, T. W. and Hastie, T. J. (2003) Reduced-rank vector generalized linear models. Statistical Modelling, 3, 15–41.
Yee, T. W. (2008)
R News, 8, 28–39.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
############# # Example 1. ############# # Constraint matrices for a TS family function (AR or MA) # with 6 lagged terms. # Restriction commences at the third position (theta) powered to # or multiplied by 4. Intercept-only model. position <- -3 numberLags <- 6 myfactor <- 4 cm.ARMA(offset = position, lags.cm = numberLags, factorSeq = myfactor) # With one covariate cm.ARMA(Model = ~ x2, offset = position, lags.cm = numberLags, factorSeq = myfactor) # Or 2 responses... cm.ARMA(offset = position, lags.cm = numberLags, factorSeq = myfactor, Resp = 2) # The following call causes an ERROR. # cm.ARMA(offset = -1, lags.cm = 6, factorSeq = 2) ############## # Example 2. ############## # In this example, the use of constraints via 'cm.ARMA()' is # included in the 'vglm' call. Here, two AR(2) models are fitted # in the same call (i.e. two responses), where different constraints # are set, as follows: # a) list(ar = c(theta1, theta1^2)) and # b) list(ar = c(theta2, theta2^2 )). # 2.0 Generate the data. set.seed(1001) nn <- 100 # A single covariate. covdata <- data.frame(x2 = runif(nn)) theta1 <- 0.40; theta2 <- 0.55 drift <- c(0.5, 0.75) sdAR <- c(sqrt(2.5), sqrt(2.0)) # Generate AR sequences, TS1 and TS2, considering Gaussian white noise # Save both in a data.frame object: the data. tsdata <- data.frame(covdata, # Not used TS1 = arima.sim(nn, model = list(ar = c(theta1, theta1^2)), rand.gen = rnorm, mean = drift, sd = sdAR), TS2 = arima.sim(nn, model = list(ar = c(theta2, theta2^2)), rand.gen = rnorm, mean = drift, sd = sdAR)) # 2.1 Fitting both time series with 'ARXff'... multiple responses case. fit1 <- vglm(cbind(TS1, TS2) ~ 1, ARXff(order = c(2, 2), type.EIM = "exact"), data = tsdata, trace = TRUE) Coef(fit1) coef(fit1, matrix = TRUE) summary(fit1) ## Same length for both vectors, i.e. no constraints. length(Coef(fit1)) length(coef(fit1, matrix = TRUE)) ###2.2 Now, fit the same models with suitable constraints via 'cm.ARMA()' # Most importantly, "loglink" is used as link function to adequately match # the relationship between coefficients and constraints. That is: # theta2 = theta1^2, then log(theta2) = 2 * log(theta1). fit2 <- vglm(cbind(TS1, TS2) ~ 1, ARXff(order = c(2, 2), type.EIM = "exact", lARcoeff = "loglink"), constraints = cm.ARMA(Model = ~ 1, Resp = 2, lags.cm = c(2, 2), offset = -2), data = tsdata, trace = TRUE) Coef(fit2) coef(fit2, matrix = TRUE) summary(fit2) # NOTE, for model 1, Coeff2 = Coeff1^2, then log(Coeff2) = 2 * log(Coeff1) ( mycoef <- coef(fit2, matrix = TRUE)[c(3, 4)] ) 2 * mycoef - mycoef # SHOULD BE ZERO # Ditto for model 2: ( mycoef <- coef(fit2, matrix = TRUE)[c(7, 8)] ) 2 * mycoef - mycoef # SHOULD BE ZERO ## Different lengths, due to constraints length(Coef(fit2)) length(coef(fit2, matrix = TRUE))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.