hfgolino/EGAnet

[Feature Request]: `threshold` argument in EBICglasso

Closed this issue · 4 comments

Thank you for this great package. I was wondering if and how one could pass the thresholding rule, as per the threshold = TRUE argument available in qgraph v. ≥ 1.5 and described here, when bootstrapping a network with EBIC glasso, via bootEGA . Thank you for your attention and any help you may be able to offer.

Hi @emafin,

It is certainly possible to add such an argument. I will need to look at how Sacha has implemented this approach as I see there are two options he discusses:

  1. Applying the threshold on the final model
  2. Applying the threshold to all models considered in the EBIC model selection

Option 1 can be feasibly applied to bootEGA without any updates to [EGAnet} by applying some threshold to the output bootGraphs. All other functions that leverage bootEGA output use bootGraphs directly, so you would have, for example, dimensionStablity work on the thresholds

Option 2, however, would require some tweaks and is probably the more preferred approach as the threshold application is being applied during model selection time rather than post selection.

Hi @AlexChristensen,

Thank you for your reply, time, and explanations, these are very helpful and much appreciated.

To add some context, if of any utility, we were running a study and using the thresholding rule to increase specificity, as per the guidelines from qgraph. We were interested in bootstrapping the clustering algorithm to assess the stability of it, and for the sake of consistency, we were trying to replicate the exact algorithm used in qgraph through bootEGA.

@emafin,

I have created a branch that implements the threshold argument for EBICglasso.qgraph in {EGAnet}: https://github.com/hfgolino/EGAnet/tree/EBICglasso-threshold

You can download this branch using the following code:

devtools::install_github("hfgolino/EGAnet", ref = "EBICglasso-threshold")

I have tested bootEGA to ensure that adding threshold = TRUE will work.

As you proceed, I would like to note some caveats:

  1. Because threshold has not been systematically validated via simulation for dimensionality estimation, there is an "experimental" warning that will be thrown

  2. {EGAnet}'s default behavior for EBICglasso.qgraph differs from {qgraph} such that lambda.min.ratio = 0.1 whereas {qgraph} implements lambda.min.ratio = 0.01

This difference is intended to increase the potential of higher specificity (sparser networks) already in the {EGAnet} implementation. If you would like the exact behavior of {qgraph}, then you will need to add more arguments to {EGAnet} functions. For example:

# Estimate network
qgraph_EBICglasso <- network.estimation(your_data, lambda.min.ratio = 0.01, threshold = TRUE)

# Estimate EGA
qgraph_EGA <- EGA(your_data, lambda.min.ratio = 0.01, threshold = TRUE)

# Estimate bootEGA
qgraph_bootEGA <- bootEGA(your_data, lambda.min.ratio = 0.01, threshold = TRUE)

A word of caution: Sparser networks are not better for dimesionality estimation (similarly, non-regularized networks do not seem to work well either; Christensen et al., 2023)

Christensen, A. P., Garrido, L. E., Guerra-Peña, K., & Golino, H. (2023). Comparing community detection algorithms in psychometric networks: A Monte Carlo simulation. Behavior Research Methods, 1–21. doi: 10.3758/s13428-023-02106-4

For posterity: This branch will not be merged into the master branch or a future version of {EGAnet} until it can be properly vetted via simulation and empirical studies

Thank you very much, @AlexChristensen for the change and the detailed explanations. I have tested the new argument on my data, it's really helpful. I appreciate the details on the need for simulation studies for vetting and future use.