| prec_to_adj | R Documentation |
Convert a precision matrix to a partial-correlation-based adjacency matrix.
prec_to_adj(
prec.mat,
diag.zero = TRUE,
absolute = FALSE,
threshold = NULL,
weighted = TRUE
)
prec.mat |
A numeric precision matrix. |
diag.zero |
A logical value (default = TRUE) specifying whether to
set the diagonal entries of the adjacency matrix to 0.
If |
absolute |
A logical value (default = FALSE) specifying whether to take the absolute values of the partial correlations. |
threshold |
A nonnegative numeric value (default = |
weighted |
A logical value (default = TRUE) specifying whether to
return a weighted adjacency matrix.
If |
For a precision matrix \Omega, the partial correlation between nodes
i and j is computed as
\rho_{ij} = - \frac{\Omega_{ij}}{\sqrt{\Omega_{ii}\Omega_{jj}}}.
A numeric adjacency matrix with S3 class "adjmat".
library(grasps)
## reproducibility for everything
set.seed(1234)
## block-structured precision matrix based on SBM
sim <- gen_prec_sbm(p = 30, K = 3,
within.prob = 0.25, between.prob = 0.05,
weight.dists = list("gamma", "unif"),
weight.paras = list(c(shape = 20, rate = 10),
c(min = 0, max = 5)),
cond.target = 100)
## ground truth visualization
plot(sim)
## n-by-p data matrix
library(MASS)
X <- mvrnorm(n = 20, mu = rep(0, 30), Sigma = sim$Sigma)
## precision matrix: adaptive lasso; BIC
prec <- grasps(X = X, membership = sim$membership, penalty = "adapt", crit = "BIC")
## precision matrix visualization
plot(prec)
## performance
performance(hatOmega = prec$hatOmega, Omega = sim$Omega)
## adjacency matrix: diagonal = 0; raw partial correlations;
## no thresholding; weighted network
adj <- prec_to_adj(prec$hatOmega,
diag.zero = TRUE, absolute = FALSE,
threshold = NULL, weighted = TRUE)
## adjacency matrix visualization
plot(adj)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.