Můj model to věděl, jen já ještě ne. Až do doby, kdy na Novinkách vyšel tento článek. Pak už vše začalo dávat větší smysl …

Už nějakou dobu se snažím vytvořit model, který by předpovídal ceny benzínu na 5 dnů dopředu, a zatím jsem stále dumal, proč se chyba modelu po 24. únoru 2022, kdy Rusko napadlo Ukrajinu, oproti předchozímu období výrazně zvýšila. Mou prvotní a vlastně i jedinou úvahou bylo, že po tomto datu musela do hry vstoupit nějaká nová neznámá proměnná. I když jsem zkusil vedle ceny benzínu položit skoro cokoliv (i cenu živého dobytka – a možná byste se divili, ale i zde nějaká korelace je 😀 ), tak se mi danou chybu nepodařilo nijak výrazně zmírnit.

Svůj model jsem trénoval na datech z kurzy.cz pomocí algoritmu Random Forest. Zkoušel jsem i neuronové sítě, ale ani ty na tom nebyly oproti RF příliš lépe. Pojďme se tedy podívat, jak vypadala chyba modelu nikoliv vůči ceně benzínu (jak by se to dělalo klasicky), ale dejme si místo ní časovou osu:

Zde jde vidět, že po 24. únoru je rozptyl chyby modelu znatelně vyšší. Otázkou však je, co se změnilo, že cena benzínu již nekoreluje s predikujícími proměnnými tak, jako dříve? Po přečtení zprávy o nastřelených maržích většiny velkých prodejců paliv si říkám, že to by docela dávalo smysl, kdyby onou chybějící proměnnou byla právě marže.

Nevím, jestli se někdy zveřejní, o kolik byly marže v průměru nadceněny, ale myslím, že by se to dalo odhadnout z odchylky průměrné chyby mého modelu. Výpočet provedeme z rozdílů průměrné absolutní chyby modelu před a po 24. únoru:

> mean(dfinal[dfinal$datum < "2022-02-24",]$chyba %>% abs())
[1] 0.05487652
> mean(dfinal[dfinal$datum >= "2022-02-24",]$chyba %>% abs())
[1] 0.3430582
> 0.3430582 - 0.05487652
[1] 0.2881817

Zde mi vychází, že za předpokladu, že oním viníkem jsou skutečně uměle držené marže, tak v průměru byly nadceněny o 0.29 Kč/l více, než by měly být. Schválně by mě zajímalo, jestli se tento odhad někdy potvrdí, anebo se naopak prokáže, že jsem se kompletně mýlil.

Ale každopádně mi přijde zajímavé, že i když chyba modelu začne v nějakém období znatelně růst, nemusí to znamenat, že je něco špatně na straně modelu nebo použitého algoritmu, ale zkrátka to může i odhalit, že se s daty děje třeba i něco nekalého.