Sprawdzenie modelu — gdzie się myli i jak go poprawić
Bierzemy gole które piłkarze faktycznie strzelili w sezonie 25/26 i porównujemy z tym co model przewidywał. Sprawdzamy: gdzie był blisko, a gdzie się rozjechał. Z analizy wyrzucamy graczy, których z założenia nie dało się przewidzieć: kontuzjowanych (zagrali za mało meczów) i tych co przeszli latem do dużo mocniejszej ligi.
Model jest zachowawczy — typowy gracz strzela o 25% więcej goli niż przewidywaliśmy.
← lista 26/27 · prognoza 25/26 vs rzeczywistość · metodologia
Kogo wyrzuciliśmy z analizy i dlaczego
| Powód | Liczba graczy | Przykłady |
|---|---|---|
| przeszedł latem do dużo mocniejszej ligi | 21 | Kylian Mbappé, Evanilson, Kerem Aktürkoğlu, Jørgen Strand Larsen, Thierno Barry... |
| kontuzja (zagrał mniej niż 12 meczów w 25/26) | 22 | Alexander Isak, Romelu Lukaku, Emmanuel Emegha, Luuk de Jong, Dominik Fitz... |
Dlaczego? Bo ich nie da się przewidzieć z samych danych statystycznych. Kontuzje są losowe, a po przejściu np. ze Sportingu do Arsenalu (Gyökeres) gracz musi się adaptować — to dla modelu inny świat. Po odrzuceniu zostaje 377 graczy dla których model miał uczciwą szansę trafić.
Co model bierze pod uwagę i czy ma rację
Model dla każdego gracza nakłada kilka korekt: za wiek, za status w klubie, za siłę zespołu, za transfer. Tu sprawdzamy każdą korektę z osobna: porównujemy „o ile model zmienia prognozę" z „o ile faktycznie zmieniło się tempo strzelania".
Status w klubie — czy gracz to starter, rotator, czy ławka
Sprawdzamy minuty z sezonu 24/25. Jeśli ktoś grał ≥75% możliwych minut to "starter". Jeśli 35-55% to "rotacja". Patrzymy czy korekta którą model robi dla każdej grupy ma sens.
| Grupa | Ilu graczy | Co model zakłada | Co dane pokazują | Co z tym zrobić |
|---|---|---|---|---|
| średnio grający (55-75% minut) | 144 | bez zmian | +6% goli | model zaniża — ci gracze strzelają o ~6% więcej niż przewidujemy |
| pewny starter (≥75% minut) | 89 | +7% goli | -6% goli | model zawyża — ci gracze strzelają o ~13% mniej niż przewidujemy |
| rotacja (35-55% minut) | 37 | -18% goli | +7% goli | model zaniża — ci gracze strzelają o ~25% więcej niż przewidujemy |
| rezerwowy (20-35% minut) | 5 | -40% goli | +149% goli | za mało graczy w tej grupie żeby coś wnioskować |
Wiek — jak rocznik wpływa na liczbę goli
Wiek liczony na sierpień 2025. Patrzymy czy nasza krzywa "starsi grają mniej" pasuje do rzeczywistości.
| Grupa | Ilu graczy | Co model zakłada | Co dane pokazują | Co z tym zrobić |
|---|---|---|---|---|
| 26-29 | 76 | bez zmian | -5% goli | OK — model dobrze trafia dla tej grupy |
| 23-25 | 61 | bez zmian | -18% goli | model zawyża — ci gracze strzelają o ~18% mniej niż przewidujemy |
| ≤22 | 21 | +3% goli | +4% goli | OK — model dobrze trafia dla tej grupy |
| 31-32 | 18 | bez zmian | +31% goli | model zaniża — ci gracze strzelają o ~31% więcej niż przewidujemy |
| 33-34 | 13 | -9% goli | +23% goli | model zaniża — ci gracze strzelają o ~32% więcej niż przewidujemy |
| 35+ | 12 | -29% goli | bez zmian | model zaniża — ci gracze strzelają o ~28% więcej niż przewidujemy |
| 30 | 8 | bez zmian | +22% goli | za mało graczy w tej grupie żeby coś wnioskować |
Siła klubu — mocny klub vs słaby klub
Mierzymy siłę klubu jako: ile xG (oczekiwanych goli) klub stwarza w porównaniu ze średnią ligi. Mocny klub = ≥1.15× średniej. Słaby = poniżej 0.85×. Sprawdzamy czy nasz boost/kara dla zawodnika z takiego zespołu jest na właściwym poziomie.
| Grupa | Ilu graczy | Co model zakłada | Co dane pokazują | Co z tym zrobić |
|---|---|---|---|---|
| mocny (≥1.15) | 124 | +34% goli | +9% goli | model zawyża — ci gracze strzelają o ~25% mniej niż przewidujemy |
| dobry (1.0-1.15) | 73 | bez zmian | +43% goli | model zaniża — ci gracze strzelają o ~41% więcej niż przewidujemy |
| słaby (<0.85) | 61 | -24% goli | +33% goli | model zaniża — ci gracze strzelają o ~57% więcej niż przewidujemy |
| średni (0.85-1.0) | 22 | -7% goli | -5% goli | OK — model dobrze trafia dla tej grupy |
Zmiana klubu na inną ligę
Czy gracz między 23/24 a 24/25 zmienił ligę? Jeśli tak — czy szedł do mocniejszej, słabszej, czy podobnej? Sprawdzamy czy model dobrze koryguje prognozę dla każdego kierunku.
| Grupa | Ilu graczy | Co model zakłada | Co dane pokazują | Co z tym zrobić |
|---|---|---|---|---|
| został w tej samej lidze | 250 | bez zmian | +6% goli | model zaniża — ci gracze strzelają o ~6% więcej niż przewidujemy |
| zmienił ligę (siła podobna) | 12 | -6% goli | bez zmian | OK — model dobrze trafia dla tej grupy |
| przeszedł do słabszej ligi | 7 | +19% goli | -4% goli | za mało graczy w tej grupie żeby coś wnioskować |
Co po sezonie z dużą liczbą goli
Jeśli ktoś w 24/25 strzelił dużo więcej niż w poprzednich latach (≥8 goli ponad swoje typowe tempo), to model zakłada że kolejny sezon będzie słabszy ("powrót do średniej"). Sprawdzamy o ile słabszy faktycznie był.
| Grupa | Ilu graczy | Co model zakłada | Co dane pokazują | Co z tym zrobić |
|---|---|---|---|---|
| bez wybuchu | 246 | bez zmian | +9% goli | model zaniża — ci gracze strzelają o ~9% więcej niż przewidujemy |
| wybuchowy sezon (8+ goli ponad zwykłe tempo) | 17 | -15% goli | -56% goli | model zawyża — ci gracze strzelają o ~41% mniej niż przewidujemy |
| ekstremalny wybuch (12+ goli ponad) | 6 | -20% goli | -39% goli | za mało graczy w tej grupie żeby coś wnioskować |
zielone — model trafia (różnica do 6 punktów procentowych) · żółte — lekkie odchylenie (do 15 pp) · czerwone — duży rozjazd (15 pp +)
Wszyscy gracze na jednym wykresie
Każda kropka to gracz. Im bliżej przerywanej linii, tym lepsza prognoza. Kropka nad linią = gracz strzelił więcej niż przewidywaliśmy. Kropka pod linią = strzelił mniej. Najedź kursorem żeby zobaczyć kto to.
Największe pomyłki — gracze których model nie zrozumiał
To gracze z analizy — czyli ani kontuzjowani, ani po twardych transferach. Model miał wszystkie dane żeby trafić, a się rozjechał. To najlepsza lekcja co model jeszcze przeoczył. Czerwone wiersze = model przewidywał za dużo. Żółte = za mało.
| Gracz | Klub | Model przewidywał | Faktycznie strzelił | Różnica | Co model widział |
|---|---|---|---|---|---|
| Tolu Arokodare | KRC Genk | 29 | 2.6 | +26.3 | mocny klub, Liga Europy, wybuchowy sezon 24/25, pewny starter |
| Viktor Gyökeres | Sporting CP | 32.8 | 13.6 | +19.2 | mocny klub, Liga Mistrzów, karne floor +9.1, wybuchowy sezon 24/25 |
| Mohamed Salah | Liverpool | 26 | 6.9 | +19 | wiek 33, mocny klub, Liga Mistrzów, karne floor +6.8 |
| Eldor Shomurodov | Roma | 2 | 20.7 | -18.8 | Liga Europy, rezerwowy |
| Yoane Wissa | Brentford | 19.7 | 1.2 | +18.5 | mocny klub, wybuchowy sezon 24/25, pewny starter |
| Vedat Muriqi | Mallorca | 7.7 | 25.7 | -18 | karne floor +2.3 |
| Mauro Icardi | Galatasaray | 0.4 | 17.7 | -17.4 | mocny klub, Liga Mistrzów, głęboka ławka |
| Tawanda Maswanhise | Motherwell | 2.7 | 19.6 | -16.8 | rotacja |
| Anders Dreyer | RSC Anderlecht | 1.1 | 17.7 | -16.6 | Liga Europy, rotacja |
| Esteban Lepaul | Angers | 2.3 | 18.1 | -15.9 | rotacja |
| Jesús Ramírez | Vitória SC | 1.3 | 17 | -15.7 | rezerwowy |
| Chris Bedia | BSC Young Boys | 2.1 | 17.5 | -15.4 | Liga Europy, rezerwowy |
| Ayase Ueda | Feyenoord | 10.8 | 26.1 | -15.3 | mocny klub, Liga Mistrzów, rotacja |
| Victor Osimhen | Galatasaray | 30.5 | 15.2 | +15.3 | mocny klub, Liga Mistrzów, karne floor +4.6, transfer do słabszej ligi(+13%) |
| Serhou Guirassy | Borussia Dortmund | 30.9 | 15.9 | +15.1 | mocny klub, Liga Mistrzów, karne floor +3.0, pewny starter |
| Yanis Begraoui | Estoril Praia | 6.6 | 21.5 | -14.9 | mocny klub |
| Rodrigo Zalazar | Sporting Braga | 2.3 | 17 | -14.7 | Liga Europy, rotacja |
| Valentín Castellanos | Lazio | 19.2 | 4.6 | +14.6 | mocny klub, karne floor +2.3 |
| Rafa Silva | Beşiktaş JK | 23.5 | 8.9 | +14.6 | mocny klub, Liga Europy, zmiana ligi, pewny starter |
| Tomáš Bobček | KS Lechia Gdańsk | 3.2 | 17.6 | -14.4 | rotacja |
| Pedro Gonçalves | Sporting CP | 0.9 | 14.7 | -13.8 | mocny klub, Liga Mistrzów, rezerwowy |
| Franjo Ivanović | Royale Union Saint-Gilloise | 17.1 | 3.5 | +13.5 | mocny klub, Liga Mistrzów, karne floor +3.0, pewny starter |
| Marcos Leonardo | Benfica | 0.2 | 13.6 | -13.4 | mocny klub, Liga Mistrzów, głęboka ławka |
| Joshua King | Toulouse | 2.8 | 15.9 | -13.1 | wiek 33, rotacja |
| Loïs Openda | RB Leipzig | 14.2 | 1.1 | +13.1 | pewny starter |
Co z tego wynika dla naszego modelu
- Mocne kluby — model za bardzo podbija prognozę. Dla zawodników mocnych klubów (Bayern, City, Madryt) model zakłada +34% goli, a dane mówią +9%. Sam fakt grania w gigancie nie sprawia że strzelasz dużo więcej — gigant ma więcej napastników którzy się dzielą bramkami.
- Sezon z gradem goli rzadko się powtarza — i to bardziej niż zakładamy. Jeśli ktoś w 24/25 strzelił 8+ goli ponad swoje typowe tempo, model obniża prognozę o 15%, ale dane mówią że powinniśmy obniżyć o 56%. Powtarzanie świetnego sezonu to wyjątek, nie reguła.
- Przejście do słabszej ligi nie daje boostu którego się spodziewamy. Model dodaje +20% goli, dane mówią 0%. Adaptacja do nowego klubu zjada to co miało być zyskiem ze słabszej obrony przeciwników.
- Karzemy wiek 30+ za mocno. Dla 33-34 lat model obniża o 9%, a dane pokazują że tacy gracze faktycznie strzelają o 23% więcej. To trochę „bias przeżycia" (starsi którzy nadal grają to elita), ale i tak sygnał że nie powinniśmy każdego po trzydziestce automatycznie spisywać.
- Status w klubie ma mniejszy wpływ niż myślimy. Pewni starterzy są lekko przeszacowani, rotatorzy lekko niedoszacowani — obie grupy zbiegają się do prognozy ±. Może warto spłaszczyć tę korektę.
Uwaga: niektóre grupy mają mało graczy (np. po wybuchowym sezonie tylko 17 osób). Wnioski są kierunkowe — pokazują gdzie iść, ale nie są wyrocznią. Dlatego warto je traktować jako hipotezy do sprawdzenia, a nie pewniki.