rbmf.O2 {rstiefel} | R Documentation |
Simulate a 2*2
Orthogonal Random Matrix
Description
Simulate a 2*2
random orthogonal matrix from the Bingham-von
Mises-Fisher distribution using a rejection sampler.
Usage
rbmf.O2(A, B, C, env = FALSE)
Arguments
A |
a symmetric matrix. |
B |
a diagonal matrix with decreasing entries. |
C |
a 2x2 matrix. |
env |
which rejection envelope to use, Bingham ( |
Value
A random 2x2 orthogonal matrix simulated from the Bingham-von Mises-Fisher distribution.
Author(s)
Peter Hoff
References
Hoff(2009)
Examples
## The function is currently defined as
function (A, B, C, env = FALSE)
{
sC <- svd(C)
d1 <- sum(sC$d)
eA <- eigen(A)
ab <- sum(eA$val * diag(B))
if (d1 <= ab | env == "bingham") {
lrmx <- sum(sC$d)
lr <- -Inf
while (lr < log(runif(1))) {
X <- rbing.O2(A, B, a = (eA$val[1] - eA$val[2]) *
(B[1, 1] - B[2, 2]), E = eA$vec)
lr <- sum(diag(t(X) %*% C)) - lrmx
}
}
if (d1 > ab | env == "mf") {
lrmx <- sum(eA$val * sort(diag(B), decreasing = TRUE))
lr <- -Inf
while (lr < log(runif(1))) {
X <- rmf.matrix(C)
lr <- sum(diag(B %*% t(X) %*% A %*% X)) - lrmx
}
}
X
}
[Package rstiefel version 1.0.1 Index]