mrrr {rrpack}R Documentation

Generalized or mixed-response reduced-rank regression

Description

Peforms either rank constrained maximum likelihood estimation or singular value penalized estimation.

Usage

mrrr(
  Y,
  X,
  is.pca = NULL,
  offset = NULL,
  ctrl.id = c(),
  family = list(gaussian(), binomial()),
  familygroup = NULL,
  maxrank = min(ncol(Y), ncol(X)),
  penstr = list(),
  init = list(),
  control = list()
)

Arguments

Y

response matrix

X

covariate matrix

is.pca

If TRUE, mixed principal component analysis with X=I

offset

matrix of the same dimension as Y for offset

ctrl.id

indices of unpenalized predictors

family

a list of family functions as used in glm

familygroup

a list of family indices of the responses

maxrank

integer giving the maximum rank allowed. Usually this can be set to min(n,p,q)

penstr

a list of penalty structure of SVD, contains penstr$penaltySVD is the penalty of SVD, penstr$lambdaSVD is the regularization parameter

init

a list of initial values of kappaC0, kappaS0, C0, and S0

control

a list of controling parameters for the fitting

Details

The model fitting process can be fine tuned through argument control. The available elements for control include

Similarly, the available elements for arguments penstr specifying penalty structure of SVD include

Value

S3 mrrr object, a list containing

obj

the objective function tracking

converged

TRUE/FALSE for convergence

coef

the estimated coefficient matrix

outlier

the estimated outlier matrix

nrank

the rank of the fitted model

Examples

library(rrpack)
simdata <- rrr.sim3(n = 100, p = 30, q.mix = c(5, 20, 5),
                    nrank = 2, mis.prop = 0.2)
Y <- simdata$Y
Y_mis <- simdata$Y.mis
X <- simdata$X
X0 <- cbind(1, X)
C <- simdata$C
family <- simdata$family
familygroup <- simdata$familygroup
svdX0d1 <- svd(X0)$d[1]
init1 = list(kappaC0 = svdX0d1 * 5)
offset = NULL
control = list(epsilon = 1e-4, sv.tol = 1e-2, maxit = 2000,
               trace = FALSE, gammaC0 = 1.1, plot.cv = TRUE,
               conv.obj = TRUE)
fit.mrrr <- mrrr(Y_mis, X, family = family, familygroup = familygroup,
                 penstr = list(penaltySVD = "rankCon", lambdaSVD = 2),
                 control = control, init = init1)
summary(fit.mrrr)
coef(fit.mrrr)
par(mfrow = c(1, 2))
plot(fit.mrrr$obj)
plot(C ~ fit.mrrr$coef[- 1 ,])
abline(a = 0, b = 1)

[Package rrpack version 0.1-13 Index]