knitr::opts_chunk$set(
    echo = TRUE,
    message = FALSE,
    warning = FALSE
)

Načítanie knižníc

library(tidyverse)
library(lubridate)
library(corrplot)
library(ggplot2)
library(broom)
library(kableExtra)
library(htmltools)
library(zoo)
library(tseries)
library(lmtest)
library(sandwich)
library(car)
rm(list=ls())

Načítanie databázy

udaje <- read_csv("weather_prediction_dataset.csv")

Príprava dát

Vyberieme DUSSELDORF ako príklad

analysis_data <- udaje %>%
 mutate(
   date = as.Date(DATE),
   month = month(date)
 ) %>%
 select(
   date, month,
   DUSSELDORF_cloud_cover,
   DUSSELDORF_humidity,
   DUSSELDORF_precipitation,
   DUSSELDORF_sunshine,
   DUSSELDORF_temp_max,
   DUSSELDORF_temp_min,
   DUSSELDORF_temp_mean,
   DUSSELDORF_pressure,
   DUSSELDORF_global_radiation,
 ) %>%
 na.omit()

Štatistické hypotézy

Hypotéza 1:

Výška atmosférického tlaku má priamy vplyv na maximálnu dennú teplotu v Düsseldorfe

H₀: Atmosférický tlak nemá žiadny vplyv na maximálnu dennú teplotu v Düsseldorfe. (β₁ = 0)

H₁: Atmosférický tlak má štatisticky významný vplyv na maximálnu dennú teplotu v Düsseldorfe. (β₁ ≠ 0)

model_lin <- lm(DUSSELDORF_temp_max ~ DUSSELDORF_pressure, data = analysis_data)

summary(model_lin)

Call:
lm(formula = DUSSELDORF_temp_max ~ DUSSELDORF_pressure, data = analysis_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.0444  -6.1106   0.0105   5.9218  23.2556 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)            58.25      14.04   4.148 3.43e-05 ***
DUSSELDORF_pressure   -42.26      13.82  -3.058  0.00225 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 7.77 on 3652 degrees of freedom
Multiple R-squared:  0.002554,  Adjusted R-squared:  0.00228 
F-statistic: 9.349 on 1 and 3652 DF,  p-value: 0.002247
ggplot(analysis_data, aes(x = DUSSELDORF_pressure, y = DUSSELDORF_temp_max)) +
 geom_point(alpha = 0.6, color = "steelblue") +
 geom_smooth(method = "lm", color = "red", se = TRUE) +
 labs(title = "Vplyv atmosférického tlaku na maximálnu teplotu v Düsseldorfe",
      x = "Atmosférický tlak (hPa)",
      y = "Maximálna denná teplota (°C)") +
 theme_minimal()

# Reziduálna analýza
par(mfrow = c(2,2))

plot(model_lin)

ZÁVER: Na základe výsledkov lineárnej regresie zamietame nulovú hypotézu H0 a prijímame alternatívnu hypotézu H1. Atmosférický tlak má štatisticky významný vplyv na maximálnu dennú teplotu v Düsseldorfe.

Štatistické odôvodnenie:

  • p-hodnota pre tlak je 0.00225, čo je výrazne pod hranicou významnosti 0.05

  • t-hodnota -3.058 indikuje silnú evidencu proti nulovej hypotéze

  • koeficient -42.26 ukazuje, že so zvýšením tlaku o 1 hPa klesne teplota približne o 42.26°C

Interpretácia vzťahu:

Napriek štatistickej významnosti je praktický význam tohto vzťahu obmedzený, čo dokazuje veľmi nízky R-squared (0.00255). Model vysvetľuje len 0.25% variability teploty, čo znamená, že atmosférický tlak sám o sebe nie je dobrou predikčnou premennou pre teplotu. Záporný smer vzťahu je prekvapivý, pretože vysoký tlak zvyčajne prináša vyššie teploty. Tento neočakávaný výsledok by si vyžadoval ďalšiu analýzu iných meteorologických faktorov.

Hypotéza 2:

Globálne žiarenie má rastúci vplyv na denný teplotný rozsah (rozdiel medzi max a min teplotou) v Düsseldorfe

H₀: Globálne žiarenie nemá žiadny vplyv na denný teplotný rozsah v Düsseldorfe. (β₁ = 0)

H₁: S rastúcim globálnym žiarením sa zvyšuje denný teplotný rozsah v Düsseldorfe. (β₁ > 0)

# Vytvorenie novej premennej - denný teplotný rozsah

analysis_data <- udaje %>%
 mutate(DUSSELDORF_temp_range = DUSSELDORF_temp_max - DUSSELDORF_temp_min)

model_range <- lm(DUSSELDORF_temp_range ~ DUSSELDORF_global_radiation, data = analysis_data)
summary(model_range)

Call:
lm(formula = DUSSELDORF_temp_range ~ DUSSELDORF_global_radiation, 
    data = analysis_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.8215 -1.7406 -0.2678  1.5489 11.1019 

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  4.48366    0.06414   69.90   <2e-16 ***
DUSSELDORF_global_radiation  3.45368    0.04435   77.88   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.361 on 3652 degrees of freedom
Multiple R-squared:  0.6242,    Adjusted R-squared:  0.6241 
F-statistic:  6065 on 1 and 3652 DF,  p-value: < 2.2e-16
ggplot(analysis_data, aes(x = DUSSELDORF_global_radiation, y = DUSSELDORF_temp_range)) +
 geom_point(alpha = 0.6, color = "orange") +
 geom_smooth(method = "lm", color = "darkred", se = TRUE) +
 labs(title = "Vplyv globálneho žiarenia na denný teplotný rozsah v Düsseldorfe",
      subtitle = "Teplotný rozsah = Maximálna teplota - Minimálna teplota",
      x = "Globálne žiarenie (W/m²)",
      y = "Denný teplotný rozsah (°C)") +
 theme_minimal()

par(mfrow = c(2,2))

plot(model_range)

ZÁVER:

Na základe výsledkov lineárnej regresie rozhodne zamietame nulovú hypotézu H0 a prijímame alternatívnu hypotézu H1. Globálne žiarenie má štatisticky veľmi významný a silný vplyv na denný teplotný rozsah v Düsseldorfe.

Štatistické odôvodnenie:

  • p-hodnota < 2.2e-16 je extrémne významná, výrazne pod hranicou 0.05

  • t-hodnota 77.88 indikuje veľmi silnú evidenciu proti nulovej hypotéze

  • koeficient 3.45368 potvrdzuje pozitívny vplyv - so zvýšením globálneho žiarenia o 1 jednotku sa teplotný rozsah zvýši približne o 3.45°C

Interpretácia vzťahu:

Model vykazuje vynikajúcu vysvetľujúcu silu - R-squared 0.6242 znamená, že globálne žiarenie vysvetľuje 62.42% variability denného teplotného rozsahu. Toto je veľmi vysoká hodnota v meteorologických štúdiách.

LS0tDQp0aXRsZTogIsOabG9oYV81Ig0KYXV0aG9yOiAiQmMuIEtyeXN0eW5hIFZhc3lseW5hIg0KZGF0ZTogIk9rdG9iZXIgMjAyNSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogdW5pdGVkDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQplZGl0b3Jfb3B0aW9uczoNCiAgbWFya2Rvd246DQogICAgd3JhcDogNzINCi0tLQ0KYGBge3J9DQprbml0cjo6b3B0c19jaHVuayRzZXQoDQogICAgZWNobyA9IFRSVUUsDQogICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgIHdhcm5pbmcgPSBGQUxTRQ0KKQ0KYGBgDQoNCiMjIyBOYcSNw610YW5pZSBrbmnFvm7DrWMNCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShjb3JycGxvdCkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoYnJvb20pDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KGh0bWx0b29scykNCmxpYnJhcnkoem9vKQ0KbGlicmFyeSh0c2VyaWVzKQ0KbGlicmFyeShsbXRlc3QpDQpsaWJyYXJ5KHNhbmR3aWNoKQ0KbGlicmFyeShjYXIpDQpybShsaXN0PWxzKCkpDQpgYGANCg0KIyMjIE5hxI3DrXRhbmllIGRhdGFiw6F6eQ0KDQpgYGB7cn0NCnVkYWplIDwtIHJlYWRfY3N2KCJ3ZWF0aGVyX3ByZWRpY3Rpb25fZGF0YXNldC5jc3YiKQ0KYGBgDQoNCiMjIyBQcsOtcHJhdmEgZMOhdCANCg0KVnliZXJpZW1lIERVU1NFTERPUkYgYWtvIHByw61rbGFkDQoNCmBgYHtyfQ0KYW5hbHlzaXNfZGF0YSA8LSB1ZGFqZSAlPiUNCiBtdXRhdGUoDQogICBkYXRlID0gYXMuRGF0ZShEQVRFKSwNCiAgIG1vbnRoID0gbW9udGgoZGF0ZSkNCiApICU+JQ0KIHNlbGVjdCgNCiAgIGRhdGUsIG1vbnRoLA0KICAgRFVTU0VMRE9SRl9jbG91ZF9jb3ZlciwNCiAgIERVU1NFTERPUkZfaHVtaWRpdHksDQogICBEVVNTRUxET1JGX3ByZWNpcGl0YXRpb24sDQogICBEVVNTRUxET1JGX3N1bnNoaW5lLA0KICAgRFVTU0VMRE9SRl90ZW1wX21heCwNCiAgIERVU1NFTERPUkZfdGVtcF9taW4sDQogICBEVVNTRUxET1JGX3RlbXBfbWVhbiwNCiAgIERVU1NFTERPUkZfcHJlc3N1cmUsDQogICBEVVNTRUxET1JGX2dsb2JhbF9yYWRpYXRpb24sDQogKSAlPiUNCiBuYS5vbWl0KCkNCmBgYA0KDQojIyMgxaB0YXRpc3RpY2vDqSBoeXBvdMOpenkNCg0KIyMjIyBIeXBvdMOpemEgMToNClbDvcWha2EgYXRtb3Nmw6lyaWNrw6lobyB0bGFrdSBtw6EgcHJpYW15IHZwbHl2IG5hIG1heGltw6FsbnUgZGVubsO6IHRlcGxvdHUgdiBEw7xzc2VsZG9yZmUNCg0KKipI4oKAOioqIEF0bW9zZsOpcmlja8O9IHRsYWsgbmVtw6Egxb5pYWRueSB2cGx5diBuYSBtYXhpbcOhbG51IGRlbm7DuiB0ZXBsb3R1IHYgRMO8c3NlbGRvcmZlLiAozrLigoEgPSAwKQ0KDQoqKkjigoE6KiogQXRtb3Nmw6lyaWNrw70gdGxhayBtw6EgxaF0YXRpc3RpY2t5IHbDvXpuYW1uw70gdnBseXYgbmEgbWF4aW3DoWxudSBkZW5uw7ogdGVwbG90dSB2IETDvHNzZWxkb3JmZS4gKM6y4oKBIOKJoCAwKQ0KDQpgYGB7cn0NCm1vZGVsX2xpbiA8LSBsbShEVVNTRUxET1JGX3RlbXBfbWF4IH4gRFVTU0VMRE9SRl9wcmVzc3VyZSwgZGF0YSA9IGFuYWx5c2lzX2RhdGEpDQoNCnN1bW1hcnkobW9kZWxfbGluKQ0KDQpnZ3Bsb3QoYW5hbHlzaXNfZGF0YSwgYWVzKHggPSBEVVNTRUxET1JGX3ByZXNzdXJlLCB5ID0gRFVTU0VMRE9SRl90ZW1wX21heCkpICsNCiBnZW9tX3BvaW50KGFscGhhID0gMC42LCBjb2xvciA9ICJzdGVlbGJsdWUiKSArDQogZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAicmVkIiwgc2UgPSBUUlVFKSArDQogbGFicyh0aXRsZSA9ICJWcGx5diBhdG1vc2bDqXJpY2vDqWhvIHRsYWt1IG5hIG1heGltw6FsbnUgdGVwbG90dSB2IETDvHNzZWxkb3JmZSIsDQogICAgICB4ID0gIkF0bW9zZsOpcmlja8O9IHRsYWsgKGhQYSkiLA0KICAgICAgeSA9ICJNYXhpbcOhbG5hIGRlbm7DoSB0ZXBsb3RhICjCsEMpIikgKw0KIHRoZW1lX21pbmltYWwoKQ0KDQojIFJlemlkdcOhbG5hIGFuYWzDvXphDQpwYXIobWZyb3cgPSBjKDIsMikpDQpwbG90KG1vZGVsX2xpbikNCmBgYA0KDQoqKlrDgVZFUjoqKg0KTmEgesOha2xhZGUgdsO9c2xlZGtvdiBsaW5lw6FybmVqIHJlZ3Jlc2llICoqemFtaWV0YW1lIG51bG92w7ogaHlwb3TDqXp1IEgwKiogYSAqKnByaWrDrW1hbWUgYWx0ZXJuYXTDrXZudSBoeXBvdMOpenUgSDEqKi4gQXRtb3Nmw6lyaWNrw70gdGxhayBtw6EgxaF0YXRpc3RpY2t5IHbDvXpuYW1uw70gdnBseXYgbmEgbWF4aW3DoWxudSBkZW5uw7ogdGVwbG90dSB2IETDvHNzZWxkb3JmZS4NCg0KKirFoHRhdGlzdGlja8OpIG9kw7R2b2RuZW5pZToqKg0KDQotICoqcC1ob2Rub3RhKiogcHJlIHRsYWsgamUgMC4wMDIyNSwgxI1vIGplIHbDvXJhem5lIHBvZCBocmFuaWNvdSB2w716bmFtbm9zdGkgMC4wNQ0KDQotICoqdC1ob2Rub3RhKiogLTMuMDU4IGluZGlrdWplIHNpbG7DuiBldmlkZW5jdSBwcm90aSBudWxvdmVqIGh5cG90w6l6ZQ0KDQotICoqa29lZmljaWVudCoqIC00Mi4yNiB1a2F6dWplLCDFvmUgc28genbDvcWhZW7DrW0gdGxha3UgbyAxIGhQYSBrbGVzbmUgdGVwbG90YSBwcmlibGnFvm5lIG8gNDIuMjbCsEMNCg0KKipJbnRlcnByZXTDoWNpYSB2esWlYWh1OioqDQoNCk5hcHJpZWsgxaF0YXRpc3RpY2tlaiB2w716bmFtbm9zdGkgamUgcHJha3RpY2vDvSB2w716bmFtIHRvaHRvIHZ6xaVhaHUgb2JtZWR6ZW7DvSwgxI1vIGRva2F6dWplIHZlxL5taSBuw616a3kgKipSLXNxdWFyZWQgKDAuMDAyNTUpKiouIE1vZGVsIHZ5c3ZldMS+dWplIGxlbiAwLjI1JSB2YXJpYWJpbGl0eSB0ZXBsb3R5LCDEjW8gem5hbWVuw6EsIMW+ZSBhdG1vc2bDqXJpY2vDvSB0bGFrIHPDoW0gbyBzZWJlIG5pZSBqZSBkb2Jyb3UgcHJlZGlrxI1ub3UgcHJlbWVubm91IHByZSB0ZXBsb3R1LiBaw6Fwb3Juw70gc21lciB2esWlYWh1IGplIHByZWt2YXBpdsO9LCBwcmV0b8W+ZSB2eXNva8O9IHRsYWsgenZ5xI1ham5lIHByaW7DocWhYSB2ecWhxaFpZSB0ZXBsb3R5LiBUZW50byBuZW/EjWFrw6F2YW7DvSB2w71zbGVkb2sgYnkgc2kgdnnFvmFkb3ZhbCDEj2FsxaFpdSBhbmFsw716dSBpbsO9Y2ggbWV0ZW9yb2xvZ2lja8O9Y2ggZmFrdG9yb3YuDQoNCg0KIyMjIyBIeXBvdMOpemEgMjoNCkdsb2LDoWxuZSDFvmlhcmVuaWUgbcOhIHJhc3TDumNpIHZwbHl2IG5hIGRlbm7DvSB0ZXBsb3Ruw70gcm96c2FoIChyb3pkaWVsIG1lZHppIG1heCBhIG1pbiB0ZXBsb3RvdSkgdiBEw7xzc2VsZG9yZmUNCg0KKipI4oKAOioqIEdsb2LDoWxuZSDFvmlhcmVuaWUgbmVtw6Egxb5pYWRueSB2cGx5diBuYSBkZW5uw70gdGVwbG90bsO9IHJvenNhaCB2IETDvHNzZWxkb3JmZS4gKM6y4oKBID0gMCkNCg0KKipI4oKBOioqIFMgcmFzdMO6Y2ltIGdsb2LDoWxueW0gxb5pYXJlbsOtbSBzYSB6dnnFoXVqZSBkZW5uw70gdGVwbG90bsO9IHJvenNhaCB2IETDvHNzZWxkb3JmZS4gKM6y4oKBID4gMCkNCg0KYGBge3J9DQojIFZ5dHZvcmVuaWUgbm92ZWogcHJlbWVubmVqIC0gZGVubsO9IHRlcGxvdG7DvSByb3pzYWgNCg0KYW5hbHlzaXNfZGF0YSA8LSB1ZGFqZSAlPiUNCiBtdXRhdGUoRFVTU0VMRE9SRl90ZW1wX3JhbmdlID0gRFVTU0VMRE9SRl90ZW1wX21heCAtIERVU1NFTERPUkZfdGVtcF9taW4pDQoNCm1vZGVsX3JhbmdlIDwtIGxtKERVU1NFTERPUkZfdGVtcF9yYW5nZSB+IERVU1NFTERPUkZfZ2xvYmFsX3JhZGlhdGlvbiwgZGF0YSA9IGFuYWx5c2lzX2RhdGEpDQpzdW1tYXJ5KG1vZGVsX3JhbmdlKQ0KDQpnZ3Bsb3QoYW5hbHlzaXNfZGF0YSwgYWVzKHggPSBEVVNTRUxET1JGX2dsb2JhbF9yYWRpYXRpb24sIHkgPSBEVVNTRUxET1JGX3RlbXBfcmFuZ2UpKSArDQogZ2VvbV9wb2ludChhbHBoYSA9IDAuNiwgY29sb3IgPSAib3JhbmdlIikgKw0KIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImRhcmtyZWQiLCBzZSA9IFRSVUUpICsNCiBsYWJzKHRpdGxlID0gIlZwbHl2IGdsb2LDoWxuZWhvIMW+aWFyZW5pYSBuYSBkZW5uw70gdGVwbG90bsO9IHJvenNhaCB2IETDvHNzZWxkb3JmZSIsDQogICAgICBzdWJ0aXRsZSA9ICJUZXBsb3Ruw70gcm96c2FoID0gTWF4aW3DoWxuYSB0ZXBsb3RhIC0gTWluaW3DoWxuYSB0ZXBsb3RhIiwNCiAgICAgIHggPSAiR2xvYsOhbG5lIMW+aWFyZW5pZSAoVy9twrIpIiwNCiAgICAgIHkgPSAiRGVubsO9IHRlcGxvdG7DvSByb3pzYWggKMKwQykiKSArDQogdGhlbWVfbWluaW1hbCgpDQoNCnBhcihtZnJvdyA9IGMoMiwyKSkNCnBsb3QobW9kZWxfcmFuZ2UpDQpgYGANCg0KKipaw4FWRVI6KioNCg0KTmEgesOha2xhZGUgdsO9c2xlZGtvdiBsaW5lw6FybmVqIHJlZ3Jlc2llICoqcm96aG9kbmUgemFtaWV0YW1lIG51bG92w7ogaHlwb3TDqXp1IEgwKiogYSAqKnByaWrDrW1hbWUgYWx0ZXJuYXTDrXZudSBoeXBvdMOpenUgSDEqKi4gR2xvYsOhbG5lIMW+aWFyZW5pZSBtw6EgxaF0YXRpc3RpY2t5IHZlxL5taSB2w716bmFtbsO9IGEgc2lsbsO9IHZwbHl2IG5hIGRlbm7DvSB0ZXBsb3Ruw70gcm96c2FoIHYgRMO8c3NlbGRvcmZlLg0KDQoqKsWgdGF0aXN0aWNrw6kgb2TDtHZvZG5lbmllOioqDQoNCi0gKipwLWhvZG5vdGEqKiA8IDIuMmUtMTYgamUgZXh0csOpbW5lIHbDvXpuYW1uw6EsIHbDvXJhem5lIHBvZCBocmFuaWNvdSAwLjA1DQoNCi0gKip0LWhvZG5vdGEqKiA3Ny44OCBpbmRpa3VqZSB2ZcS+bWkgc2lsbsO6IGV2aWRlbmNpdSBwcm90aSBudWxvdmVqIGh5cG90w6l6ZQ0KDQotICoqa29lZmljaWVudCoqIDMuNDUzNjggcG90dnJkenVqZSBwb3ppdMOtdm55IHZwbHl2IC0gc28genbDvcWhZW7DrW0gZ2xvYsOhbG5laG8gxb5pYXJlbmlhIG8gMSBqZWRub3RrdSBzYSB0ZXBsb3Ruw70gcm96c2FoIHp2w73FoWkgcHJpYmxpxb5uZSBvIDMuNDXCsEMNCg0KKipJbnRlcnByZXTDoWNpYSB2esWlYWh1OioqDQoNCk1vZGVsIHZ5a2F6dWplICoqdnluaWthasO6Y3UgdnlzdmV0xL51asO6Y3Ugc2lsdSoqIC0gKipSLXNxdWFyZWQgMC42MjQyKiogem5hbWVuw6EsIMW+ZSBnbG9iw6FsbmUgxb5pYXJlbmllIHZ5c3ZldMS+dWplIDYyLjQyJSB2YXJpYWJpbGl0eSBkZW5uw6lobyB0ZXBsb3Ruw6lobyByb3pzYWh1LiBUb3RvIGplIHZlxL5taSB2eXNva8OhIGhvZG5vdGEgdiBtZXRlb3JvbG9naWNrw71jaCDFoXTDumRpw6FjaC4NCg0KDQoNCg==