| qinv {INLA} | R Documentation |
Computes (parts of) the inverse of a SPD sparse matrix
Description
This routine use the GMRFLib implementation which compute parts of the inverse of a SPD sparse matrix. The diagonal and values for the neighbours in the inverse, are provided.
Usage
inla.qinv(Q, constr, reordering = INLA::inla.reorderings(), num.threads = NULL)
Arguments
Q |
A SPD matrix, either as a (dense) matrix or sparseMatrix. |
constr |
Optional linear constraints; see |
reordering |
The type of reordering algorithm to be used for
|
num.threads |
Maximum number of threads the |
Value
inla.qinv returns a sparseMatrix of type
dgTMatrix with the diagonal and values for the neigbours in the
inverse. Note that the full inverse is NOT provided!
Author(s)
Havard Rue hrue@r-inla.org
Examples
## dense matrix example
n = 10
A = matrix(runif(n^2), n, n)
Q = A %*% t(A)
print(mean(abs(inla.qinv(Q) - solve(Q))))
## sparse matrix example
rho = 0.9
Q = toeplitz(c(1+rho^2, -rho, rep(0, n-3), -rho)) / (1-rho^2)
Q = inla.as.dgTMatrix(Q)
Q.inv = inla.qinv(Q)
## compute the marginal variances as a vector from a precision matrix
marginal.variances = diag(inla.qinv(Q))
## read the sparse matrix from a file in the 'i, j, value' format
filename = tempfile()
write(t(cbind(Q@i+1L, Q@j+1L, Q@x)), ncol=3, file=filename)
Qinv = inla.qinv(filename)
unlink(filename)