qinv: Computes (parts of) the inverse of a SPD sparse matrix

Description Usage Arguments Value Author(s) Examples

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

1
2
     inla.qinv(Q, constr, reordering = inla.reorderings())
 

Arguments

Q

A SPD matrix, either as a (dense) matrix, sparseMatrix, or a (ascii-)filename with entries in the following format i j Qij.

constr

Optional linear constraints; see ?INLA::f and argument extraconstr

reordering

The type of reordering algorithm to be used; either one of the names listed in inla.reorderings() or the output from inla.qreordering(Q). The default is "auto" which try several reordering algorithm and use the best one for this particular matrix.

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@math.ntnu.no

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 ## 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 = INLA:::inla.tempfile()
 write(t(cbind(Q@i+1L,  Q@j+1L,  Q@x)), ncol=3, file=filename)
 Qinv = inla.qinv(filename)
 unlink(filename)
 

andrewzm/INLA documentation built on May 10, 2019, 11:12 a.m.