Calculate the Kramer-Simpson-like scores. Higher scores are better.
kramerSimpsonRanking()
returns the corresponding ranking.
Usage
kramerSimpsonScores(powerRelation, elements = powerRelation$elements)
kramerSimpsonRanking(powerRelation)
Arguments
- powerRelation
A
PowerRelation
object created byPowerRelation()
oras.PowerRelation()
- elements
Vector of elements of which to calculate their scores. By default, the scores of all elements in
powerRelation$elements
are considered.
Value
Score function returns a vector of type KramerSimpsonScores
and length of powerRelation$elements
(unless parameter elements
is specified). Higher scoring elements are ranked higher.
Ranking function returns corresponding SocialRanking
object.
Details
Inspired by the Kramer-Simpson method of social choice theory 1969Simpsonsocialranking 1975Kramersocialranking, the Kramer-Simpson-like method compares each element against all other elements using the CP-Majority rule.
For a given element \(i\), calculate the cpMajorityComparisonScore()
against all elements \(j\), \(d_{ji}(\succsim)\) (notice that \(i\) and
\(j\) are in reverse order).
\(-\max_{j \in N \setminus \lbrace i \rbrace}(d_{ji}(\succsim))\) then
determines the final score, where higher scoring elements are ranked higher (notice the negative symbol in front of the \(\max\) statement).
The implementation slightly differs from the original definition in 2021Manipulabilitysocialranking. While the ranking solution itself is the same, the scores for this package are intentionally multiplied by -1, as this significantly improves performance when sorting the elements, as well as making simple comparisons between elements more logical to the user.
See also
Other CP-majority based functions:
copelandScores()
,
cpMajorityComparison()
Other ranking solution functions:
L1Scores()
,
L2Scores()
,
LPSScores()
,
LPScores()
,
copelandScores()
,
cumulativeScores()
,
lexcelScores()
,
ordinalBanzhafScores()
Examples
# 2 > (1 ~ 3) > 12 > (13 ~ 23) > {} > 123
pr <- as.PowerRelation("2 > (1~3) > 12 > (13~23) > {} > 123")
# get scores for all elements
# cpMajorityComparisonScore(pr, 2, 1, strictly = TRUE)[1] = 1
# cpMajorityComparisonScore(pr, 3, 1, strictly = TRUE)[1] = 0
# therefore the Kramer-Simpson-Score for element
# `1` = -max(0, 1) = -1
#
# Score analogous for the other elements
# `2` = 0
# `3` = -2
kramerSimpsonScores(pr)
#> 1 2 3
#> -1 0 -2
#> attr(,"class")
#> [1] "KramerSimpsonScores"
# get scores for two elements
# `1` = 1
# `3` = 2
kramerSimpsonScores(pr, c(1,3))
#> 1 3
#> -1 -2
#> attr(,"class")
#> [1] "KramerSimpsonScores"
# or single element
# result is still a list
kramerSimpsonScores(pr, 2)
#> 2
#> 0
#> attr(,"class")
#> [1] "KramerSimpsonScores"
# 2 > 1 > 3
kramerSimpsonRanking(pr)
#> 2 > 1 > 3