1. David’s Scoreの算出
1.1 David’s Scoreとは
David’s Score(以下、DS)は、個体間の相対的なdominanceの差の違いを考慮して順位を算出してくれる指標である。一般的には個体の順位を高い方から順に1位, 2位, 3位, …と等間隔に割り振っていくため、1位 vs 2位と2位 vs 3位の間のdominanceの差が同じとみなされる。一方で、DSはその値の差が大きい個体間ほど、dominanceに差があることを表すことができる。
例えば、A, B, Cという個体のDSがそれぞれ2, 4, 7とすると、AとBの間のdominanceの差はBとCの差よりも小さいことになる。なお、DSは値が高い個体ほど順位が高いことを表す。
1.2 DSの定義
個体iの個体jに対する勝率をPij=sij/nij、敗率をPji=1−Pijとするとき(ただし、nij: 全敵対的交渉数, sij: iがjに勝った回数)、個体iについてwi,w2i,li,l2iを以下のように定義する(Nは個体数)。
wi=N∑j=1Pij(j≠i)(個体iの勝率の合計)w2i=N∑j=1wjPij(j≠i)(個体jのwjで重みづけした個体iの勝率の合計)li=N∑j=1Pji(j≠i)(個体iの敗率の合計)l2i=N∑j=1ljPji(j≠i)(個体jのljで重みづけした個体iの敗率の合計)
このとき、個体iのDS(DSi)は以下のように定義される。
DSi=wi+w2i−li−l2i
なお、個体ごとの敵対的交渉(nij)の試行数の違いを考慮するため、Pijのかわりに以下のDijを、Pjiの代わりにDji=1−Dij用いてDSの算出を算出することもある。詳細は De Vries et al. (2006) を参照。 De Vries et al. (2006) ではDijを使う方法が推奨されているようだが、十分に試行数がある場合にはPijを使う方がいいと書いてある論文もあるようだ(Balasubramaniam et al. 2012)。
Dij=Pij−{(Pij−0.5)/(nij+1)}
1.3 Normalized David’s Scoreの定義
DSを算出する際には、steepness(後述)を算出する際にその値が0から1におさまるように標準化することが多い。これをNormalized David’s Score(以下、nDS)という(De Vries et al. 2006)。nDSは以下の式で計算される。これによって、nDSは0からN−1の間に収まる。
nDSi={DSi+N(N−1)/2}/N
1.4 Rでの算出方法
それではRでnDSの算出を行う。本稿では、 Vervaecke et al. (2007) に載っている馬の攻撃交渉の勝敗データを用いる。データはdata frameではなく、matrix(隣接行列)として読み込む必要があるので、csvファイルなどから読み込むときは必要に応じてas.matrix()
でmatrix化する必要がある。
Rで直接マトリックスを作成する場合
mat <- matrix(c(0,58,50,61,32,37,29,39,25,8,0,22,22,9,27,20,10,48,
3,3,0,19,29,12,13,19,8,5,8,9,0,33,38,35,32,57,
4,7,9,1,0,28,26,16,23,4,3,0,0,6,0,7,6,12,
2,0,4,1,4,4,0,5,3,0,2,1,1,5,8,3,0,10,3,1,3,0,0,4,1,2,0),
nrow=9,byrow=TRUE)
individuals <- c("V","VS","B","FJ","PR","VB","TOR","MU","ZV") %>%
as.character()
##列名と行名を追加
colnames(mat) <- individuals
rownames(mat) <- individuals
mat
## V VS B FJ PR VB TOR MU ZV
## V 0 58 50 61 32 37 29 39 25
## VS 8 0 22 22 9 27 20 10 48
## B 3 3 0 19 29 12 13 19 8
## FJ 5 8 9 0 33 38 35 32 57
## PR 4 7 9 1 0 28 26 16 23
## VB 4 3 0 0 6 0 7 6 12
## TOR 2 0 4 1 4 4 0 5 3
## MU 0 2 1 1 5 8 3 0 10
## ZV 3 1 3 0 0 4 1 2 0
csvファイルから読みこむ場合
それでは、算出する。EloRating
パッケージのDS
関数を用い、prop =
でPij
かDij
を指定する。
結果を確認すると、PijとDijを用いた場合で微妙に値が異なることが分かる。
Pijを用いた場合
ID <chr> | DS <dbl> | normDS <dbl> | ||
---|---|---|---|---|
V | 30.294859 | 7.366095 | ||
VS | 18.089736 | 6.009971 | ||
FJ | 14.187242 | 5.576360 | ||
B | 9.542805 | 5.060312 | ||
PR | 2.402692 | 4.266966 | ||
MU | -15.616558 | 2.264827 | ||
TOR | -16.203981 | 2.199558 | ||
VB | -16.299300 | 2.188967 | ||
ZV | -26.397495 | 1.066945 |
Dijを用いた場合
ID <chr> | DS <dbl> | normDS <dbl> | ||
---|---|---|---|---|
V | 29.575357 | 7.286151 | ||
VS | 17.260738 | 5.917860 | ||
FJ | 13.814215 | 5.534913 | ||
B | 8.790277 | 4.976697 | ||
PR | 2.227825 | 4.247536 | ||
MU | -14.997584 | 2.333602 | ||
VB | -15.743971 | 2.250670 | ||
TOR | -15.986273 | 2.223747 | ||
ZV | -24.940585 | 1.228824 |