| Title: | Aggregation of (Partial) Ordinal Rankings |
|---|---|
| Description: | Easily compute an aggregate ranking (also called a median ranking or a consensus ranking) according to the axiomatic approach presented by Cook et al. (2007). This approach minimises the number of violations between all candidate consensus rankings and all input (partial) rankings, and draws on a branch and bound algorithm and a heuristic algorithm to drastically improve speed. The package also provides an option to bootstrap a consensus ranking based on resampling input rankings (with replacement). Input rankings can be either incomplete (partial) or complete. Reference: Cook, W.D., Golany, B., Penn, M. and Raviv, T. (2007) <doi:10.1016/j.cor.2005.05.030>. |
| Authors: | Jay Burns [aut, cre], Adam Butler [aut] |
| Maintainer: | Jay Burns <[email protected]> |
| License: | GPL-3 |
| Version: | 0.0.1 |
| Built: | 2026-05-21 10:50:34 UTC |
| Source: | https://github.com/cranhaven/cranhaven.r-universe.dev |
This function is the core function for the RankAggregator package.
This function uses a branch and bound algorithm, described by Cook et al. (2007),
to return a best consensus (or median) ranking for a set of (partial) rankings.
consensusRanking(x)consensusRanking(x)
x |
a |
A data.frame is returned,
with two columns: Item and Rank, where Item
is a Factor containing all unique Item's from the input
data.frame x, and where Rank is the estimated
(numeric) rank position based on the branch and bound rank
aggregation procedure.
This function calls internal functions
evaluationMatrix,
extendRanking, lowerBound, and
upperBound
consensusRanking(cook_example)consensusRanking(cook_example)
This funciton calls RankAggregator::consensusRanking to
return a best consensus (or median) ranking for a set of (partial) rankings.
This function also provides an optional bootstrap resampling procedure to
give user-defined confidence intervals and average rank positions with
the consensus ranking.
consensusRankingBoot( x, bootstrap, nboot = 10000, conf.int = 0.95, prog.upd = TRUE )consensusRankingBoot( x, bootstrap, nboot = 10000, conf.int = 0.95, prog.upd = TRUE )
x |
a |
bootstrap |
a logical value indicating whether to bootstrap the rank aggregation procedure. |
nboot |
a numeric value for bootstrap replicates. Default value is |
conf.int |
a numeric value >0 and <1. Default value is |
prog.upd |
a logical value indicating whether the user wants progress updates on the bootstrap procedure. |
If bootstrap is FALSE, a data.frame is returned,
with two columns: Item and Rank.est, where Item
is a Factor containing all unique Item's from the input
data.frame x, and where Rank.est is the estimated
(numeric) rank position based on the consensusRanking() rank
aggregation procedure.#'
If bootstrap is TRUE, a list is returned, with two
elements:
$summaryTable is a data.frame with six columns: Item
Rank.est, Rank.cilo, Rank.cihi, Rank.median,
Rank.mean. Where Item and Rank.est are as described
above, Rank.cilo and Rank.cihi are the estimates for the
low and high confidence intervals, respectively. Rank.median and
Rank.mean both describe the average rank positions.
$bootstrapData is an array containing estimated (numeric)
rank positions based on the consensusRanking() rank aggregation
procedure with resampled data. NA denotes estimated rankings that
were discarded due to not containing all Items.
Cook, W.D., Golany, B., Penn, M. and Raviv, T., 2007.
Creating a consensus ranking of proposals from reviewers
partial ordinal rankings. Computers & Operations Research,
34, pp.954-965.
Marshall, E.C., Sanderson, C., Spiegelhalter, D.J. and McKee,
M., 1998. Reliability of league tables of in vitro fertilisation
clinics: retrospective analysis of live birth ratesCommentary:
How robust are rankings? The implications of confidence intervals.
Bmj, 316, pp.1701-1705.
Calls the internal function consensusRanking, which calls the other
internal functions evaluationMatrix, consensusRanking,
extendRanking, lowerBound,
upperBound
A dataset containing 5 partial rankings of 6 items. This is the example used by Cook et al (2007).
cook_examplecook_example
A data frame of 20 rows and 3 columns
Character values giving one of 6 items
Character values giving one of 5 reviewers
Numeric values giving a rank position
Cook, W.D., Golany, B., Penn, M. and Raviv, T., 2007. Creating a consensus ranking of proposals from reviewers’ partial ordinal rankings. Computers & Operations Research, 34, pp.954-965.
This function is called by RankAggregator::consensusRanking.
For each pair of Items, whenever both Items are ranked by the
same Reviewer, this function sums the occurances when each of the two
Items is preferred to the other.
evaluationMatrix(x)evaluationMatrix(x)
x |
a |
An m x n pairwise matrix giving the number of times
Item[m] is preferred to (i.e. receives a ranking value lower than)
Item[n] across all Reviewer Rankings
evaluationMatrix(cook_example)evaluationMatrix(cook_example)
This function is called by RankAggregator::consensusRanking.
The heuristic procedure orders unranked Items according the proportion
of times an item was preferred in all pairwise comparisons with other unranked
Items.
extendRanking(umat, node)extendRanking(umat, node)
umat |
a |
node |
a |
A vector of rank positions.
This function is called by RankAggregator::consensusRanking.
The lower bound is the absolute lowest value a complete candidate ranking
could attain. Note, this value is not always achievable, so may differ
from the value returned by upperBound.
For each pair of \code{Item}s, there are three possible calculations, depending
on whether both \code{Item}s are in the \code{partial.ranking}, one is in
and the other is out the \code{partial.ranking}, or both are not in
the \code{partial.ranking}.
lowerBound(umat, partial.ranking)lowerBound(umat, partial.ranking)
umat |
a |
partial.ranking |
a vector of rank positions
for each |
A numeric value for the lower bound of a partial.ranking
This package provides a set of functions to easily compute an aggregate
ranking (also called a median ranking or a
compromise ranking) according to the axiomatic approach presented
by Cook et al. (2007). This approach minimises the number of violations
between all candidate consensus rankings and all input (partial) rankings,
and draws on a branch and bound algorithm, and a heuristic algorithm to
drastically improve speed. Input rankings can be either incomplete (partial)
or complete.
The package also provides an option to bootstrap
resulting consensus ranking based on resampling input rankings (with
replacement). This approach was inspired by Marshall et al. (1998).
Jay Burns [email protected], Adam Butler [email protected]
Cook, W.D., Golany, B., Penn, M. and Raviv, T., 2007.
Creating a consensus ranking of proposals from reviewers
partial ordinal rankings. Computers & Operations Research,
34, pp.954-965.
Marshall, E.C., Sanderson, C., Spiegelhalter, D.J. and McKee,
M., 1998. Reliability of league tables of in vitro fertilisation
clinics: retrospective analysis of live birth ratesCommentary:
How robust are rankings? The implications of confidence intervals.
Bmj, 316, pp.1701-1705.
This function is called by RankAggregator::consensusRanking.
The upper bound value is the value used by the branch and bound
algorithm in determining whether or not to replace the current incumbent
solution.
upperBound(ccr, umat)upperBound(ccr, umat)
ccr |
a vector of rank positions that is a candidate complete ranking |
umat |
a |
A numeric value for the upper bound of a candidate complete ranking