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.541317 
	sparsifying penalty = 6.965695 
	sparsifying penalty = 6.43401 
	sparsifying penalty = 5.942907 
	sparsifying penalty = 5.48929 
	sparsifying penalty = 5.070297 
	sparsifying penalty = 4.683286 
	sparsifying penalty = 4.325815 
	sparsifying penalty = 3.995629 
	sparsifying penalty = 3.690646 
	sparsifying penalty = 3.408942 
	sparsifying penalty = 3.148741 
	sparsifying penalty = 2.9084 
	sparsifying penalty = 2.686404 
	sparsifying penalty = 2.481353 
	sparsifying penalty = 2.291954 
	sparsifying penalty = 2.117011 
	sparsifying penalty = 1.955421 
	sparsifying penalty = 1.806166 
	sparsifying penalty = 1.668303 
	sparsifying penalty = 1.540962 
	sparsifying penalty = 1.423342 
	sparsifying penalty = 1.3147 
	sparsifying penalty = 1.21435 
	sparsifying penalty = 1.121659 
	sparsifying penalty = 1.036044 
	sparsifying penalty = 0.9569638 
	sparsifying penalty = 0.8839195 
	sparsifying penalty = 0.8164507 
	sparsifying penalty = 0.7541317 

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