Changelog
The full history of EGAnet, straight from NEWS.md.
UPDATE: community.detection and
community.consensus now use {EGAnet}’s own C implementation
of the Louvain algorithm (louvain.c) instead of
igraph::cluster_louvain:
Uses the standard incremental Louvain bookkeeping (Blondel et al., 2008) with a sparse adjacency list built once per aggregation level, rather than a dense O(cols^2) modularity matrix – substantially faster, especially for larger and/or denser networks and for the repeated applications used by consensus clustering
Node shuffling uses xoshiro256++ (like the rest of {EGAnet}’s
reproducible random generation) rather than R’s global RNG, so
seed now makes results reproducible regardless of R’s RNG
state, call order, or parallelization
community.consensus gains a seed
argument (previously unsupported for consensus clustering); each of the
consensus.iter applications gets its own reproducible
sub-seed derived from it. bootEGA now threads its
per-iteration seed through to the algorithm as well – previously, only
the bootstrap resampling was reproducible when seed was
set, not the Louvain community detection step itself
order = "lower"/"higher" now determines
what is directly computed (stopping after the first local-moving pass,
or running full multilevel aggregation to convergence) rather than
always computing the higher-order solution and extracting a level from
it afterward
INTERNAL: added resolve_resolution (not yet
used/exported)
UPDATE: polychoric.matrix C implementation
overhauled for speed and accuracy (ported from {L0ggm}):
Bivariate normal CDF replaced with Genz’s (2004) double-precision
extension of Drezner and Wesolowsky (1990), translated from the Fortran
TVPACK MVBVU routine (via the pbivnorm R package). Uses a
variable-order (6-, 12-, or 20-point) Gauss-Legendre rule depending on ,
with an extended tail-correction series for close to 1, giving higher
accuracy than the fixed 5-point rule it replaces
Optimizer replaced Brent’s method with Newton-Raphson (Fisher scoring on rho, falling back to an exact-Hessian arcsin-reparameterized Newton step to guarantee rho stays in (-1, 1), with damped step sizes to avoid overshoot near the boundary), seeded from a Pearson-correlation starting value
Several C-level optimizations: caching bivariate CDF/density
evaluations across a grid of category thresholds instead of recomputing
each corner up to 4x redundantly; merging the joint-frequency-table pass
with the Pearson starting-value computation into a single scan of the
data; replacing per-pair heap allocations with fixed-size stack buffers;
replacing a from-scratch Chebyshev expansion with an
erfc()-based univariate normal CDF; and hoisting rho-only
quantities out of the per-cell evaluation loop
Net effect: 1.2-5.6x faster than the previous implementation across a range of dataset sizes and category counts, with results agreeing to 5-8 significant digits
UPDATE: DESCRIPTION and inst/COPYRIGHTS
updated to credit Alan Genz for the bivariate normal CDF implementation
in polychoric_matrix.c, replacing the earlier
Drezner-Wesolowsky approximation translated from Alexander Robitzsch’s
{pbv} package, which is no longer present
FIX: bug when singleton communities in invariance
(resolves to dropping variable)
FIX: bug in itemStability plot legend
naming
UPDATE: bootEGA plot updated to have single legend
(uses itemStability)
REMOVE: network.regularization has moved to
{L0ggm}
ADD: new function (plot_clusters) to plot clusters
of individual dynEGA results
ADD: TEFI optimization for dynEGA functions
ADD: dynamic.network.compare to compare dynamic
networks (allows for paired and non-paired tests)
ADD: network.fit for traditional fit statistics
(only accurate for continuous data)
ADD: known.graph to refit without regularization or
allow a graph to be estimated with weights when it is known
CHANGE: network.nonconvex changed to
network.regularization for more generic
implementations
UPDATE: zero variance time series handling in dynEGA
functions
UPDATE: better mechanism for simEGM
UPDATE: better optimizations for
EGM.optimizations
REMOVE: EGM has been removed (for now) as its under
revision
INTERNAL: regularization penalties and derivatives are added but not used (yet)
FIX: documentation for itemDiagnostics
FIX: $keep output from itemDiagnostics
rather than $suggested
UPDATE: added argument, ordered, to either output
net.loads in the initial variable order or descending order
for each community
UPDATE: beta-min condition is used to supply a model-implied
network for simEGM
UPDATE: missing data handling in glla and
subsequently dynEGA functions
ADD: itemDiagnostics for automated detection of
potential instability issues such as local dependnece, minor dimensions,
multidimensionality, and low loadings
FIX: default itemStability plot switched back to
empirical dimensions only
UPDATE: simEGM has a new (faster) data generating
mechanism
UPDATE: EGM optimizations for log-likelihood, AIC,
and BIC were added (including proper gradients)
ADD: network.nonconvex to estimate networks using
non-convex regularization penalties
ADD: TEFI.compare to perform a significance test
between two structures using bootEGA output
FIX: Error in printing length_error for
color_palette_EGA
FIX: signs for revised network loadings have reverted back to original method due to issues with eigenvectors when there are unusual patterns of (partial) correlations
UPDATE: itemStability plot now includes the full
item stability matrix rather than empirical dimensions
ADD: EGM and simEGM for model
estimation and simulation of the Exploratory Graph Model,
respectively
ADD: EGM.compare to compare EGM against EFA for most
likely data generating mechanism
INTERNAL: fit function to calculate traditional,
log-likelihood, and TEFI fit indices
FIX: issue with dynamic memory allocation in
polychoric_matrix.c during CRAN’s install of the
package
ADD: cosine similarity added as a default for
auto.correlate and ‘corr’ arguments
FIX: mixed data with missing data in
network.predictability
ADD: frobenius norm to compare networks
ADD: network.compare function to test for
differences in network structures using three different metrics
(Frobenius Norm, Jensen-Shannon Similarity, total network
strength)
ADD: a general function called information to
compute several information theory measures
UPDATE: default ‘loading.method’ for net.loads has
been changed to “revised” moving forward – the previous default in
versions <= 2.0.6 can be obtained using “original”
UPDATE: invariance handles more than 2 groups (plots
up to 4 groups pairwise)
UPDATE: added ‘signed’ argument in jsd to allow for
signed or absolute networks to be used in computations (includes
downstream functions: infoCluster)
UPDATE: NEWS is now formatted in markdown
UPDATE: network.predictability uses R-squared and
mean absolute error (MAE) for all node predictions
INTERNAL: network.generalizabilty was moved to be
internal (needs some work yet)
INTERNAL: signs for net.loads uses the first
eigenvector of the target network (rather than the custom
obtain_signs function)
FIX: bug when using na.data = "listwise" in standard
cor() function
FIX: update to revised network loadings signs:
net.loads(..., loading.method = "experimental")
FIX: bug in argument ‘returnAllResults’ for
EBICglasso.qgraph
FIX: bug when passing additional
non-dimensionStability arguments into
bootEGA
FIX: bug when printing hierEGA summary from
bootEGA
UPDATE: colors in itemStability plots will match
colors of hierEGA plot
UPDATE: network.predictability uses empirical
inverse variances (rather than network-implied)
UPDATE: R-squared in continuous_accuracy helper uses
Pearson’s correlation squared
FIX: ‘stroke’ parameter in hierEGA that broke with
{ggplot2} update
ADD: network.predictability to predict new data
based on a network
ADD: network.generalizability to estimate network
generalizability to new data (leverages
network.predictability)
UPDATE: new loadings
(net.loads(..., loading.method = "experimental")) have been
added to resolve issues in original loadings (e.g., signs,
cross-loadings, standardization)
UPDATE: plot.bootEGA will output
itemStability plot by default
UPDATE: dimensionStability output now included in
bootEGA as output $stability
UPDATE: ‘rotate’ argument added to infoCluster plot
to allow for different angle of dendrogram
DEPENDENCY: {fungible} is now ‘IMPORTS’ over ‘SUGGESTS’ for dependency in new loadings
DEPRECATED: typicalStructure and
plot.typicalStructure have been deprecated to
FALSE
FIX: plotting for infoCluster when there are grey
lines involved (or not)
FIX: pass of multiple passes of resolution_parameter
causing an error in {igraph} 2.0.0 for EGA.fit (see issue
#148)
ADD: community.compare to perform permutation test
to determine statistical significance of cluster similarity
UPDATE: moved reindex_memberships to
helpers
UPDATE: reindex_memberships used in
community.homogenize
FIX: freed edge.* arguments in
compare.EGA.plots to allow full customization
UPDATE: optimizations for speed and memory in
ergoInfo and boot.ergoInfo
DEPENDENCY: swapped out {ggdendro} for {dendextend}
FIX: ties for max gain in TMFG
FIX: continuous variables with few categories that are treated as
ordinal in polychoric.matrix
FIX: character input for structure is now
accepted
ADD: website pointing to different data check errors added to error output (hopefully, makes errors more understandable)
UPDATE: corr = "cor_auto" now performs
qgraph::cor_auto in favor of legacy; previous behavior
starting at 2.0.0 was t+ deprecate "cor_auto" in favor of
"auto"; default remains corr = "auto"
UPDATE: compare.EGA.plots outputs $all
and $individual for the plots
UPDATE: when structure is supplied for
invariance, then configural check is skipped (structure is
assumed to be invariant)
UPDATE: added data generation for model = "BGGM" and
uni.method = "expand" in
community.unidimensional
DEPENDENCY: {BGGM} has been removed until dependency chain on CRAN can be resolved
MAJOR REFACTOR: the update to version 2.0.0 includes many major changes that are designed to improve the speed, reliability, and reproducibility of {EGAnet}. The goal of these changes are to eliminate common errors and streamline the code in the package to prevent future error cases. There are several function additions that are provided to facilitate modular use of the {EGAnet} package
INTERNALS: function-specific internal functions and S3methods are now located in their respective .R files rather than elsewhere (e.g., “utils-EGAnet.R”)
SWAP: internal script usage of “utils-EGAnet.R” depracated for “helper.R” functions that are used across the package (no visible changes for the user)
NOTE: default objective function for Leiden algorithm is set to “modularity”
NOTE: default for Louvain unidimensional method is set to single-shot unless argument “consensus.method” or “consensus.iter” is specified
ADD: stricter *apply functions that are roughly
equivalent to *apply but have stricter inputs/outputs (uses
vapply as foundation; often, slightly faster)
ADD: community.consensus to apply the Consensus
Clustering approach introduced by Lancichnetti & Fortunato (2012).
Currently only available for the Louvain algorithm
ADD: community.detection to apply community
detection algorithms as a standalone function
ADD: convenience function to convert an {igraph} object to a
standard matrix (igraph2matrix)
ADD: modularity to compute standard (absolute
values) and signed modularity (implemented in C)
ADD: polychoric.matrix to compute categorical
correlations (implemented in C); handles missing data (“pairwise” or
“listwise”) as well as empty cells in the joint frequency table (see
documentation: ?polychoric.matrix)
ADD: auto.correlate now computes all correlations
internally and no longer depends on external functions; categorical
correlations are C based and bi/polyserial correlations are a simplified
and vectorized version of {polycor}’s polyserial;
substantial computational gains (between 10-25x faster than previous use
of {qgraph}’s cor_auto)
ADD: network.estimation to handle all network
estimation in {EGAnet}; includes Bayesian GGM from {BGGM} for
more seamless incorporation of BEGA
ADD: community.unidimensional to apply different
unidimensional community detection approaches; makes unidimensional
community detection more modular and flexible
ADD: basic (internal) function to handle all network plots to
keep changes centralized to a single function; extends flexbility to
handle all {GGally}’s ggnet2 arguments
ADD: implemented reproducible parametric bootstrapping and random sampling (see https://github.com/hfgolino/EGAnet/wiki/Reproducibility-and-PRNG for more details)
ADD: implemented reproducible resampling bootstrapping and random sampling (see https://github.com/hfgolino/EGAnet/wiki/Reproducibility-and-PRNG for more details)
ADD: reproducible bootstrapping with seed setting that does not affect R’s seed and RNG (user’s seed will not be affected and will not affected bootstrapping seeds)
ADD: community.homogenize as a core function rather
than internal (previously homogenize.membership); about
2.5x faster than the original version
ADD: convert2tidygraph for ggraph and
tidygraph support – thanks to Dominique Makowski!
ADD: “multilevel” plotting support for hierEGA (only
used when scores = "network" since factor scores don’t
directly align with EGA detected dimensions)
ADD: internal functions shuffle and
shuffle_replace to replace sample with and
without replacement; performed in C and allows seed setting independent
of R (about 2-3x faster)
ADD: xoshiro256++ PRNG for higher quailty random number
generation, permutation, and resampling (~2x faster than
runif and sample); based in C
ADD: Ziggurat method for random normal generation over top
xoshiro256++ (2-5x faster than rnorm); based in C
ADD: configural invariance was added to invariance
(see Details section)
ADD: genTEFI to compute the Generalized Total
Entropy Fit Index solely; tefi serves as a general function
to compute TEFI for all *EGA classes
REMOVE: signed.louvain until reproducibility can be
sorted
REMOVE: methods.section and
utils-EGAnet.methods.section to avoid space issues in ./R
directory (1MB)
UPDATE: EBICglasso.qgraph and TMFG were
optimized; TMFG is now 2x faster
UPDATE: TMFG can now directly estimate a GGM with
the argument ‘partial = TRUE’; implements the Local-Global Inversion
method from Barfuss et al. (2016)
UPDATE: switched on “Byte-Compile” (byte-compiles on our end and not when the user installs)
UPDATE: EGA.estimate and EGA core
functions have been updated for seamless use with more basic functions
network.estimation and community.*
functions
UPDATE: S3method updates for EGA.estimate and
EGA to provide estimation information
UPDATE: EGA.fit updated to be compatiable with all
updates to EGA.estimate (other optimizations were
implemented such as direct communtiy detection application and unique
solution finding)
UPDATE: tefi updated with several checks (slightly
slower for correlation matrix but much faster with raw data; includes
data/matrix checks)
UPDATE: entropyFit uses more effective vectorization
(about 5-7x faster)
UPDATE: Embed and glla made to be more
efficient and includes an internal glla_setup function to
avoid the same matrix calculations for every participant in a sample for
dynEGA
UPDATE: riEGA updated to be compatiable with all
lower-level updates (slightly faster)
UPDATE: wto updated to be fully vectorized (about
12x faster)
UPDATE: totalCor and totalCorMat
updated to be fully vectorized (about 10x faster)
UPDATE: implemented internal fast.data.frame for
more efficient data frame initialization when all values in data frame
are the same
UPDATE: bootEGA allows flexibility to add any
arguments from any EGA* functions; much faster due to
optimizations across all functions (“resampling” is nearly as fast as
“parametric”)
UPDATE: support for EGA.fit and riEGA
added to bootEGA (support for hierEGA will be
coming soon…)
UPDATE: itemStability has been updated and runs
about 2.5x faster due to community.homogenize; S3methods
were added; greater flexibility available in plotting but not much
support (e.g., error checking) yet
UPDATE: dimensionStability has been updated and
maintains speed gains from itemStability
UPDATE: dynEGA.ind.pop now calls dynEGA
with level = c("individual", "population"); legacy
dynEGA.ind.pop class is maintained across ergodicity
functions
UPDATE: ergoInfo is about 2x faster
UPDATE: jsd received several internal functions to
expedite procedures in infoCluster and
jsd.ergoInfo
UPDATE: net.loads now includes ‘loading.method’
argument to allow for reproducibility with “BRM” implementation (and
version 1.2.3); “experimental” implementation includes rotations
alternative signs and cross-loading computation (potential future
default)
UPDATE: net.scores is much simpler (internally) and
quicker; seamlessly integrates with net.loads
UPDATE: compare.EGA.plots is faster, more flexible,
and more reliable for comparing two or more plots
UPDATE: hierEGA is faster and has new S3
methods
UPDATE: S3 plotting for invariance
UPDATE: hierEGA + bootEGA integration
for itemStability and dimensionStability
(includes full S3 methods)
UPDATE: UVA supports legacy of inital conception in
Christensen, Golino, and Silvia (EJP, 2020) but will no longer fix bugs
related to: manual variable selection, “adapt” or “alpha” methods
(warnings will be thrown)
UPDATE: streamlined UVA (about 4x faster); fixed
bugs related to reverse coding issues
UPDATE: tefi now handles all EGA*
function objects including hierEGA which computes
generalized TEFI
UPDATE: documentation for all functions have been thoroughly revised to provide better instruction on how to use functions and their expected inputs
DEPENDENCY: removed {network} because it is no longer used for plotting; switched {sna} to IMPORTS rather than SUGGESTS
DEPENDENCY: removed {rstudioapi} from ‘Suggests’ because it was
used in colortext and used in the package
DEPENDENCY: removed {matrixcalc} because it was only used for trace of a matrix (own internal function is used)
DEPENDENCY: {future} and {future.apply} are used for parallelization (better integration); includes internal function to check for available memory to not break in big data cases
DEPENDENCY: {progress} and {progressr} are used for progress bars (in parallelization)
DEPENDENCY: removed {psychTools} from ‘Suggests’ which was only used in examples
DEPENDENCY: removed {rmarkdown} from ‘Suggests’ since it wasn’t being used across the package
FIX: cross-loading bug in net.loads was leading to
problems when there were negative cross-loadings
FIX: added psych::factor.scores scoring methods in
net.scores
ADD: signed.louvain to estimate the Signed Louvain
algorithm (implemented in C)
most_common_tefi method for EGA
analysesREMOVE: residualEGA has been removed in favor of
riEGA (removes {OpenMx} dependency)
ADD: rotations to net.loads and
net.scores
UPDATE: hierEGA only outputs specified output (no
longer outputs all possible consensus methods and scores combinations –
should be much faster)
FIX: many bug fixes related to latest update; functions have largely returned to stable status
UPDATE: Mac and Linux parallelizations have been optimized
UPDATE: documented examples are more efficient for CRAN checks
FIX: bootEGA read of bootstrap data (was not calling
from datalist in do.call leading to perfect
item stability)
FIX: number of possible colors expanded to 70 (increased from 40)
FIX: hex codes used in EGA plots
FIX: ordered = TRUE for categorical data in
lavaan CFAs
UPDATE: consesnsus clustering is now used with Louvain in
EGA
UPDATE: print/summary S3methods have been standardized
ADD/UPDATE: boot.ergoInfo has achieved functional
working order. Results can be trusted to suggest whether dynamic data
possess the ergodic property
ADD: information theoretic clustering algorithm for dynamic data
is available in infoCluster
REMOVE: “alpha” and “adapt” options in UVA (removes
{fitdistrplus} dependency)
REMOVE: {qgraph} plots are no longer available
ADD: convert2igraph is now a core function
ADD: Jensen-Shannon Divergence jsd for determining
(dis)similarity between network strcutures
ADD: riEGA, EGA.fit, and
hierEGA functionality to bootEGA
ADD: hierEGA functionality to
itemStability and dimensionStability
UPDATE: “louvain” algorithm used as default for unidimensionality
check in EGA
INTERNAL: cleaned up EGA and
EGA.estimate; streamlined code; no user facing
differences
FIX: CRAN note when if(class(object)). Replaced by
if(is(object)).
FIX: bug in EGA.estimate when using the TMFG network
method. The resulting EGA plot did not have the correct node
names.
FIX: bug in UVA when trying to use sum score
(reduce.method = "sum") in automated procedure
ADD: measurement invariance function for testing
differences in network loadings between groups
UPDATE: itemStability now has a parameter
structure in which the user can specify a given structure
to test its stability.
ADD: riEGA implementing random-intercept EGA for
wording effects
ADD: hierEGA implementing hierarchical EGA
FIX: consensus clustering for the Louvain algorithm
ADD: louvain algorithm with added optimization
option using tefi
FIX: bug within the bootEGA function for
type = "resampling".
UPDATE: default undimensionality adjustment has changed to
leading eigenvalue (see Christensen, Garrido, & Golino, 2021 https://doi.org/10.31234/osf.io/hz89e). Previous
unidimensionality adjustment in versions <= 0.9.8 can be applied
using uni.method = "expand"
UPDATE: default UVA was changed
type = "threshold"
UPDATE: UVA is now automated using
auto = TRUE
DEFUNCT: dimStability will no longer be supported.
Instead, use dimensionStability
REVAMP: itemStability has been recoded. Now includes
error checking and more readable code
FIX: bug for plotting NA communities
FIX: bug for changing edge size in ‘GGally’ plotting
UPDATE: S3Methods for EGA.fit plotting
FIX: plotting parameters for bootEGA
FIX: redundancy output for adhoc check in
UVA
FIX: latent variable with non-space separated entries in
UVA (reduce.method = "latent")
UPDATE: UVA was added to
methods.section
UPDATE: neural network weights in LCT (now only
tests for factor or small-world network models)
UPDATE: citations
UPDATE: added seed argument for bootEGA
to reproduce results
FIX: bug for Rand index in itemStability
UPDATE: Unidimensional check in EGA expands a
correlation matrix (rather than generating variables; much more
efficient)
ADD: color_palette_EGA New EGA palettes for plotting
ggnet2 EGA network plots (see
?color_palette_EGA)
ADD: UVA or Unique Variable Analysis operates as a
comprehensive handling of variable redundancy in multivariate data (see
?UVA)
DEFUNCT: node.redundant,
node.redundant.names, and
node.redundant.combine will be defunct in next version.
Please use UVA
ADD: a new function to compute a parametric Bootstrap Test for
the Ergodicity Information Index (see
?boot.ergoInfo)
ADD: basic Shiny functionality (EGA only)
ADD: a new function to compute a Monte-Carlo Test for the
Ergodicity Information Index (see
?mctest.ergoInfo)
ADD: a new function to compute the Ergodicity Information Index
(see ?ergoInfo)
UPDATE: new plotting scheme using network and GGally packages
ADD: a function to produce an automated Methods section for
several functions (see ?methods.section)
UPDATE: bootEGA now implements the updated
EGA algorithm
UPDATE: ega.wmt data (unidimensional)
UPDATE: itemStability plot defaults (“GGally” color
scheme) and examples (manipulating plot)
ADD: total correlation (see ?totalCor and
totalCorMat)
ADD: correlation argument (corr) for EGA,
bootEGA, and UVA
FIX: GGally color palette when more than 9 dimensions
UPDATE: LCT neural network weights were updated
(parametric relu activation function)
FIX: naming in EGA
FIX: output network matrix in EGA when data are
input
UPDATE: citation version
UPDATE: node.redundant now provides a full plot of
redundancies detected, descriptive statistics including the critical
value, central tendency descriptive statistics, and the distribution the
significant values were determined from (thanks to Luis Garrido for the
suggestion!)
LCT updated with neural network
implementationADD: loadings comparison test function added (see
LCT)
FIX: named community memberships in itemStability
and dimStability
UPDATE: plot, print, and
summary methods all moved into single .R files (no effect
on user’s end)
UPDATE: net.scores global score is improved and
computes scores very close to CFA scores
FIX: additional argument calls for EGA.estimate (and
EGA by extension)
UPDATE: message from EGA.estimate (and
EGA by extension) reports both ‘gamma’ and
‘lambda.min.ratio’ arguments
FIX: upper quantile output from bootEGA
FIX: minor bugs in node.redundant,
itemStability, and net.loads
MAJOR UPDATE: dimStability now computes proportion
of exact dimension replications rather than items that replicate within
dimension (this latter information can still be found in the output of
itemStability under $mean.dim.rep)
FIX: net.loads for when dimensions equal one or the
number of nodes in the network
FIX: naming typo with characters in
itemStability
FIX: NAs in dimStability
FIX: weights of network in unidimensional structure of
EGA are the same as multidimensional structure
UPDATE: Added a new function to simulate dynamic factor models
simDFM
UPDATE: added internal functions for net.loads (see
utils-net.loads)
FIX: ordering of names in itemStability
FIX: handling of NA communities in
net.loads
UPDATE: Added output of the average replication of items in each
dimension for itemStability
UPDATE: Revised ‘Network Scores’ vignette
UPDATE: net.loads functionality (cleaned up
code)
UPDATE: S3Methods for net.loads
FIX: net.scores negative loadings corrected
New function and print, summary and plot methods: dynEGA
New functions: Embed and glla
UPDATE: add latent variable scores comparison to
net.scores vignette
UPDATE: node.redundant.combine sets loadings equal
to 1 when there are only two variables when the argument type =
“latent”; warning also added from type = “sum”
FIX: node.redundant alpha types bug
updated itemStability (bug fixes)
updated node.redundant.combine (bug fixes, latent
variable option)
major bug fix in net.loads: corrected loadings
greater than 1 when there were many negative values
added EGA.estimate to clean up EGA code
and allow for future implementations of different network estimation
methods and community detection algorithms
updated EGA functionality: message for ‘gamma’ value
used and EGA.estimate compatiability
removed iterators dependency
ordering and name fix in net.loads
auto-adjusts y-axis label size for itemStability
plot based on number of nodes or length of node names
net.loads adjusted for larger values using absolute
values and applying the sign afterwards
reverse coding update in net.loads
node.redundant.combine bug fix for reverse coding
latent variables
added Louvain community detection to all EGA functions in EGAnet
functionality updates to node.redundant
swapped arguments ‘type’ and ‘method’ in the
node.redundant function (fixed examples in other
node.redundant functions)
updated citation
updated list of dependencies
added ORCiDs in Description file
corrected ordering of net.loads output
corrected standard error in bootEGA
citation update
added function dimStability to compute dimensional
stability
added a series of functions for node.redundant,
which facilitates detecting and combining redundant nodes in
networks
updated the EGA.fit function, so now a correlation matrix can be used as well.
‘bootEGA’ now computes time until bootstrap is finished
new functions ‘cmi’, ‘pmi’ and ‘residualEGA’ added: ‘cmi’ computes conditional mutual information, ‘pmi’ computes partial mutual information and residual EGA computes an EGA network controlling for wording effects
new dataset ‘optimism’ added
documentation and functionality for several functions updated
fixed ‘EGA’ bug in ‘bootEGA’ function; updated ‘bootEGA’ documentation; added progress messages
migrated ‘net.scores’ and ‘net.loads’ from ‘NetworkToolbox’ to ‘EGAnet’ package
functions ‘itemConfirm’ and ‘itemIdent’ have been merged into a single function called, ‘itemStability’
fixed item ordering in ‘itemStability’ output so dimensions are from least to greatest, the colors match the original community vector input, and updated average standardized network loadings to the ‘net.loads’ function
added datasets ‘ega.wmt’ and ‘boot.wmt’ for quick user-friendly examples (also removed all ‘’)
added package help page
added package load message
updated ‘itemStability’ algorithm (now can accept any number of ‘orig.wc’) and enforced ‘0’ to ‘1’ bounds on plot