Implements the regularization parameter selection for high dimensional undirected graph estimation. The optional approaches are rotation information criterion (ric), stability approach to regularization selection (stars) and extended Bayesian information criterion (ebic).
huge.select(
est,
criterion = NULL,
ebic.gamma = 0.5,
stars.thresh = 0.1,
stars.subsample.ratio = NULL,
rep.num = 20,
verbose = TRUE,
num.cores = 1
)An object with S3 class "select" is returned:
The optimal graph selected from the graph path
The optimal precision matrix from the path only applicable when method = "glasso"
The optimal covariance matrix from the path only applicable when method = "glasso" and est$cov is available.
The graph path estimated by merging the subsampling paths. Only applicable when the input criterion = "stars".
The variability along the subsampling paths. Only applicable when the input criterion = "stars".
Extended BIC scores for regularization parameter selection. Only applicable when criterion = "ebic".
The index of the selected regularization parameter. NOT applicable when the input criterion = "ric"
The selected regularization/thresholding parameter.
The sparsity level of "refit".
and anything else included in the input est
An object with S3 class "huge".
Model selection criterion. "ric" is available for all four estimation methods, "stars" for "mb", "ct", and "glasso", and "ebic" only for "glasso". Defaults are "ric" for "mb" and "tiger", "stars" for "ct", and "ebic" for "glasso".
The tuning parameter for ebic. The default value is 0.5. Only applicable when est$method = "glasso" and criterion = "ebic".
The variability threshold in stars. The default value is 0.1. An alternative value is 0.05. Only applicable when criterion = "stars".
The subsampling ratio. The default value is 10*sqrt(n)/n when n>144 and 0.8 when n<=144, where n is the sample size. Only applicable when criterion = "stars".
The number of subsamplings when criterion = "stars" or rotations when criterion = "ric". The default value is 20. NOT applicable when criterion = "ebic".
If verbose = FALSE, tracing information printing is disabled. The default value is TRUE.
The number of CPU cores used to fit the stars subsamplings in parallel via parallel::mclapply. The default value is 1 (serial). At most two forked workers are used, and this argument is ignored on Windows. Each forked worker limits huge's native OpenMP code to one thread, but an external threaded BLAS may still create additional threads; num.cores = 1 is the portable choice when a bounded thread budget or fork safety matters. Results are identical to the serial path for the same random seed. Only applicable when criterion = "stars".
Stability approach to regularization selection (stars) selects the optimal graph by variability of subsamplings and tends to overselect edges in Gaussian graphical models. It is available for "mb", "ct", and "glasso". TIGER can certify different lambda-path prefixes on different subsamples, so TIGER with stars is rejected until a common certified-prefix protocol is available; use "ric" for TIGER. Besides selecting the regularization parameters, stars can also provide an additional estimated graph by merging the corresponding subsampled graphs using the frequency counts. The subsampling procedure in stars may NOT be very efficient, we also provide the recent developed highly efficient, rotation information criterion approach (ric). Instead of tuning over a grid by cross-validation or subsampling, we directly estimate the optimal regularization parameter based on random Rotations. However, ric usually has very good empirical performances but suffers from underselections sometimes. Therefore, we suggest if user are sensitive of false negative rates, they should either consider increasing rep.num or applying the stars to model selection where supported. Extended Bayesian information criterion (ebic) is another competitive approach, but the ebic.gamma can only be tuned by experience.
For criterion = "stars", est$lambda must be non-increasing; tied values are allowed.
huge and huge-package.
#generate data
L = huge.generator(d = 20, graph="hub")
out.mb = huge(L$data)
out.ct = huge(L$data, method = "ct")
out.glasso = huge(L$data, method = "glasso")
#model selection using ric
out.select = huge.select(out.mb)
plot(out.select)
#model selection using stars
#out.select = huge.select(out.ct, criterion = "stars", stars.thresh = 0.05,rep.num=10)
#plot(out.select)
#model selection using ebic
out.select = huge.select(out.glasso,criterion = "ebic")
plot(out.select)
Run the code above in your browser using DataLab