The notion of power index has been widely used in literature to evaluate the influence of individual players (e.g., voters, political parties, nations, stockholders, etc.) involved in a collective decision situation like an electoral system, a parliament, a council, a management board, etc., where players may form coalitions. Traditionally this ranking is determined through numerical evaluation. More often than not however only ordinal data between coalitions is known. The package 'socialranking' offers a set of solutions to rank players based on a transitive ranking between coalitions, including through CP-Majority, ordinal Banzhaf or lexicographic excellence solution summarized by Tahar Allouche, Bruno Escoffier, Stefano Moretti and Meltem Öztürk (2020,
socialrankingThe package socialranking offers functions to represent ordinal
information of coalitions and calculate the power relation between
elements or players.
Install the package directly from CRAN with:
install.packages("socialranking")
You can also install the development version of socialranking from GitHub with:
# install.packages("devtools")
devtools::install_github("jassler/socialranking")
The package socialranking offers functions to represent ordinal
information of coalitions and calculate the power relation between
elements or players.
Once installed, call library(socialranking) to load the package into
your current environment.
PowerRelation() and as.PowerRelation() creates a PowerRelation
object. createPowerset() is a convenient function to generate a
PowerRelation() or as.PowerRelation() function call for all possible
coalitions.
library(socialranking)
if(interactive()) {
createPowerset(1:3, copyToClipboard = TRUE)
}
# pasted, rearranged, adjusted comparators
as.PowerRelation("
123
> 12
~ 13
> 2
~ 23
> 1
> 3
")
#> 123 > (12 ~ 13) > (2 ~ 23) > 1 > 3
# equivalent
pr <- as.PowerRelation(
list(c(1,2,3), c(1,2), c(1,3), c(2), c(2,3), c(1), c(3)),
comparators = c(">", "~", ">", "~", ">", ">")
)
# equivalent
pr <- as.PowerRelation("123 > 12 ~ 13 > 2 ~ 23 > 1 > 3")
pr
#> 123 > (12 ~ 13) > (2 ~ 23) > 1 > 3
pr$elements
#> [1] 1 2 3
pr$eqs[[2]]
#> [[1]]
#> [1] 1 2
#>
#> [[2]]
#> [1] 1 3
The functions used to analyze power relations can be grouped into
comparison functions, score functions and ranking solutions. Ranking
solutions produce a SocialRankingSolution object.
| Comparison Functions | Score Functions | Ranking Solutions |
|---|---|---|
dominates() |
||
cumulativelyDominates() |
cumulativeScores() |
|
cpMajorityComparison()^1 |
copelandScores() |
copelandRanking() |
kramerSimpsonScores() |
kramerSimpsonRanking() |
|
ordinalBanzhafScores() |
ordinalBanzhafRanking() |
|
lexcelScores() |
lexcelRanking() |
|
dualLexcelRanking() |
||
L1Scores() |
L1Ranking() |
|
LPScores() |
LPRanking() |
|
LPSScores() |
LPSRanking() |
^1 cpMajorityComparisonScore() is a faster alternative to
cpMajorityComparison(), but it produces less data.
dominates(pr, 1, 2)
#> [1] FALSE
copelandRanking(pr)
#> 1 ~ 2 > 3
lexcelScores(pr, 1)
#> $`1`
#> [1] 1 2 0 1 0
#>
#> attr(,"class")
#> [1] "LexcelScores"
PowerRelation objects can be turned into relations objects from the
relations package using
powerRelationMatrix() or as.relation().
Use browseVignettes("socialranking") for further information.
This package is licensed under GPL-3.