Estimates the number of dimensions of a given dataset or correlation matrix
using the graphical lasso (EBICglasso.qgraph
) or the
Triangulated Maximally Filtered Graph (TMFG
)
network estimation methods.
EGA(
data,
n = NULL,
uni.method = c("expand", "LE"),
corr = c("cor_auto", "pearson", "spearman"),
model = c("glasso", "TMFG"),
model.args = list(),
algorithm = c("walktrap", "louvain"),
algorithm.args = list(),
plot.EGA = TRUE,
plot.type = c("GGally", "qgraph"),
plot.args = list(),
verbose = TRUE,
...
)
Returns a list containing:
A symmetric network estimated using either the
EBICglasso.qgraph
or TMFG
A vector representing the community (dimension) membership
of each node in the network. NA
values mean that the node
was disconnected from the network
A scalar of how many total dimensions were identified in the network
The zero-order correlation matrix
Matrix or data frame.
Variables (down columns) or correlation matrix.
If the input is a correlation matrix,
then argument n
(number of cases) is required
Integer.
Sample size if data
provided is a correlation matrix
Character.
What unidimensionality method should be used?
Defaults to "LE"
.
Current options are:
expand
Expands the correlation matrix with four variables correlated .50.
If number of dimension returns 2 or less in check, then the data
are unidimensional; otherwise, regular EGA with no matrix
expansion is used. This is the method used in the Golino et al. (2020)
Psychological Methods simulation.
LE
Applies the leading eigenvalue algorithm (cluster_leading_eigen
)
on the empirical correlation matrix. If the number of dimensions is 1,
then the leading eigenvalue solution is used; otherwise, regular EGA
is used. This is the final method used in the Christensen, Garrido,
and Golino (2021) simulation.
Type of correlation matrix to compute. The default uses cor_auto
.
Current options are:
cor_auto
Computes the correlation matrix using the cor_auto
function from
qgraph
.
pearson
Computes Pearson's correlation coefficient using the pairwise complete observations via
the cor
function.
spearman
Computes Spearman's correlation coefficient using the pairwise complete observations via
the cor
function.
Character.
A string indicating the method to use.
Defaults to "glasso"
.
Current options are:
glasso
Estimates the Gaussian graphical model using graphical LASSO with
extended Bayesian information criterion to select optimal regularization parameter
TMFG
Estimates a Triangulated Maximally Filtered Graph
List.
A list of additional arguments for EBICglasso.qgraph
or TMFG
A string indicating the algorithm to use or a function from igraph
Defaults to "walktrap"
.
Current options are:
walktrap
Computes the Walktrap algorithm using cluster_walktrap
louvain
Computes the Louvain algorithm using cluster_louvain
List.
A list of additional arguments for cluster_walktrap
, cluster_louvain
,
or some other community detection algorithm function (see examples)
Boolean.
If TRUE
, returns a plot of the network and its estimated dimensions.
Defaults to TRUE
Character.
Plot system to use.
Current options are qgraph
and GGally
.
Defaults to "GGally"
List.
A list of additional arguments for the network plot.
For plot.type = "qgraph"
:
vsize
Size of the nodes. Defaults to 6.
For plot.type = "GGally"
(see ggnet2
for
full list of arguments):
vsize
Size of the nodes. Defaults to 6.
label.size
Size of the labels. Defaults to 5.
alpha
The level of transparency of the nodes, which might be a single value or a vector of values. Defaults to 0.7.
edge.alpha
The level of transparency of the edges, which might be a single value or a vector of values. Defaults to 0.4.
legend.names
A vector with names for each dimension
color.palette
The color palette for the nodes. For custom colors,
enter HEX codes for each dimension in a vector.
See color_palette_EGA
for
more details and examples
Boolean.
Should network estimation parameters be printed?
Defaults to TRUE
.
Set to FALSE
for no print out
Additional arguments.
Used for deprecated arguments from previous versions of EGA
Hudson Golino <hfg9s at virginia.edu>, Alexander P. Christensen <alexpaulchristensen at gmail.com>, Maria Dolores Nieto <acinodam at gmail.com> and Luis E. Garrido <garrido.luiseduardo at gmail.com>
Two community detection algorithms, Walktrap (Pons & Latapy, 2006) and
Louvain (Blondel et al., 2008), are pre-programmed because of their
superior performance in simulation studies on psychological
data generated from factor models (Christensen & Golino; 2020; Golino et al., 2020).
Notably, any community detection algorithm from the igraph
can be used to estimate the number of communities (see examples).
# Louvain algorithm
Blondel, V. D., Guillaume, J.-L., Lambiotte, R., & Lefebvre, E. (2008).
Fast unfolding of communities in large networks.
Journal of Statistical Mechanics: Theory and Experiment, 2008, P10008.
# Compared all igraph community detections algorithms, introduced Louvain algorithm, simulation with continuous and polytomous data
# Also implements the Leading Eigenvalue unidimensional method
Christensen, A. P., Garrido, L. E., & Golino, H. (2021).
Comparing community detection algorithms in psychological data: A Monte Carlo simulation.
PsyArXiv.
# Original simulation and implementation of EGA
Golino, H. F., & Epskamp, S. (2017).
Exploratory graph analysis: A new approach for estimating the number of dimensions in psychological research.
PLoS ONE, 12, e0174035.
Golino, H. F., & Demetriou, A. (2017). Estimating the dimensionality of intelligence like data using Exploratory Graph Analysis. Intelligence, 62, 54-70.
# Current implementation of EGA, introduced unidimensional checks, continuous and dichotomous data
Golino, H., Shi, D., Christensen, A. P., Garrido, L. E., Nieto, M. D., Sadana, R., & Thiyagarajan, J. A. (2020).
Investigating the performance of Exploratory Graph Analysis and traditional techniques to identify the number of latent factors: A simulation and tutorial.
Psychological Methods, 25, 292-320.
# Walktrap algorithm
Pons, P., & Latapy, M. (2006).
Computing communities in large networks using random walks.
Journal of Graph Algorithms and Applications, 10, 191-218.
bootEGA
to investigate the stability of EGA's estimation via bootstrap
and CFA
to verify the fit of the structure suggested by EGA using confirmatory factor analysis.
# Estimate EGA
## plot.type = "qqraph" used for CRAN checks
## plot.type = "GGally" is the default
ega.wmt <- EGA(data = wmt2[,7:24], plot.type = "qgraph")
# Summary statistics
summary(ega.wmt)
# Estimate EGAtmfg
ega.wmt <- EGA(data = wmt2[,7:24], model = "TMFG", plot.type = "qgraph")
# Estimate EGA with Louvain algorithm
ega.wmt <- EGA(data = wmt2[,7:24], algorithm = "louvain", plot.type = "qgraph")
# Estimate EGA with Spinglass algorithm
ega.wmt <- EGA(data = wmt2[,7:24],
algorithm = igraph::cluster_spinglass, plot.type = "qgraph")
# Estimate EGA
ega.intel <- EGA(data = intelligenceBattery[,8:66], model = "glasso", plot.EGA = FALSE)
# Summary statistics
summary(ega.intel)
# Fast for CRAN checks
# Pearson's correlation matrix
wmt <- cor(wmt2[,7:24])
# Estimate EGA
ega.wmt <- EGA(data = wmt, n = nrow(wmt2), model = "glasso", plot.EGA = FALSE)
Run the code above in your browser using DataLab