Changes in version 2023-12-12 New Features - get_IMIFA_results gains the arg. adapt, allowing automatic, post-hoc truncation of redundant factors in cases where mcmc_IMIFA was called with adapt=FALSE only (provided relevant parameters were stored) for the "IFA", "MIFA", "OMIFA", & "IMIFA" methods. - mgpControl gains the active.crit arg. to allow the criterion for determining the number of active factors of Schiavon & Canale (2020) to be used (for "IFA" models only); this is available for both mcmc_IMIFA with adapt=TRUE directly and the aforementioned post-hoc adaptation using get_IMIFA_results, though the old criterion of Bhattacharya & Dunson (2011), active.crit="BD", remains the default for all infinite factor models in each case. See documentation for details. Improvements, Bug Fixes, & Miscellaneous Edits - Models with range.Q=0 now work again for the "FA", "MFA", "OMFA", & "IMFA" methods. (with thanks to @abcoxyzide for flagging the issue) - The mgpControl arg. delta0g now also governs beta.d1, beta.d2, & sigma.hyper, in addition to alpha.d1 & alpha.d2. - Improved documentation & checks related to the Ledermann bound + added various references to, & warnings for, the stricter Q <= floor((P - 1)/2) restriction throughout the package. - Minor fixes for "MFA"/"MIFA" models when mu0g, psi0g, &/or delta0g is TRUE, particularly when length(range.G) > 1. - Minor speed-up to G_priorDensity when discount is non-zero. - Extensive edits to avoid overheads introduced in matrixStats (>= 1.0.0) + related minor speed-ups. - Now using newer CITATION commands & updated License: GPL (>= 3). Changes in version 2022-12-19 Improvements, Bug Fixes, & Miscellaneous Edits - Minor fix to adaptive Gibbs sampler for clusters with zero factors. - Minor speed-ups to Procrustes when translate &/or dilate are TRUE. - Minor speed-ups to internal Cholesky decompositions in rare failure cases. - Cosmetic changes to param="alpha" & param="discount" plots. - Minor speed-ups, documentation clarifications, & examples edits. Changes in version 2022-08-12 Improvements, Bug Fixes, & Miscellaneous Edits - storeControl gains the update.mu arg. to optionally circumvent updates of the mean parameters to speed-up special case of (I)FA models with centered data. - Minor fix to param="means" plots for uncentered (I)FA results. - Minor fixes to account for (rare) uncentered data problems in means updates also. - Minor fix to rare cases where Cholesky decompositions fail. - Minor tidy-ups related to exchange=TRUE from previous update. - Minor documentation edits for CRAN compliance. Changes in version 2021-12-19 Improvements, Bug Fixes, & Miscellaneous Edits - Slight modifications to adaptive Gibbs sampling for all infinite factor methods: - Adaptation now occurs before related parameter updates: cleaner, slightly faster code. - Fixes rare bug re: storing factor scores when there are empty components. - Associated new default behaviour(s) for mgpControl arg. start.AGS. - bnpControl gains the args. thresh & exchange, implementing the exchangeable/thresholded slice sampler of Fall & Barat (2014): these are experimental features (both args. default to FALSE). - Fixed posterior predictive checking bug in get_IMIFA_results for models for univariate data where some components have zero factors. - Minor IM(I)FA speed-ups to updates of DP concentration parameter alpha. - sapply replaced with vapply, with other negligible speed-ups. Changes in version 2021-10-07 Improvements, Bug Fixes, & Miscellaneous Edits - mgpControl gains the arg. truncated (defaults to FALSE): - Allows version of MGP prior with gamma distributions left-truncated at 1 to be used for the column shrinkage parameters beyond the first column: this has some more desirable shrinkage properties, at the expense of longer run times. - Related function rltrgamma to draw from left-truncated gamma distributions provided. - exp_ltrgamma for computing expectations of such distributions also provided, and used internally by MGP_check when its own new truncated arg. is TRUE (default: FALSE). - See ?ltrgamma for further details on rltrgamma and exp_ltrgamma. - Minor speed-ups to simulation of component mean parameters. - Major speed-up to simulation of factor loadings parameters (especially when Q=1). - Major speed-up to simulation of factor scores when Q=1. - Minor speed-ups to simulation of means and loadings from priors for empty components. - Minor fixes to adaptive Gibbs sampler for MIFA models when delta0g=TRUE. - Improved checks on range.G & range.Q in mcmc_IMIFA. - Minor fixes to returned attributes from MGP_check when invoked in vectorised fashion. - Minor vignette styling edits and documentation clarifications. Changes in version 2021-05-24 Bug Fixes & Miscellaneous Edits - Fixed breaking bugs associated with IM(I)FA slice samplers introduced in previous update. - G_calibrate function exported to augment existing G_expected & G_variance functions. - G_variance now computed more accurately and efficiently for the alpha=0 case. - Major speed-up to G_expected for the alpha=0 case. - Minor speed-ups to simulation of local/column/cluster shrinkage parameters + scores & loadings. - Minor speed-up to G_priorDensity for non-zero discount. - Minor speed-up to psi_hyper. Changes in version 2020-12-29 Bug Fixes & Miscellaneous Edits - Fixed mcmc_IMIFA initialisation issues for univariate data sets. - error.metrics=TRUE now works for univariate data sets in get_IMIFA_results. - Slight speed-ups to slice samplers for IM(I)FA methods. - Prettier axis labels for first two plots produced by plot.meth="zlabels". - Added ORCID iDs to DESCRIPTION. - Minor CRAN compliance edits to the vignette. Changes in version 2020-11-18 Bug Fixes & Miscellaneous Edits - Stricter checking of permissible alpha values in the special case of negative discount. - Fixes when plot.meth="density" and param="alpha" for fixed positive discount. - Cosmetic changes to G_priorDensity plots. - Ensured matrixStats (>= 0.53.1) and mclust (>= 5.4) in Imports:. - Ensured gmp (>= 0.5-4) in Suggests:. - Package startup message now checks if newer version of package is available from CRAN. - Minor documentation & examples edits (esp. mat2cols). - Replaced dependency on viridis with viridisLite. - Updated citation info after publication in Bayesian Analysis. - Updated maintainer e-mail address. Changes in version 2020-05-12 Bug Fixes & Miscellaneous Edits - Maintenance release for compatibility with R 4.0.0 - minor edits. - Improved handling of suggested packages Rmpfr & gmp in G_expected, G_variance, & G_priorDensity. - summary.Results_IMIFA gains the printing-related argument MAP=TRUE. - Edited printed details when plot.meth="zlabels" with unsupplied zlabels. - Minor fixes for fixed negative discount (an experimental feature). - Minor speed-up to Procrustes when dilate=TRUE (never used internally). - Minor efficiency gains in slice samplers for IM(I)FA methods. - Documentation, vignette, examples, and references improvements. Changes in version 2020-03-30 Bug Fixes - Fixes and speed-ups to MGP updates and adaptive Gibbs sampler for IMIFA/OMIFA/MIFA models: - Fixes and speed-ups to MGP parameter updates when some clusters have zero factors. - Additional speed-ups to simulation of column-shrinkage parameters when some clusters are empty. - Properly accounted for the cluster-shrinkage parameters when the number of factors increases. - Minor bug fixes for padding scores when the maximum number of factors increases. - Variable-specific communalities (x$Error$Var.Exps) now returned by get_IMIFA_results in addition to proportion of explained variance per cluster (x$Error$Clust.Exps; previously x$Error$Var.Exps). - G_expected & G_variance gain the arg. MPFR to control use of suggested packages. - Minor speed-up to rDirichlet for the symmetric uniform case. - Ensured compatibility with latest version of Rfast package (w/ minor speed-ups). - Removed methods package from Suggests:. - Spell-checking of documentation and fixes to donttest examples. Changes in version 2019-12-11 Improvements - discount can now be fixed at a negative value when learn.d=FALSE, provided alpha is supplied as a positive integer multiple of abs(discount) and learn.alpha=TRUE. - Other types of norm (beyond Frobenius) can now be specified, by passing the arg. type, via the ... construct, for calculating the PPRE within get_IMIFA_results. - The breaks used to construct the bins for the PPRE calculation can now also be specified, by passing the dbreaks arg. through the ... construct. This is an experimental feature; caution is advised. - The settings discount<0 & alpha=0 now accommodated by G_expected, G_variance, & G_priorDensity: G_expected no longer requires the Rmpfr or gmp libraries for non-zero discount unless alpha=0. - mgpControl gains the arg. forceQg (defaults to FALSE, i.e. retains old behaviour - see documentation for details). - G_priorDensity gains type arg. and now works again in non-vectorised form. - Minor speed-up to Procrustes function and hence the identifiability corrections within get_IMIFA_results. - Minor speed-ups to post_conf_mat function and "parallel.coords" plots. - Updated citation info after online publication in Bayesian Analysis. Bug fixes - Fixes to sim_IMIFA_data to allow empty clusters and related fix for nonempty arg. to get_IMIFA_results. - Fixed bug when initial alpha value is 0 when learn.alpha=TRUE. - Minor fix for handling optional args. to mixfaControl and plot.Results_IMIFA functions. - Admissible rho values in bnpControl corrected to [0,1) from (0,1]. - Fixed bug related to Procrustes rotation of the factor scores for (I)/FA models in get_IMIFA_results. - Fixed handling of colour palettes in plot.Results_IMIFA & G_priorDensity. - Documentation and warning message fixes. - Anti-aliasing of vignette images. Changes in version 2019-02-04 New Features - mgpControl gains the arguments cluster.shrink and sigma.hyper: - cluster.shrink governs invocation of cluster shrinkage MGP hyperparameter for MIFA/OMIFA/IMIFA methods. - sigma.hyper controls the gamma hyperprior on this parameter. The posterior mean is reported, where applicable. - Full conditionals for loadings and local/column shrinkage MGP hyperparameters edited accordingly. - Allowed the Dirichlet concentration parameter alpha to be learned via MH steps for the OM(I)FA models. - Also allowed diminishing adaptation to tune the log-normal proposal to achieve a target acceptance rate. - Thus bnpControl args. learn.alpha, alpha.hyper, zeta, & tune.zeta become relevant for OM(I)FA models. - New posterior predictive model checking approach added to get_IMIFA_results (with associated plots): Posterior Predictive Reconstruction Error (PPRE) compares bin counts of the original data with corresponding counts for replicate draws from the posterior predictive distribution using a standardised Frobenius norm. - Added new function scores_MAP to decompose factor scores summaries from get_IMIFA_resuls into submatrices corresponding to the MAP partition. - Added new wrapper function sim_IMIFA_model to call sim_IMIFA_data using the estimated parameters from fitted Results_IMIFA objects. - New get_IMIFA_results arg. vari.rot allows loadings templates to be varimax rotated, prior to Procrustes rotation, for more interpretable solutions (defaults to FALSE). - New plot.Results_IMIFA argument common governing plot.meth="means" plots (details in documentation). Improvements - New hyperparameter/argument defaults: - sigma.mu defaults to 1 s.t. the hypercovariance is the identity for the prior on the means; old behaviour (using the diagonal of the sample covariance matrix) recoverable by specifying sigma.mu=NULL. - prec.mu defaults to 0.01 s.t. the prior on the cluster means is flat by default. - learn.d defaults to TRUE s.t. a PYP prior is assumed for IM(I)FA models by default. - alpha.hyper now has a larger hyper-rate by default, to better encourage clustering. - alpha.d1 & alpha.d2 now set to 2.1/3.1 rather than 2/6 to discourage exponentially fast shrinkage. - z.init now defaults to "hc": model-based agglomerative hierarchical clustering. - Overhauled psi_hyper (details in documentation) for: - N <= P data where the sample covariance matrix is not invertible. - type="isotropic" uniquenesses. - Args. scores & loadings can now be supplied to sim_IMIFA_data directly; new arg. non.zero controls the # effective factors (per column & cluster) when loadings are instead simulated. - Sped-up 2nd label-switching move for IM(I)FA models (accounting for empty clusters). - Args. for hc can now be passed when init.z="mclust" also (previously only "hc"), thus controlling how Mclust is itself initialised. - Allowed criterion to be passed via ... in mixfaControl to choose between mclustBIC/mclustICL to determine optimum model to initialise with when z.init="mclust" & also sped-up mclust initialisation in the process. - Added stop.AGS arg. to mgpControl: renamed adapt.at to start.AGS for consistency. - Added start.zeta & stop.zeta options to tune.zeta argument in bnpControl. - Allowed user-supplied breaks in the plotting functions mat2cols & heat_legend. - Initial cluster sizes are now shown in order to alert users to potentially bad starting values. - Added utility function pareto_scale(). Bug Fixes - Fixed factor scores & error metrics issues in get_IMIFA_results for clustering methods: - Fixed storage of scores for infinite factor methods - now corresponds to samples where the largest cluster-specific number of factors is >= the max of the modal estimates of the same (previously samples where any cluster has >= the corresponding modal estimate were used): thus, valid samples for computing error metrics also fixed and Procrustes rotation also sped-up. - Other Procrustes rotation fixes to account for label-switching. - Other Procrustes rotation fixes specific to the IMFA/OMFA methods. - range.G and trunc.G defaults fixed, especially for small sample size settings. - Slight label-switching fixes when zlabels are supplied to get_IMIFA_results; posterior confusion matrix, cluster sizes vector, and the sampled labels themselves effected. - Prevented unnecessary Procrustes rotation for single-factor components, thus fixing some bugs. - Fixed initialisation of uniquenesses to account for all four settings of uni.type. - Allowed conditioning on iterations with all components populated for M(I)FA models in get_IMIFA_results. - Accounted for 1-component IM(I)FA/OM(I)FA models in get_IMIFA_results. - Fixed handling of empty components when simulating cluster labels from priors in mcmc_IMIFA & sim_IMIFA_data. - Ensured no. of factors Q cannot exceed no. of observations in the corresponding cluster in sim_IMIFA_data. - Slight speed-up to updating MGP hyperparameters in the presence of empty MIFA/OMIFA/IMIFA components. - Slight speed-up to sampling cluster labels with slice indicators for IM(I)FA models. - Explicitly allowed Pitman-Yor special case where alpha=0 for IM(I)FA models; added related controls on spike-and-slab prior for discount when fixing alpha<=0. - Allowed full range of hc model types for initialisation purposes via ... in mixfaControl. - Clarified dimnames of get_IMIFA_results output in x$Loadings & x$Scores. - Fixed storage switches & iteration indices to better account for burnin=0. - Fixed plotting of exact zeros in posterior confusion matrix. - Fixed plotting posterior mean loadings heatmap when one or more clusters have zero factors. - Fixed plotting scores for (I)FA models due to bug in previous update, esp. with zlabels supplied. - Fixed show_IMIFA_digit to better account for missing pixels &/or the data having been centered/scaled. - Fixed simulation of psi when not supplied to sim_IMIFA_data to IG rather than GA. - Fixed bug preventing Q to be supplied to get_IMIFA_results for infinite factor methods. - Fixed y-axis labelling in uncertainty type plots when plot.meth="zlabels". - Small fixes to function show_digit. - Better handling of tied model-selection criteria in get_IMIFA_results. - Procrustes now works when X has fewer columns than Xstar. - Minor cosmetic change for overplotting scores & loadings in trace & density plots. - Edited Ledermann and related warnings to account for case of isotropic uniquenesses. - Tidied indentation/line-breaks for cat/message/warning calls for printing clarity. - Corrected IMIFA-package help file (formerly just IMIFA). - Edited CITATION file and authorship. Changes in version 2018-05-01 Major Changes - Simplified mcmc_IMIFA by consolidating arguments using new helper functions (with defaults): - Args. common to all factor-analytic mixture methods & MCMC settings supplied via mixfaControl. - MGP & AGS args. supplied via mgpControl for infinite factor models. - Pitman-Yor/Dirichlet Process args. supplied via bnpControl for infinite mixture models. - Storage switch args. supplied via storeControl. - New functions also inherit the old documentation for their arguments. New Features - Posterior predictive checking overhauled: now MSE, RMSE etc. between empirical & estimated covariance matrices are computed for every retained iteration so uncertainty in these estimates can be quantified: - Can be switched on/off via the error.metrics argument to get_IMIFA_results. - Can be visualised by supplying plot.meth="errors" to plot.Results_IMIFA. - For methods which achieve clustering, the 'overall' covariance matrix is now properly computed from the cluster-specific covariance matrices. - Same metrics also evaluated at posterior mean parameter estimates & for final sample where possible. - mixfaControl gains the arg. prec.mu to control the degree of flatness of the prior for the means. - Posterior confusion matrix now returned (get_IMIFA_results) & visualisable (plot.Results_IMIFA, when plot.meth="zlabels"), via new function post_conf_mat, to further assess clustering uncertainty. - Added new type of clustering uncertainty profile plot in plot.Results_IMIFA when plot.meth="zlabels". - For convenience, get_IMIFA_results now also returns the last valid samples for parameters of interest, after conditioning on the modal G & Q values and accounting for label switching and Procrustes rotation. - plot.Results_IMIFA gains new arg. show.last that replaces any instance of showing the posterior mean with the last valid sample instead (i.e. when plot.meth="means" or plot.meth="parallel.coords"). - Added ability to constrain mixing proportions across clusters using equal.pro argument for M(I)FA models: Modified PGMM_dfree accordingly and forced non-storage of mixing proportions when equal.pro is TRUE. - All methods now work for univariate data also (with apt. edits to plots & uniqueness defaults etc.). sim_IMIFA_data also extended to work for univariate data, as well as sped-up. Improvements - Retired args. nu & nuplus1 to mgpControl, replaced by ability to specify more general gamma prior, via new phi.hyper arg. specifying shape and rate - MGP_check has also been modified accordingly. - Zsimilarity sped-up via the comp.psm & cltoSim functions s.t. when # observations < 1000. - Matrix of posterior cluster membership probabilities now returned by get_IMIFA_results. - Modified AGS to better account for when the number of group-specific latent factors shrinks to zero. - psi.alpha no longer needs to be strictly greater than 1, unless the default psi.beta is invoked; thus flatter inverse gamma priors can now be specified for the uniquenesses via mixfaControl. - Added "hc" option to z.init to initialise allocations via hierarchical clustering (using mclust::hc). - Allowed optional args. for functions used to initialise allocations via ... in mixfaControl. - Added mu argument to sim_IMIFA_data to allow supplying true mean parameter values directly. - Standard deviation of aicm/bicm model selection criteria now computed and returned. - Speed-ups due to new Rfast utility functions: colTabulate & matrnorm. - Speed-ups due to utility functions from matrixStats, on which IMIFA already depends. - Slight improvements when adapt=FALSE for infinite factor models with fixed high truncation level. - Misclassified observations now highlighted in 1st type of uncertainty plot in Plot.Results_IMIFA, when plot.meth="zlabels" and the true zlabels are supplied. - mixfaControl gains arg. drop0sd to control removal of zero-variance features (defaults to TRUE). - heat_legend gains cex.lab argument to control magnification of legend text. - mat2cols gains the transparency argument. - Edited PGMM_dfree to include the 4 extra models from the EPGMM family. Bug Fixes - Supplying zlabels to get_IMIFA_results will now match the cluster labels and parameters to the true labels even if there is a mismatch between the number of clusters in both. - Similarly, supplying zlabels to plot.Results_IMIFA when plot.meth="zlabels" no longer does any matching when printing performance metrics to the screen - previously this caused confusion as associated parameters were not also permuted as they are within get_IMIFA_results: now plot(get_IMIFA_results(sim), plot.meth="zlabels", zlabels=z) gives different results from plot(get_IMIFA_results(sim, zlabels=z), plot.meth="zlabels") as only the latter will permute. - Accounted for errors in covariance matrix when deriving default sigma.mu & psi.beta values. - Accounted for missing empirical covariance entries within get_IMIFA_results. - Fixed model selection in get_IMIFA_results for IMFA/OMFA models when range.Q is a range. - Fixed calculation of aicm, bicm and dic criteria: all results remain the same. - Fixed support of Ga(a, b) prior on alpha when discount is being learned. - Fixed bug preventing uni.prior="isotropic" when uni.type is (un)constrained. - Fixed treatment of exact zeros when plotting average clustering similarity matrix. - Fixed tiny bug when neither centering nor scaling (of any kind) are applied to data within mcmc_IMIFA. - Fixed plotting of posterior mean scores when one or more clusters are empty. - Fixed bug with default plotting palette for data sets with >1024 variables. - Fixed bug with label switching permutations in get_IMIFA_results when there are empty clusters. - Fixed print and summary functions for objects of class IMIFA and Results_IMIFA. - Fixed calculating posterior mean zeta when adaptively targeting alpha's optimal MH acceptance rate. - Allowed alpha be tiny for (O)M(I)FA models (provided z.init != "priors" for overfitted models). - Normalised mixing proportions in get_IMIFA_results when conditioning on G for IM(I)FA/OM(I)FA models. - New controls/warnings for excessively small Gamma hyperparemeters for uniqueness/local shrinkage priors. - Clarified recommendation in MGP_check that alpha.d2 be moderately large relative to alpha.d1. - Ensured sigma.mu hyperparameter arg. is always coerced to diagonal entries of a covariance matrix. - Transparency default in plot.Results_IMIFA now depends on device's support of semi-transparency. - Replaced certain instances of is.list(x) with inherits(x, "list") for stricter checking. - Added check.margin=FALSE to calls to sweep. - Ledermann, MGP_check, & PGMM_dfree are now properly vectorised. Miscellaneous Edits - Added USPSdigits data set (training and test), with associated utility functions show_digit and show_IMIFA_digit. - Optimised compression of olive, coffee and vignette data and used LazyData: true. - Added call.=FALSE to stop() messages and immediate.=TRUE to certain warning() calls. - Removed dependency onadrop, e1071, graphics, grDevices, plotrix, stats & utils libraries. - Reduced dependency on Rfast w/ own version of standardise. - Added utility function IMIFA_news for accessing this NEWS file. - Added CITATION file. - Extensively improved package documentation: - Added Collate: field to DESCRIPTION file. - Added line-breaks to usage sections of multi-argument functions. - Consolidated help files for G_expected & G_variance. Changes in version 2017-07-07 Bug Fixes - Fixed bug preventing M(I)FA models from being treated as (I)FA models when range.G contains 1. - Fixed bug preventing get_IMIFA_results from working properly when true labels are NOT supplied. Changes in version 2017-06-22 New Features - Added options "constrained" & "single" to mcmc_IMIFA's uni.type argument: as well as being either diagonal or isotropic (UUU / UUC), uniquenesses can now further be constrained across clusters (UCU / UCC), with appropriate warnings, defaults, checks, initialisations, computation of model choice penalties, and plotting behaviour in all 4 cases. - mcmc_IMIFA gains the tune.zeta argument, a list of heat, lambda & target parameters, to invoke diminishing adaptation for tuning the uniform proposal to achieve a target acceptance rate when alpha is learned via Metropolis-Hastings when the Pitman-Yor Process prior is employed for the IM(I)FA models. Improvements - (I)FA models sped up by considering uniquenesses under 1-cluster models as "constrained" or "single", rather than previously "unconstrained" or "isotropic", utilising pre-computation and empty assignment. - Previously hidden functions improved, exported and documented with examples: is.cols, Ledermann, Procrustes & shift_GA. - is.posi_def gains make argument, merging it with previously hidden function .make_posdef: Thus the 'nearest' positive-(semi)definite matrix and the usual check can be returned in a single call. - Sped-up sampling IM(I)FA labels, esp. when 'active' G falls to 1, or the dependent slice-sampler is used: log.like arg. removed from gumbel_max; function stands alone, now only stored log-likelihoods computed. - psi argument added to sim_IMIFA_data to allow supplying true uniqueness parameter values directly. Bug Fixes - Used bw="SJ" everywhere density is invoked for plotting (bw="nrd0" is invoked if this fails). - Fixed initialisation of uniquenesses for isotropic (I)FA models. - Fixed parallel coordinates plot axes and labels for all isotropic uniquenesses plots. - Fixed adaptation for MIFA/OMIFA/IMIFA models when all clusters simultaneously have zero factors. - Fixed storage bug in IM(I)FA models when learn.d is TRUE but learn.alpha is FALSE. - Fixed density plot for discount when mutation rate is too low (i.e. too many zeros). - Fixed simulation of loadings matrices for empty MIFA/OMIFA/IMIFA clusters using byrow=TRUE: Loop to simulate loadings matrices now generally faster also for all models. - Fixed silly error re: way in which (I)FA models are treated as 1-cluster models to ensure they run: Related bug fixed for OM(I)FA/IM(I)FA models when starting number of clusters is actually supplied. Changes in version 2017-05-29 Improvements - Posterior mean scores can now also be plotted in the form of a heat map (previously loadings only). load.meth argument replaced by logical heat.map in plot.Results_IMIFA. - mat2cols gains compare argument to yield common palettes/breaks for heat maps of multiple matrices: Associated plot_cols function also fixed, and now unhidden. - Removed certain dependencies with faster personal code: e.g. Procrustes rotation now quicker: IMIFA no longer depends on the corpcor, gclus, MASS, matrixcalc, or MCMCpack libraries. Bug Fixes - Used par()$bg (i.e. default "white") for plotting zero-valued entries of similarity matrix. - Range of data for labelling in heat_legend calculated correctly. - mcmc_IMIFA's verbose argument now governs printing of message & cat calls, but not stop or warning. - Fixed storage and plotting of loadings, particularly when some but not all clusters have zero factors. - Added NEWS.md to build. Changes in version 2017-05-09 New Features - Learning the Pitman-Yor discount & alpha parameters via Metropolis-Hastings now implemented. - Spike-and-slab prior specified for discount: size of spike controlled by arg. kappa. - Plotting function's param argument gains the option discount for posterior inference. - Sped up simulating cluster labels from unnormalised log probabilities using the Gumbel-Max trick (Yellott, 1977): gumbel_max replaces earlier function to sample cluster labels and is now unhidden/exported/documented. - Added new plot when plot.meth=GQ for OM(I)FA/IM(I)FA models depicting trace of #s of active/non-empty clusters. - Added function Zsimilarity to summarise posterior clustering by the sampled labels with minimum squared distance to a sparse similarity matrix constructed by averaging the adjacency matrices: when optionally called inside get_IMIFA_results, the similarity matrix can be plotted via plot.meth="zlabels". Improvements - Metropolis-Hastings updates implemented for alpha when discount is non-zero, rather than usual Gibbs. Mutation rate monitored rather than acceptance rate for Metropolis-Hastings updates of discount parameter. - Fixed calculation of # 'free' parameters for aic.mcmc & bic.mcmc criteria when uniquenesses are isotropic: PGMM_dfree, which calculates # 'free' parameters for finite factor analytic mixture models is exported/documented. This function is also used to add checks on the Dirichlet hyperparameter for OM(I)FA methods. - DIC model selection criterion now also available for infinite factor models (previously finite only). - G_priorDensity now better reflects discrete nature of the density, and plots for non-zero PY discount values. - Posterior mean loadings heatmaps now also display a colour key legend via new function heat_legend. - Avoided redundant simulation of stick-breaking/mixing proportions under both types of IM(I)FA slice sampler. - Simulated (finite) mixing proportions w/ Gamma(alpha, 1) trick (Devroye 1986, p.594) instead of MCMCpack:rdirichlet: rDirichlet replaces earlier function to sample mixing proportions and is now unhidden/exported/documented. - Deferred setting dimnames attributes in mcmc_IMIFA to get_IMIFA_results: lower memory burden/faster simulations. - Jettisoned superfluous duplicate material in object outputted from get_IMIFA_results to reduce size/simplify access. - Restored the IMFA/IMIFA arg. trunc.G, the max allowable # active clusters, and # active clusters now stored. - Code sped up when active G=1 by not simulating labels for IM(I)FA models. - Reduced chance of crash by exceeding memory capacity; score.switch defaults to FALSE if # models ran is large. Bug Fixes - 2nd IM(I)FA label switching move sped up/properly weighted to ensure uniform sampling of neighbouring cluster pairs. - Offline label switching square assignment correction now permutes properly. - Fixed factor score trace plots by extracting indices of stored samples using Rfast::sort_unique and rotating properly. - Fixed adding of rnorm columns to scores matrix during adaptation, esp. when widest loadings matrix grows/shrinks. - Fixed initialisation (and upper limit) of number of clusters for OM(I)FA/IM(I)FA, esp. when N < P. - Updates of DP/PY alpha parameter now correctly depend on current # non-empty rather than active clusters. - Fixed density plots for parameters with bounded support, accounting for spike at zero for discount. - Slightly rearranged order Gibbs updates take place, esp. to ensure means enter simulation of uniquenesses properly. - Edited/robustified subsetting of large objects when storing mcmc_IMIFA output. - Tightened controls for when certain parameters are not stored for posterior inference. - Edited Ledermann upper bound stop(...) for finite factor models to warning(...). - Geometric rather than arithmetic mean used to derive single rate hyperparameter for PPCA's isotropic uniquenesses. - Uniquenesses now stored correctly for all clustering methods. - Indices of uncertain obs. returned (get_IMIFA_results)/printed (plot.Results_IMIFA) even when zlabels not supplied. - Fixed behaviour of progress bar when verbose=FALSE. - Fixed typos and expanded/clarified help documentation/vignette. Changes in version 2017-02-02