Extracts edge selection frequency in networks reconstructed from bootstrap subsamples during the stars stability selection procedure, as either a matrix or a named vector. In the latter case, edge names follow igraph naming convention.

extract_probs(
  Robject,
  penalty = NULL,
  index = NULL,
  crit = c("StARS", "BIC", "EBIC"),
  format = c("matrix", "vector"),
  tol = 1e-05
)

Arguments

Robject

an object with class PLNnetworkfamily, i.e. an output from PLNnetwork()

penalty

penalty used for the bootstrap subsamples

index

Integer index of the model to be returned. Only the first value is taken into account.

crit

a character for the criterion used to performed the selection. Either "BIC", "ICL", "EBIC", "StARS", "R_squared". Default is ICL for PLNPCA, and BIC for PLNnetwork. If StARS (Stability Approach to Regularization Selection) is chosen and stability selection was not yet performed, the function will call the method stability_selection() with default argument.

format

output format. Either a matrix (default) or a named vector.

tol

tolerance for rounding error when comparing penalties.

Value

Either a matrix or named vector of edge-wise probabilities. In the latter case, edge names follow igraph convention.

Examples

data(trichoptera)
trichoptera <- prepare_data(trichoptera$Abundance, trichoptera$Covariate)
nets <- PLNnetwork(Abundance ~ 1 + offset(log(Offset)), data = trichoptera)
#> 
#>  Initialization...
#>  Adjusting 30 PLN with sparse inverse covariance estimation
#> 	Joint optimization alternating gradient descent and graphical-lasso
#> 	sparsifying penalty = 3.643028 
	sparsifying penalty = 3.364959 
	sparsifying penalty = 3.108114 
	sparsifying penalty = 2.870875 
	sparsifying penalty = 2.651743 
	sparsifying penalty = 2.449338 
	sparsifying penalty = 2.262382 
	sparsifying penalty = 2.089696 
	sparsifying penalty = 1.930192 
	sparsifying penalty = 1.782862 
	sparsifying penalty = 1.646778 
	sparsifying penalty = 1.52108 
	sparsifying penalty = 1.404978 
	sparsifying penalty = 1.297737 
	sparsifying penalty = 1.198682 
	sparsifying penalty = 1.107187 
	sparsifying penalty = 1.022677 
	sparsifying penalty = 0.9446167 
	sparsifying penalty = 0.8725149 
	sparsifying penalty = 0.8059166 
	sparsifying penalty = 0.7444017 
	sparsifying penalty = 0.6875821 
	sparsifying penalty = 0.6350996 
	sparsifying penalty = 0.586623 
	sparsifying penalty = 0.5418465 
	sparsifying penalty = 0.5004879 
	sparsifying penalty = 0.4622861 
	sparsifying penalty = 0.4270002 
	sparsifying penalty = 0.3944076 
	sparsifying penalty = 0.3643028 

#>  Post-treatments
#>  DONE!
if (FALSE) {
stability_selection(nets)
probs <- extract_probs(nets, crit = "StARS", format = "vector")
probs
}

if (FALSE) {
## Add edge attributes to graph using igraph
net_stars <- getBestModel(nets, "StARS")
g <- plot(net_stars, type = "partial_cor", plot=F)
library(igraph)
E(g)$prob <- probs[as_ids(E(g))]
g
}