An implementation of the Bayesian version of the Mallows rank model (Vitelli et al., Journal of Machine Learning Research, 2018 < http://jmlr.org/papers/v18/15-481.html>; Crispino et al., to appear in Annals of Applied Statistics). Both Cayley, footrule, Hamming, Kendall, Spearman, and Ulam distances are supported in the models. The rank data to be analyzed can be in the form of complete rankings, top-k rankings, partially missing rankings, as well as consistent and inconsistent pairwise preferences. Several functions for plotting and studying the posterior distributions of parameters are provided. The package also provides functions for estimating the partition function (normalizing constant) of the Mallows rank model, both with the importance sampling algorithm of Vitelli et al. and asymptotic approximation with the IPFP algorithm (Mukherjee, Annals of Statistics, 2016

- Implements all fixes since version 0.3.1 below.
- Fixed typo on y-axis label of elbow plot.
- Fixed an issue which caused the cluster probabilities to differ across platforms, despite using the same seed. https://stackoverflow.com/questions/54822702

- Fixed a bug which caused
`compute_mallows`

not to work (without giving any errors) when`rankings`

contained missing values. - Fixed a bug which caused
`compute_mallows`

to fail when`preferences`

had integer columns.

- Changed the name of
`save_individual_cluster_probs`

to`save_ind_clus`

, to save typing.

- Added a user prompt asking if the user really wants to save csv files, when
`save_individual_cluster_probs = TRUE`

in compute_mallows. - Added
`alpha_max`

, the truncation of the exponential prior for`alpha`

, as a user option in`compute_mallows`

.

- Added functionality for checking label switching. See
`?label_switching`

for more info.

- The internal function
`compute_importance_sampling_estimate`

has been updated to avoid numerical overflow. Previusly, importance sampling failed at below 200 items. Now it works way above 10,000 items.

- This is an update of some parts of the C++ code, to avoid failing the sanitizer checks clang-UBSAN and gcc-UBSAN.

- See all bullet points below, since 0.2.0.

`generate_transitive_closure`

,`generate_initial_ranking`

, and`generate_constraints`

now are able to run in parallel.- Large changes to the underlying code base which should make it more maintainable but not affect the user.

`estimate_partition_function`

now has an option to run in parallel, leading to significant speed-up.

- Implemented the Bernoulli error model. Set
`error_model = "bernoulli"`

in`compute_mallows`

in order to use it. Examples will come later.

- Added parallelization option to
`compute_mallows_mixtures`

and added`parallel`

to**Suggests**field.

- Deprecated functions
`compute_cp_consensus`

and`compute_map_consensus`

have been removed. Use`compute_consensus`

instead.

- Clusters are now
`factor`

variables sorted according to the cluster number. Hence, in plot legends, "Cluster 10" comes after "Cluster 9", rather than after "Cluster 1" which it used to do until now, because it was a`character`

. `plot.BayesMallows`

no longer contains print statements which forces display of plots. Instead plots are returned from the function. Using`p <- plot(fit)`

hence does no longer display a plot, whereas using`plot(fit)`

without assigning it to an object, displays a plot. Until now the plot was always shown for`rho`

and`alpha`

.

`compute_mallows`

and`sample_mallows`

now support Ulam distance, with argument`metric = "ulam"`

.- Slimmed down the vignette significantly, in order to avoid clang-UBSAN error caused by running the vignette (which was then again caused by
`Rcpp`

, cf. this issue). The long vignette is no longer needed in any case, since all the functions are well documented with executable examples.

- New release on CRAN, which contains all the updates in 0.1.1, described below.

`Rankcluster`

package has been removed from dependencies.

- Fixed bug with Cayley distance. For this distance, the computational shortcut on p. 8 of Vitelli et al. (2018), JMLR, does not work. However, it was still used. Now, Cayley distance is always computed with complete rank vectors.
- Fixed bug in the default argument
`leap_size`

to`compute_mallows`

. It used to be`floor(n_items / 5)`

, which evaluates to zero when`n_items <= 4`

. Updated it to`max(1L, floor(n_items / 5))`

. - Added Hamming distance (
`metric = "hamming"`

) as an option to`compute_mallows`

and`sample_mallows`

.

- Updated
`generate_initial_ranking`

,`generate_transitive_closure`

, and`sample_mallows`

to avoid errors when package`tibble`

version 2.0.0 is released. This update is purely internal.

- Objects of class
`BayesMallows`

and`BayesMallowsMixtures`

now have default print functions, hence avoiding excessive amounts of informations printed to the console if the user happens to write the name of such an object and press Return. `compute_mallows_mixtures`

no longer sets`include_wcd = TRUE`

by default. The user can choose this argument.`compute_mallows`

has a new argument`save_clus`

, which can be set to`FALSE`

for not saving cluster assignments.

`assess_convergence`

now automatically plots mixtures.`compute_mallows_mixtures`

now returns an object of class`BayesMallowsMixtures`

.

`assess_convergence`

now adds prefix*Assessor*to plots when`parameter = "Rtilde"`

.`predict_top_k`

is now an exported function. Previously it was internal.

`compute_posterior_intervals`

now has default`parameter = "alpha"`

. Until now, this argument has had no default.- Argument
`type`

to`plot.BayesMallows`

and`assess_convergence`

has been renamed to`parameter`

, to be more consistent.

- Argument
`save_augment_data`

to`compute_mallows`

has been renamed to`save_aug`

. `compute_mallows`

fills in implied ranks when an assessor has only one missing rank. This avoids unnecessary augmentation in MCMC.`generate_ranking`

and`generate_ordering`

now work with missing ranks.

Argument `cluster_assignment_thinning`

to `compute_mallows`

has been renamed to `clus_thin`

.

Change the interface for computing consensus ranking. Now, CP and MAP consensus are both computed with the `compute_consensus`

function, with argument `type`

equal to either `"CP"`

or `"MAP"`

.