Обновление значений в симуляции в R - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю над созданием модели, которая может предсказывать игры в НФЛ, и собираюсь запустить симуляции полного сезона и генерировать ожидаемые победы и поражения для каждой команды.

Часть модели основана на рейтинге, который меняется каждую неделю в зависимости от того, проиграла команда или нет.Например, предположим, что Биллы и Вороны начали игру по воскресеньям с рейтингом 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

Надеюсь, я объяснил это достаточно хорошо ... Любой вклад очень важен, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...