12 minute read

English Premier League musim 2020/2021 akan segera dimulai dalam beberapa hari lagi. Menarik jika kita melihat beberapa geliat di bursa transfer. Walaupun pertandingan nanti tidak akan disaksikan oleh penonton dalam waktu dekat, tapi tensi pertandingannya saya rasa masih tetap sama.

Sejak kuliah di Matematika dulu, ada satu pertanyaan yang muncul:

Apakah bisa saya membuat prediksi hasil akhir pertandingan di Premier League? Kalau bisa, bagaimana caranya?

Sampai akhirnya saya mendarat di suatu website yang membahas tentang statistika di dunia judi. Berbekal ilmu yang saya dapatkan ini, saya akan coba membuat prediksi dari pertandingan English Premier League musim 2020/2021.


Bagaimana cara kerjanya?

Sebenarnya membuat prediksinya relatif cukup mudah. Pendekatan yang dilakukan adalah dengan memanfaatkan distribusi Poisson. Walaupun masih ada pro dan kontra, tapi kebanyakan scientist setuju bahwa banyaknya gol dalam suatu pertandingan pertandingan sepakbola itu memenuhi asumsi distribusi Poisson.


Apa saja asumsinya?

  • k is the number of times an event occurs in an interval and k can take values 0, 1, 2, ….
  • The occurrence of one event does not affect the probability that a second event will occur. That is, events occur independently.
  • The average rate at which events occur is independent of any occurrences. For simplicity, this is usually assumed to be constant, but may in practice vary with time.
  • Two events cannot occur at exactly the same instant; instead, at each very small sub-interval exactly one event either occurs or does not occur.

Jadi saya akan memprediksi banyak gol yang tercipta oleh tim home dan tim away dalam suatu pertandingan menggunakan distribusi Poisson!

Dalam distribusi Poisson, parameter yang perlu diketahui adalah \lambda.

Apakah arti dari \lambda?

Pada distribusi Poisson, salah satu sifatnya adalah \lambda =
\overline{x} =
\sigma^2.

  • \overline{x} berarti mean atau expected value.
  • \sigma^2 berarti variansi.

Jadi pada distribusi Poisson, nilai mean dan variansinya adalah sama, yakni sebesar \lambda.

Kalau teman-teman membaca tulisan saya sebelumnya terkait mitos home vs away, sebenarnya ada easter eggs di salah satu tabel bahwa nilai \overline{x} hampir mirip dengan nilai \sigma^2.

Dengan mengetahui nilai expected value (dalam hal ini adalah expected goals) setiap tim pada saat laga home dan away, saya bisa menghitung peluang gol yang tercipta dalam suatu pertandingan!

Berikut adalah alur pengerjaannya:


Data Mentah

Data yang digunakan adalah statistik pertandingan EPL pada musim lalu. Variabel yang akan masuk kedalam perhitungan adalah:

  1. Nama tim_home
  2. Nama tim_away
  3. Goal yang dicetak tim_home
  4. Goal yang dicetak tim_away

Berikut adalah sampel data dari musim lalu:

date home_team away_team home_goals away_goals
09/08/2019 Liverpool Norwich 4 1
10/08/2019 West Ham Man City 0 5
10/08/2019 Bournemouth Sheffield United 1 1
10/08/2019 Burnley Southampton 3 0
10/08/2019 Crystal Palace Everton 0 0
10/08/2019 Watford Brighton 0 3
10/08/2019 Tottenham Aston Villa 3 1
11/08/2019 Leicester Wolves 0 0
11/08/2019 Newcastle Arsenal 0 1
11/08/2019 Man United Chelsea 4 0

Pecah Menjadi Data home dan away

Sebagaimana yang telah saya sampaikan, bahwa ada perbedaan antara tim home dan tim away dalam hal ketajaman mencetak goal. Oleh karena itu, saya akan bagi dua datanya menjadi data tim home dan data tim away.

Apa sih gunanya? Kelak saya akan menghitung skor attack dan defense masing-masing tim pada laga home dan away.

Begini caranya:

Misalkan tim Man United selama berlaga di home pada musim lalu (misalkan ada 40 laga) berhasil mencetak gol sebanyak 100 kali dan kebobolan 50 kali.

Apabila rata-rata gol yang dicetak semua tim pada laga home adalah 1.7 dan rata-rata kebobolan semua tim pada laga home adalah 0.8, maka:

  • Attack tim Man United pada laga home adalah: \frac{\frac{100}{40}}{1.7}
= 1.4705882.
  • Defense tim Man United pada laga home adalah: \frac{\frac{50}{40}}{0.8}
= 1.5625.
  • Overall tim Man United pada laga home adalah selisih antara Attack dan Defense = -0.0919118

Perhitungan ini diulang kembali saat Man United berlaga di away dengan nilai attack dan defense yang terbalik dengan laga home.

Contoh Data Home
home\_team home\_attack home\_defense overall\_home
Arsenal 1.2500000 1.048035 0.2019651
Aston Villa 0.7638889 1.310044 \-0.5461548
Bournemouth 0.7638889 1.310044 \-0.5461548
Brighton 0.6944444 1.179039 \-0.4845949
Burnley 0.8333333 1.004367 \-0.1710335
Chelsea 1.0416667 0.698690 0.3429767
Contoh Data Away
away\_team away\_attack away\_defense overall\_away
Arsenal 0.8733624 0.8333333 0.0400291
Aston Villa 0.8296943 1.2847222 \-0.4550279
Bournemouth 0.7860262 1.2152778 \-0.4292516
Brighton 0.8296943 0.9375000 \-0.1078057
Burnley 0.8296943 0.9375000 \-0.1078057
Chelsea 1.7030568 1.3194444 0.3836123

Menghitung expected goals

Sekarang saatnya saya menghitung expected goals masing-masing tim yang berlaga. Bagaimana caranya?

Misalkan saya ambil contoh pertandingan Community Shield yang digelar pekan lalu: Arsenal vs Liverpool. Meskipun pertandingan ini bukan pertandingan home vs away, tapi akan saya asumsikan demikian untuk mempermudah penjelasan.

Dari sini, saya definisikan:

  • tim_home = Arsenal
  • tim_away = Liverpool

Maka expected goals masing-masing tim adalah:

Xgoal_{Arsenal} =
Attack_{Arsenal}*Defense_{Liverpool}*\overline{goal}_{home}

Xgoal_{Liverpool} =
Attack_{Liverpool}*Defense_{Arsenal}*\overline{goal}_{away}

Yakni 1.1184211 untuk Arsenal dan 1.8202712 untuk Liverpool.

Menghitung Peluang Terjadinya Gol

Berbekal informasi di atas, kita akan menghitung peluang gol yang tercipta pada pertandingan.

Misalkan, saya ingin menghitung peluang pertandingan berakhir dengan skor 0 - 2, maka caranya adalah:

P(skor = 0 - 2) =
P(home=0)*P(away=2)

Maka untuk menghitung semua kombinasi skor yang mungkin, saya akan membuat matrix peluang sebagai berikut:

##      [,1] [,2] [,3] [,4] [,5]
## [1,]   NA   NA   NA   NA   NA
## [2,]   NA   NA   NA   NA   NA
## [3,]   NA   NA   NA   NA   NA
## [4,]   NA   NA   NA   NA   NA
## [5,]   NA   NA   NA   NA   NA

Nantinya sumbu x menandakan tim home dan sumbu y menandakan tim away.

Jadi, hasil perhitungan untuk laga Arsenalkontra Liverpool adalah sebagai berikut:

Menarik yah, ternyata peluang terbesar itu terjadi pada saat skor: 1-1 lalu 1-2.

Jika saya summary-kan hasil akhir dari berbagai kemungkinan skor tersebut:

Liverpool masih dijagokan untuk menang.

Faktanya:

Hasil pertandingan berakhir seri 1-1, namun ada saat penalty shootout Arsenal berhasil menang.

What’s next?

Wajar saja jika perhitungan di atas miss pada pertandingan semacam community shield, tapi nanti pada saat laga resmi bergulir akan saya coba pantau kinerja dari model perhitungan ini secara berkala dengan menambahkan data pertandingan terbaru.

Laga Pembuka EPL 2020/2021

Sebagai penutup, saya akan coba memprediksi laga pembuka Premier League 2020/2021 untuk 2 tim: Man United dan Chelsea. Untuk Man City mohon maaf, kalian hitung sendiri saja ya. haha

Sedangkan Liverpool melawan Leeds belum bisa dihitung karena Leeds baru saja promosi musim ini. Sama juga dengan Fulham kontra Arsenal belum bisa dihitung karena Fulham baru promosi musim ini.

Man United vs Crystal Palace

Brighton vs Chelsea