Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
33 lines (32 sloc) 1.33 KB
/* Return the log probability of an intrinsic conditional autoregressive
* (ICAR) prior with a sparse representation for the adjacency matrix
* Full credit to Max Joseph (https://github.com/mbjoseph/CARstan)
* Args:
* phi: Vector containing the CAR parameters for each location
* sdcar: Standard deviation parameter for the CAR prior
* Nloc: Number of locations
* Nedges: Number of edges (adjacency pairs)
* Nneigh: Number of neighbors for each location
* eigenW: Eigenvalues of D^(-1/2) * W * D^(-1/2)
* edges1, edges2: Sparse representation of adjacency matrix
* Details:
* D = Diag(Nneigh)
* Returns:
* Log probability density of CAR prior up to additive constant
*/
real sparse_icar_lpdf(vector phi, real sdcar, int Nloc,
int Nedges, vector Nneigh, vector eigenW,
int[] edges1, int[] edges2) {
real tau; // precision parameter
row_vector[Nloc] phit_D; // phi' * D
row_vector[Nloc] phit_W; // phi' * W
tau = 1 / sdcar^2;
phit_D = (phi .* Nneigh)';
phit_W = rep_row_vector(0, Nloc);
for (i in 1:Nedges) {
phit_W[edges1[i]] = phit_W[edges1[i]] + phi[edges2[i]];
phit_W[edges2[i]] = phit_W[edges2[i]] + phi[edges1[i]];
}
return 0.5 * ((Nloc - 1) * log(tau) -
tau * (phit_D * phi - (phit_W * phi)));
}
You can’t perform that action at this time.