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