ltMatrices: Multiple Lower Triangular Matrices

View source: R/ltMatrices.R

ltMatricesR Documentation

Multiple Lower Triangular Matrices

Description

A class representing multiple lower triangular matrices and some methods.

Usage

ltMatrices(object, diag = FALSE, byrow = FALSE, names = TRUE)
## S3 method for class 'ltMatrices'
as.array(x, symmetric = FALSE, ...)
## S3 method for class 'syMatrices'
as.array(x, ...)
## S3 method for class 'ltMatrices'
diagonals(x, ...)
## S3 method for class 'syMatrices'
diagonals(x, ...)
## S3 method for class 'matrix'
diagonals(x, ...)
## S3 method for class 'integer'
diagonals(x, ...)
diagonals(x) <- value
## S3 replacement method for class 'ltMatrices'
diagonals(x) <- value
## S3 replacement method for class 'syMatrices'
diagonals(x) <- value
## S3 method for class 'ltMatrices'
solve(a, b, transpose = FALSE, ...)
## S3 method for class 'syMatrices'
chol(x, ...)
## S3 method for class 'ltMatrices'
aperm(a, perm, is_chol = FALSE, ...)
Lower_tri(x, diag = FALSE, byrow = attr(x, "byrow"))
Mult(x, y, transpose = FALSE)
Tcrossprod(x, diag_only = FALSE)
Crossprod(x, diag_only = FALSE)
chol2cov(x)
invchol2chol(x)
chol2invchol(x)
invchol2cov(x)
invchol2pre(x)
chol2pre(x)
Dchol(x, D = 1 / sqrt(Tcrossprod(x, diag_only = TRUE)))
invcholD(x, D = sqrt(Tcrossprod(solve(x), diag_only = TRUE)))
chol2cor(x)
invchol2cor(x)
chol2pc(x)
invchol2pc(x)
vectrick(C, S, A, transpose = c(TRUE, TRUE))
standardize(chol, invchol)
destandardize(chol = solve(invchol), invchol, score_schol)

Arguments

object

a matrix representing the lower triagular elements of N lower triangular matrix, each of dimension J \times J. Dimensions of object depend on diag: With diagonal elements, object is a J(J+1)/2 \times N matrix, otherwise, the number of rows is J(J - 1) / 2.

diag

logical, object contains diagonal elements if TRUE, otherwise unit diagonal elements are assumed.

byrow

logical, object represents matrices in row-major order if TRUE or, otherwise, in column-major order.

names

logical or character vector of length J.

symmetric

logical, object is interpreted as a symmetric matrix if TRUE.

diag_only

logical, compute diagonal elements of crossproduct only if TRUE.

x,chol,invchol

object of class ltMatrices or syMatrices (for chol).

value

a matrix of diagonal elements to be assigned (of dimension J \times N).

a

object of class ltMatrices.

perm

a permutation of the covariance matrix corresponding to a.

is_chol

a logical indicating if a is the Cholesky of the covariance (chol = TRUE) of the precision matrix.

D

a matrix (of dimension J \times N) of diagonal elements to be multiplied with.

y

matrix with J rows.

b

matrix with J rows.

C

an object of class ltMatrices.

S

an object of class ltMatrices or a matrix with J^2 rows representing multiple J x J matrices (columns of vec operators).

A

an object of class ltMatrices.

transpose

a logical of length two indicating if A or B shall be transposed in vectrick. For solve, this argument being true computes solve(t(a), b) (in absence of a t() method for ltMatrices objects).

score_schol

score matrix for a standardized chol object.

...

additional arguments, currently ignored.

Details

ltMatrices interprets a matrix as lower triangular elements of multiple lower triangular matrices. The corresponding class can be used to store such matrices efficiently. Matrix multiplications, solutions to linear systems, explicite inverses, and crossproducts can be computed based on such objects. Details can be found in the lmvnorm_src package vignette.

Value

The constructor ltMatrices returns objects of class ltMatrices with corresponding methods.

See Also

vignette("lmvnorm_src", package = "mvtnorm")

Examples


  J <- 4L
  N <- 2L
  dm <- paste0("d", 1:J)
  xm <- paste0("x", 1:N)
  (C <- ltMatrices(matrix(runif(N * J * (J + 1) / 2), 
                          ncol = N, dimnames = list(NULL, xm)), 
                   diag = TRUE, names = dm))

  ## dimensions and names
  dim(C)
  dimnames(C)
  names(C)

  ## subset
  C[,2:3]

  ## multiplication
  y <- matrix(runif(N * J), nrow = J)
  Mult(C, y)

  ## solve
  solve(C)
  solve(C, y)

  ## tcrossprod
  Tcrossprod(C)

  ## convert to matrix
  as.array(solve(C[1,]))[,,1]


mvtnorm documentation built on Nov. 27, 2023, 5:11 p.m.