czwartek, 29 stycznia 2015

Modele wydarzeń sportowych - Bieżący ranking drużyn serie-A (cz. 2)

Problem

W poprzednim tygodniu zaprezentowałem rozszerzony model BT z parametrami siły poszczególnych drużyn i dodatkowym stałym parametrem dla wszystkich drużyn promującym gospodarzy. Prognoza wyznaczona na weekend okazała się trafiona w 60%. Wynik prognozy poniżej oczekiwań, bowiem zakładaliśmy przynajmniej 70% prawdopodobieństwo poprawnego wyniku. Oczywiście przy prawdopodobieństwie p=70% sześć sukcesów na dziesięć prób to wciąż bardzo prawdopodobne powołując się na rozkład dwumianowy. Siedem sukcesów to tylko średnia w dziesięciu próbach - czasem trafimy siedem, czasem więcej, czasem mniej.

Abstrahując od rozkładów prawdopodobieństwa, prognozowana kolejka serie A wskazała, że być może warto się zastanowić nad Naszym modelem i poprawić ewentualne błędy. Zastanówmy się jeszcze raz nad założeniami - czy stały parametr reprezentujący atut własnego boiska rzeczywiście jest właściwy? Czy w ogóle cały model jest dobrze dopasowany? Porównajmy tabelę dla meczów u siebie i na wyjeździe - zauważamy teraz, że niektóre drużyny mają zupełnie różne lokaty w tabelach home i away. Zakładając, że atut własnego boiska jest jednakowy dla wszystkich to i ranking powinien być mniej więcej taki sam - a nie jest. Dlatego proponuję modyfikację poprzedniego modelu, zastępując go poniższym:

$p_i=\frac{e^{\beta_{i_{home}}}}{e^{\beta_{i_{home}}}+e^{\beta_{j_{away}}}+e^{\nu \frac{1}{2} (\beta_{i_{home}}+\beta_{j_{away}})}}$


Czyli %p_i% jest to prawdopodobieństwo zwycięstwa drużyny i-tej przy założeniu, że gra ona u siebie. Ta modyfikacja sprawia, że zamiast 22 parametrów będziemy musieli oszacować 41, po dwa dla każdej drużyny plus $\nu$.

Aby ocenić wpływ zmiany modelu dzięki wprowadzeniu nowych parametrów skorzystamy z testu ilorazu wiarygodności (dwukrotna różnica logarytmów wiarygodności), którego rozkład ma postać chi-kwadrat z liczbą punktów swobody równą różnicy w liczbie parametrów obydwu modeli:

$LR=2*(l(model_1)-l(model_0))$
$LR\sim\chi^2(npar_{model1}-npar_{model_0})$

Wykorzystując powyższą formułę możemy badać modele estymowane metodą największej wiarygodności, testując łączną istotność parametrów dodanych do modelu lub istotność dopasowania modelu w stosunku do innego (np. w stosunku do modelu zerowego).

Rozwiązanie

Tak jak tydzień temu, tak i teraz najpierw tworzymy dwie funkcje, pierwsza będąca implementacją zapisanego modelu, a druga funkcją liczącą sumę logarytmów wiarygodności (ujemną).

Dzisiejszy skrypt jest niemal identyczny w porównaniu z tym z poprzedniego tygodnia. Podobnie jak w poprzednim kolejno: 
- Wczytanie funkcji z osobnego pliku procedurą source, Zaciągnięcie danych używając read.csv,
- Wektor unikalnych drużyn (druzyna),
- Utworzenie zero-jedynkowych macierzy H i A, Wynik y={"a","t","h"},
- Zestaw parametrów (beta) z parametrem $\nu$ oraz zestawem bet, po dwie dla każdej z drużyn. 
- Estymacja modelu procedurą optim, minimalizując (ujemny) logarytm największej wiarygodności

Na parametrach z out$par tworzymy data.frame "parametry". Sortujemy poziomy kolumny druzyna zgodnie z wielkością parametru (factor reorder) i wizualizujemy za pomocą ggplot. Wykres poniższy pokazuje, że takie drużyny jak Napoli, Udinese, Verona i Chievo nie wykorzystują atutu własnego boiska, prezentując większą siłę na wyjeździe niż u siebie. Zaznacza się dominacja Juventusu i najsłabsza Parma.

 
Następny etap opiszę z większą dokładnością. Posługując się parametrami z modelu, odtwarzamy funkcję BTDavidson2 w celu wyodrębnienia prawdopodobieństw poszczególnych wyników (H-T-A) szacowanych przez model. Podglądamy pierwsze sześć obserwacji za pomocą head(). Prognozowanym przez model wynikiem (y.prog) jest ten, który ma przypisane najwyższe prawdopodobieństwo realizacji. Prognozowane wyniki krzyżujemy z wynikami rzeczywistymi (table(y.prog,y)) i patrzymy jaka proporcja poszczególnych wyników została przez model poprawnie oszacowana. Co jest warte uwagi to 60.3% skuteczność modelu z prognozowaniem meczów na wyjeździe. W przypadku meczów u siebie ("h") skuteczność wyniosła 66.2%. Co również warte uwagi to prognozowanie meczów nierozstrzygnionych. Jak widać model poprawnie typuje 42.6% remisów. Tablicę warto przeanalizować jeszcze dokładniej, odpalając kolejną linijkę gdzie widzimy jaka frakcja prognoz miała daną realizację. Co ciekawe, że w przypadku prognoz na gościa ("a") tylko 11.9% zakończyło się zwycięstwem gospodarza. W przypadku prognoz na gospodarza tylko 7.8% zakończyło się zwycięstwem gościa. To napawa pewnym optymizmem, ale uważajmy, prognozy, które demonstruję są w próbie na której był optymalizowany model. Gdybyśmy założyli i gdyby to założenie było prawdziwe - że siła drużyn nie zmienia się w trakcie sezonu - moglibyśmy poza próbą oczekiwać takiej samej skuteczności (w nadchodzących meczach). Prawda bywa jednak bezlitosna, takie sytuacje są rzadkością.
Analiza skuteczności jest jednym ze sposobów badania dopasowania opisywanych modeli. W pierwszej części zaprezentowałem formułę LR, do testowania łącznej istotności parametrów szacowanych przy pomocy metody największej wiarygodności. Wykorzystałem poniżej opisywaną formułę aby porównać dzisiejszy model z tym z przed tygodnia oraz z modelem naiwnym - wiarygodność modelu naiwnego liczymy tak samo jak w modelach powyższych z tą różnicą, że dla każdego meczu są stałe prawdopodobieństwa odpowiadające proporcji wyników  HTA w całej lidze (bez rozróżnienia na drużyny).
Procenty sumują się do 100% po wyniku:
y.prog\y h t a
h 66,2% 32,4% 10,3%
t 24,3% 42,6% 29,3%
a 9,5% 25,0% 60,3%

Procenty sumują się do 100% po prognozach:
y.prog\y h t a
h 63,6% 28,6% 7,8%
t 28,1% 45,3% 26,6%
a 11,9% 28,8% 59,3%

Jakość modeli:
model loglik npar ddf LR p
naiwny -218,73 3 NA NA NA
model BT1 -185,1212 19 21 67,2176 9,7e-07
model BT ext -180,2 41 19 9,8424 0,9567

Modele ekonometryczne, które zaprezentowałem dopasowują się istotnie lepiej do danych niż model naiwny. Wprowadzenie do modelu dwóch parametrów dla każdej z drużyn nie skutkuje znaczącą poprawą wiarygodności co wskazuje statystyka $\chi^2$. Statystycznie najlepszym modelem jest model z 22 parametrami - z jednym $\theta$ reprezentującym atut własnego boiska. Zwracam uwagę, ze nie tylko analiza skuteczności ale także wiarygodność modelu niesie bardzo ważne informacje. Wiarygodność jest pochodną prawdopodobieństw, im pewniejsze wskazywanie wyniku przez model, tym wyższa jego wiarygodność. Należy jednak zachować ostrożność, szczególnie przy próbie prognoz out of sample .
Tak jak przed tygodniem tak i dzisiaj, wystawiam prognozę meczów 21 kolejki na podstawie modelu. Średnie prawdopodobieństwo (średnie.p=57.74%) obliczono jako średnią geometryczną prawdopodobieństw oznaczonych czerwoną czcionką - jest to średnie prawdopodobieństwo sukcesu w wytypowaniu jednego meczu. Aby ocenić całkowite prawdopodobieństwo np. 6/10 trafionych proszę skorzystać z tablic rozkładu dwumianowego tak jak w przykładzie z początku artykułu. Robię to dla czystej zabawy z dzielenia się wiedzą i nie ponoszę odpowiedzialności za ewentualne straty majątkowe :)

h t a HT AT
0.28063403275898 0.426008523343736 0.293357443897284 Genoa Fiorentina
0.819141869844466 0.165660387270843 0.0151977428846908 Roma Empoli
0.40972140310031 0.406935762987235 0.183342833912455 Sassuolo Inter
0.261546182081977 0.425070923989659 0.313382893928364 Atalanta Cagliari
0.0763892285729459 0.319065611899392 0.604545159527662 Cesena Lazio
0.0160055035207527 0.169520719513476 0.814473776965771 Chievo Napoli
0.55232278607274 0.348135584366146 0.0995416295611144 Palermo Verona
0.196319007282894 0.411813361723619 0.391867630993488 Torino Sampdoria
0.0412520015157949 0.253284864001504 0.705463134482701 Udinese Juventus
0.858899084288557 0.131910828554967 0.00919008715647625 Milan Parma

Brak komentarzy:

Prześlij komentarz