ACLの予想（更新）

アジアチャンピオンズリーグ2017が開幕しました。組合せによって、東アジア区各グループの順位を予想してみましょう。

##過去のデータと各リーグ間の数字の是正
予想する前、過去3年間(2014年～2016年)のACL東アジアグループ予選のデータを見てみましょう。
K：韓国　J：日本　C：中国　A：オーストラリア　T：タイ　V：ベトナム　H：香港
![image.png](https://qiita-image-store.s3.amazonaws.com/0/114190/a2aefc9a-50f5-0534-af9c-1dd207c75e2a.png)

　過去3年のデータから見れば、Kリーグの成績が抜けています。Jリーグ、Cリーグ、Aリーグの成績がほぼ並んでいます。そのうち、Cリーグは莫大な資金を投入するとともに、成績も上がってきています。

$$攻撃力(home)＝f(平均得点(home),相手の平均失点(away))$$

$$攻撃力(away)＝f(平均得点(away),相手の平均失点(home))$$

$f(・)$関数は、ここで公開しません。

1．TリーグとKリーグのチームが比較的に弱いので、攻撃力を以下のように修正する。
Tのチームは、K、J、C、Aと対戦の場合、Tの攻撃力を　$攻撃力＊0.6$　に修正する。
Hのチームは、K、J、C、Aと対戦の場合、Hの攻撃力を　$攻撃力＊0.4$　に修正する。

2．Kリーグのチームはホームで平均失点が低いので、アウェイチームの攻撃力を　$攻撃力(away)＊0.8$　に修正する。
　
##2017年の組合せ

|グループE|グループF|グループG|グループH|
|:-:|:-:|:-:|:-:|
|鹿島アントラーズ|FCソウル|広州恒大|アデレート・ユナイテッド|
|ムアントン・ユナイテッド(タイ)|浦和レッズ|水原三星|江蘇蘇寧|
|プレーオフ勝者|ウェスタン・シドニー|川崎フロンターレ|済州ユナイテッド|
|プレーオフ勝者|プレーオフ勝者|東方(香港)|プレーオフ勝者|

上海上港、蔚山現代、ガンバ大阪の勝ち上がりの可能性が非常に高いです。
残りの1チームは上海申花とブリスベン・ロアの勝者だけです。

この17チームの昨シーゼン各所属リーグのデータ（是正済み）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/114190/cb2557de-7582-3362-ed21-2c1b7d658220.png)

##プレーオフ

|チーム|試合数|勝|分|負|得点|失点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|上海申花（home）|15|9|6|0|33|14|
|ブリスベン・ロア(away)|13|3|4|6|15|24|

上海申花勝ちの確率が60%以上となります。

```
> round(Fun(prob),4)
     W      D      L 
0.6019 0.2108 0.1872 
```

プレーオフで、上海上港、蔚山現代、ガンバ大阪、上海申花4チームが勝ちあがると予想します。

|グループE|グループF|グループG|グループH|
|:-:|:-:|:-:|:-:|
|鹿島アントラーズ|FCソウル|広州恒大|アデレード・ユナイテッド|
|ムアントン・ユナイテッド(タイ)|浦和レッズ|水原三星|江蘇蘇寧|
|蔚山現代|ウェスタン・シドニー|川崎フロンターレ|済州ユナイテッド|
|上海申花|上海上港|東方(香港)|ガンバ大阪|


##グループリーグ終了後の順位予想
各チームの勝ち点の期待値を計算し、順位を予想します。
###グループE
```
> Ranking.fun(Data_2017,group_E)
         チーム　　　　　　勝ち点
1 鹿島　　　　　　　　　　　9.8141
2 上海申花　　　　　　　　　9.5510
3 蔚山現代　　　　　　　　　8.5218
4 ムアントン・ユナイテッド　4.7901
```
###グループF
```
> Ranking.fun(Data_2017, group_F)
        チーム　　　　　　勝ち点
1  浦和　　　　　　　　　　8.7858
2　FCソウル　　　　　　　　8.5550
3　上海上港　　　　　　　　8.3554
4　ウェスタン・シドニー　　7.2954
```
###グループG
```
> Ranking.fun(Data_2017, group_G)
    チーム　　勝ち点
1　広州恒大　11.4519
2　川崎F　　 10.0585
3　水原三星　8.5201
4　東方　　　3.0354
```
###グループH
```
> Ranking.fun(Data_2017, group_H)
          チーム　　　　　　勝ち点
1 済州ユナイテッド　　　　　8.6648
2 江蘇蘇寧　　　　　　　　　8.4919
3 アデレード・ユナイテッド　8.3848
4　G大阪　　　　　　　　　　7.5421
```
##コメント
グループEは、鹿島、上海申花が突破する
グループGは、広州、川崎が突破する
グループF、Hは接戦になりそう

##code
```code.r
setwd("C:/R")
Data_2017 <- read.table( "ACL2017.csv", header = TRUE, sep=",")

group_E <- c("蔚山現代", "鹿島", "上海申花", "ムアントン・ユナイテッド")
group_F <- c("FCソウル", "浦和", "上海上港", "ウェスタン・シドニー")
group_G <- c("水原三星", "川崎F", "広州恒大", "東方")
group_H <- c("済州ユナイテッド", "G大阪", "江蘇蘇寧", "アデレード・ユナイテッド")

Ranking.fun <- function(Data, group) {
  n <- 90
  # 1試合は90分間と仮定する
  combination <- combn(4,2)
  combination <- rbind(t(combination),cbind(combination[2,],combination[1,]))
  con <- c(1,8,9,16,17)
  # 元データによる
  data <- rbind(Data[Data[,1] == group[1], con], 
                Data[Data[,1] == group[2], con],
                Data[Data[,1] == group[3], con], 
                Data[Data[,1] == group[4], con])
  comb.fun <- function(x) {
    p_home <- (data[x[1], 2] + data[x[2], 5])/2/n
    p_away <- (data[x[1], 3] + data[x[2], 4])/2/n
    c(p_home, p_away)
  }
  prob <- t(apply(combination,1,comb.fun))
  prob[combination[,1] == 1, 2] <- prob[combination[,1] == 1, 2]*0.8
  if(group[4] == "東方") {
    prob[combination[,1] == 4, 1] <- prob[combination[,1] == 4, 1] * 0.4
    prob[combination[,2] == 4, 2] <- prob[combination[,2] == 4, 2] * 0.4
  }
  if(group[4] == "ムアントン・ユナイテッド") {
    prob[combination[,1] == 4, 1] <- prob[combination[,1] == 4, 1] * 0.6
    prob[combination[,2] == 4, 2] <- prob[combination[,2] == 4, 2] * 0.6
  }

  Fun <- function(x){
    k <- 10
    prob_matrix <- matrix(0,k,4)
    colnames(prob_matrix) <- c("goals","W","D","L")
    prob_matrix[,1] <- c(1:10)-1
    
    fun <- function(y){
      c(dbinom(y[1],n,x[1]),dbinom(y[1],n,x[2]))
    }
    
    kv <- apply(prob_matrix,1,fun)
    
    for (i in 2:(k-1)){
      prob_matrix[i,"D"] <- kv[1,i]*kv[2,i]
      prob_matrix[i,"W"] <- kv[1,i]*sum(kv[2,(1:(i-1))])
      prob_matrix[i,"L"] <- kv[1,i]*sum(kv[2,((i+1):k)])
    }
    
    prob_matrix[1,"D"] <- kv[1,1]*kv[2,1]
    prob_matrix[1,"L"] <- kv[1,1]*sum(kv[2,2:k])
    prob_matrix[k,"D"] <- kv[1,k]*kv[2,k]
    prob_matrix[k,"W"] <- kv[1,k]*sum(kv[2,1:(k-1)])
    
    apply(prob_matrix[,c("W","D","L")],2,sum)
  }
  
  prob_result <- t(round(apply(prob,1,Fun),4))
  point <- rbind(cbind(combination[,1], prob_result %*% as.matrix(c(3,1,0))),
                 cbind(combination[,2], prob_result %*% as.matrix(c(0,1,3))))
  ranking.fun <- function(x) {
    sum(point[point[,1] == x[1],2])
  }
  
  ranking <- apply(as.matrix(1:4),1,ranking.fun)
  group.ranking <- data.frame(data[order(ranking, decreasing = TRUE),1],ranking[order(ranking, decreasing = TRUE)])
  colnames(group.ranking) <- c("チーム", "勝ち点")
  group.ranking
}
```

```
> Data_2017
                     チーム 試合数 勝 分 負 得点 失点 平均得点  平均失点 試合数.1 勝.1 分.1 負.1 得点.1 失点.1 平均得点.1 平均失点.1
1                  蔚山現代     17  7  3  7   19   23 1.117647 1.3529412       16    6    6    4     19     20  1.1875000  1.2500000
2          済州ユナイテッド     16  8  5  3   33   21 2.062500 1.0500000       17    6    2    9     27     29  1.5882353  1.7058824
3                  FCソウル     16  6  5  5   28   23 1.750000 1.1500000       17   11    1    5     30     20  1.7647059  1.1764706
4                  水原三星     16  4  7  5   26   28 1.625000 1.4000000       17    3    9    5     19     24  1.1176471  1.4117647
5                      鹿島     17 10  0  7   26   15 1.529412 0.8823529       17    8    5    4     27     19  1.5882353  1.1176471
6                     川崎F     17 11  3  3   36   23 2.117647 1.3529412       17   11    3    3     32     16  1.8823529  0.9411765
7                      浦和     17 11  3  3   37   16 2.176471 0.9411765       17   12    2    3     24     12  1.4117647  0.7058824
8                     G大阪     17  8  4  5   26   21 1.529412 1.2352941       17    9    3    5     27     21  1.5882353  1.2352941
9                  広州恒大     15 10  5  0   31    7 2.066667 0.4666667       15    9    2    4     31     12  2.0666667  0.8000000
10                 江蘇蘇寧     15 12  3  0   33   10 2.200000 0.6666667       15    5    3    7     20     23  1.3333333  1.5333333
11                 上海上港     15  9  5  1   36   13 2.400000 0.8666667       15    5    5    5     20     19  1.3333333  1.2666667
12                 上海申花     15  9  6  0   33   14 2.200000 0.9333333       15    3    6    6     13     17  0.8666667  1.1333333
13               ブリスベン     14 11  2  1   34   16 2.428571 1.1428571       13    3    4    6     15     24  1.1538462  1.8461538
14     ウェスタン・シドニー     13  8  2  3   23   17 1.769231 1.3076923       14    6    4    4     21     16  1.5000000  1.1428571
15 アデレード・ユナイテッド     13  7  4  2   22   12 1.692308 0.9230769       14    7    3    4     23     16  1.6428571  1.1428571
16 ムアントン・ユナイテッド     15 12  1  2   40   14 1.333333 1.4000000       15   14    1    1     33     10  0.6600000  1.1333333
17                     東方      8  6  1  1   17    6 1.062500 1.1250000        8    6    1    1     18      7  0.6750000  1.4875000
>
```