Я анализирую некоторые спортивные данные, и у меня есть набор записей о победах / поражениях примерно для 40 команд. Я хотел бы составить рейтинг, в котором каждая победа будет зависеть от силы противника. Это должна быть какая-то итеративная / рекурсивная вещь, где веса и ранги обновляются на каждой итерации до сходимости. Кто-нибудь знает, есть ли существующая функция или пакет для такого рода вещей? Я предполагаю, что это не будет спортивный пакет, но я полагаю, что такие вещи распространены во многих областях.
РЕДАКТИРОВАТЬ:
Вот несколько примеров данных. Есть 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, или на основе вероятности победы, или количества проигрышей и т. Д.), А затем как лучше всего повторно взвесить каждую команду не только на основе количество побед / поражений, но от ранга оппонента они побеждены.