根据对手的实力对球队进行加权的 R 函数?
R function for weighting teams by strength of opponent?
我正在分析一些运动数据,我有一组 win/loss 大约 40 支球队的记录。我想提出一个排名,其中每场胜利都由对手的实力加权。这必须是某种 iterative/recursive 之类的东西,其中权重和等级在每次迭代中更新,直到收敛。有谁知道是否存在用于执行此类操作的现有功能或程序包?我的猜测是它不会是一个特定于运动的包,但我想这种事情在很多领域都很常见。
编辑:
这是一些示例数据。有 4 支球队,A、B、C 和 D,每支球队与另一支球队交手一次,共进行了 10 场独特的比赛。数据加倍,因此每支球队的四场比赛都列为自己的行,列 "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,或基于获胜概率或失败次数等),然后如何最好地重新加权每个排名队伍的排名不只是基于 wins/losses 的数量,而是基于他们击败的对手的排名。
试试 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
我认为不会有针对您想要执行的操作的量身定制的解决方案,因为您如何处理评级将取决于您的场景的具体情况。
我正在分析一些运动数据,我有一组 win/loss 大约 40 支球队的记录。我想提出一个排名,其中每场胜利都由对手的实力加权。这必须是某种 iterative/recursive 之类的东西,其中权重和等级在每次迭代中更新,直到收敛。有谁知道是否存在用于执行此类操作的现有功能或程序包?我的猜测是它不会是一个特定于运动的包,但我想这种事情在很多领域都很常见。
编辑:
这是一些示例数据。有 4 支球队,A、B、C 和 D,每支球队与另一支球队交手一次,共进行了 10 场独特的比赛。数据加倍,因此每支球队的四场比赛都列为自己的行,列 "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,或基于获胜概率或失败次数等),然后如何最好地重新加权每个排名队伍的排名不只是基于 wins/losses 的数量,而是基于他们击败的对手的排名。
试试 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
我认为不会有针对您想要执行的操作的量身定制的解决方案,因为您如何处理评级将取决于您的场景的具体情况。