| Random.Start | R Documentation |
Generates a random orthogonal matrix for use as an initial rotation
matrix (Tmat) in gradient projection rotation functions.
Random.Start(k = 2L)
k |
a positive integer specifying the dimension of the square orthogonal matrix to generate (default 2). |
The function generates a random orthogonal matrix using QR decomposition of a matrix of standard normal variates, with a sign correction applied to the diagonal of R to ensure uniform sampling from the Haar measure. This follows the approach of Stewart (1980) and Mezzadri (2007).
The naive approach of qr.Q(qr(matrix(rnorm(k*k), k))) does not
guarantee uniform sampling from the Haar measure. The sign correction
Q %*% diag(sign(diag(R))) is required to achieve this. This
was updated in GPArotation 2024.2-1 following a suggestion by Yves
Rosseel.
For oblique rotation a random starting transformation matrix can be
generated by normalizing the columns of a random matrix:
X %*% diag(1/sqrt(diag(crossprod(X)))) where
X <- matrix(rnorm(k*k), k).
A k \times k orthogonal matrix drawn uniformly from the
Haar measure on the orthogonal group O(k). Columns have unit length
and are mutually orthogonal.
Coen A. Bernaards and Robert I. Jennrich with some R modifications by Paul Gilbert. Updated following a suggestion by Yves Rosseel.
Stewart, G.W. (1980). The efficient generation of random orthogonal matrices with an application to condition estimators. SIAM Journal on Numerical Analysis, 17(3), 403–409. doi: 10.1137/0717034
Mezzadri, F. (2007). How to generate random matrices from the classical compact groups. Notices of the American Mathematical Society, 54(5), 592–604. arXiv:math-ph/0609050
GPFRSorth,
GPFRSoblq,
GPForth,
GPFoblq,
rotations
# Generate a 5 x 5 random orthogonal matrix
Random.Start(5)
# Verify orthogonality: t(Q) %*% Q should be the identity matrix
Q <- Random.Start(4)
round(t(Q) %*% Q, 10)
# Use as starting matrix for rotation
data("Thurstone", package = "GPArotation")
simplimax(box26, Tmat = Random.Start(3))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.