0

私はいくつかのスポーツ データを分析しており、約 40 チームの一連の勝敗記録を持っています。対戦相手の強さで各勝利を重み付けしたランキングを考えてみたいと思います。これは、収束まで反復ごとに重みとランクが更新される反復/再帰的なものでなければなりません。この種のことを行うための既存の関数またはパッケージがあるかどうかは誰にもわかりませんか? スポーツに特化したパッケージではないと思いますが、この種のことは多くの分野で共通していると思います。

編集:

ここにいくつかの例のデータがあります。A、B、C、D の 4 つのチームがあり、それぞれが他のチームと 1 回ずつ対戦し、10 のユニークなゲームが行われます。各チームの 4 つのゲームが独自の行としてリストされるように、データは 2 倍になり、列 "a.win" は "team.a" がゲームに勝った (1 = はい) かどうかを示します。

dat<-data.frame(
team.a=c("A","A","A","A","B","B","B","B","C","C","C","C","D","D","D","D","E","E","E","E"),
team.b=c("B","C","D","E","A","C","D","E","A","B","D","E","A","B","C","E","A","B","C","D"),
a.win=c(1,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,0,1,1,0))

これらのデータから、チーム A は 3/4 で勝利し、B は 1/4 で勝利し、C、D、および E はそれぞれ 2/4 で勝利しました。しかし、チーム D は A に勝ちましたが、C と E はすべて A に敗れました。したがって、直感的には D は C と E よりもわずかに高くランク付けされるはずです。同様に、チーム C はチーム B に敗れたため (勝っただけのチーム)、直感的には D と E よりも低いランクにあるはずです。

ランクを割り当てる最善の方法 (たとえば、-1 から 1 まで、または勝つ確率や負けた回数などに基づく) を見つけようとしています。勝敗の数ではなく、倒した相手のランクです。

4

1 に答える 1

1

PlayerRatingsパッケージをお試しください。

http://cran.r-project.org/web/packages/PlayerRatings/index.html

チェスで使用される Elo と Glicko の評価を実装していますが、他のスポーツにも拡張できます。このパッケージには、以前の評価とゲームの結果に基づいてプレーヤーの評価を更新する機能も含まれています。これは基本的な出発点であり、状況に応じて構築する必要があります。

http://en.wikipedia.org/wiki/Elo_rating_system#Elo_ratings_beyond_chess

レーティングをどのように行うかはシナリオの詳細に依存するため、やりたいことに合わせた解決策があるとは思いません.

于 2015-02-09T15:22:44.863 に答える