Skip to contents

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 by PowerRelation() or as.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.

References

2021Manipulabilitysocialranking

1969Simpsonsocialranking

1975Kramersocialranking

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