This function computes the StARS stability criteria over a path of penalties. If a path has already been computed, the functions stops with a message unless force = TRUE has been specified.

stability_selection(
  Robject,
  subsamples = NULL,
  control = PLNnetwork_param(),
  force = FALSE
)

Arguments

Robject

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

subsamples

a list of vectors describing the subsamples. The number of vectors (or list length) determines th number of subsamples used in the stability selection. Automatically set to 20 subsamples with size 10*sqrt(n) if n >= 144 and 0.8*n otherwise following Liu et al. (2010) recommendations.

control

a list controlling the main optimization process in each call to PLNnetwork() or ZIPLNnetwork(). See PLN_param() or ZIPLN_param() for details.

force

force computation of the stability path, even if a previous one has been detected.

Value

the list of subsamples. The estimated probabilities of selection of the edges are stored in the fields stability_path of the initial Robject with class Networkfamily

Examples

data(trichoptera)
trichoptera <- prepare_data(trichoptera$Abundance, trichoptera$Covariate)
fits <- PLNnetwork(Abundance ~ 1, data = trichoptera)
#> 
#>  Initialization...
#>  Adjusting 30 PLN with sparse inverse covariance estimation
#> 	Joint optimization alternating gradient descent and graphical-lasso
#> 	sparsifying penalty = 7.264447 
	sparsifying penalty = 6.709958 
	sparsifying penalty = 6.197792 
	sparsifying penalty = 5.72472 
	sparsifying penalty = 5.287757 
	sparsifying penalty = 4.884147 
	sparsifying penalty = 4.511344 
	sparsifying penalty = 4.166997 
	sparsifying penalty = 3.848934 
	sparsifying penalty = 3.555148 
	sparsifying penalty = 3.283787 
	sparsifying penalty = 3.033138 
	sparsifying penalty = 2.801621 
	sparsifying penalty = 2.587776 
	sparsifying penalty = 2.390253 
	sparsifying penalty = 2.207807 
	sparsifying penalty = 2.039287 
	sparsifying penalty = 1.88363 
	sparsifying penalty = 1.739854 
	sparsifying penalty = 1.607053 
	sparsifying penalty = 1.484388 
	sparsifying penalty = 1.371086 
	sparsifying penalty = 1.266432 
	sparsifying penalty = 1.169766 
	sparsifying penalty = 1.080479 
	sparsifying penalty = 0.998007 
	sparsifying penalty = 0.9218299 
	sparsifying penalty = 0.8514675 
	sparsifying penalty = 0.7864757 
	sparsifying penalty = 0.7264447 

#>  Post-treatments
#>  DONE!
if (FALSE) {
n <- nrow(trichoptera)
subs <- replicate(10, sample.int(n, size = n/2), simplify = FALSE)
stability_selection(nets, subsamples = subs)
}