Learn R Programming

TUGLab (version 0.0.1)

weightedshapleyvalue: Positively weighted Shapley value

Description

Given a game, positive player weights and an ordered partition of the set of players, this function returns the corresponding weighted Shapley value.

Usage

weightedshapleyvalue(v, binary = FALSE, weights, partition = NULL)

Value

The positively weighted Shapley value of the game, as a vector.

Arguments

v

A characteristic function, as a vector.

binary

A logical value. By default, binary=FALSE. Should be set to TRUE if v is introduced in binary order instead of lexicographic order.

weights

The player weights, as a vector of positive numbers.

partition

An ordered partition of the set of players, as a list of vectors. When not specified, it is taken to be the partition whose only element is the set of all players.

Details

A weight system \(\omega\) is a pair \(\omega=(\lambda,\mathcal{S})\) where \(\lambda=(\lambda_{i})_{i \in N}\) is a positive weight vector (\(\lambda_{i}>0\) for each \(i \in N\)) and \(\mathcal{S}=(S_{1},\dots,S_{m})\) is an ordered partition of \(N\). The weighted Shapley value with weight system \(\omega=(\lambda,\mathcal{S})\) is the linear map \(Sh^{\omega}\) that assigns to each unanimity game \(u_{T}\), with \(T \in 2^{N} \setminus \emptyset\), the allocations \(Sh^{\omega}_{i}(u_{T})=\frac{\lambda_{i}}{\lambda(T \cap S_{k})}\) if \(i \in T \cap S_{k}\) and \(Sh^{\omega}_{i}=0\) if \(i \notin T \cap S_{k}\), where \(k=\max\{i \in N : S_{i} \cap T \neq \emptyset\}\). Then, for each \(v \in G^{N}\) and being \(c_{T}\) the Harsanyi dividend of coalition \(T \in 2^{N}\), $$Sh^{\omega}(v)=\sum_{T \in 2^{N} \setminus \emptyset}c_{T}Sh^{\omega}(u_{T}).$$

References

Shapley, L. S. (1953). Additive and non-additive set functions. PhD thesis, Department of Mathematics, Princeton University.

See Also

coalitionweightedshapleyvalue, harsanyidividend, shapleyvalue

Examples

Run this code
v <- c(0,0,0,0,0,0,1,0,0,1,3,4,6,8,10)
weightedshapleyvalue(v,binary=TRUE,weights=c(0.5,0.2,0.2,0.1))
w <- c(0,0,0,0,30,30,40,40,50,50,60,70,80,90,100)
weightedshapleyvalue(w,weights=c(1,2,3,4),partition=list(c(1,2),c(3,4)))

Run the code above in your browser using DataLab