Globální oteplování je již dlouhou dobu omývané téma, které je zároveň čím dál více aktuální s tím, jak čas plyne a jak jsou jeho důsledky patrnější v dopadech na globální ekosystém naší planety. V tomto duchu jsem si dovolil vypůjčit si data z Frenštátské meteostanice ČHMÚ a zjistit, jestli je možné vypátrat vliv globálního oteplování i v této lokální oblasti. Tato meteostanice sbírá data již od roku 1961, kde konkrétně jsem se soustředil na údaje maximálních/průměrných teplot a srážek.
Vývoj teplot podle měsíců
Jelikož jsou data měřena na denní bázi, bude potřeba je nejdříve agregovat podle měsíců, kde pro každou proměnnou jsem zvolil jinou formu agregace podle toho, jak mi to nejvíce dávalo smysl:
- srážky: součet za daný měsíc
- průměrná teplota: průměr za daný měsíc
- maximální teplota: maximum za daný měsíc
Přehled dat pro všechny proměnné vypadá pak následovně:
srazky prum_teplota max_teplota
Min. : 0.50 Min. :-10.413 Min. :-0.20
1st Qu.: 44.58 1st Qu.: 2.091 1st Qu.:13.70
Median : 68.55 Median : 8.310 Median :22.25
Mean : 82.53 Mean : 8.076 Mean :20.99
3rd Qu.:106.58 3rd Qu.: 14.682 3rd Qu.:28.00
Max. :623.50 Max. : 22.177 Max. :35.60
Nyní se zaměříme pouze na teploty a z přehledu je patrné, že nejvyšší naměřená teplota touto stanicí od roku 1961 byla 35.6 °C. Graf za celé období, kde vedle sebe položíme maximální a průměrnou teplotu vypadá následovně:

Call:
lm(formula = prum_teplota ~ mesic, data = df)
Residuals:
Min 1Q Median 3Q Max
-17.8437 -6.2399 0.2941 6.7383 14.0731
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.303555 0.531139 13.751 <2e-16 ***
mesic 0.002107 0.001255 1.678 0.0937 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 7.178 on 730 degrees of freedom
Multiple R-squared: 0.003844, Adjusted R-squared: 0.002479
F-statistic: 2.817 on 1 and 730 DF, p-value: 0.09371
P-value celkového modelu je 0.09371, na základě čehož nemůžeme usoudit, že by zde z pohledu měsíců byl vliv na teplotní průměr.
STL dekompozice
Pokud si naměřené data průměrné teploty rozložíme na sezónní a trendovou složku metodou STL, dostaneme následující graf:

Při odečtení sezónních výkyvů nám zůstane jen trendová složka a zbytková chyba modelu:

Zde pokud spočítáme lineární regresi znovu:
Call:
lm(formula = season_adjust ~ month, data = mutate(stl_sadjust,
month = row_number()))
Residuals:
Min 1Q Median 3Q Max
-7.6989 -1.0964 0.0054 1.0731 5.8674
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.3614541 0.1382221 53.258 < 2e-16 ***
month 0.0019516 0.0003267 5.973 3.63e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.868 on 730 degrees of freedom
Multiple R-squared: 0.0466, Adjusted R-squared: 0.04529
F-statistic: 35.68 on 1 and 730 DF, p-value: 3.633e-09
tak nám už měsíční vliv s p-value 3.63e-09 vychází jako statisticky významný, kde s každým měsícem se průměrná teplota zvýší v průměru o 0.0019516°C. To pak vychází na průměrné oteplení o 0.023°C každý rok.
Teplotní maxima
Začněme výpisem deseti nejvyšších naměřených teplot:
> df |> arrange(desc(max_teplota)) |> select(month,max_teplota)
# A tibble: 732 × 2
month max_teplota
<mth> <dbl>
1 1992 srp 35.6
2 1994 čvc 35.3
3 2000 srp 35.3
4 2013 srp 35.1
5 2007 čvc 34.8
6 2000 čvn 34.6
7 2006 čvc 34.4
8 2003 čvc 34.3
9 2010 čvc 34.3
10 2015 čvc 34.3
Z výpisu vyplývá, že nejvyšší naměřený teplotní extrém za celou dobu byl v srpnu roku 1992, kdy tato stanice zaznamenala teplotu 35.6°C. Když stejně jako v předchozím případě odečteme sezónní složku, dostaneme tento graf pro maximální naměřené teploty:

Po provedení lineární regrese:
Call:
lm(formula = season_adjust ~ month, data = mutate(stl_sadjust,
month = row_number()))
Residuals:
Min 1Q Median 3Q Max
-7.9337 -1.4421 0.0154 1.4696 7.0164
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.017e+01 1.719e-01 117.35 < 2e-16 ***
month 2.247e-03 4.063e-04 5.53 4.46e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.323 on 730 degrees of freedom
Multiple R-squared: 0.04021, Adjusted R-squared: 0.03889
F-statistic: 30.58 on 1 and 730 DF, p-value: 4.461e-08
nám vychází statisticky významný měsíční nárůst teplotních maxim o 0.002247°C, což ročně odpovídá nárůstu o 0.027°C.
Přehled podle měsíců
Dalším zajímavým pohledem je podívat se, jak se z dlouhodobého hlediska mění průměrná teplota podle jednotlivých měsíců. Na následujícím grafu tenká modrá čára označuje průměr za celé období a červená tlustší čára trend vypočítaný pomocí lineární regrese:

Zajímavé je, že trend v oteplování zaznamenávají všechny měsíce krom září a nepatrně taky října. Přehled pro maximální teploty vypadá podobně:

Předpověď na následujících 5 let
Jelikož jsou data o rok zpožděné, tak budeme fakticky předpovídat na 6 let dopředu, ať si můžeme udělat představu, jak velkou nejistotu ohledně teplot a jejích extrémů můžeme očekávat v nedaleké budoucnosti. Zde je graf předpovědi průměrné teploty pro období 2022-2027 na základě modelu “Exponential smoothing”:

Rok/měsíc | Průměrná teplota | 80%_lower | 80%_upper | 95%_lower | 95%_upper |
---|---|---|---|---|---|
2027 led | -1.85 | -4.41 | 0.71 | -5.76 | 2.06 |
2027 úno | -0.31 | -2.86 | 2.25 | -4.21 | 3.6 |
2027 bře | 3.02 | 0.46 | 5.58 | -0.89 | 6.93 |
2027 dub | 8.57 | 6.01 | 11.12 | 4.66 | 12.48 |
2027 kvě | 13.02 | 10.46 | 15.58 | 9.11 | 16.93 |
2027 čvn | 16.92 | 14.37 | 19.48 | 13.01 | 20.83 |
2027 čvc | 18.34 | 15.79 | 20.9 | 14.43 | 22.25 |
2027 srp | 17.6 | 15.05 | 20.16 | 13.7 | 21.51 |
2027 zář | 13.02 | 10.47 | 15.58 | 9.11 | 16.93 |
2027 říj | 8.88 | 6.32 | 11.43 | 4.97 | 12.79 |
2027 lis | 5.43 | 2.87 | 7.99 | 1.52 | 9.34 |
2027 pro | 0.74 | -1.82 | 3.3 | -3.17 | 4.65 |
Z pohledu průměrné teploty je nejteplejší červenec. Pro každý červenec až do roku 2027 předpovídá model průměrnou teplotu 18.34°C a dále 10% pravděpodobnost, že tato teplota bude vyšší než 20.9°C, a 2.5% pravděpodobnost, že překročí 22.25°C. Pokud si pomocí Bernoulliho pokusů spočítáme, jaká je pravděpodobnost, že alespoň jednou v následujících 6 letech (včetně 2022) uvidíme překročení těchto průměrných teplot:
> pbinom(0, 6, .1, lower.tail = F)
[1] 0.468559
> pbinom(0, 6, .025, lower.tail = F)
[1] 0.1409317
Vychází nám pravděpodobnost 46.9%, že průměrná teplota v červenci 2022-2027 alespoň jednou překročí 20.9°C, a 14.1%, že alespoň jednou přesáhne 22.25°C.
Předpověď teplotních extrémů

Podobně jako v předchozím případě, průměry a confidence intervaly pro teplotní maxima model předpovídá pro všech 6 let dopředu stejně:
Rok/měsíc | Prům. max. teplota | 80%_lower | 80%_upper | 95%_lower | 95%_upper |
---|---|---|---|---|---|
2027 led | 9.55 | 6.23 | 12.88 | 4.47 | 14.64 |
2027 úno | 11.3 | 7.97 | 14.62 | 6.21 | 16.38 |
2027 bře | 17.94 | 14.61 | 21.26 | 12.85 | 23.02 |
2027 dub | 23.83 | 20.5 | 27.15 | 18.74 | 28.91 |
2027 kvě | 26.78 | 23.46 | 30.1 | 21.7 | 31.86 |
2027 čvn | 30.47 | 27.15 | 33.8 | 25.39 | 35.56 |
2027 čvc | 32.26 | 28.94 | 35.59 | 27.18 | 37.35 |
2027 srp | 30.84 | 27.52 | 34.17 | 25.76 | 35.93 |
2027 zář | 26.57 | 23.25 | 29.9 | 21.49 | 31.66 |
2027 říj | 21.87 | 18.55 | 25.2 | 16.79 | 26.96 |
2027 lis | 17 | 13.67 | 20.32 | 11.91 | 22.08 |
2027 pro | 10.87 | 7.54 | 14.19 | 5.78 | 15.95 |
Pravděpodobnosti překročení intervalových teplot alespoň jednou během 6 let jsou stejné jako u průměrných teplot. A tedy co se teplotních extrémů týče, můžeme se připravit, že s pravděpodobností 46.9% překročí teplotní maxima v červenci 2022-2027 35.59°C, a s pravděpodobností 14.1% teplotu 37.35°C.
Roční data
Pokud si naměřené hodnoty shrneme podle roků, pro průměrnou teplotu dostaneme graf:

Opět spočítáme lineární regresi:
Call:
lm(formula = prum_teplota ~ year, data = dfy)
Residuals:
Min 1Q Median 3Q Max
-1.90092 -0.44055 -0.09214 0.51999 1.29456
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -40.238492 10.335662 -3.893 0.000255 ***
year 0.024283 0.005191 4.678 1.74e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.7138 on 59 degrees of freedom
Multiple R-squared: 0.2706, Adjusted R-squared: 0.2582
F-statistic: 21.88 on 1 and 59 DF, p-value: 1.735e-05
kde nám podobně jako v měsíčních datech (po odečtení sezónní složky) vychází, že průměrná roční teplota stoupá v průměru o 0.024°C ročně.
U maximálních ročních teplot nám však vychází jako lepší model zahrnující polynom 3. stupně (v porovnání s lineárním modelem):
$Models
Formula
1 "max_teplota ~ year"
2 "max_teplota ~ poly(year, 2)"
3 "max_teplota ~ poly(year, 3)"
$Fit.criteria
Rank Df.res AIC AICc BIC R.squared Adj.R.sq p.value Shapiro.W Shapiro.p
1 2 59 239.6 240.0 245.9 0.1741 0.1601 8.206e-04 0.9761 0.2766
2 3 58 241.4 242.1 249.9 0.1758 0.1474 3.671e-03 0.9796 0.4005
3 4 57 217.8 218.9 228.3 0.4589 0.4304 1.055e-07 0.9805 0.4380
Proto si místo lineární přímky proložíme graf LOESS křivkou:

Z grafu se zdá, že roční teplotní maxima následují určitý cyklus, který má délku cca 28 let.
Přehled srážek
Z pohledu srážek za celé období není patrný žádný lineární trend:


Při srovnání jednotlivých měsíců můžeme vidět různé trendy (červená čára) mezi jednotlivými měsíci, které se v průběhu času stávají deštivějšími/suššími:

Zřetelný nárůst srážek v září a říjnu by mohl být jedním z důvodů teplotní odolnosti těchto měsíců vůči dlouhodobému trendu oteplování.
Závěrem si vypíšeme 10 nejdeštivějších měsíců, které stanice za dané období naměřila:
> df |> arrange(desc(srazky)) |> select(month,srazky)
# A tsibble: 732 x 2 [1M]
month srazky
<mth> <dbl>
1 1997 čvc 624.
2 2010 kvě 479.
3 1966 čvc 422.
4 1985 srp 375.
5 2001 čvc 342.
6 2000 čvc 281.
7 1977 srp 265.
8 1972 srp 262.
9 2021 srp 251.
10 1996 zář 251
Závěr
Z výše zanalyzovaných dat jsme zjistili, že:
- dlouhodobý trend oteplování je na měsíčních datech patrný až po odečtení sezónní složky a odpovídá nárůstu průměrných teplot o 0.0019516°C každý měsíc, kde p-value je 3.63e-09
- podobně trend nárůstu teplotních maxim je o 0.002247°C pro každý měsíc s p-value 4.46e-08
- na ročních datech stoupá průměrná roční teplota v průměru o 0.024°C ročně, kde p-value je 1.74e-05
- roční teplotní maxima následují určitý cyklus, který má délku cca 28 let
- září a možná taky říjen, se jako jediné dva měsíce v roce dlouhodobě neoteplují, což může souviset s tím, že dlouhodobý trend kumulativních srážek v těchto měsících je stoupající
- pro každý červenec v období 2022-2027 předpovídá model průměrnou teplotu 18.34°C a dále 10% pravděpodobnost, že tato teplota bude vyšší než 20.9°C, a 2.5% pravděpodobnost, že překročí 22.25°C
- model dále předpovídá, že během období 2022-2027 je pravděpodobnost 46.9%, že průměrná teplota v červenci alespoň jednou překročí 20.9°C, a 14.1%, že alespoň jednou přesáhne 22.25°C
- se stejnými pravděpodobnostmi pro stejné období (2022-2027) model předpovídá, že teplotní maxima v červenci alespoň jednou překročí 35.59°C (46.9%), a s pravděpodobností 14.1%, že alespoň jednou přesáhnou teplotu 37.35°C
- z přehledu srážek jsme neodhalili žádný dlouhodobý trend v celkovém kumulativním součtu srážek, ale zobrazili jsme, jaké jsou trendy jednotlivých měsíců