symmetrizer {fastmatrix} | R Documentation |
Symmetrizer matrix
Description
This function returns the symmetrizer matrix of order n
which transforms,
for every n\times n
matrix \bold{A}
, vec
(\bold{A})
into
vec
((\bold{A} + \bold{A}^T)/2)
.
Usage
symmetrizer(n = 1, matrix = FALSE)
Arguments
n |
order of the symmetrizer matrix. |
matrix |
a logical indicating whether the symmetrizer matrix will be returned. |
Details
This function is a wrapper function for the function symm.info
. This function
provides the information required to create the symmetrizer matrix. If option matrix = FALSE
the symmetrizer matrix is stored in three vectors containing the coordinate list of
indexes for rows, columns and the values.
Warning: matrix = TRUE
is not recommended, unless the order n
be small. This matrix can require a huge amount of storage.
Value
Returns an n^2
by n^2
matrix (if requested).
References
Abadir, K.M., Magnus, J.R. (2005). Matrix Algebra. Cambridge University Press.
Magnus, J.R., Neudecker, H. (2007). Matrix Differential Calculus with Applications in Statistics and Econometrics, 3rd Edition. Wiley, New York.
See Also
Examples
z <- symmetrizer(n = 100)
object.size(z) # 319 Kb of storage
N100 <- symmetrizer(n = 100, matrix = TRUE) # time: < 2 secs
object.size(N100) # 800 Mb of storage, do not request this matrix!
# a small example
N3 <- symmetrizer(n = 3, matrix = TRUE)
a <- matrix(rep(c(2,4,6), each = 3), ncol = 3)
a
b <- 0.5 * (a + t(a))
b
v <- N3 %*% vec(a)
all(vec(b) == as.vector(v)) # vectors are equal!