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ě:

Přes obě hodnoty je proložena křivka metodou LOESS, na které od pohledu není patrný růst nebo pokles. Pokud si sestavíme lineární model pro průměrnou teplotu, ani zde se nám na měsíčních datech nepotvrzuje statisticky významný vliv:
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”:

Tabulkově vyjádřené předpovědi mají pro všech 6 let stejné průměry a confidence intervaly, a tak si pro zjednodušení vypíšeme předpověď pouze pro rok 2027:
Rok/měsícPrůměrná teplota80%_lower80%_upper95%_lower95%_upper
2027 led-1.85-4.410.71-5.762.06
2027 úno-0.31-2.862.25-4.213.6
2027 bře3.020.465.58-0.896.93
2027 dub8.576.0111.124.6612.48
2027 kvě13.0210.4615.589.1116.93
2027 čvn16.9214.3719.4813.0120.83
2027 čvc18.3415.7920.914.4322.25
2027 srp17.615.0520.1613.721.51
2027 zář13.0210.4715.589.1116.93
2027 říj8.886.3211.434.9712.79
2027 lis5.432.877.991.529.34
2027 pro0.74-1.823.3-3.174.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ícPrům. max. teplota80%_lower80%_upper95%_lower95%_upper
2027 led9.556.2312.884.4714.64
2027 úno11.37.9714.626.2116.38
2027 bře17.9414.6121.2612.8523.02
2027 dub23.8320.527.1518.7428.91
2027 kvě26.7823.4630.121.731.86
2027 čvn30.4727.1533.825.3935.56
2027 čvc32.2628.9435.5927.1837.35
2027 srp30.8427.5234.1725.7635.93
2027 zář26.5723.2529.921.4931.66
2027 říj21.8718.5525.216.7926.96
2027 lis1713.6720.3211.9122.08
2027 pro10.877.5414.195.7815.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:

STL dekompozice odhaluje silnější vliv sezónnosti než-li trendu:

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ů