1

MCMC と R の理解を深めるために改善しようとしている添付モデル (Rasmus Bååth の厚意による) があります。モデルにフィードされるのは、各行に (HomeTeam、AwayTeam、Season、HomeGoals、AwayGoals、MatchResult を含む) サッカーの試合です。 、ホームフォーム、アウェイフォーム)。このモデルは、ポアソン分布としてモデル化された HomeGoals と AwayGoals を使用して、2 つのチーム間の試合でサッカーの結果を予測するために使用されます。私がここ数日達成しようとしてきたことは、モデル内のチームの現在のフォームに関するこのデータを使用することですが、それを実現する方法が思いつきません。どのようにすればよいか、いくつかの提案を期待しています。

いくつかの説明:

  • シーズンは、ゲームがプレイされたシーズンです
  • MatchResult は、アウェイ チームが勝った場合は -1、引き分けの場合は 0、ホーム チームが勝った場合は 1 です。
  • HomeForm と AwayForm は、それぞれホーム チームとアウェイ チームの現在のフォームを定量化する値です (-1 対 1、5 のウィンドウでのチームの最後のゲームのローリング平均試合結果、チームがアウェイ サイドでプレーした場合は負の試合結果)。 .
  • テキスト内の列は、モデル (因子) に渡される前に整数に変換されます。

ありがとうございました!

モデル:

model {
  for(game_i in 1:n_games) {
    HomeGoals[game_i] ~ dpois(lambda_home[Season[game_i], HomeTeam[game_i], AwayTeam[game_i]])
    AwayGoals[game_i] ~ dpois(lambda_away[Season[game_i], HomeTeam[game_i], AwayTeam[game_i]])
  }

  for(season_i in 1:n_seasons) {
    for(home_i in 1:n_teams) {
      for(away_i in 1:n_teams) {
        lambda_home[season_i, home_i, away_i] <- exp(home_baseline[season_i] + skill[season_i, home_i] - skill[season_i, away_i])
        lambda_away[season_i, home_i, away_i] <- exp(away_baseline[season_i] + skill[season_i, away_i] - skill[season_i, home_i])
      }
    }
  }

  skill[1, 1] <- 0 
  for(j in 2:n_teams) {
    skill[1, j] ~ dnorm(group_skill, group_tau)
  }

  group_skill ~ dnorm(0, 0.0625)
  group_tau <- 1/pow(group_sigma, 2)
  group_sigma ~ dunif(0, 3)

  home_baseline[1] ~ dnorm(0, 0.0625)
  away_baseline[1] ~ dnorm(0, 0.0625)

  for(season_i in 2:n_seasons) {
    skill[season_i, 1] <- 0 
    for(j in 2:n_teams) {
      skill[season_i, j] ~ dnorm(skill[season_i - 1, j], season_tau)
    }
    home_baseline[season_i] ~ dnorm(home_baseline[season_i - 1], season_tau)
    away_baseline[season_i] ~ dnorm(away_baseline[season_i - 1], season_tau)
  }

  season_tau <- 1/pow(season_sigma, 2) 
  season_sigma ~ dunif(0, 3) 
}

データ (の一部):

No. HomeTeam           AwayTeam       Season HomeGoals AwayGoals HomeForm  AwayForm MatchResult
41  Betis              Real Madrid    0809   1         2         -0.6      0.6      -1
42  Espanol            Barcelona      0809   1         2         0.0       0.4      -1
43  Sp Gijon           Villarreal     0809   0         1         -1.0      0.8      -1
44  Almeria            Recreativo     0809   1         0         0.4       -0.4     1
45  Ath Bilbao         Getafe         0809   0         1         -0.2      0.2      -1
46  Ath Madrid         Sevilla        0809   0         1         0.2       0.6      -1
47  Malaga             Valladolid     0809   2         1         -0.4      -0.2     1
48  Numancia           Osasuna        0809   0         0         -0.4      -0.2     0
49  Santander          Mallorca       0809   1         2         -0.6      0.2      -1
50  Valencia           La Coruna      0809   4         2         0.8       -0.2     1
51  Barcelona          Ath Madrid     0809   6         1         0.8      -0.2      1
52  Villarreal         Betis          0809   2         1         1.0      -0.6      1
4

0 に答える 0