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 tylko kontuzjowanych — czyli tych co zagrali za mało meczów żeby cokolwiek o nich powiedzieć. Wszyscy inni (nawet ci co przeszli do mocniejszej ligi) zostają — model miał rok danych z nowego klubu, więc miał uczciwą szansę trafić.

644graczy bierzemy do analizy
40odrzucamy (kontuzje, < 12 meczów)
+6%o tyle model myli się dla typowego gracza

Model jest zachowawczy — typowy gracz strzela o 6% więcej goli niż przewidywaliśmy.

← lista 26/27 · prognoza 25/26 vs rzeczywistość · metodologia

Kogo wyrzuciliśmy z analizy i dlaczego

PowódLiczba graczyPrzykłady
kontuzja (zagrał mniej niż 12 meczów w 25/26)40Alexander Isak, Romelu Lukaku, Tim Kleindienst, Chris Wood, Luuk de Jong...

Wyrzucamy tylko kontuzjowanych — bo dla nich nie ma żadnego sygnału z 25/26. Wszyscy pozostali — łącznie z gośćmi co przeszli do mocniejszej ligi rok temu (np. Mbappé do Realu, Zirkzee do United) — zostają w analizie. Mieli pełny sezon 24/25 w nowym klubie, więc model miał wszystkie dane żeby ich ogarnąć. Po odrzuceniu zostaje 644 graczy.

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.

GrupaIlu graczyCo model zakładaCo dane pokazująCo z tym zrobić
średnio grający (55-75% minut)198bez zmian-12% golimodel zawyża — ci gracze strzelają o ~12% mniej niż przewidujemy
pewny starter (≥75% minut)150+7% goli-38% golimodel zawyża — ci gracze strzelają o ~45% mniej niż przewidujemy
rotacja (35-55% minut)58-18% goli-8% golimodel zaniża — ci gracze strzelają o ~10% więcej niż przewidujemy
rezerwowy (20-35% minut)33-40% goli+43% golimodel zaniża — ci gracze strzelają o ~83% więcej niż przewidujemy
głęboka ławka (<20% minut)2-60% goli+91% goliza 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.

GrupaIlu graczyCo model zakładaCo dane pokazująCo z tym zrobić
26-29101bez zmian-19% golimodel zawyża — ci gracze strzelają o ~19% mniej niż przewidujemy
23-2583bez zmian-32% golimodel zawyża — ci gracze strzelają o ~32% mniej niż przewidujemy
≤2227+3% golibez zmianOK — model dobrze trafia dla tej grupy
31-3222bez zmian-26% golimodel zawyża — ci gracze strzelają o ~26% mniej niż przewidujemy
35+14-30% goli-35% goliOK — model dobrze trafia dla tej grupy
33-3413-9% goli-40% golimodel zawyża — ci gracze strzelają o ~31% mniej niż przewidujemy
3012bez zmian+11% golimodel zaniża — ci gracze strzelają o ~11% więcej niż przewidujemy

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.

GrupaIlu graczyCo model zakładaCo dane pokazująCo z tym zrobić
mocny (≥1.15)264+34% goli-14% golimodel zawyża — ci gracze strzelają o ~48% mniej niż przewidujemy
dobry (1.0-1.15)79bez zmian+32% golimodel zaniża — ci gracze strzelają o ~31% więcej niż przewidujemy
słaby (<0.85)41-24% goli+6% golimodel zaniża — ci gracze strzelają o ~30% więcej niż przewidujemy
średni (0.85-1.0)9-8% goli-14% goliza mało graczy w tej grupie żeby coś wnioskować

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.

GrupaIlu graczyCo model zakładaCo dane pokazująCo z tym zrobić
został w tej samej lidze355bez zmian-18% golimodel zawyża — ci gracze strzelają o ~18% mniej niż przewidujemy
przeszedł do mocniejszej ligi27-29% goli-34% goliOK — model dobrze trafia dla tej grupy
przeszedł do słabszej ligi18+17% goli-10% golimodel zawyża — ci gracze strzelają o ~27% mniej niż przewidujemy
zmienił ligę (siła podobna)17-5% goli-24% golimodel zawyża — ci gracze strzelają o ~19% mniej niż przewidujemy

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ł.

GrupaIlu graczyCo model zakładaCo dane pokazująCo z tym zrobić
bez wybuchu337bez zmian-15% golimodel zawyża — ci gracze strzelają o ~15% mniej niż przewidujemy
wybuchowy sezon (8+ goli ponad zwykłe tempo)40-15% goli-41% golimodel zawyża — ci gracze strzelają o ~26% mniej niż przewidujemy
ekstremalny wybuch (12+ goli ponad)32-20% goli-51% golimodel zawyża — ci gracze strzelają o ~31% mniej niż przewidujemy

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.

00991818272736364545tu kropki by leżały gdyby model trafiał idealnieIle goli model przewidywałIle goli faktycznie strzelił
trafiony (różnica ≤ 3 gole) nietrafiony, ale w analizie wykluczony — kontuzja

Największe pomyłki — gracze których model nie zrozumiał

To gracze z analizy — bez kontuzjowanych. 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.

GraczKlubModel przewidywałFaktycznie strzeliłRóżnicaCo model widział
Tolu ArokodareKRC Genk293.2+25.8mocny klub, Liga Europy, wybuchowy sezon 24/25, pewny starter
Loïs OpendaRasenBallsport Leipzig251.1+23.9mocny klub, pewny starter
Paul OnuachuSouthampton1.224.6-23.4transfer do mocniejszej ligi(-40%), rezerwowy
Santiago GiménezFeyenoord21.70+21.7mocny klub, Liga Mistrzów, karne floor +2.3
Mohamed SalahLiverpool27.66.7+20.9wiek 33, mocny klub, Liga Mistrzów, karne floor +6.8
Tadeo AllendeCelta Vigo020.5-20.5mocny klub, Liga Europy, głęboka ławka
Maghnes AklioucheMonaco287.6+20.5mocny klub, pewny starter
Alexandre LacazetteLyon31.912.1+19.8wiek 34, mocny klub, karne floor +4.6, pewny starter
Yoane WissaBrentford20.61.1+19.5mocny klub, wybuchowy sezon 24/25, pewny starter
Viktor GyökeresSporting CP32.813.6+19.2mocny klub, Liga Mistrzów, karne floor +9.1, wybuchowy sezon 24/25
Gonçalo RamosParis Saint-Germain26.97.8+19.1mocny klub, Liga Mistrzów, karne floor +2.3
Serhou GuirassyBorussia Dortmund33.715.4+18.3mocny klub, Liga Mistrzów, karne floor +3.0, pewny starter
Morgan GuilavoguiSt. Pauli19.31.1+18.2mocny klub, transfer do słabszej ligi(+11%), wybuchowy sezon 24/25
Jamal MusialaBayern Munich23.45.5+17.9mocny klub, pewny starter
Victor OsimhenGalatasaray32.715.2+17.5mocny klub, Liga Mistrzów, karne floor +4.6, transfer do słabszej ligi(+13%)
Odsonne ÉdouardCrystal Palace,Leicester0.117.5-17.5głęboka ławka
Mauro IcardiGalatasaray0.417.7-17.4mocny klub, Liga Mistrzów, głęboka ławka
Jonathan DavidLille22.45.5+16.9mocny klub, Liga Europy, karne floor +5.3, pewny starter
Tawanda MaswanhiseMotherwell2.719.6-16.8rotacja
Rodrigo ZalazarSporting Braga0.317-16.7Liga Europy, rotacja
Anders DreyerRSC Anderlecht1.117.7-16.6Liga Europy, rotacja
Leroy SaneBayern Munich24.27.7+16.6mocny klub, pewny starter
Liam DelapIpswich17.51.1+16.4mocny klub, pewny starter
Eldor ShomurodovRoma3.920.1-16.2mocny klub, Liga Europy, rezerwowy
Breel EmboloMonaco25.69.4+16.2mocny klub, pewny starter

Co z tego wynika dla naszego modelu

Po dorzuceniu danych Understata (5 lig × 7 sezonów) zbiór kalibracyjny urósł z ~370 do 644 graczy. To sporo zmienia wnioski — niektóre wcześniejsze „pewniaki" okazały się artefaktem małej próby. Najważniejsze:

  • Mocne kluby — model dramatycznie przesadza z boostem. Dla zawodników mocnych klubów (Bayern, City, Madryt, PSG) model zakłada +34% goli, a dane mówią −14%. Sam fakt grania w gigancie nie sprawia że strzelasz dużo więcej — wręcz przeciwnie, w gigancie konkurencja o miejsce + rotacja w pucharach + wymiany wystawień powodują że indywidualne tempo bywa niższe niż w klubie z jednym napastnikiem. (próba: 264 graczy)
  • Pewni starterzy też mocno przeszacowani. Status „pewny starter (≥75% minut)" daje +7% boostu w modelu, a dane mówią −38%. Powód podobny: top-grający to często ci co już są wycenieni wysoko za sam wolumen minut — i potem dynamika sezonu obcina im część strzałów. (próba: 150 graczy)
  • Sezon z gradem goli rzadko się powtarza — kara modelu za słaba. Wybuchowy sezon (8+ goli ponad zwykłe tempo) — model obniża −15%, dane obniżają −41%. Ekstremalny wybuch (12+ goli ponad) — model −20%, dane −51%. Powtarzanie świetnego sezonu to wyjątek, nie reguła. (próba: 40+32 graczy)
  • Wiek 30+ — wcale nie przekarany, dane pokazują że i tak strzelają mniej. Z większą próbą widać że 33-34 strzelają o 31% mniej niż prognozuje model (wcześniejsze wnioski o „bias przeżycia" były artefaktem n=12). Krzywa wieku w modelu mogłaby być nawet trochę agresywniejsza dla 30+.
  • Kara za transfer do mocniejszej ligi — w sam raz. Model −28%, dane −34%. To prawie zgadza się — w przeciwieństwie do tego co pokazywała mała próba. Sam transfer do mocniejszej ligi naprawdę odejmuje gole. (próba: 27 graczy)
  • Przejście do słabszej ligi — model przesadza z boostem. Model +17%, dane −10%. Adaptacja zjada nawet to co miało być zyskiem ze słabszej obrony. Powinniśmy w ogóle nie boostować przy zejściu w dół.

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.