Description Usage Arguments Value Note References Examples
Compute the maximum likelihood estimate of the precision matrix, given a known graphical structure (i.e., an adjacency matrix). This approach was originally described in "The Elements of Statistical Learning" \insertCite@see pg. 631, @hastie2009elementsGGMncv.
1 2 3 | constrained(Sigma, adj)
mle_known_graph(Sigma, adj)
|
Sigma |
Covariance matrix |
adj |
Adjacency matrix that encodes the constraints, where a zero indicates that element should be zero. |
A list containing the following:
Theta: Inverse of the covariance matrix (precision matrix)
Sigma: Covariance matrix.
wadj: Weighted adjacency matrix, corresponding to the partial correlation network.
The algorithm is written in c++
, and should scale to high dimensions
nicely.
Note there are a variety of algorithms for this purpose. Simulation studies indicated that this approach is both accurate and computationally efficient \insertCite@HFT therein, @emmert2019constrainedGGMncv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # data
y <- ptsd
# fit model
fit <- ggmncv(cor(y), n = nrow(y),
penalty = "lasso",
progress = FALSE)
# set negatives to zero (sign restriction)
adj_new <- ifelse( fit$P <= 0, 0, 1)
check_zeros <- TRUE
# track trys
iter <- 0
# iterate until all positive
while(check_zeros){
iter <- iter + 1
fit_new <- constrained(cor(y), adj = adj_new)
check_zeros <- any(fit_new$wadj < 0)
adj_new <- ifelse( fit_new$wadj <= 0, 0, 1)
}
# alias
# data
y <- ptsd
# nonreg (lambda = 0)
fit <- ggmncv(cor(y), n = nrow(y),
lambda = 0,
progress = FALSE)
# set values less than |0.1| to zero
adj_new <- ifelse( abs(fit$P) <= 0.1, 0, 1)
# mle given the graph
mle_known_graph(cor(y), adj_new)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.