Changes in Version 1.9.1 - Enabled the use of network variables in cor_mantar() - Enabled the use of auxiliary variables for missing data handling in cor_mantar() - Enabled observation-based likelihood computation in the nonconvex regularization methods via the new 'likelihood_comp' argument. By default, the observed-data likelihood is used when corMethod = "cor_mantar" (the default) and the matrix-based likelihood (the behavior of earlier versions) otherwise. - Added the sampleSize option "pairwise_average_mantar" for methods using correlation matrices with missing data. This option computes the mean sample size across all pairwise correlations and variances, mimicking the behavior of the mantar package. - Documentation examples fixed: the example in ?bootInclude had a syntax error ("estimateNetwork(bfiSub]"), ?differenceTest assigned its bootstrap results to 'Results1' but then used 'Results', and ?netSimulator had a nested \dontrun{} block that made its code unparseable when extracted. - The Ising example in ?netSimulator now simulates its true network with genGGM() instead of downloading two .csv files that are no longer available. - Fixed a crash on R >= 4.3 when 'missing' was supplied to bootnet() without an explicit 'type' argument (the missing-data check ran before match.arg(type), causing a "length = 6 in coercion to logical(1)" error). - Fixed corStability() for node-drop bootstraps: it read x$sample$nNodes, but estimateNetwork() stores the field as nNode, so the drop proportion was NaN. The manual parametric bootstrap branch also stored nNodes instead of nNode (which additionally left bootTable$nNode empty); both are now consistently named nNode. - Fixed plot(, plot = "interval") which crashed with "Column `nPeople` doesn't exist": the person-type interval plot branches referenced a column (nPeople) never produced by summary.bootnet (the actual column is nPerson). The x-axis limits in these branches were also based on the number of nodes rather than the number of sampled persons; both are now corrected. - Fixed a copy-paste bug in the internal statTable(): when both "rspbc" and "hybrid" statistics were requested and the hybrid computation failed, the NA fallback rows were assigned over the (valid) rspbc rows instead of the hybrid rows, silently dropping the rspbc results. - IMPORTANT: Fixed the parametric Ising bootstrap for data not encoded as 0/1 (e.g., -1/+1). The estimators (e.g., default = "IsingFit") transform the estimated network back to the original response encoding, but the parametric bootstrap always simulated 0/1 data from that transformed graph and thresholds, sampling from a different distribution than the estimated model. All bootstrap confidence intervals for non-0/1 Ising data were therefore silently wrong. The response encoding is now detected from the data and passed to IsingSampler(). Results for 0/1-encoded data are unchanged. - Added a 'responses' argument to bootnet() to specify the Ising response encoding in the manual parametric bootstrap (when 'data' is missing); defaults to c(0L, 1L). When data are available the encoding is detected automatically. - The parametric bootstrap with model = "GGM" now stops with an informative error when the sample network is a correlation network (default = "cor", or default = "TMFG" without graphType = "pcor"), as the parametric GGM bootstrap requires a partial-correlation network. Previously data were silently simulated by treating correlations as partial correlations. - Fixed the graphicalVAR-datatype bootstrap paths in bootnet(): (1) node-drop bootstraps errored with "object 'vars' not found" because the default subNodes range referenced an undefined variable (now data$vars, with a defensive check that the stored graphicalVAR data object contains a 'vars' field); (2) the node-drop subsetting of the lagged design matrix passed a character vector of variable names as a single grep() pattern, so only the first sampled node's lag columns were retained, producing a wrong design matrix (now the intercept column "1" and all "_lag" columns of the sampled variables are kept); (3) the tsData 'vars' field is now also subset to the sampled nodes, which graphicalVAR::graphicalVAR() requires to locate the lag-1 columns. Node-drop bootstraps on graphicalVAR networks now run end-to-end. - The "bridgeInDegree" and "bridgeOutDegree" statistics are now actually stored: they were accepted (and included via statistics = "all" with communities) but had no storage blocks in statTable(), so requesting them silently produced no rows. Note that networktools::bridge() only returns these measures for directed networks (use bridgeArgs = list(directed = TRUE) to obtain them for a symmetric network). The all-zero-graph centrality fallback now also covers them. - nCores now uses the requested number of worker processes; previously one fewer was used. - Fixed the 'exclude' condition filter in the internal simulation engine used by netSimulator()/replicationSimulator(): matching conditions were previously kept instead of excluded, so 'exclude' had the opposite of its intended effect. Excluded conditions are now correctly removed. - The internal copy of parSim used by netSimulator()/replicationSimulator() was renamed (to bootnet_parSim) so it no longer shadows the parSim package when both are loaded. - Fixed a copy-paste typo cluster in summary.bootnet()'s rank handling: the sampleTable value_min column was never populated (it self-assigned rank_min in the rank = TRUE branch and wrote to a stray rank_min column in the rank = FALSE branch). bootTable and sampleTable are now handled symmetrically, so sampleTable$value_min/value_max are set correctly. No user-visible change to the default summary output (downstream code consumed only bootTable's value_min/value_max), but the sampleTable columns are now correct. - Added a 'maxErrors' argument to bootnet() to control the maximum number of retries per bootstrap sample when network estimation fails (previously hard-coded to 10). - When the bootstrap retry limit is reached, bootnet() now reports which bootstrap failed and the underlying estimation error message (previously an uninformative "Maximum number of errors in bootstraps reached" error was given). - bootnet() now gives a single warning at the end of the run reporting the total number of bootstrap estimations that failed and were resampled. Successful runs are unaffected (bit-identical results). - Internal cleanups (no user-visible behavior change): removed a block of NULL namespace bindings named after base/stats functions (relying instead on proper stats imports and utils::globalVariables); dropped an unused 'data' element from the internal checkInput() result; the bootnet(default = "graphicalVAR") informative error now fires before match.arg() (previously unreachable); removed dead code in plot.bootnet()'s CIstyle handling; and the pcor/cor estimator verbose message now mentions psych::corr.p significance thresholding only when the user actually requested a character (significance) threshold. - Documented in ?bootnet that the temporal/special defaults ("graphicalVAR", "SVAR_lavaan", "piecewiseIsing") are not among bootnet()'s own 'default' choices and must be bootstrapped by first calling estimateNetwork() and passing the resulting object to bootnet(). - Removed a dead branch in bootnet()'s directed-defaulting block for direct calls: the default = "graphicalVAR" case (and the "DAG" token in the exclusion set) were unreachable there because 'default' has passed match.arg(), which does not list those names. Behavior is unchanged; the special defaults are still handled when a bootnetResult carrying such a default is passed in. - Removed an undocumented easter egg in estimateNetwork() that returned 42 for default = "Borsboom" (it bypassed validation and returned an invalid object type). This now errors via match.arg() like any other unknown default. - binarize() now emits a message (rather than a warning) when splitting continuous data into binary, and additionally issues a real warning if the split produces a constant (all-0 or all-1) column, which otherwise breaks downstream estimation with cryptic errors. - Case-drop area plots no longer open a graphics device as a side effect: the y-axis expansion computation previously called par("pin"), which opens a device (creating an Rplots.pdf in non-interactive scripts) when none is open. It now uses a fixed ggplot2::expansion(mult = 0.01); the plot is visually near-identical. - differenceTest() now resolves the x2/y2 edge endpoints using both the undirected ("--") and directed ("->") edge-ID separators, so edge/distance difference tests also work for directed networks. Changes in Version 1.8 - Updated nonconvex regularization to use mantar instead of GGMncv - Added multiple imputation as a missing data handling option for cross-sectional network analysis via the new cor_mantar functionality - Added nodewise regression with information-criterion based model selection as a method for estimating GGM network - Edges involving categorical variables with >2 levels in default = "mgm" are now drawn in gray (instead of incorrectly treating them as positive/blue) - Fixed deprecated dplyr arrange() call in bootstrap plot method Changes in Version 1.7.1 - Fixed compatibility with dplyr >= 1.2.0 (removal of dplyr::id()) - Replaced deprecated aes_string() with aes() + .data[[]] (ggplot2 >= 3.0.0) - Replaced deprecated dplyr underscore variants (filter_, mutate_, etc.) and funs() - Fixed cluster connection cleanup warnings when using nCores > 1 - Made GGMncv and huge optional dependencies (not in Suggests) while off CRAN Changes in Version 1.7 - NA in weights matrix now leads to centrality indices not to be computed Changes in Version 1.6 - Changed the way the pairwise, minimum and maximum sample sizes are computed for estimators using a correlation matrix as input with missing data. Thanks to Carl Falk. This might lead to different results compared to older bootnet versions! To recover old results, use the "pairwise_average_v1.5", "pairwise_minimum_v1.5", and "pairwise_maximum_v1.5" arguments in the sampleSize argument of the default functions. Changes in Version 1.5.6 - Included min_sum argument in the IsingFit default Changes in Version 1.5.5 - Small help file fix Changes in Version 1.5.4 - IsingSampler default set now always uses method = "uni" by default - Added min_sum and threshold options to defailt = "IsingSampler" - Fixed a small problem in the bootnet package help file Changes in Version 1.5.3 - Improved support for estimation functions with multiple networks of multiple types Changes in Version 1.5.2 - Fixed links in README.md Changes in Version 1.5.1 - Changed CRAN NOTE regarding class check - Fixed remaining deprecated dplyr functions - Fixed a bug with netSimulator and replicationSimulator print method Changes in Version 1.5 - Fixed a bug with bridge centrality indices being incorrectly labeled - Fixed a bug with that occured when using order = "sample" together with the subset argument - Removed calls to deprecated dplyr functions Changes in Version 1.4.7 - 'binarize' now makes values above the split 1 instead of below the split - The bootnet plot method now shows values for all centrality metrics when plotting difference tests. - the mgm default for tuning now defaults to 0.25 - Fixed a bug with bridge centrality indices being incorrectly labeled Changes in Version 1.4.6 - bootnet() now no longer re-estimates the network if the input is a bootnetResult - Several packages are now listed under Suggests instead of Imports - Included support for the GGMncv package Changes in Version 1.4.4 - Fixed a critical error when using multiple cores in R 4.0 on Mac Changes in Version 1.4 - Added the transformation functions 'quantile_transformation' and 'rank_transformation' - Several default sets now use corMethod = "cor" rather than corMethod = "cor_auto" by default! - Fixed a bug in case-drop bootstrap plotting method - "Sampled people" is now "Sampled cases" - Removed adalasso dependency due to CRAN removal - Added 'multiverse' function for multiverse-plots of bootstrap results Changes in Version 1.3 - Added the options pairwise_maximum, pairwise_minimum and pairwise_average to the sampleSize argument of several default functions - Old functionality in estimateNetwork and bootnet has been removed! This includes graphFun, estFun etcetera. - Some changes that lead to NEW DEFAULT BEHAVIOR: - Added the argument 'nonPositiveDefinite' to several default estimators, which will stop with an error when the input is different. - The sampleSize argument now defaults to "pairwise_average"! - All default functions are now by default locked unless used from within estimateNetwork - The plot method now better scales a margin on the top and bottom of the plot - ggmGenerator now generates thresholds more consistently, leading to unfiform data by default or skewed data if the 'skewFactor' argument is used - ggmGenerator can now simulate missing data using the 'missing' argument - corMethod = "spearman" is now supported in several default sets - Fixed a bug with BDgraph change in genGGM function Changes in Version 1.2.4 - Resolved a bug with expected influence crashing bootnet when empty networks were estimated Changes in Version 1.2.3 - More informative error when statistics are not included in the plot. - Updated psych to psychTools Changes in Version 1.2.2 - Added 'adjacency' argument to pcor default set, which allows for estimating a network with a fixed structure. - Fixed parametric bootstrapping Changes in Version 1.2.1 - corStability should now return the non-finite values warning less often Changes in Version 1.2 o New features: - Added support for statistics "bridgeStrength", "bridgeCloseness", "bridgeBetweenness", and "bridgeExpectedInfluence". Thanks to Payton Jones! - The statistics argument in bootnet can now be "all" - Added bootThreshold function to threshold a network based on bootstraps (e.g., bootstrapped interval includes 0) - Added bootInclude function to obtain a network of bootstrap inclusion probabilities - the 'statistics' argument in bootnet now defaults to c("edge","strength","outStrength","inStrength"). This means that closeness and betweenness are no longer stored by default! - corStability will now use all tested statistics by default o Updates: - The corStability function now accepts statistics written with an upper case first letter - Fixed a bug using default = "mgm" with only one binary variable - IsingFit and IsingSampler defaults now transform -1, 1 data to 0, 1 when computing network, then back when returning results - Included the 'includeDiagonal' argument to bootnet to include storing diagonal entries (self-loops) for directed networks only - Bootnet now copies the library used by the user to the clusters when using nCores > 1. This is important for checkpoint and packrat compatability - corStability now returns NA for incomputable correlations (e.g., due to infinite values) o Experimental: - Added default set "piecewiseIsing" for estimating Ising models while selecting participants on a sum-score (very experimental) - Added default set "SVAR_lavaan" for step-up structural VAR model selection using Lavaan (experimental) Changes in Version 1.1 - New supported default sets: - "cor" - Correlation networks - "TMFG" - Triangulated Maximally Filtered Graph - "LoGo"- Local/Global Sparse Inverse Covariance Matrix - "ggmModSelect" - Unregularized stepwise GGM model selection - "graphicalVAR" - LASSO regularized graphical VAR models - Some changes to mgm default: - mgm version >= 1.2 is now required - Renamed lev to level - Renamed degree to order, now defaults to 2 instead of 3 - Added binarySign argument. Now chosen by defult. - Added the 'replicationSimulator' function, which can be used to assess expected replicability of networks - Many default sets now support the 'principalDirection' argument, which can be used to multiply variables with the sign of the first principal component - plot method now supports split0 = TRUE, will show how often an edge was 0 and only show CIs of non-zero estimates (faded relative to proportion of times edge was zero). - Updated the 'genGGM' function to support various different network structures, with thanks to Mark Brandt! - Added RSPBC and Hybrid centrality, thanks to Alex Christensen - Added the 'alpha' argument to default set "pcor" - Added functionality for functions returning multiple graphs - Added outStrength, inStrength, outExpectedInfluence and inExpectedInfluence - Fixed a bug reporting the number of non-zero edges in the print methods - Added 'args' argument to netSimulator - Fixed a bug in which fun is not usuable in bootnet() - Added lambda.min.ratio argument to some estimators. Now defaults to 0.01 for default = "huge" - bootnet and netSimulator now show a progress bar (thanks to pbapply package) - plot method now shows bootstrapped mean in addition to sample value - The 'statistics' argument in bootnet and plot method now accept statistics with a upper case first letter, to be consistent with qgraph - CIstyle argument can now only be one value, and always defaults to quantiles Changes in Version 1.0.1 - missing = "fiml" is now supported for EBICglasso and pcor default sets - Relative importance networks now do not crash when the number of predictors is 0 or 1 - plotting bootnetResults now supports the labels argument - mgm default now uses matrices to resolve an error with the latest version of mgm - The plot method of networks estimated using 'estimateNetwork' now uses different defaults than qgraph! - cut defaults to NULL - theme defaults to "colorblind" - parallelEdge defaults to TRUE - layout always defaults to "spring" (rather than "circle" for undirected networks) Changes in Version 1.0.0: - Implemented the netSimulator function that allows for researchers to investigate sample size requirements and input arguments to estimateNetwork - Added genGGM, ggmGenerator, and IsingGenerator functions to be used in netSimulator - bootnet now stores less results and should have better memory usuage! Thanks to Giulio Costantini! - Fixed some bugs related to manual parametric bootstrap - EstimateNetwork now references packages used in a message - pcor default set now supports the argument 'threshold' - Fixed a bug where rule argument was not passed in bootnet default set - Bootnet now supports directed networks - Relative importance networks now implemented using default = "relimp" - Updated compatibility with MGM version 1.2.0 Changes in version 0.4: - estimateNetwork now accepts a custom estimation function using the argument 'fun' - Reworked default sets as functions! - This makes it easier to change common arguments, such as the EBIC tuning parameter - See the following functions for details: - bootnet_EBICglasso - bootnet_IsingFit - The corStability function now has a greatly improved output - Default set "IsingLL" has been renamed to "IsingSampler" - Default set "mgm" is now supported - labels argument is now supported in difference plots - Quantile now uses type = 6, this makes CIs slightly wider and therefore the difference test slightly more conservative Changes in version 0.3: - Eiko Fried joined the author list - Added 'estimateNetwork' function, allowing one to estimate the network structure from within bootnet - The plot method will run qgraph on the estimated network structure - The qgraph function getWmat can now be applied to networks estimated in bootnet. Allowing one to use, e.g., centralityPlot on a network estimated with 'estimateNetwork' - Added 'differenceTest' function to test for significant differences between edge weights and centrality indices - Added 'corStability' to compute the CS-coefficient as described in our paper: - Epskamp, S., Borsboom, D., & Fried, E. I. (2016). Estimating psychological networks and their accuracy: a tutorial paper. arXiv preprint, arXiv:1604.08462. - The plot method now supports 'plot = "difference"', to make plots of significant differences between edge-weights and centralities - New default sets: - "huge" - "adalasso" - 'nCores' argument added to bootnet to use parallel computing - bootnet print methods now print a list of relevant references on the network estimation procedure used - When EBICglasso is used as default set, variables that are made ordinal are now printed only when estimating the first network - Updated CITATION such that citation("bootnet") now references the pre-print - Bootnet now gives a message on loading that it is BETA software - Added 'statistics' argument to bootnet. Now, distance and length are not stored by default - Several minor bugfixes