Changelog

What changed, version by version.

The full history of EGAnet, straight from NEWS.md.

Version 2.5.0

#
  • 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

Version 2.4.1

#
  • 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}

Version 2.4.0

#
  • 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)

Version 2.3.1

#
  • 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

Version 2.3.0

#
  • 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)

Version 2.2.0

#
  • 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

Version 2.1.0

#
  • 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

Version 2.0.8

#
  • 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

Version 2.0.7

#
  • 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)

Version 2.0.6

#
  • 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

Version 2.0.5

#
  • 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

Version 2.0.4

#
  • 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

Version 2.0.3

#
  • 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}

Version 2.0.2

#
  • 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

Version 2.0.1

#
  • updated the polychoric C code to avoid out-of-bounds access errors

Version 2.0.0

#
  • 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

Version 1.2.5.1

#
  • 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)

Version 1.2.5

#
  • ADD: most_common_tefi method for EGA analyses

Version 1.2.4

#
  • REMOVE: 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)

Version 1.2.3

#
  • 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

Version 1.2.1

#
  • 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)

Version 1.2.0

#
  • 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

Version 1.1.0

#
  • 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

Version 1.0.0

#
  • 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

Version 0.9.8

#
  • 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

Version 0.9.7

#
  • 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!)

Version 0.9.6

#
  • UPDATE: LCT updated with neural network implementation

Version 0.9.5

#
  • ADD: 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

Version 0.9.4

#
  • 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

Version 0.9.3

#
  • New function and print, summary and plot methods: dynEGA

  • New functions: Embed and glla

Version 0.9.2

#
  • 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

Version 0.9.0

#
  • 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.

Version 0.8.0

#
  • ‘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

Version 0.7.0

#
  • 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