rrvglm.control {VGAM} | R Documentation

## Control Function for rrvglm()

### Description

Algorithmic constants and parameters for running `rrvglm` are set using this function.

### Usage

    rrvglm.control(Rank = 1, Algorithm = c("alternating", "derivative"),
        Corner = TRUE, Uncorrelated.latvar = FALSE,
        Wmat = NULL, Svd.arg = FALSE,
        Index.corner = if (length(str0))
        head((1:1000)[-str0], Rank) else 1:Rank,
        Ainit = NULL, Alpha = 0.5, Bestof = 1, Cinit = NULL,
        Etamat.colmax = 10,
        sd.Ainit = 0.02, sd.Cinit = 0.02, str0 = NULL,
        noRRR = ~1, Norrr = NA,
        noWarning = FALSE,
        trace = FALSE, Use.Init.Poisson.QO = FALSE,
        checkwz = TRUE, Check.rank = TRUE, Check.cm.rank = TRUE,
        wzepsilon = .Machine$double.eps^0.75, ...)

### Arguments

`Rank` | The numerical rank R of the model. Must be an element from the set {1,2,...,min(M,p2)}. Here, the vector of explanatory variables x is partitioned into (x1,x2), which is of dimension p1+p2. The variables making up x1 are given by the terms in `noRRR` argument, and the rest of the terms comprise x2.
`Algorithm` | Character string indicating what algorithm is to be used. The default is the first one.
`Corner` | Logical indicating whether corner constraints are to be used. This is one method for ensuring a unique solution. If `TRUE`, `Index.corner` specifies the R rows of the constraint matrices that are use as the corner constraints, i.e., they hold an order-R identity matrix.
`Uncorrelated.latvar` | Logical indicating whether uncorrelated latent variables are to be used. This is normalization forces the variance-covariance matrix of the latent variables to be `diag(Rank)`, i.e., unit variance and uncorrelated. This constraint does not lead to a unique solution because it can be rotated.
`Wmat` | Yet to be done.
`Svd.arg` | Logical indicating whether a singular value decomposition of the outer product is to computed. This is another normalization which ensures uniqueness. See the argument `Alpha` below.
`Index.corner` | Specifies the R rows of the constraint matrices that are used for the corner constraints, i.e., they hold an order-R identity matrix.
`Alpha` | The exponent in the singular value decomposition that is used in the first part: if the SVD is U %*% D %*% t(V) then the first and second parts are U %*% D^Alpha and D^(1-Alpha) %*% t(V) respectively. A value of 0.5 is ‘symmetrical’. This argument is used only when `Svd.arg=TRUE`.
`Bestof` | Integer. The best of `Bestof` models fitted is returned. This argument helps guard against local solutions by (hopefully) finding the global solution from many fits. The argument works only when the function generates its own initial value for C, i.e., when C is not passed in as initial values.
`Ainit, Cinit` | Initial A and C matrices which may speed up convergence. They must be of the correct dimension.
`Etamat.colmax` | Positive integer, no smaller than `Rank`. Controls the amount of memory used by `.Init.Poisson.QO()`. It is the maximum number of columns allowed for the pseudo-response and its weights. In general, the larger the value, the better the initial value. Used only if `Use.Init.Poisson.QO=TRUE`.

`str0` | Integer vector specifying which rows of the estimated constraint matrices (A) are to be all zeros. These are called structural zeros. Must not have any common value with `Index.corner`, and be a subset of the vector `1:M`. The default, `str0 = NULL`, means no structural zero rows at all.
`sd.Ainit, sd.Cinit` | Standard deviation of the initial values for the elements of A and C. These are normally distributed with mean zero. This argument is used only if `Use.Init.Poisson.QO = FALSE`.

`noRRR` | Formula giving terms that are not to be included in the reduced-rank regression. That is, `noRRR` specifes which explanatory variables are in the x1 vector of `rrvglm`, and the rest go into x2. The x1 variables constitute the \bold{B}1 matrix in Yee and Hastie (2003). Those x2 variables which are subject to the reduced-rank regression correspond to the \bold{B}2 matrix. Set `noRRR = NULL` for the reduced-rank regression to be applied to every explanatory variable including the intercept.
`Norrr` | Defunct. Please use `noRRR`. Use of `Norrr` will become an error soon.
`trace` | Logical indicating if output should be produced for each iteration.
`Use.Init.Poisson.QO` | Logical indicating whether the `.Init.Poisson.QO()` should be used to obtain initial values for the C. The function uses a new method that can work well if the data are Poisson counts coming from an equal-tolerances QRR-VGLM (CQO). This option is less realistic for RR-VGLMs compared to QRR-VGLMs.
`checkwz` | logical indicating whether the diagonal elements of the working weight matrices should be checked whether they are sufficiently positive, i.e., greater than `wzepsilon`. If not, any values less than `wzepsilon` are replaced with this value.
`noWarning, Check.rank, Check.cm.rank` | Same as `vglm.control`. Ignored for VGAM 0.9-7 and higher.
`wzepsilon` | Small positive number used to test whether the diagonals of the working weight matrices are sufficiently positive.
`...` | Variables in ... are passed into `vglm.control`. If the derivative algorithm is used then ... are also passed into `rrvglm.optim.control`; and if the alternating algorithm is used then ... are also passed into `valt.control`.

In the above, R is the `Rank` and M is the number of linear predictors.

### Details

VGAM supports three normalizations to ensure a unique solution. Of these, only corner constraints will work with `summary` of RR-VGLM objects.

### Value

A list with components matching the input names. Some error checking is done, but not much.

### Note

The arguments in this function begin with an upper case letter to help avoid interference with those of `vglm.control`.

In the example below a rank-1 stereotype model (Anderson, 1984) is fitted.

### Author(s)

Thomas W. Yee

### References

Yee, T. W. and Hastie, T. J. (2003) Reduced-rank vector generalized linear models. Statistical Modelling, 3, 15–41.

### See Also

`rrvglm`, `rrvglm.optim.control`, `rrvglm-class`, `vglm`, `vglm.control`, `cqo`.

### Examples

    ## Not run:
    set.seed(111)
    pneumo <- transform(pneumo, let = log(exposure.time),
                                x3 = runif(nrow(pneumo)))  # x3 is random noise
    fit <- rrvglm(cbind(normal, mild, severe) ~ let + x3,
                  multinomial, data = pneumo, Rank = 1, Index.corner = 2)
    constraints(fit)
    vcov(fit)
    summary(fit)

    ## End(Not run)

[Package VGAM version 1.0-3 Index]