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, i.e. an output from PLNnetwork()

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. See PLNnetwork() 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 PLNnetworkfamily

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.54443 
	sparsifying penalty = 6.96857 
	sparsifying penalty = 6.436665 
	sparsifying penalty = 5.94536 
	sparsifying penalty = 5.491556 
	sparsifying penalty = 5.07239 
	sparsifying penalty = 4.685219 
	sparsifying penalty = 4.3276 
	sparsifying penalty = 3.997278 
	sparsifying penalty = 3.692169 
	sparsifying penalty = 3.410349 
	sparsifying penalty = 3.15004 
	sparsifying penalty = 2.9096 
	sparsifying penalty = 2.687513 
	sparsifying penalty = 2.482377 
	sparsifying penalty = 2.2929 
	sparsifying penalty = 2.117885 
	sparsifying penalty = 1.956228 
	sparsifying penalty = 1.806911 
	sparsifying penalty = 1.668991 
	sparsifying penalty = 1.541598 
	sparsifying penalty = 1.42393 
	sparsifying penalty = 1.315242 
	sparsifying penalty = 1.214851 
	sparsifying penalty = 1.122122 
	sparsifying penalty = 1.036472 
	sparsifying penalty = 0.9573588 
	sparsifying penalty = 0.8842844 
	sparsifying penalty = 0.8167877 
	sparsifying penalty = 0.754443 

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