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=1Pijとするとき(ただし、nij: 全敵対的交渉数, sij: ijに勝った回数)、個体iについてwi,w2i,li,l2iを以下のように定義する(Nは個体数)。

wi=Nj=1Pij(ji)(個体iの勝率の合計)w2i=Nj=1wjPij(ji)(個体jwjで重みづけした個体iの勝率の合計)li=Nj=1Pji(ji)(個体iの敗率の合計)l2i=Nj=1ljPji(ji)(個体jljで重みづけした個体iの敗率の合計)

このとき、個体iのDS(DSi)は以下のように定義される。

DSi=wi+w2ilil2i

なお、個体ごとの敵対的交渉(nij)の試行数の違いを考慮するため、Pijのかわりに以下のDijを、Pjiの代わりにDji=1Dij用いてDSの算出を算出することもある。詳細は De Vries et al. (2006) を参照。 De Vries et al. (2006) ではDijを使う方法が推奨されているようだが、十分に試行数がある場合にはPijを使う方がいいと書いてある論文もあるようだ(Balasubramaniam et al. 2012)

Dij=Pij{(Pij0.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からN1の間に収まる。

nDSi={DSi+N(N1)/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ファイルから読みこむ場合

mat2 <- read.csv("matrix.csv", row.names = 1) %>%
  ## matrix形式に変換
  as.matrix()



それでは、算出する。EloRatingパッケージのDS関数を用い、prop =PijDijを指定する。
結果を確認すると、PijDijを用いた場合で微妙に値が異なることが分かる。

Pijを用いた場合

nDS_p <- EloRating::DS(mat, prop = "Pij")

nDS_p 
ABCDEFGHIJ0123456789
ID
<chr>
DS
<dbl>
normDS
<dbl>
V30.2948597.366095
VS18.0897366.009971
FJ14.1872425.576360
B9.5428055.060312
PR2.4026924.266966
MU-15.6165582.264827
TOR-16.2039812.199558
VB-16.2993002.188967
ZV-26.3974951.066945

Dijを用いた場合

nDS_d <- EloRating::DS(mat, prop = "Dij")

nDS_d 
ABCDEFGHIJ0123456789
ID
<chr>
DS
<dbl>
normDS
<dbl>
V29.5753577.286151
VS17.2607385.917860
FJ13.8142155.534913
B8.7902774.976697
PR2.2278254.247536
MU-14.9975842.333602
VB-15.7439712.250670
TOR-15.9862732.223747
ZV-24.9405851.228824

References

Balasubramaniam KN, Dittmar K, Berman CM, et al (2012) Hierarchical steepness and phylogenetic models: Phylogenetic signals in macaca. Anim Behav 83:1207–1218
De Vries H, Stevens JMG, Vervaecke H (2006) Measuring and testing the steepness of dominance hierarchies. Anim Behav 71:585–592
Vervaecke H, Stevens JMG, Vandemoortele H, et al (2007) Aggression and dominance in matched groups of subadult icelandic horses (equus caballus). J Ethol 25:239–248