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.638537 
	sparsifying penalty = 3.360811 
	sparsifying penalty = 3.104283 
	sparsifying penalty = 2.867336 
	sparsifying penalty = 2.648475 
	sparsifying penalty = 2.446319 
	sparsifying penalty = 2.259593 
	sparsifying penalty = 2.087121 
	sparsifying penalty = 1.927812 
	sparsifying penalty = 1.780664 
	sparsifying penalty = 1.644748 
	sparsifying penalty = 1.519205 
	sparsifying penalty = 1.403246 
	sparsifying penalty = 1.296137 
	sparsifying penalty = 1.197204 
	sparsifying penalty = 1.105823 
	sparsifying penalty = 1.021416 
	sparsifying penalty = 0.9434523 
	sparsifying penalty = 0.8714394 
	sparsifying penalty = 0.8049232 
	sparsifying penalty = 0.7434841 
	sparsifying penalty = 0.6867346 
	sparsifying penalty = 0.6343167 
	sparsifying penalty = 0.5858998 
	sparsifying penalty = 0.5411786 
	sparsifying penalty = 0.4998709 
	sparsifying penalty = 0.4617162 
	sparsifying penalty = 0.4264738 
	sparsifying penalty = 0.3939214 
	sparsifying penalty = 0.3638537 

#>  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
}