この記事は北海道コンサドーレ札幌 Advent Calendar 2021に参加しています。
アヤ(aya_shorty)さん、企画ありがとうございます~
ジンクス?
佐々木(SSK0822)です。コンサドーレを(割と真剣に)追い始めてから丁度10年になりますが、それくらいの時間(とき)が経つとコンサドーレはいつもこのシチュエーションで敗北(まけ)るとか、この対戦者(あいて)にはどうも相性が良好(よ)くない、とかを感じやすくなるものです。
そこで今回は以下に記載する3つの要素について、コンサドーレとの相性を分析してみたいと思います。
調べたいこと
今回は記念すべき検証企画の1回目ということで、割とよく感じやすそうなこととして
・夏に弱いのか
・「初モノ」に弱いのか
・「あ行審判」に弱いのか
を、勝点に基づいて検証していきたいと思います。
検証方法
まず、先ほど挙げた3つの要素に該当する試合の結果データをA群、それ以外をB群に分けます。
そしてA群とB群のそれぞれの平均勝点を比較します。
A群の平均勝点<B群の平均勝点であったとき、続いてそれが偶然発生する誤差か?を簡易的に統計の観点で(※)検証します。厳密なモロモロは割愛しますが、モロモロの計算によってはじき出されたp値という数値が0.05より小さい場合、A群とB群の勝点は「たまたま起きた誤差」とはいえず「コンサドーレは〇〇に弱い」という説が立証されるとします。(かなしい)
(※)…サッカーには引き分けの概念が当たり前に存在するので、勝敗の二項検定は使用せず、また勝点は正規分布に従わないので、ノンパラメトリック検定(Wilcoxonの順位和検定)で評価します。(ちょっと無理矢理感はあるけど→本編外で記述)
検証の流れは以下の通りとなります。
作業
試合データは例のごとく、Jリーグ公式サイトから持ってきます。ただし審判データが入っていないので、そちらはSoccer.DBから取得します。
コンサドーレの試合だけにフィルターをした試合結果一覧をExcelにコピペして、スコアの列から札幌の試合結果(勝点)を格納する列、夏期間フラグと初モノフラグの列を追加します。
この手作業を踏まえて試合データとしてCSVファイル形式で保存し、統計ソフト(Rstudio)にぶちこんでサマリおよびノンパラメトリック検定を行うという作業の流れです。
コンサドーレ「夏」に弱い説
「夏に弱い」は鉄板のジンクス、おそらく誰もが一度は考えたことがあるのではないでしょうか。
道外の夏はとにかく湿度!湿度!湿度!いやー、この時期のサッカーは…地獄ですわ!!
って大泉洋も言ってた。
ということで、夏期間を7-9月の間と定義します。
A群(夏期間) :7-9月のリーグ戦(J1/J2)
B群(それ以外):上記以外の期間のリーグ戦(J1/J2)
これらの試合結果の勝点を比較してみましょう。
3、2、1、\ノーザン・ソウル/
①単純比較
集計結果は以下の通りとなりました。
試合区分 | 試合数 | 平均勝点 |
A群(夏期間) | 334 | 1.311 |
B群(夏以外) | 598 | 1.400 |
A群の平均勝点<B群の平均勝点となりました。もしかしたらコンサドーレは夏期間に弱いかもしれない、という仮定のもとでp値を計算します。
②p値
p値=0.252となり、0.05より大きいので誤差の範囲内であるということになります。
結論
コンサドーレは夏の試合に強くないが、明らかに弱いというわけではない。
ちなみにコンサドーレの歴代最多得点試合5傑のうち、4試合は夏期間でした。いや強いやんけ。
コンサドーレ「初モノ」に弱い説
進め方は「夏に弱い説」と全く同じです。
A群(初モノ) :リーグ戦(J1/J2)で初めて対戦する相手との試合
B群(それ以外):上記以外のリーグ戦(J1/J2)
※横浜フリューゲルスと横浜FCは別チーム扱いとします。
①単純比較
こちらについても A群の平均勝点<B群の平均勝点となりました。続いてp値を計算します。
試合区分 | 試合数 | 平均勝点 |
A群(初モノ) | 46 | 1.174 |
B群(それ以外) | 886 | 1.378 |
②p値
p値=0.252となり、0.05より大きいのでこちらも誤差の範囲内であるということになります。
ちなみに集計対象は元データの都合上Jリーグの試合のみとしましたが、天皇杯での対初モノはいかがでしょうか。
あっ…(察し)
結論
コンサドーレは初モノにも強くはないが、明らかに弱いというわけではない。
ただしホンダFCといわきFCには弱い。
コンサドーレ「あ行審判」に弱い説
現地で応援するとき、選手紹介に先立って審判団が紹介されると「うわー、〇〇かよ」って反応があったりするじゃないですか。
コンサドーレを(割と真面目に)応援し始めた頃のアホな僕はあの反応を見て「サッカーに詳しい人だ…!!(皮肉抜き)」と畏怖と自分も詳しくなりたいという少しばかりの憧憬を覚えたので(アホだ)、1年間くらいゴール裏で「とにかく審判には逆張りしとけ精神」で「うわー、扇谷かよ」「うわー、池内かよ」「うわー、岡部かよ」という反応をおよそ独り言とは言えない大きさでつぶやいていました。(本当にアホだ)
で、前述の例の通りJリーグの審判には「あ行」の方が割合としてすごく多い印象(※)なので、その観点でコンサドーレとの相性を見ていきたいと思います。
ちなみにこの観点だけは取得元がサッカーDBになるので、リーグ戦+カップ戦(パシフィックなんとか杯含む)が集計対象になります。
(※)…350試合/1100試合で31.8%。マジで多かった
①単純比較
試合区分 | 試合数 | 平均勝点 |
A群(あ行審判) | 350 | 1.423 |
B群(それ以外) | 850 | 1.323 |
あれ、「あ行」審判の方が相性良くね?という結果が出ました。ということでこの時点で説立証ならずなのですが、逆に「あ行」審判に明らかに強いのか?の観点でp値を計算します。
②p値
p値=0.2388となり、0.05より大きいのでこちらも誤差の範囲内であるということになります。
あまりに強烈な審判との楽しい思い出
結論に入る前に、審判別データを眺めていると平均イエロー提示数8枚、レッド2枚という驚異的なデータを残している審判を見つけました。その試合についてググっていたら、YouTubeに当時のHana*テレビが落っこちていて懐かしすぎたので文字起こししてみました。
(その時は高校生で、この試合は秒刊コンサドーレの実況を追っていてがくぜんとした記憶)
YouTube検索で「コンサドーレ 愛媛 2007」で調べたら出てきます。多分。
立ち上がりはいい流れでした。西谷のフリーキックは〜?クロスバーを直撃ッ
続いて〜藤田のバスに飛び込んだのは…中山ッ!
流れは完全に札幌、先制点は時間の問題かと思われました、しかし…
前半37分、全てがぶちこわしになります!札幌DF西澤と相手の接触プレーに…
エエッ!?!?
まさか!2枚目のイエローで退場…
札幌の選手達、半ば呆れた顔での抗議…そして三浦監督はもう、我慢なりません!
サッカーには確かに、相手の進路を阻むオブストラクションという反則があります。
しかし、これが2枚目のイエローだとするのなら、DFはサッカーできません!(呆)
監督も珍しく…
そして、えてしてこういうシーンの後では、こんなことが起きるんです…
先制は、愛媛。(諦)
この後も、接触のたびにイエロー、「そりゃないんじゃない?」と言ったら中山にもイエロー。
次節出場停止…
あまりのことに、ブルーノは「ハイハイ、ご立派ご立派あ!」と拍手。
さらに、曽田まで2枚目のイエローで退場となり、4バックのうち2人が退場となれば…?
いかに自慢の守備ともいえども、こんなことにもなります…
インターセプトされ、2失点目。(クソでかため息)
ただあきらめたわけじゃありませんでした!途中出場の相川が、今シーズン初ゴールで1点差とすると、
ボールを奪い返してすぐに!
試合終了前には…大塚!さらにブルーノ!しかし数センチ及ばず、このまま試合終了…
そして、予定時間から大幅に遅れて始まった監督会見では…
結論
コンサドーレは「あ行審判」にはむしろ好成績を残しているが、明らかに強いと言うわけではない。
ちなみに唐紙学志主審はちょっと苦手。
まとめ
「夏期間」「初モノ」「あ行審判」については平均値に差があったものの、いずれもそれが原因で明らかな差がついてはいない、説立証ならずという結果になりました。(学生実験で考察ネタが行き詰まるやつだ)
まああんまりジンクス的なものは気にせずに、目の前のお祭りサッカーを楽しもうってことですね!
その他
Rでの実装
今回の検証で使用した試合データとRのスクリプトです。
勝点と各分析観点のフラグをセレクトして元データを作り、プラグの区分でフィルターしてA群とB群のデータを作ってサマリして、検定は元データをwilcox.testにぶちこむだけです。(Rってべんり〜!)
(githubのパスワードを忘れた)
library("tidyverse")
consadt <- read_csv(file = "./matchdata.csv", locale = locale(encoding = "shift-jis"))
#その1:夏に弱いのか----
#勝点と夏期間フラグを抽出
consadt_1 <- consadt %>%
select(札幌勝点,夏期間)
consadt_1 %>%
table()
#夏期間をA群、それ以外をB群としてサマリを見てみる
consadt_1_A <- consadt_1 %>%
filter(夏期間 == "1")
summary(consadt_1_A$札幌勝点)
consadt_1_B <- consadt_1 %>%
filter(夏期間 == "0")
summary(consadt_1_B$札幌勝点)
#期間でのノンパラメトリック検定
wilcox.test(formula = 札幌勝点 ~ 夏期間, data = consadt_1, correct=FALSE)
#その2:初物に弱いのか?----
consadt_2 <- consadt %>%
select(札幌勝点,初物)
table(consadt_2)
#初物はA、それ以外はBとしてサマリを見てみる
consadt_2_A <- consadt_2 %>%
filter(初物 == "1")
summary(consadt_2_A$札幌勝点)
consadt_2_B <- consadt_2 %>%
filter(初物 == "0")
summary(consadt_2_B$札幌勝点)
#検定
wilcox.test(formula = 札幌勝点 ~ 初物, data = consadt_2, correct=FALSE)
#その3:「あ行審判」に弱いのか?----
#SoccerDBの審判別勝敗データを読み込む
consadt_3_ref <- read_csv(file = "./matchdata_referee.csv", locale = locale(encoding = "utf-8")) %>%
select(aiueo,won,draw,lost)
#その1、その2と同じフォーマットの検定用データをつくる
#勝点の実データを格納する空のデータフレームを作る
n <- 2
consadt_3 <- data.frame(matrix(rep(NA, n), nrow=1))[numeric(0),]
colnames(consadt_3) <- c("aiueo","札幌勝点")
#審判ごとに勝/負/分別の勝点レコードを追加する関数
source("./tsuika_pointsrec.R", encoding = "utf-8")
#それぞれの審判について勝/負/分の
#数ごとに勝点のレコードを追加する
for(j in 1:nrow(consadt_3_ref)){
temprec <- slice(consadt_3_ref,j)
consadt_3 <- tsuika_pointsrec(temprec)
}
table(consadt_3$aiueo)
#あ行審判はA、それ以外はBとしてサマリを見てみる
consadt_3_A <- consadt_3 %>%
filter(aiueo == "1")
summary(consadt_3_A$札幌勝点)
consadt_3_B <- consadt_3 %>%
filter(aiueo == "0")
summary(consadt_3_B$札幌勝点)
#検定
wilcox.test(formula = 札幌勝点 ~ aiueo, data = consadt_3, correct=FALSE)
SoccerDBから引っ張ってきた審判データは試合結果がまとまっているので、各審判の勝ち負け引き分けの試合数ごとに1試合ずつの勝点レコードを作る処理を作ります。
tsuika_pointsrec <- function(temprec){
#勝ち数だけ勝点3のレコードを追加
for(i in 1:temprec$won){
consadt_3 <- consadt_3 %>%
add_row(aiueo = temprec$aiueo, 札幌勝点 = 3)
}
#負け数だけ勝点0のレコードを追加
for(i in 1:temprec$lost){
consadt_3 <- consadt_3 %>%
add_row(aiueo = temprec$aiueo, 札幌勝点 = 0)
}
#分け数だけ勝点1のレコードを追加
for(i in 1:temprec$draw){
consadt_3 <- consadt_3 %>%
add_row(aiueo = temprec$aiueo, 札幌勝点 = 1)
}
invisible(consadt_3)
}
引き分けを含めて評価する難しさ
例えば陸上競技や水泳のようなタイム型競技であったり、エクストリームスポーツのような採点型競技のように「数字そのものが成績となるスポーツ」であれば、t検定を使ったりノンパラメトリック検定でも順位和が綺麗に作られたりすることが期待されます。
一方で対戦型のスポーツはだいたい勝敗がきちんとつくため引き分けがそもそも存在しなかったり十分に少なかったりするので、素直に二項検定を使えば良いものと思います。(プロ野球は引き分けが増えているみたいだけど)
その点でサッカーは引き分け=勝点1としているのが(結果論ありきの)評価をかなりややこしくしていると感じます。ノンパラメトリック検定を行うにしてもとりえる結果は3種類しかない(タイ値が大量発生する)わけで、順位和のパターン数も自ずと少なくなりかなりインチキくさい感じになってしまったなあと思いました。