現在、ランクペア法を理解しようとしています。ウィキペディアのエントリから、ペアワイズ比較の行列を作成する方法がよくわかりません。この説明は、ペアを比較する 1 つの方法を理解するのに役立ちました - それでも、これが wiki で言われていることとまったく同じかどうかはわかりません. 私の最初の質問は、2のペアの比較が1に従って有効かどうかです。
2の説明を R コードに適合させることができました。
次の (非現実的な) 例では、投票者 (列) よりも多くの候補者 (行) がいますが、すべての投票者が各候補者にランクを付けます (完全なランキング)。
# some random example
random.example <- matrix(rnorm(50), ncol = 5,
dimnames = list(candidates = paste("c", 1:10, sep=""),
voters = paste("v", 1:5, sep="")))
rmat <- apply(random.example, MARGIN = 2, rank, ties.method = "f")
ランク行列は、ランク付けされたペア法でランク付けされます
pm <- apply(rmat , MARGIN=1, function(x) {
return(apply(rmat , MARGIN=1, function(y) {
return(sum(x > y) - sum(x < y))
}))
})
sorted <- apply(pm , MARGIN=1, function(x, numberOfVoters) {
return(c(like = sum(x > 0),
dislike = numberOfVoters - sum(x < 0),
ties = numberOfVoters - (sum(x == 0) - 1)))
}, numberOfVoters = ncol(rmat)))
についてのコメントsorted
: もし私がこの権利を理解しているなら、まず でlike
、次にdislike
で、次に で注文する必要がありties
ます。dislike
とties
( )の値を再割り当てしnumberOfVoters
て、「数値」として使用できるようにしました。これは、私の次の質問につながります。それは、勝者を分類して決定することです。と思いますが、 |候補| の基数を使用して番号でソートできる場所はわかりません。
scores <- apply(sorted * (ncol(sorted) ^ c(2,1,0)), MARGIN=2, sum)
そして、scores
(高いほど良い)でランク付けすると、ランキングが得られます。右?
3 番目の質問は、候補のランキングを決定するための相互関係に関するものです。スコアによるランキングにより、候補のランク付けされたリストが得られます。しかし、ウィキペディア1は、真のランキングを得るには、次の勝者を決定するためにリストから勝者を削除して、手順全体を再計算する必要があると述べています。なぜこれが別のランキングを返すのか理解できません。簡単な例はありますか?
どうもありがとうございます!