Я работаю над созданием модели, которая может предсказывать игры в НФЛ, и собираюсь запустить симуляции полного сезона и генерировать ожидаемые победы и поражения для каждой команды.
Часть модели основана на рейтинге, который меняется каждую неделю в зависимости от того, проиграла команда или нет.Например, предположим, что Биллы и Вороны начали игру по воскресеньям с рейтингом 100, после победы воронов их рейтинг теперь повышается до 120, а Счета снижается до 80.
Во время симуляции я быМне нравится обновлять рейтинг команд, чтобы получить более точное представление о количестве возможных моментов сезона, но я не уверен, как включить что-то подобное в цикл.
Мой цикл на сезон 2017 года.
full.sim <- NULL
for(i in 1:10000){
nflpredictions$sim.homewin <- with(nflpredictions, rbinom(nrow(nflpredictions), 1, homewinpredict))
nflpredictions$winner <- with(nflpredictions, ifelse(sim.homewin, as.character(HomeTeam), as.character(AwayTeam)))
winningteams <- table(nflpredictions$winner)
projectedwins <- data.frame(Team=names(winningteams), Wins=as.numeric(winningteams))
full.sim <- rbind(full.sim, projectedwins)
}
full.sim <- aggregate(full.sim$Wins, by= list(full.sim$Team), FUN = sum)
full.sim$expectedwins <- full.sim$x / 10000
full.sim$expectedlosses <- 16 - full.sim$expectedwins
Это прекрасно работает при запуске симуляции на 2017 год, когда у меня уже есть данные за полные сезоны, но у меня возникают проблемы с адаптацией к модели для симуляции 2018.
Мой первыйИдея состоит в том, чтобы создать еще один цикл for в цикле, который выполняет итерацию по строкам и обновляет рейтинги для каждой недели, что-то вроде
full.sim <- NULL
for(i in 1:10000){
for(i in 1:nrow(nflpredictions)){
Идея состоит в том, чтобы обновить рейтинг команд, а затем генерировать выигрышвероятность за неделю с помощью GLM, которую я построил, смоделируйте, кто победит, а затем продолжите через весь фрейм данных.Единственное, что действительно сдерживает меня, - это не знать, как добавить значение в строку на основе строки, которая не находится прямо над ней.Так какой же самый простой способ обновлять рейтинги каждую неделю, основываясь на результатах последней игры, в которой играла команда?
Фрейм данных построен так, но, очевидно, в большем масштабе:
nflpredictions
Week HomeTeam AwayTeam HomeRating AwayRating HomeProb AwayProb
1 BAL BUF 105 85 .60 .40
1 NE HOU 120 90 .65 .35
2 BUF LAC NA NA NA NA
2 JAX NE NA NA NA NA
Надеюсь, я объяснил это достаточно хорошо ... Любой вклад очень важен, спасибо!