NEWS
IMIFA 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).
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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 on
adrop, 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 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.
IMIFA 2017-02-02