Analýza meteorologických ukazovateľov

Úvod do problému a stanovenie hypotézy

Cieľom analýzy je modelovať strednú dennú teplotu v Bazileji (BASEL_temp_mean) na základe viacerých meteorologických premenných:

  • oblačnosť (BASEL_cloud_cover),

  • vlhkosť (BASEL_humidity),

  • tlak vzduchu (BASEL_pressure),

  • globálne žiarenie (BASEL_global_radiation),

  • zrážky (BASEL_precipitation),

  • slnečný svit (BASEL_sunshine) a minimálnu a maximálnu teplotu (BASEL_temp_min, BASEL_temp_max).

Pracovná hypotéza predpokladá, že tieto premenné významne ovplyvňujú strednú teplotu – napríklad vyššie globálne žiarenie alebo slnečný svit by mali viesť k vyšším teplotám, zatiaľ čo väčšia oblačnosť môže teplotu znižovať. Cieľom analýzy je overiť túto hypotézu pomocou lineárneho regresného modelu, posúdiť význam jednotlivých premenných a skontrolovať, či model spĺňa predpoklady lineárnej regresie, ako sú normalita rezíduí a konštantný rozptyl (homoskedasticita).

Na začiatku analýzy budeme najprv načítať potrebné knižnice, vyčistíme pracovné prostredie, načítame súbor weather_prediction_dataset.csv, vyberieme kľúčové stĺpce a doplníme chýbajúce hodnoty mediánom, aby boli údaje pripravené na ďalšie spracovanie.

Načítanie knižníc

library(zoo)
## Warning: пакет 'zoo' был собран под R версии 4.5.2
## 
## Присоединяю пакет: 'zoo'
## Следующие объекты скрыты от 'package:base':
## 
##     as.Date, as.Date.numeric
library(tseries)
## Warning: пакет 'tseries' был собран под R версии 4.5.2
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(lmtest)
## Warning: пакет 'lmtest' был собран под R версии 4.5.2
library(sandwich)
## Warning: пакет 'sandwich' был собран под R версии 4.5.2
library(car)
## Warning: пакет 'car' был собран под R версии 4.5.2
## Загрузка требуемого пакета: carData
library(ggplot2)
## Warning: пакет 'ggplot2' был собран под R версии 4.5.2
library(cowplot)

Vyčistenie pracovného prostredia

rm(list=ls())

Načítanie údajov

udaje <- read.csv("weather_prediction_dataset.csv")

Výber potrebných stĺpcov

weather_data <- udaje[, c("BASEL_cloud_cover", "BASEL_humidity", "BASEL_pressure", 
                          "BASEL_global_radiation", "BASEL_precipitation", "BASEL_sunshine",
                          "BASEL_temp_mean", "BASEL_temp_min", "BASEL_temp_max")]

Imputácia chýbajúcich hodnôt mediánom

median_hodnoty <- sapply(weather_data, median, na.rm = TRUE)
weather_data_imputed <- weather_data
for (col in names(weather_data)) {
  weather_data_imputed[[col]][is.na(weather_data[[col]])] <- median_hodnoty[col]
}
weather_data <- weather_data_imputed

Boxploty pre vizuálnu kontrolu

Poskytnú nám rýchly prehľad o variabilite a rozsahu dát pred samotným modelovaním.

num_plots <- length(names(weather_data))
par(mfrow = c(3, 3))
par(mar = c(4, 4, 2, 1))
for (col in names(weather_data)) {
  boxplot(weather_data[[col]], main = col, xlab = "Hodnota", col = "lightblue")
}

par(mfrow = c(1, 1))

Lineárna regresia: závislá premenná BASEL_temp_mean

model <- lm(BASEL_temp_mean ~ BASEL_cloud_cover + BASEL_humidity + BASEL_pressure +
              BASEL_global_radiation + BASEL_precipitation + BASEL_sunshine +
              BASEL_temp_min + BASEL_temp_max, data = weather_data)
summary(model)
## 
## Call:
## lm(formula = BASEL_temp_mean ~ BASEL_cloud_cover + BASEL_humidity + 
##     BASEL_pressure + BASEL_global_radiation + BASEL_precipitation + 
##     BASEL_sunshine + BASEL_temp_min + BASEL_temp_max, data = weather_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6986 -0.3519  0.0137  0.3576  2.6206 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            -1.490728   1.310306  -1.138 0.255323    
## BASEL_cloud_cover       0.043206   0.007690   5.618 2.07e-08 ***
## BASEL_humidity         -1.508743   0.127840 -11.802  < 2e-16 ***
## BASEL_pressure          2.345408   1.279865   1.833 0.066952 .  
## BASEL_global_radiation  0.090704   0.027478   3.301 0.000973 ***
## BASEL_precipitation    -0.028120   0.019019  -1.479 0.139343    
## BASEL_sunshine          0.007200   0.006625   1.087 0.277165    
## BASEL_temp_min          0.498117   0.004798 103.822  < 2e-16 ***
## BASEL_temp_max          0.475467   0.004462 106.549  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5475 on 3645 degrees of freedom
## Multiple R-squared:  0.9946, Adjusted R-squared:  0.9945 
## F-statistic: 8.329e+04 on 8 and 3645 DF,  p-value: < 2.2e-16

Pre lineárnu regresiu s BASEL_temp_mean ako závislou premennou model ukazuje veľmi dobrú zhody s dátami. Koeficienty naznačujú, že niektoré premenné majú silný vplyv na strednú teplotu.

Najdôležitejšie faktory sú:

  • Minimálna a maximálna teplota – hlavní prediktori s extrémne vysokými t-hodnotami a p-hodnotami < 2e-16.

  • Vlhkosť – výrazne znižuje strednú teplotu (-1,51, t = -11,8).

  • Oblačnosť a globálne žiarenie – mierny pozitívny efekt a štatisticky významné.

Premenné ako tlak, zrážky alebo slnečný svit sa v tomto modeli neprejavili ako významné.

Reziduá sú väčšinou malé (min = -2,6986, max = 2,6206, štandardná chyba = 0,5475), čo naznačuje dobrú presnosť predikcie.

Hodnota R-squared = 0,9946 ukazuje, že model vysvetľuje takmer všetku variabilitu strednej teploty, a vysoká F-statistika potvrdzuje celkovú štatistickú významnosť modelu.

Celkovo model veľmi dobre zachytáva vzťahy medzi meteorologickými premennými a strednou teplotou v Bazileji, pričom najdôležitejšie faktory sú jasne identifikovateľné a zodpovedajú očakávanému fyzikálnemu kontextu.

Diagnostické grafy

par(mfrow = c(2, 2))
plot(model)

par(mfrow = c(1, 1))

Residuals vs Fitted

  • Účel: Overiť, či má lineárny vzťah medzi premennými a či má reziduá konštantný rozptyl.

  • Na tomto grafe je červená čiara ideálne rovná a body sú náhodne rozmiestnené okolo nej. To znamená, že predpoklad linearity je splnený – medzi premennými existuje vhodný lineárny vzťah a model je dobre špecifikovaný.

Q-Q Residuals

  • Účel: Overiť, či sú reziduá normálne rozdelené.

  • Na tomto grafe body takmer dokonale sledujú diagonálnu čiaru. To znamená, že reziduá sú normálne rozdelené. Tento dôležitý predpoklad pre štatistické testovanie je splnený.

Scale-Location

  • Účel: Tiež overuje predpoklad homoskedasticity (konštantný rozptyl reziduí). Je to podobné ako prvý graf, ale zobrazuje odmocninu štandardizovaných reziduí.

  • Na tomto grafe sú body veľmi rozťahané a odchádzajú od čiary, ktorá nie je dokonale rovná. To znamená, že dochádza k heteroskedasticite – rozptyl reziduí nie je konštantný. To je hlavný problém modelu, ktorý môže spôsobiť nespoľahlivosť štatistických testov.

Residuals vs Leverage

  • Účel: Identifikovať vplyvné body (outliery), ktoré môžu neúmerne ovplyvňovať výsledky regresie.

  • Na tomto grafe sú body sústredené v ľavej časti a červená čiara sa mierne vlní. To znamená, že väčšina pozorovaní má nízku vplyvnosť, čo je dobré, no niektoré body môžu mierne ovplyvňovať model. Nevidia sa však extrémne vplyvné odľahlé hodnoty.

Jarque Bera test na normalitu rezíduí

residuals <- residuals(model)
jb_test <- jarque.bera.test(residuals)
jb_test
## 
##  Jarque Bera Test
## 
## data:  residuals
## X-squared = 113.49, df = 2, p-value < 2.2e-16

Test Jarque-Bera sme použili na overenie, či sú reziduá modelu normálne rozdelené. Tento test skúma rozdiel medzi tvarom rozdelenia reziduí a teoretickým normálnym rozdelením pomocou dvoch ukazovateľov – šikmosti (skewness) a špicatosti (kurtosis).

Výsledky:

  • X-squared = 113.49,

  • df = 2,

  • p-hodnota < 2.2e-16.

To znamená, že test zamieta nulovú hypotézu o normálnom rozdelení reziduí. Napriek tomu, že Q-Q graf vizuálne naznačoval takmer normálne rozdelenie, test ukazuje, že existujú drobné odchýlky — pravdepodobne spôsobené veľkým počtom pozorovaní, kde aj malé rozdiely vedú k štatistickej významnosti.

Reziduá nie sú úplne normálne rozdelené, hoci odchýlky nie sú výrazné a model zostáva spoľahlivý na predikčné účely.

Test na odľahlé hodnoty

outlier_test <- outlierTest(model)
outlier_test
##       rstudent unadjusted p-value Bonferroni p
## 1815 -4.960562         7.3501e-07    0.0026857
## 713   4.814299         1.5372e-06    0.0056169
## 1273 -4.376102         1.2421e-05    0.0453850

Pri teste na odľahlé hodnoty (outliery) sme použili štandardizované reziduá (rstudent), aby sme identifikovali pozorovania s extrémnymi hodnotami, ktoré môžu ovplyvniť stabilitu modelu.

Najvýraznejšie odľahlé hodnoty:

  • pozorovanie 1815 (rstudent = -4.96, Bonferroni p = 0.0027),

  • pozorovanie 713 (rstudent = 4.81, Bonferroni p = 0.0056),

  • pozorovanie 1273 (rstudent = -4.38, Bonferroni p = 0.0454).

Tieto hodnoty prekračujú bežný limit ±3, čo znamená, že ide o potenciálne problematické pozorovania.

Záverom možno povedať, že niekoľko pozorovaní má vysoký vplyv a môžu mierne skresľovať odhady parametrov

Grafy pre kontrolu heteroskedasticity

p1 <- ggplot(weather_data, aes(x = BASEL_pressure, y = resid(model)^2)) +
  geom_point(alpha = 0.6) +
  geom_smooth(method = "loess", se = FALSE, color = "darkred") +
  labs(x = "BASEL_pressure", y = "Štvorce rezíduí", title = "Rezíduá^2 vs Tlak") +
  theme_minimal()

p2 <- ggplot(weather_data, aes(x = BASEL_humidity, y = resid(model)^2)) +
  geom_point(alpha = 0.6) +
  geom_smooth(method = "loess", se = FALSE, color = "darkred") +
  labs(x = "BASEL_humidity", y = "Štvorce rezíduí", title = "Rezíduá^2 vs Vlhkosť") +
  theme_minimal()

plot_grid(p1, p2)
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

Tieto grafy zobrazujú vzťah medzi štvorcami rezíduí a vybranými nezávislými premennými (tlakom a vlhkosťou). Ich cieľom je zistiť, či sa rozptyl rezíduí mení v závislosti od hodnôt týchto premenných – teda či sa v modeli prejavuje heteroskedasticita.

Rezíduá² vs Tlak

  • Väčšina bodov sa sústreďuje v spodnej časti grafu, prevažne medzi hodnotami 0 až 2 na osi Y.

  • Červená čiara je len mierne zvlnená – na niektorých miestach sa nepatrne dvíha a opäť klesá, no celkovo zostáva pomerne rovná.

  • Takýto priebeh naznačuje, že rozptyl rezíduí je relatívne stabilný a výrazná heteroskedasticita sa neprejavuje.

Rezíduá² vs Vlhkosť

  • Body sú rozložené pomerne rovnomerne, väčšina z nich sa nachádza v spodnej časti grafu.

  • Červená čiara je takmer rovná, bez výrazného zakrivenia, čo svedčí o konštantnom rozptyle rezíduí.

  • Niekoľko bodov sa síce odchyľuje smerom nahor, ale tieto odchýlky sú minimálne a nemajú zásadný vplyv na stabilitu rozptylu.

Na základe týchto grafov môžeme konštatovať, že model nevykazuje výrazné známky heteroskedasticity – rozptyl chýb je relatívne konštantný naprieč rôznymi hodnotami tlaku aj vlhkosti.

Breusch-Pagan test na heteroskedasticitu

Tento test sa používa na formálne overenie, či je rozptyl rezíduí konštantný (homoskedasticita), alebo sa mení v závislosti od hodnôt nezávislých premenných (heteroskedasticita).

bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 248.6, df = 8, p-value < 2.2e-16

Keďže p-hodnota je výrazne menšia ako 0.05, zamietame nulovú hypotézu o homoskedasticite. To znamená, že rozptyl rezíduí nie je konštantný a v modeli sa vyskytuje heteroskedasticita.

Aj napriek tomu, že vizuálna kontrola grafov neukázala výrazné porušenie predpokladov, štatistický test potvrdzuje, že variabilita rezíduí sa mení v závislosti od niektorých premenných.

Model nespĺňa predpoklad konštantného rozptylu chýb. Tento problém môžeme riešiť napríklad použitím robustných štandardných chýb, ktoré korigujú dôsledky heteroskedasticity bez nutnosti meniť samotný model.

library(lmtest)
library(sandwich)

Výpočet robustných štandardných chýb

robust_summary <- coeftest(model, vcov = vcovHC(model, type = "HC1"))
robust_summary
## 
## t test of coefficients:
## 
##                          Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)            -1.4907281  1.3517456  -1.1028  0.270179    
## BASEL_cloud_cover       0.0432057  0.0075177   5.7472 9.816e-09 ***
## BASEL_humidity         -1.5087434  0.1343456 -11.2303 < 2.2e-16 ***
## BASEL_pressure          2.3454082  1.3187298   1.7785  0.075399 .  
## BASEL_global_radiation  0.0907036  0.0290459   3.1228  0.001806 ** 
## BASEL_precipitation    -0.0281202  0.0231747  -1.2134  0.225057    
## BASEL_sunshine          0.0072004  0.0065787   1.0945  0.273805    
## BASEL_temp_min          0.4981170  0.0055186  90.2609 < 2.2e-16 ***
## BASEL_temp_max          0.4754666  0.0051496  92.3314 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Z tabuľky výsledkov vyplýva:

  • Koeficienty odhadnuté pôvodným modelom sa nemenia, takže veľkosť a smer vplyvu jednotlivých premenných zostávajú rovnaké,

  • Štandardné chyby sa mierne upravili, čo ovplyvnilo hodnoty t a p-hodnoty.

Najsilnejšie a štatisticky významné premenné zostávajú:

  • Minimálna a maximálna teplota (p < 2.2e-16, extrémne vysoké t-hodnoty),

  • Vlhkosť (p < 2.2e-16, negatívny efekt),

  • Oblačnosť a globálne žiarenie (p < 0.01).

Premenné ako tlak, zrážky a slnečný svit sa stále neprejavili ako významné, hoci tlak je teraz mierne bližšie k hranici významnosti (p = 0.075).

Použitie robustných štandardných chýb zabezpečilo spoľahlivejšiu interpretáciu modelu aj napriek prítomnosti heteroskedasticity. Model naďalej vysvetľuje väčšinu variability strednej teploty a dôležité vzťahy medzi premennými sú jasne identifikovateľné.

Záver

Na základe vykonanej analýzy môžeme konštatovať, že model strednej teploty v Bazileji veľmi dobre vysvetľuje väčšinu variability dát. Robustné štandardné chyby zabezpečili spoľahlivejšiu inferenciu aj napriek prítomnosti heteroskedasticity. Kľúčové premenné, ako minimálna a maximálna teplota, vlhkosť, oblačnosť a globálne žiarenie, majú výrazný a štatisticky významný vplyv na strednú teplotu. Celkovo model poskytuje presný a interpretovateľný pohľad na vzťahy medzi meteorologickými faktormi a teplotou.

Úvod

V tejto úlohe skúmame, ako meteorologické faktory ovplyvňujú priemernú teplotu v meste Oslo počas júla – najteplejšieho mesiaca v roku. Analyzujeme premenné ako oblačnosť, rýchlosť vetra, vlhkosť, tlak, globálne žiarenie, zrážky a slnečný svit.

Cieľom je odhadnúť lineárne a nelineárne modely, overiť ich správnosť pomocou diagnostických testov a grafov, preskúmať vplyv špecifických udalostí cez dummy premenné a posúdiť vhodnosť transformácie závislej premennej. Výsledky umožnia lepšie pochopiť, ktoré faktory najviac ovplyvňujú júlove teploty.

Načítanie knižníc

library(zoo)
library(tseries)
library(lmtest)
library(sandwich)
library(car)
library(carData)
library(cowplot)
library(ggplot2)
library(dplyr)
## 
## Присоединяю пакет: 'dplyr'
## Следующий объект скрыт от 'package:car':
## 
##     recode
## Следующие объекты скрыты от 'package:stats':
## 
##     filter, lag
## Следующие объекты скрыты от 'package:base':
## 
##     intersect, setdiff, setequal, union
library(stringr)    
## Warning: пакет 'stringr' был собран под R версии 4.5.2
knitr::opts_knit$set(root.dir = dirname(rstudioapi::getActiveDocumentContext()$path))
knitr::opts_chunk$set(
  echo = FALSE,
  message = FALSE,
  warning = FALSE,
  error = FALSE
)
rm(list=ls())

Načítanie dát

Výber premennych

##      MONTH   OSLO_cloud_cover OSLO_wind_speed OSLO_humidity    OSLO_pressure   
##  Min.   :7   Min.   :1.000    Min.   :0.500   Min.   :0.4100   Min.   :0.9926  
##  1st Qu.:7   1st Qu.:4.000    1st Qu.:2.000   1st Qu.:0.6000   1st Qu.:1.0041  
##  Median :7   Median :6.000    Median :2.400   Median :0.6800   Median :1.0100  
##  Mean   :7   Mean   :5.561    Mean   :2.576   Mean   :0.6744   Mean   :1.0102  
##  3rd Qu.:7   3rd Qu.:7.000    3rd Qu.:3.100   3rd Qu.:0.7600   3rd Qu.:1.0161  
##  Max.   :7   Max.   :8.000    Max.   :5.700   Max.   :0.8800   Max.   :1.0312  
##  OSLO_global_radiation OSLO_precipitation OSLO_sunshine    OSLO_temp_mean 
##  Min.   :0.260         Min.   :0.0000     Min.   : 0.000   Min.   :10.60  
##  1st Qu.:1.320         1st Qu.:0.0000     1st Qu.: 2.225   1st Qu.:15.60  
##  Median :2.225         Median :0.0100     Median : 7.350   Median :17.20  
##  Mean   :2.078         Mean   :0.3483     Mean   : 7.195   Mean   :17.67  
##  3rd Qu.:2.880         3rd Qu.:0.3475     3rd Qu.:11.600   3rd Qu.:19.30  
##  Max.   :3.380         Max.   :5.6000     Max.   :16.600   Max.   :24.90

Základný lineárny regresný model

Základný lineárny regresný model sa používa na odhadnutie vzťahu medzi priemernou júlovou teplotou v Osle a meteorologickými premennými, aby sme identifikovali, ktoré faktory majú na teplotu najväčší vplyv.

## 
## Call:
## lm(formula = OSLO_temp_mean ~ OSLO_cloud_cover + OSLO_wind_speed + 
##     OSLO_humidity + OSLO_pressure + OSLO_global_radiation + OSLO_precipitation + 
##     OSLO_sunshine, data = weather_july)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.3988 -1.2870 -0.1237  1.3101  4.7764 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -105.89136   18.05572  -5.865 1.18e-08 ***
## OSLO_cloud_cover         0.06244    0.13349   0.468  0.64031    
## OSLO_wind_speed         -0.22277    0.13584  -1.640  0.10205    
## OSLO_humidity           -6.65813    1.68418  -3.953 9.61e-05 ***
## OSLO_pressure          126.40600   17.61289   7.177 5.55e-12 ***
## OSLO_global_radiation   -0.40157    0.25817  -1.555  0.12089    
## OSLO_precipitation       0.19725    0.18137   1.088  0.27765    
## OSLO_sunshine            0.18730    0.06116   3.063  0.00239 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.024 on 302 degrees of freedom
## Multiple R-squared:  0.4775, Adjusted R-squared:  0.4654 
## F-statistic: 39.43 on 7 and 302 DF,  p-value: < 2.2e-16

Výsledky:

  • Vlhkosť vzduchu (OSLO_humidity, p < 0,001): vyššia vlhkosť výrazne znižuje priemernú teplotu; v júli teda mokrejšie dni bývajú chladnejšie.

  • Atmosférický tlak (OSLO_pressure, p < 0,001): vyšší tlak je spojený s vyššou teplotou; stabilné tlakové podmienky v júli podporujú teplejšie dni.

  • Slnečný svit (OSLO_sunshine, p = 0,002): viac slnečných hodín zvyšuje priemernú teplotu; jasnejšie dni sú teplejšie.

  • Oblačnosť, rýchlosť vetra, globálne žiarenie a zrážky: tieto premenné nie sú štatisticky významné, čo znamená, že v júli nemajú zásadný samostatný vplyv na priemernú teplotu v Osle.

  • Celková vysvetlená variabilita (R² = 0,4775): model vysvetľuje približne 47% rozdielov v teplote medzi jednotlivými dňami júla, takže hlavné faktory sú zachytené, ale niektoré vplyvy zostávajú nevysvetlené.

  • Reziduá (-5,4 až 4,8 °C): model dobre odhaduje priemernú teplotu, no extrémne teploty môžu byť podhodnotené alebo nadhodnotené.

RESET test na kontrolu špecifikácie modelu

RESET test sa používa na overenie, či lineárny model správne zachytáva vzťah medzi premennými a teplotou, teda či nechýbajú nelineárne efekty alebo interakcie.

## 
##  RESET test
## 
## data:  model1
## RESET = 0.52977, df1 = 2, df2 = 300, p-value = 0.5893

Výsledky:

  • RESET = 0,52977, p = 0,5893: vysoká p-hodnota (> 0,05) naznačuje, že nemáme dôkaz proti správnej špecifikácii modelu.

  • Význam pre teplotu: lineárny model vhodne vystihuje vzťahy medzi meteorologickými premennými a priemernou teplotou; neprítomnosť nelineárnych efektov znamená, že teplota reaguje na faktory približne lineárne.

Reziduálne grafy

Residuals vs Fitted

Graf „Residuals vs Fitted“ používame na kontrolu, či lineárny model správne predikuje priemernú teplotu v júli a či reziduá nemajú systematický vzor alebo heteroskedasticitu.

Výsledky:

  • Reziduá sú väčšinou rovnomerne rozptýlené okolo horizontálnej čiary, čo naznačuje, že model dobre vystihuje vzťah medzi všetkými meteorologickými premennými a priemernou teplotou.

  • Väčšina bodov sa sústreďuje pri nižších až stredných predikovaných hodnotách (Fitted ≈ 14–18), kde model veľmi presne predikuje skutočnú teplotu.

  • Vyskytujú sa niektoré extrémne body, ktoré predstavujú výraznejšie odchýlky medzi predikovanou a skutočnou teplotou, typicky pri extrémne vysokých alebo nízkych dňoch.

  • Pri vyšších predikovaných hodnotách (Fitted ≈ 20–22) sa body mierne rozptyľujú, čo ukazuje, že model je trochu menej presný pre najteplejšie dni, ale stále zachytáva hlavnú tendenciu.

Celkovo graf podporuje vhodnosť lineárneho modelu a neodhalil žiadne výrazné systematické odchýlky či heteroskedasticitu rezíduí.

QQ plot

QQ plot používame na overenie normality rezíduí lineárneho modelu, čo je dôležité pre správnosť inferenčných testov a p-hodnôt koeficientov.

Výsledky:

  • Väčšina bodov sleduje diagonálnu čiaru veľmi presne, čo naznačuje, že reziduá približne nasledujú normálne rozdelenie.

  • V dolnej a hornej časti sa vyskytujú extrémy, kde je menej bodov a sú odchýlené, čo znamená prítomnosť niekoľkých veľmi nízkych alebo vysokých rezíduí.

Celkovo graf podporuje predpoklad normality rezíduí, pričom extrémne odchýlky predstavujú zriedkavé dni s neobvyklými podmienkami, ktoré mierne vybočujú z normálneho rozdelenia.

Scale-Location

Graf Scale-Location používame na overenie predpokladu homoskedasticity, teda či rozptyl rezíduí je približne konštantný pre všetky predikované hodnoty teploty.

Výsledky:

  • Červená čiara stúpa mierne nahor, čo naznačuje, že rozptyl rezíduí sa s rastom predikovaných hodnôt mierne zvyšuje.

  • Väčšina bodov je rovnomerne rozptýlená okolo čiary, s väčším zhustením pri Fitted ≈ 15–18, čo znamená, že model je presnejší pre stredné predikované teploty.

  • Prítomné sú extrémne hodnoty, ktoré reprezentujú dni s výraznejšími odchýlkami, typicky veľmi horúce alebo chladné dni.

Celkovo graf naznačuje mierne stúpajúcu variabilitu rezíduí pri vyšších predikovaných hodnotách, ale predpoklad približne konštantného rozptylu je stále akceptovateľný.

Leverage vs. Standardized residuals

Graf Leverage vs. Standardized residuals používame na identifikáciu pozorovaní, ktoré majú neobvyklé hodnoty vysvetľujúcich premenných a môžu výrazne ovplyvniť odhad regresných koeficientov.

Výsledky:

  • Červená čiara začína horizontálne pri nízkej leverage (X ≈ 0–0,05), potom jemne stúpa až do X ≈ 0,10 a nakoniec prudko klesá smerom k Y ≈ -2. To ukazuje, že väčšina dní júla sa správa predvídateľne, ale pre niektoré kombinácie premenných sa očakávané reziduá mierne zvyšujú alebo náhle klesajú.

  • Väčšina dní je sústredená pri nízkej leverage, reziduá sa držia blízko nuly, čo znamená, že model dobre zachytáva typické júlove počasie a teplotu.

  • Extrémne hodnoty - tieto dni predstavujú neobvyklé podmienky, ktoré môžu výraznejšie ovplyvniť model.

Celkovo model spoľahlivo popisuje väčšinu júlovej teploty, no treba mať na pamäti, že niektoré extrémne dni s neštandardnými meteorologickými podmienkami môžu spôsobovať odchýlky od predikcie.

C+R ploty pre vizuálne posúdenie linearity

C+R ploty používame na to, aby sme vizuálne overili, či je vzťah medzi jednotlivými meteorologickými premennými a priemernou teplotou v júli dostatočne lineárny, teda či lineárny model dáva zmysel pre tieto dáta.

#### OSLO_cloud_cover

Na grafe je vidieť, že body sú rozložené v pásmach podľa kategórií oblačnosti a vyhladená krivka je takmer vodorovná. To znamená, že oblačnosť takmer neovplyvňuje teplotu v lineárnej forme.

OSLO_wind_speed

Body naznačujú slabý klesajúci trend a vyhladená krivka mierne klesá. To naznačuje, že silnejší vietor môže súvisieť s o niečo nižšou teplotou.

OSLO_humidity

Vyhladená krivka mierne klesá, čo poukazuje na slabý negatívny vzťah. To znamená, že pri vyššej vlhkosti má teplota tendenciu mierne klesať.

OSLO_pressure

Krivka má mierne rastúci charakter, viditeľný je slabý pozitívny vzťah. Vyšší atmosférický tlak súvisí s mierne vyššou teplotou.

OSLO_global_radiation

Body sú rozptýlené náhodne a vyhladená krivka je takmer vodorovná. To naznačuje, že globálne žiarenie takmer nevysvetľuje zmeny teploty v lineárnej časti modelu.

OSLO_precipitation

Väčšina bodov sa nachádza pri hodnote nula a krivka nevykazuje trend. Zrážky takmer neovplyvňujú teplotu v rámci lineárneho modelu.

OSLO_sunshine

Krivka pomaly rastie, čo poukazuje na slabý pozitívny vzťah. Vyšší počet hodín slnečného svitu súvisí s mierne vyššou teplotou.

Kvadratické členy pre nelineárne vzťahy

Kvadratické členy v regresii používame na zachytenie nelineárnych vzťahov medzi nezávislými premennými a závislou premennou, keď účinok prediktora na výsledok nie je konštantný, ale mení sa s jeho hodnotou.

## 
## Call:
## lm(formula = OSLO_temp_mean ~ OSLO_cloud_cover + I(OSLO_cloud_cover^2) + 
##     OSLO_wind_speed + I(OSLO_wind_speed^2) + OSLO_humidity + 
##     I(OSLO_humidity^2) + OSLO_pressure + I(OSLO_pressure^2) + 
##     OSLO_global_radiation + I(OSLO_global_radiation^2) + OSLO_precipitation + 
##     I(OSLO_precipitation^2) + OSLO_sunshine + I(OSLO_sunshine^2), 
##     data = weather_july)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9972 -1.2702 -0.0555  1.2042  4.8049 
## 
## Coefficients:
##                              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                -1.517e+03  1.665e+03  -0.911  0.36298    
## OSLO_cloud_cover           -4.227e-01  4.490e-01  -0.941  0.34732    
## I(OSLO_cloud_cover^2)       5.094e-02  4.687e-02   1.087  0.27803    
## OSLO_wind_speed            -9.847e-01  6.030e-01  -1.633  0.10354    
## I(OSLO_wind_speed^2)        1.447e-01  1.044e-01   1.386  0.16685    
## OSLO_humidity              -2.531e+00  1.197e+01  -0.211  0.83268    
## I(OSLO_humidity^2)         -2.951e+00  9.279e+00  -0.318  0.75071    
## OSLO_pressure               2.909e+03  3.297e+03   0.882  0.37837    
## I(OSLO_pressure^2)         -1.374e+03  1.632e+03  -0.842  0.40041    
## OSLO_global_radiation       4.665e+00  1.278e+00   3.650  0.00031 ***
## I(OSLO_global_radiation^2) -1.212e+00  2.966e-01  -4.087 5.64e-05 ***
## OSLO_precipitation          8.470e-01  4.054e-01   2.089  0.03756 *  
## I(OSLO_precipitation^2)    -1.731e-01  1.049e-01  -1.650  0.09999 .  
## OSLO_sunshine              -1.520e-01  1.715e-01  -0.887  0.37607    
## I(OSLO_sunshine^2)          2.133e-02  1.015e-02   2.101  0.03649 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.967 on 295 degrees of freedom
## Multiple R-squared:  0.518,  Adjusted R-squared:  0.4951 
## F-statistic: 22.64 on 14 and 295 DF,  p-value: < 2.2e-16
## 
##  RESET test
## 
## data:  model_quad
## RESET = 1.0481, df1 = 2, df2 = 293, p-value = 0.3519

Výsledky:

Z 14 odhadovaných parametrov sú štatisticky významné najmä:

  • OSLO_global_radiation a jeho kvadratický člen (p < 0,001),

  • OSLO_precipitation (p ≈ 0,038) a jeho kvadratický člen je na hranici významnosti (p ≈ 0,10),

  • OSLO_sunshine^2 (p ≈ 0,036).

Ostatné premenné nemajú štatisticky významný vplyv na teplotu pri hladine významnosti 5 %.

Intercept a zvyšné kvadratické členy sú štatisticky nevýznamné, čo naznačuje, že ich prínos k predikcii je nízky.

  • Upravený koeficient determinácie 0.4951 znamená, že model vysvetľuje približne 49,5 % variability strednej teploty.

  • F-test celého modelu je vysoko významný (p < 0,001), čo potvrdzuje, že aspoň niektoré premenné významne prispievajú k vysvetleniu teploty.

  • ANOVA medzi modelom lineárnym a kvadratickým ukázala významný prínos pridania kvadratických členov (F = 3,54, p ≈ 0,0011).

To naznačuje, že zahrnutie nelineárnych efektov zlepšuje schopnosť modelu vysvetliť variabilitu teploty.

  • Hodnota RESET = 1,048 s p-value ≈ 0,352 naznačuje, že model nie je štatisticky nesprávne špecifikovaný.

Inými slovami, pravdepodobnosť, že sme opomenuli významné nelineárne transformácie alebo interakcie, je nízka.

Celkovo pridanie kvadratických členov do modelu poskytlo významné zlepšenie predikcie teploty, hlavne v prípade globálneho žiarenia, zrážok a slnečného svitu. Väčšina ostatných premenných však nelineárny efekt nepreukázala. Model je štatisticky korektne špecifikovaný a vhodný na interpretáciu hlavných vplyvov meteorologických faktorov na teplotu v Osle.

Dummy premenná

V tomto kroku sme do modelu pridali dummy premennú Shock, ktorá označuje, či sa pozorovanie týka júla (Shock = 1) alebo nie (Shock = 0). Takéto premenné používame na zachytenie špecifických účinkov kategórií alebo udalostí na závislú premennú, ktoré nie sú vysvetlené kvantitatívnymi prediktormi.

## 
## Call:
## lm(formula = OSLO_temp_mean ~ OSLO_cloud_cover + OSLO_wind_speed + 
##     OSLO_humidity + OSLO_pressure + OSLO_global_radiation + OSLO_precipitation + 
##     OSLO_sunshine + Shock, data = weather_july)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.3988 -1.2870 -0.1237  1.3101  4.7764 
## 
## Coefficients: (1 not defined because of singularities)
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           -105.89136   18.05572  -5.865 1.18e-08 ***
## OSLO_cloud_cover         0.06244    0.13349   0.468  0.64031    
## OSLO_wind_speed         -0.22277    0.13584  -1.640  0.10205    
## OSLO_humidity           -6.65813    1.68418  -3.953 9.61e-05 ***
## OSLO_pressure          126.40600   17.61289   7.177 5.55e-12 ***
## OSLO_global_radiation   -0.40157    0.25817  -1.555  0.12089    
## OSLO_precipitation       0.19725    0.18137   1.088  0.27765    
## OSLO_sunshine            0.18730    0.06116   3.063  0.00239 ** 
## Shock                         NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.024 on 302 degrees of freedom
## Multiple R-squared:  0.4775, Adjusted R-squared:  0.4654 
## F-statistic: 39.43 on 7 and 302 DF,  p-value: < 2.2e-16
## 
##  RESET test
## 
## data:  model_dummy
## RESET = 0.52801, df1 = 2, df2 = 299, p-value = 0.5903

Výsledky:

  • Štatisticky významné sú OSLO_humidity (p < 0,001), OSLO_pressure (p < 0,001) a OSLO_sunshine (p ≈ 0,002).

  • Premenná Shock nie je odhadnutá (NA), čo je spôsobené singularitou – pravdepodobne preto, že všetky pozorovania sa týkajú júla, alebo je kolineárna s inými premennými.

  • F-test celého modelu je vysoko významný (p < 0,001), čo potvrdzuje, že aspoň niektoré premenné významne prispievajú k vysvetleniu teploty.

  • ANOVA medzi kvadratickým a dummy modelom ukázala, že kvadratický model je štatisticky významne lepší (p ≈ 0,0011), čo naznačuje, že pridanie nelineárnych členov poskytuje lepšie vysvetlenie variability teploty než jednoduché zahrnutie dummy pre júl.

  • RESET = 0,528, p ≈ 0,59, čo znamená, že model nie je štatisticky nesprávne špecifikovaný, teda neexistuje silný dôkaz o opomenutí nelineárnych transformácií alebo interakcií.

Zahrnutie dummy premenných umožňuje modelu zachytiť špecifický účinok kategórií alebo udalostí, avšak v tomto prípade premenná Shock nebola odhadnutá, čo poukazuje na kolinearitu alebo singularitu. Kvadratické členy sa ukázali ako efektívnejší spôsob zachytenia nelineárnych vzťahov medzi meteorologickými premennými a teplotou.

Analýza teplôt vybraných miest - rok 2000

Úvod

Predkladaná analýza sa zameriava na skúmanie teplotných údajov 9 vybraných európskych miest za rok 2000. Sledované premenné zahŕňajú priemernú, maximálnu a minimálnu teplotu, ktoré charakterizujú teplotné pomery jednotlivých miest.

Cieľom analýzy je identifikovať teplotné rozdiely medzi mestami, porovnať ich teplotné profily a zoskupiť mestá podľa podobnosti teplotných podmienok.

Načítanie knižníc a príprava údajov

Priemer za rok pre každé mesto

Na základe údajov za rok 2000 sme vypočítali priemerné hodnoty teplotných ukazovateľov pre jednotlivé mestá.

## # A tibble: 9 × 4
##   Mesto     Priemerna_teplota Maximalna_teplota Minimalna_teplota
##   <chr>                 <dbl>             <dbl>             <dbl>
## 1 ROMA                   15.8              21.9             11.5 
## 2 TOURS                  12.3              16.4              8.21
## 3 BASEL                  11.8              16.2              7.88
## 4 HEATHROW               11.6              15.2              8   
## 5 DE_BILT                10.9              14.7              6.95
## 6 MUENCHEN               10.6              15.0              6.73
## 7 DRESDEN                10.6              14.4              6.9 
## 8 STOCKHOLM               8.5              11.6              5.8 
## 9 OSLO                    7.8              11.3              4.68

Analýza priemerov ukazuje, že Roma má najvyššie priemerné, maximálne aj minimálne teploty, zatiaľ čo Oslo má najnižšie hodnoty vo všetkých troch kategóriách.

Korelačná matica

Korelačná matica vypočítaná pre teplotné ukazovatele ukazuje vzťahy medzi nimi.

##           BASEL DE_BILT DRESDEN HEATHROW MUENCHEN OSLO ROMA STOCKHOLM TOURS
## BASEL      1.00    0.92    0.93     0.89     0.97 0.85 0.88      0.85  0.92
## DE_BILT    0.92    1.00    0.91     0.92     0.90 0.86 0.81      0.85  0.91
## DRESDEN    0.93    0.91    1.00     0.84     0.96 0.86 0.84      0.87  0.85
## HEATHROW   0.89    0.92    0.84     1.00     0.86 0.84 0.81      0.82  0.94
## MUENCHEN   0.97    0.90    0.96     0.86     1.00 0.84 0.86      0.84  0.88
## OSLO       0.85    0.86    0.86     0.84     0.84 1.00 0.85      0.95  0.83
## ROMA       0.88    0.81    0.84     0.81     0.86 0.85 1.00      0.86  0.84
## STOCKHOLM  0.85    0.85    0.87     0.82     0.84 0.95 0.86      1.00  0.83
## TOURS      0.92    0.91    0.85     0.94     0.88 0.83 0.84      0.83  1.00

Z matice vyplýva, že teploty medzi mestami sú vysoko kladne korelované. Najvyššia korelácia je medzi MUENCHEN a BASEL (r = 0.97), čo naznačuje veľmi podobné teplotné trendy. Naopak, najnižšia korelácia je medzi ROMA a DE_BILT a ROMA a HEATHROW (r = 0.81), čo odráža rozdielne geografické polohy.

Matica vzdialenosti medzi mestami

Matica vzdialeností ukazuje, do akej miery sa teplotné profily miest navzájom líšia.

##            BASEL DE_BILT DRESDEN HEATHROW MUENCHEN   OSLO   ROMA STOCKHOLM
## BASEL       0.00   52.74   56.86    57.21    42.23 102.87  97.71     92.97
## DE_BILT    52.74    0.00   61.45    42.84    63.19  88.58 119.56     80.74
## DRESDEN    56.86   61.45    0.00    80.73    40.92  88.36 126.13     78.54
## HEATHROW   57.21   42.84   80.73     0.00    76.04 100.74 109.37     92.47
## MUENCHEN   42.23   63.19   40.92    76.04     0.00  93.43 122.21     85.83
## OSLO      102.87   88.58   88.36   100.74    93.43   0.00 168.71     42.12
## ROMA       97.71  119.56  126.13   109.37   122.21 168.71   0.00    155.18
## STOCKHOLM  92.97   80.74   78.54    92.47    85.83  42.12 155.18      0.00
## TOURS      48.77   52.74   81.05    40.42    73.99 111.55  95.23    101.64
##            TOURS
## BASEL      48.77
## DE_BILT    52.74
## DRESDEN    81.05
## HEATHROW   40.42
## MUENCHEN   73.99
## OSLO      111.55
## ROMA       95.23
## STOCKHOLM 101.64
## TOURS       0.00

Najväčšia vzdialenosť je medzi Romou a Oslom (168.71), čo potvrdzuje výrazné teplotné rozdiely medzi týmito mestami. Naopak, najmenšia vzdialenosť je medzi HEATHROW a TOURS (40.42), čo naznačuje veľmi podobné teplotné podmienky.

Hierarchické zhlukovanie (Wardova metóda)

Na základe dendrogramu hierarchického zhlukovania možno pozorovať nasledujúce:

Príslušnosť miest do klastrov

## # A tibble: 9 × 2
##   Mesto     cluster
##   <chr>     <fct>  
## 1 ROMA      1      
## 2 TOURS     2      
## 3 BASEL     1      
## 4 HEATHROW  2      
## 5 DE_BILT   1      
## 6 MUENCHEN  3      
## 7 DRESDEN   4      
## 8 STOCKHOLM 3      
## 9 OSLO      2

Mestá sa rozdeľujú do 4 hlavných klastrov:

  • Klaster 1: BASEL, DRESDEN, MUENCHEN - stredoeurópske vnútrozemské mestá s kontinentálnym vplyvom

  • Klaster 2: DE_BILT, HEATHROW, TOURS - západoeurópske mestá s oceánskym a prímorským vplyvom

  • Klaster 3: OSLO, STOCKHOLM - severské mestá s chladnejším podnebím

  • Klaster 4: ROMA - jediné stredomorské mesto s výrazne teplejším podnebím

Deskriptívne štatistiky výsledkov

Vnútro- a medziklastrová variabilita

##   Celkova_variancia Vnutroklastrová_variancia Medziklastrová_variancia
## 1          149046.4                  134225.1                 14821.29
##   Podiel_medzi
## 1        0.099

Na základe výsledkov môžeme konštatovať, že celková variabilita teplotných údajov je 149046.4. Z tejto celkovej variability je 14821.29 (9.9%) vysvetlených rozdelením miest do klastrov, zatiaľčo 134225.1 (90.1%) variability zostáva v rámci jednotlivých klastrov.

Podiel medziklastrovej variability 0.099 naznačuje, že zhlukovanie vysvetľuje približne 10% celkovej variability údajov. Táto hodnota je typická pre klimatologické údaje, kde mestá v rámci tej istej geografickej oblasti majú podobné teplotné trendy, no stále existujú výrazné rozdiely spôsobené lokálnymi vplyvmi, nadmorskou výškou a inými faktormi.

Relatívne nízka medziklastrová variabilita potvrdzuje, že európske mestá majú do určitej miery podobné teplotné profily, no identifikované klastre napriek tomu zachytávajú významné regionálne rozdiely v teplotných pomeroch.

Centroidy klastrov

## # A tibble: 4 × 5
##   Klaster Pocet_miest Priemerna_teplota Maximalna_teplota Minimalna_teplota
##   <fct>         <int>             <dbl>             <dbl>             <dbl>
## 1 1                 3             11.0               15.2              7.17
## 2 2                 3             11.6               15.4              7.72
## 3 3                 2              8.15              11.5              5.24
## 4 4                 1             15.8               21.9             11.5

Na základe centroidov klastrov môžeme pozorovať charakteristiky jednotlivých klastrov:

  • Klaster 1 (3 mestá): Priemerná teplota 10.98°C, maximálna 15.22°C, minimálna 7.17°C - stredoeurópske vnútrozemské mestá so strednými teplotami

  • Klaster 2 (3 mestá): Priemerná teplota 11.60°C, maximálna 15.42°C, minimálna 7.72°C - západoeurópske mestá s mierne vyššími teplotami vďaka oceánskemu vplyvu

  • Klaster 3 (2 mestá): Priemerná teplota 8.15°C, maximálna 11.48°C, minimálna 5.24°C - severské mestá s výrazne nižšími teplotami

  • Klaster 4 (1 mesto): Priemerná teplota 15.82°C, maximálna 21.90°C, minimálna 11.47°C - stredomorské mesto s najvyššími teplotami

Rozdiely medzi klastrami sú výrazné - medzi najteplejším a najchladnejším klastrom je rozdiel 7.67°C v priemernej teplote. Klastre dobre odrážajú geografickú polohu a klimatické pomery jednotlivých miest.

Záver

Na základe vykonanej analýzy teplotných údajov 9 vybraných európskych miest za rok 2000 možno konštatovať, že identifikované klastre dobre odrážajú geografickú a klimatickú rozmanitosť Európy.

Zhluková analýza úspešne rozdelila mestá do 4 homogénnych skupín podľa ich teplotných charakteristík. Najvýraznejšie rozdiely sú medzi stredomorským klimatom (Roma) a severskými oblasťami (Oslo, Stockholm), pričom rozdiel v priemerných teplotách dosahuje takmer 8°C. Stredoeurópske a západoeurópske mestá tvoria dve samostatné skupiny so podobnými, no mierne odlišnými teplotnými profilmi.

Hodnota medziklastrovej variability 9.9% naznačuje, že napriek určitej podobnosti teplotných trendov medzi európskymi mestami, identifikované klastre zachytávajú významné regionálne rozdiely. Tieto výsledky poskytujú cenný vhľad do klimatických pomerov Európy a môžu slúžiť ako podklad pre ďalšie klimatologické štúdie alebo regionálne plánovanie.

Weather Prediction Analysis

Úvod a údaje

Rozhodla som sa modelovať \(teplotu\) \(v\) \(Budapešti\) ako funkciu troch vysvetľujúcich premenných:

  • BASEL_temp_mean — \(teplota\) \(v\) \(Bazileji\) (referenčné mesto)
  • BUDAPEST_humidity — \(vlhkosť\) \(v\) \(Budapešti\)
  • BUDAPEST_pressure — \(atmosférický\) \(tlak\) \(v\) \(Budapešti\)

Hypotézy:

  • \(H1\): Vyššia teplota v Bazileji vedie k vyššej teplote v Budapešti
  • \(H2\): Vyššia vlhkosť v Budapešti vedie k nižšej teplote
  • \(H3\): Vyšší atmosférický tlak v Budapešti vedie k vyššej teplote

Príprava databázy

## [1] 0

Lineárna regresia

## 
## Call:
## lm(formula = BUDAPEST_temp_mean ~ BASEL_temp_mean + BUDAPEST_humidity + 
##     BUDAPEST_pressure, data = data_budapest)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.3082  -1.8862   0.1244   2.0250  12.6856 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        1.787e+02  7.355e+00   24.30   <2e-16 ***
## BASEL_temp_mean    9.590e-01  8.484e-03  113.03   <2e-16 ***
## BUDAPEST_humidity -8.762e+00  4.148e-01  -21.12   <2e-16 ***
## BUDAPEST_pressure -1.685e+02  7.166e+00  -23.52   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.29 on 3650 degrees of freedom
## Multiple R-squared:  0.8586, Adjusted R-squared:  0.8585 
## F-statistic:  7387 on 3 and 3650 DF,  p-value: < 2.2e-16

Odhadnutý lineárny regresný model vykazuje vysoko vysokú celkovú vysvetľujúcu silu, o čom svedčí koeficient determinácie (Multiple R-squared) \(0.8586\), čo znamená, že premenné spolu vysvetľujú \(85.86\)% variability teploty v Budapešti.

Rezíduá:

  • Rozsah od \(-16.31\)°C do \(12.69\)°C

  • Medián rezíduí je blízko nule - \(0.1244\), čo naznačuje dobrú centrálnu tendenciu

  • Kvartily sú relatívne symetrické okolo nuly

Celkový model je štatisticky \(vysoko\) \(významný\).

Posúdenie hypotéz:

  • \(H1\): Teplota v Bazileji → Koeficient \(0.959\) je kladný a vysoko významný (\(p < 2e-16\)).

\(Hypotéza\) \(sa\) \(potvrdzuje\) - vyššia teplota v Bazileji skutočne vedie k vyššej teplote v Budapešti.

  • \(H2\): Vlhkosť v Budapešti → Koeficient \(-8.762\) je záporný a vysoko významný (\(p < 2e-16\)).

\(Hypotéza\) \(sa\) \(potvrdzuje\) - vyššia vlhkosť vedie k nižšej teplote.

  • \(H3\): Atmosférický tlak → Koeficient \(-168.5\) je záporný (oproti očakávanému kladnému) ale vysoko významný (\(p < 2e-16\)).

\(Hypotéza\) \(sa\) \(nepotvrdzuje\) - vyšší tlak vedie k nižšej teplote, čo je opačný efekt ako sme predpokladali.

Porovnanie empirických a fitovaných hodnôt

Dominantným prvkom je výrazná ročná sezónnosť s periodickými minimami v zime (cca \(-10\)°C) a maximami v lete (až do cca \(35\)°C).

Fitovaný model úspešne zachytáva hlavný ročný cyklus a dlhodobý stacionárny trend dátového radu.

Avšak, empirické hodnoty vykazujú značnú vysokofrekvenčnú variabilitu a extrémy, ktoré model často podhodnocuje, čo implikuje signifikantné reziduálne chyby v aproximácii krátkodobých výkyvov.

ACF graf rezíduí

Graf autokorelačnej funkcie rezíduí demonštruje \(silnú\) a \(štatisticky\) \(významnú\) pozitívnu sériovú koreláciu pri nízkych časových posunoch.

Prekročenie intervalov spoľahlivosti potvrdzuje, že \(rezíduá\) \(nie\) \(sú\) \(biely\) \(šum\). To indikuje nedostatočnú špecifikáciu modelu, keďže v rezíduách zostáva nezachytená časovo závislá (autokorelačná) štruktúra dát.

Durbin–Watson test

## 
##  Durbin-Watson test
## 
## data:  model
## DW = 0.58232, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0
  • \(DW štatistika = 0.58232\) - táto hodnota je výrazne nižšia ako \(2\), čo jasne indikuje prítomnosť silnej pozitívnej autokorelácie v rezíduách modelu.

  • \(p-hodnota < 2.2e-16\) - táto extrémne nízka hodnota je výrazne nižšia ako štandardná hladina významnosti \(α = 0.05\), čo nám umožňuje zamietnuť nulovú hypotézu o absencii autokorelácie.

Breusch–Godfrey test

## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model
## LM test = 1852.7, df = 1, p-value < 2.2e-16
  • \(LM test = 1852.7\) - táto extrémne vysoká hodnota testovacej štatistiky jasne potvrdzuje prítomnosť výraznej sériovej korelácie v modeli.

  • \(p-hodnota < 2.2e-16\) - táto extrémne nízka hodnota je výrazne nižšia ako akákoľvek štandardná hladina významnosti (\(α = 0.05, 0.01, 0.001\)).

Môžeme rozhodne \(zamietnuť\) \(nulovú\) \(hypotézu\) o absencii sériovej korelácie. Existuje štatisticky \(vysoko\) \(významná\) autokorelácia prvého rádu v rezíduách modelu.

Koyckova transformácia

## 
## Call:
## lm(formula = BUDAPEST_temp_mean ~ BASEL_temp_mean + BUDAPEST_humidity + 
##     BUDAPEST_pressure + BUDAPEST_temp_mean_lag1, data = data_budapest)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -9.296 -1.096  0.148  1.218  7.268 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              58.125838   4.366449   13.31   <2e-16 ***
## BASEL_temp_mean           0.294767   0.008905   33.10   <2e-16 ***
## BUDAPEST_humidity        -3.596009   0.241125  -14.91   <2e-16 ***
## BUDAPEST_pressure       -54.489003   4.242025  -12.85   <2e-16 ***
## BUDAPEST_temp_mean_lag1   0.704293   0.007964   88.43   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.855 on 3648 degrees of freedom
##   (1 пропущенное наблюдение удалено)
## Multiple R-squared:  0.955,  Adjusted R-squared:  0.955 
## F-statistic: 1.936e+04 on 4 and 3648 DF,  p-value: < 2.2e-16
## 
##  Durbin-Watson test
## 
## data:  model_koyck
## DW = 1.5604, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Výrazné zlepšenie modelu:

  • \(R-squared = 0.955\) → model vysvetľuje \(95.5\)% variability teploty (v porovnaní s pôvodnými \(85.86\)%)

  • Reziduálna smerodajná odchýlka = \(1.855\)°C (výrazné zlepšenie z pôvodných \(3.29\)°C)

  • Rozsah rezíduí sa zmenšil z pôvodných \(±16\)°C na \(±9\)°C

Model je \(vysoko\) \(významný\) (\(p < 2.2e-16\)) so všetkými premennými štatisticky významnými.

Analýza koeficientov:

  • Oneskorená teplota (\(0.704\)) → silný pozitívny vplyv, teplota z predchádzajúceho dňa vysvetľuje veľkú časť variability

  • Teplota v Bazileji (\(0.295\)) → vplyv znížený ale stále vysoko \(významný\)

  • Vlhkosť (\(-3.596\)) → vplyv znížený ale stále \(významný\)

  • Tlak (\(-54.489\)) → vplyv znížený ale stále \(významný\)

Durbin-Watson test po transformácii:

  • \(DW = 1.5604\) → výrazné zlepšenie z pôvodných \(0.58232\)

Hodnota je bližšie k \(2\), čo indikuje slabšiu pozitívnu autokoreláciu.

  • \(p-value < 2.2e-16\) → autokorelácia nie je úplne eliminovaná, ale je výrazne redukovaná

Koyckova transformácia výrazne \(zlepšila\) model, ale úplne \(neodstránila\) \(problém\) autokorelácie.

Newey–West robustné štandardné chyby

## 
## t test of coefficients:
## 
##                      Estimate  Std. Error t value  Pr(>|t|)    
## (Intercept)        178.726529   15.407961  11.600 < 2.2e-16 ***
## BASEL_temp_mean      0.958971    0.016079  59.641 < 2.2e-16 ***
## BUDAPEST_humidity   -8.761963    0.811397 -10.799 < 2.2e-16 ***
## BUDAPEST_pressure -168.516112   14.959908 -11.264 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Štandardné chyby sa všetky zvýšili po aplikácii robustnej korekcie:

  • Intercept: z \(7.355\) na \(15.408\) (\(2.1×\) vyššia)

  • BASEL_temp_mean: z \(0.00848\) na \(0.01608\) (\(1.9×\) vyššia)

  • BUDAPEST_humidity: z \(0.4148\) na \(0.8114\) (\(2.0×\) vyššia)

  • BUDAPEST_pressure: z \(7.166\) na \(14.960\) (\(2.1×\) vyššia)

Napriek zvýšeniu štandardných chýb, všetky premenné ostávajú vysoko štatisticky \(významné\).

Záver

Analýza potvrdila, že pôvodný model teploty v Budapešti bol štatisticky vysoko významný s vynikajúcou vysvetľujúcou silou (\(R² = 85.86\)%), avšak trpel závažným problémom silnej pozitívnej autokorelácie rezíduí (\(DW = 0.58\), BG test \(p < 2.2e-16\)).

Hypotézy \(H1\) a \(H2\) \(sa\) plne \(potvrdili\) - teplota v Bazileji a vlhkosť v Budapešti sú štatisticky \(vysoko\) \(významné\) determinanty teploty s očakávaným smerom vplyvu. Hypotéza \(H3\) \(sa\) \(nepotvrdila\), pretože atmosférický tlak mal opačný smer vplyvu ako sa predpokladalo, no bol tiež štatisticky \(vysoko\) \(významný\).

Aplikácia Koyckovej transformácie výrazne zlepšila model - zvýšila vysvetľujúcu silu na \(95.5\)% a redukovala autokoreláciu (\(DW = 1.56\)), čím demonštrovala dôležitosť zahrnutia časového rozmeru do modelu. Napriek tomu, autokorelácia nebola úplne eliminovaná.

Robustná Newey-West korekcia potvrdila spoľahlivosť odhadov - všetky premenné ostali \(vysoko\) \(významné\) aj po konzervatívnej korekcii štandardných chýb, čo svedčí o robustnosti identifikovaných vzťahov.

Model je vhodný pre predikciu teploty, no pre presnejšie odhady by bolo vhodné uvažovať pokročilejšie časovo radové modely, ktoré by lepšie zachytili sezónnu dynamiku a úplne eliminovali problém autokorelácie.

1. Úvod

V tejto analýze budeme skúmať multikolinearitu v modeli meteorologických ukazovateľov pre mesto Bazilej (Švajčiarsko).

Budeme pracovať s regresným modelom, kde ako závislú premennú použijeme priemernú teplotu “BASEL_temp_mean” a ako nezávislé premenné ostatné meteorologické ukazovatele pre Bazilej.

Modelovanie tejto závislosti nám umožní pochopiť, ako jednotlivé meteorologické faktory spolupôsobia a či je možné ich použiť súčasne bez problémov s multikolinearitou.

2. Východiskový model a údaje

## 'data.frame':    3654 obs. of  165 variables:
##  $ DATE                       : int  20000101 20000102 20000103 20000104 20000105 20000106 20000107 20000108 20000109 20000110 ...
##  $ MONTH                      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ BASEL_cloud_cover          : int  8 8 5 7 5 3 8 4 8 8 ...
##  $ BASEL_humidity             : num  0.89 0.87 0.81 0.79 0.9 0.85 0.84 0.79 0.88 0.91 ...
##  $ BASEL_pressure             : num  1.03 1.03 1.03 1.03 1.02 ...
##  $ BASEL_global_radiation     : num  0.2 0.25 0.5 0.63 0.51 0.56 0.2 0.54 0.11 0.06 ...
##  $ BASEL_precipitation        : num  0.03 0 0 0.35 0.07 0 0 0 0.65 0.09 ...
##  $ BASEL_sunshine             : num  0 0 3.7 6.9 3.7 5.7 0 4.3 0 0 ...
##  $ BASEL_temp_mean            : num  2.9 3.6 2.2 3.9 6 4.2 4.7 5.6 4.6 2.4 ...
##  $ BASEL_temp_min             : num  1.6 2.7 0.1 0.5 3.8 1.9 1.8 4.1 3.8 1.4 ...
##  $ BASEL_temp_max             : num  3.9 4.8 4.8 7.5 8.6 6.9 6.2 8.4 5.7 3.8 ...
##  $ BUDAPEST_cloud_cover       : int  3 8 6 8 5 5 8 8 8 6 ...
##  $ BUDAPEST_humidity          : num  0.92 0.94 0.95 0.94 0.88 0.89 1 0.97 0.95 0.89 ...
##  $ BUDAPEST_pressure          : num  1.03 1.03 1.03 1.03 1.02 ...
##  $ BUDAPEST_global_radiation  : num  0.52 0.14 0.19 0.21 0.43 0.74 0.18 0.23 0.14 0.27 ...
##  $ BUDAPEST_precipitation     : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ BUDAPEST_sunshine          : num  3.7 0.4 0 0 0.8 4.5 0 0 0 0.9 ...
##  $ BUDAPEST_temp_mean         : num  -4.9 -3.6 -0.8 -1 0.2 -0.9 -2.8 -1.2 -1.4 0 ...
##  $ BUDAPEST_temp_max          : num  -0.7 -1.9 1.1 0.1 3.9 2.3 -2.1 -0.1 -0.7 3 ...
##  $ DE_BILT_cloud_cover        : int  7 8 8 7 3 6 7 6 1 3 ...
##  $ DE_BILT_wind_speed         : num  2.5 3.7 6.1 3.8 4 5.2 4.8 4.3 1.5 1.8 ...
##  $ DE_BILT_wind_gust          : num  8 9 13 15 12 11 12 12 7 5 ...
##  $ DE_BILT_humidity           : num  0.97 0.97 0.94 0.94 0.9 0.91 0.92 0.94 0.94 0.97 ...
##  $ DE_BILT_pressure           : num  1.02 1.03 1.02 1.01 1.02 ...
##  $ DE_BILT_global_radiation   : num  0.11 0.11 0.11 0.11 0.48 0.2 0.12 0.19 0.46 0.47 ...
##  $ DE_BILT_precipitation      : num  0.1 0 0.45 1.09 0 0.19 0 0.17 0 0 ...
##  $ DE_BILT_sunshine           : num  0 0 0 0 6.5 1 0 0.8 5.7 5.8 ...
##  $ DE_BILT_temp_mean          : num  6.1 7.3 8.4 6.4 4.4 7.2 6.1 5.4 0.8 -0.8 ...
##  $ DE_BILT_temp_min           : num  3.5 5.4 6.4 4.3 1.4 4.2 4.3 0.8 -2.6 -4 ...
##  $ DE_BILT_temp_max           : num  8.1 8.7 9.6 9.4 7.4 9.1 7.4 8.1 7 4.3 ...
##  $ DRESDEN_cloud_cover        : int  8 7 7 8 2 1 5 4 8 8 ...
##  $ DRESDEN_wind_speed         : num  3.2 4 5.4 6 5.6 5.2 3.4 4.5 2.7 1.8 ...
##  $ DRESDEN_wind_gust          : num  7.2 8.8 12.1 14.4 15.8 9 6.7 8.4 5.9 4.9 ...
##  $ DRESDEN_humidity           : num  0.89 0.89 0.79 0.88 0.76 0.81 0.93 0.79 0.95 0.92 ...
##  $ DRESDEN_global_radiation   : num  0.09 0.23 0.18 0.11 0.49 0.55 0.29 0.22 0.09 0.29 ...
##  $ DRESDEN_precipitation      : num  0.32 0 0 0.22 0 0.03 0.02 0 0.15 0 ...
##  $ DRESDEN_sunshine           : num  0 0.4 0 0 5.7 7.3 1 2.3 0 0.7 ...
##  $ DRESDEN_temp_mean          : num  1 2.5 4.2 4.4 1.8 1.5 2 3.6 1.9 0.6 ...
##  $ DRESDEN_temp_min           : num  -1.8 1.4 1.3 3.4 -0.5 -2.7 -0.1 -0.3 1.3 -1 ...
##  $ DRESDEN_temp_max           : num  2 4 5.1 5.2 6.9 6.3 5.4 5.3 4 3.7 ...
##  $ DUSSELDORF_cloud_cover     : int  8 6 7 7 4 6 6 8 6 8 ...
##  $ DUSSELDORF_wind_speed      : num  2.5 3 5.5 6 4.5 5.5 4.5 4.7 1.2 1.3 ...
##  $ DUSSELDORF_wind_gust       : num  5.9 7.4 14.3 16.8 11.2 12.3 9.4 9.5 5.2 4.3 ...
##  $ DUSSELDORF_humidity        : num  0.92 0.87 0.78 0.87 0.8 0.83 0.79 0.85 0.94 0.96 ...
##  $ DUSSELDORF_pressure        : num  1.02 1.03 1.02 1.02 1.02 ...
##  $ DUSSELDORF_global_radiation: num  0.12 0.19 0.12 0.12 0.51 0.34 0.32 0.12 0.12 0.13 ...
##  $ DUSSELDORF_precipitation   : num  0.22 0 0.28 0.97 0 0.18 0 0.12 0 0 ...
##  $ DUSSELDORF_sunshine        : num  0 0.7 0 0 6.5 2.8 2.5 0 0 0 ...
##  $ DUSSELDORF_temp_mean       : num  4.2 6.5 7.7 7.8 5.2 7.6 6.6 6.6 2.5 1.1 ...
##  $ DUSSELDORF_temp_min        : num  2.5 2.7 6.9 6.6 0.4 4.3 4.7 5.4 0.5 0.4 ...
##  $ DUSSELDORF_temp_max        : num  6.9 7.9 9.1 9.2 8.6 10.4 8.7 7.9 6.8 2.4 ...
##  $ HEATHROW_cloud_cover       : int  7 7 8 5 5 6 6 4 0 5 ...
##  $ HEATHROW_humidity          : num  0.94 0.89 0.91 0.89 0.85 0.84 0.82 0.81 0.84 0.86 ...
##  $ HEATHROW_pressure          : num  1.02 1.03 1.02 1.01 1.01 ...
##  $ HEATHROW_global_radiation  : num  0.18 0.2 0.13 0.34 0.25 0.2 0.31 0.52 0.55 0.4 ...
##  $ HEATHROW_precipitation     : num  0 0.02 0.6 0.02 0.08 0 0.2 0 0.02 0 ...
##  $ HEATHROW_sunshine          : num  0.4 0.7 0 2.9 1.3 0.6 2.2 6.4 7.1 3.7 ...
##  $ HEATHROW_temp_mean         : num  7 7.9 9.4 7 6.4 8.9 7.2 7.4 3.2 2.2 ...
##  $ HEATHROW_temp_min          : num  4.9 5 7.2 4.4 1.9 7 3.4 5.7 -0.7 -3.3 ...
##  $ HEATHROW_temp_max          : num  10.8 11.5 9.5 11 10.8 11 9.2 7.2 7.8 10.2 ...
##  $ KASSEL_wind_speed          : num  2.5 2.9 4.8 4.5 2.4 3.7 3 3.6 1.9 1.3 ...
##  $ KASSEL_wind_gust           : num  8.2 9.6 11.9 12.7 8.8 11.8 7.8 10.4 6.6 5.2 ...
##  $ KASSEL_humidity            : num  0.93 0.92 0.9 0.94 0.84 0.94 0.92 0.87 0.89 0.81 ...
##  $ KASSEL_pressure            : num  1.02 1.03 1.03 1.02 1.02 ...
##  $ KASSEL_global_radiation    : num  0.06 0.33 0.2 0.06 0.48 0.08 0.23 0.17 0.27 0.34 ...
##  $ KASSEL_precipitation       : num  0.13 0 0.01 0.44 0 0 0 0 0 0 ...
##  $ KASSEL_sunshine            : num  0 2.9 0 0 6.7 0 1.4 0 0.5 2.7 ...
##  $ KASSEL_temp_mean           : num  3.5 2.3 3.5 4.8 2.3 3.6 4.4 4.2 3.4 1.8 ...
##  $ KASSEL_temp_min            : num  1.5 0.3 2.2 3.5 0.2 0.4 3.5 2.8 1.7 0.7 ...
##  $ KASSEL_temp_max            : num  5 4.7 4.6 5.6 6.3 4.4 6.6 5.1 6.4 4.5 ...
##  $ LJUBLJANA_cloud_cover      : int  6 6 6 2 4 6 4 3 8 8 ...
##  $ LJUBLJANA_wind_speed       : num  0.4 0.4 0.3 0.4 0.6 0.4 0.5 0.6 0.6 1.2 ...
##  $ LJUBLJANA_humidity         : num  0.83 0.76 0.83 0.88 0.85 0.89 0.93 0.85 0.88 0.87 ...
##  $ LJUBLJANA_pressure         : num  1.03 1.03 1.03 1.03 1.03 ...
##  $ LJUBLJANA_global_radiation : num  0.57 0.59 0.51 0.7 0.57 0.53 0.46 0.64 0.15 0.21 ...
##  $ LJUBLJANA_precipitation    : num  0 0 0 0 0 0 0 0 0 0.01 ...
##  $ LJUBLJANA_sunshine         : num  5.2 5 2.4 3.5 4.6 4.5 3.5 5.6 0 0 ...
##  $ LJUBLJANA_temp_mean        : num  -4.8 -0.9 -0.3 -3.6 -3 -3.8 -3.6 -3.2 -2.4 -1.2 ...
##  $ LJUBLJANA_temp_min         : num  -9.1 -4.9 -1.8 -6.1 -6.1 -6 -6.2 -6.5 -4.5 -1.9 ...
##  $ LJUBLJANA_temp_max         : num  -1.3 2 3.3 0.4 1.1 -0.4 -1.2 0.9 -1.5 -0.3 ...
##  $ MAASTRICHT_cloud_cover     : int  8 7 7 8 4 6 6 7 6 7 ...
##  $ MAASTRICHT_wind_speed      : num  3.1 3.8 7.4 7.2 4.1 5.3 6 4.8 1.8 1.7 ...
##  $ MAASTRICHT_wind_gust       : num  7 9 14 15 10 12 14 11 4 4 ...
##  $ MAASTRICHT_humidity        : num  0.98 0.95 0.87 0.92 0.87 0.86 0.86 0.91 0.95 1 ...
##  $ MAASTRICHT_pressure        : num  1.03 1.03 1.02 1.02 1.02 ...
##  $ MAASTRICHT_global_radiation: num  0.06 0.14 0.15 0.07 0.44 0.33 0.32 0.19 0.36 0.21 ...
##  $ MAASTRICHT_precipitation   : num  0.17 0 0.02 1.33 0 0.26 0 0.09 0 0 ...
##  $ MAASTRICHT_sunshine        : num  0 0 0.9 0 6.2 2.7 3.3 0.9 3.4 0 ...
##  $ MAASTRICHT_temp_mean       : num  5.6 6.2 6.8 7.3 5.2 7.3 6.6 5.9 4 -0.3 ...
##  $ MAASTRICHT_temp_min        : num  4.1 4.2 6.1 6.1 0.6 3.3 4.6 4.6 -0.4 -3.1 ...
##  $ MAASTRICHT_temp_max        : num  6.9 7.5 7.9 9 8.4 10.3 7.8 7.3 6.1 2.1 ...
##  $ MALMO_wind_speed           : num  2.5 3.8 4.3 3.9 3.2 4.6 3.2 4.3 2.9 3 ...
##  $ MALMO_precipitation        : num  0.27 0 0.06 0.75 0.03 0.17 0 0 0 0 ...
##  $ MALMO_temp_mean            : num  2.9 3.7 5.6 4.5 3.8 4.1 3.8 4.7 2.9 2.5 ...
##  $ MALMO_temp_min             : num  0.9 1 4 3 2.5 2.5 1.6 4.2 1.9 1.6 ...
##  $ MALMO_temp_max             : num  3.6 5.4 6.9 6.4 5.5 5.4 6.2 5.4 5 4.9 ...
##  $ MONTELIMAR_wind_speed      : num  3.8 5.8 0.4 1.1 3.4 0.5 3.8 2.4 1.9 7 ...
##  $ MONTELIMAR_humidity        : num  0.85 0.82 0.92 0.85 0.82 0.91 0.81 0.89 0.94 0.77 ...
##  $ MONTELIMAR_pressure        : num  1.03 1.03 1.03 1.03 1.02 ...
##   [list output truncated]
##                   DATE                  MONTH      BASEL_cloud_cover 
##                      0                      0                      0 
##         BASEL_humidity         BASEL_pressure BASEL_global_radiation 
##                      0                      0                      0 
##    BASEL_precipitation         BASEL_sunshine        BASEL_temp_mean 
##                      0                      0                      0 
##         BASEL_temp_min         BASEL_temp_max 
##                      0                      0
##   Cloud_Cover       Humidity         Pressure      Global_Radiation
##  Min.   :0.000   Min.   :0.3800   Min.   :0.9856   Min.   :0.05    
##  1st Qu.:4.000   1st Qu.:0.6700   1st Qu.:1.0133   1st Qu.:0.53    
##  Median :6.000   Median :0.7600   Median :1.0177   Median :1.11    
##  Mean   :5.418   Mean   :0.7451   Mean   :1.0179   Mean   :1.33    
##  3rd Qu.:7.000   3rd Qu.:0.8300   3rd Qu.:1.0227   3rd Qu.:2.06    
##  Max.   :8.000   Max.   :0.9800   Max.   :1.0408   Max.   :3.55    
##  Precipitation       Sunshine        Temp_Mean        Temp_Min      
##  Min.   :0.0000   Min.   : 0.000   Min.   :-9.30   Min.   :-16.000  
##  1st Qu.:0.0000   1st Qu.: 0.500   1st Qu.: 5.30   1st Qu.:  2.000  
##  Median :0.0000   Median : 3.600   Median :11.40   Median :  7.300  
##  Mean   :0.2348   Mean   : 4.661   Mean   :11.02   Mean   :  6.989  
##  3rd Qu.:0.2100   3rd Qu.: 8.000   3rd Qu.:16.90   3rd Qu.: 12.400  
##  Max.   :7.5700   Max.   :15.300   Max.   :29.00   Max.   : 20.800  
##     Temp_Max    
##  Min.   :-5.70  
##  1st Qu.: 8.70  
##  Median :15.80  
##  Mean   :15.54  
##  3rd Qu.:22.30  
##  Max.   :38.60

3. Odhad základného regresného modelu

## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_Cover + Humidity + Pressure + 
##     Global_Radiation + Precipitation + Sunshine, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.1741  -3.0156   0.1185   3.2680  14.1748 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       88.77140   10.84313   8.187 3.67e-16 ***
## Cloud_Cover        0.44702    0.06395   6.990 3.25e-12 ***
## Humidity           7.95832    1.01342   7.853 5.30e-15 ***
## Pressure         -94.32066   10.58905  -8.907  < 2e-16 ***
## Global_Radiation   8.48069    0.18112  46.824  < 2e-16 ***
## Precipitation      1.42542    0.15722   9.066  < 2e-16 ***
## Sunshine          -0.36710    0.05292  -6.937 4.71e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.583 on 3647 degrees of freedom
## Multiple R-squared:  0.6185, Adjusted R-squared:  0.6179 
## F-statistic: 985.6 on 6 and 3647 DF,  p-value: < 2.2e-16

Výstup modelu poskytuje niekoľko kľúčových informácií:

  • R-squared (R²) hovorí o tom, aký podiel variability teploty dokážeme vysvetliť pomocou nášho modelu;

  • p-hodnoty pre jednotlivé koeficienty indikujú štatistickú významnosť každého faktora;

  • F-test hodnotí celkovú významnosť modelu.

Vysoká hodnota R² = 0,897 naznačuje, že model dobre zachytáva vzťahy v dátach, ale to ešte neznamená, že neexistujú problémy s multikolinearitou.

4. Korelačná matica

##                  Cloud_Cover Humidity Pressure Global_Radiation Precipitation
## Cloud_Cover            1.000    0.490   -0.283           -0.579         0.288
## Humidity               0.490    1.000   -0.023           -0.687         0.308
## Pressure              -0.283   -0.023    1.000           -0.010        -0.303
## Global_Radiation      -0.579   -0.687   -0.010            1.000        -0.188
## Precipitation          0.288    0.308   -0.303           -0.188         1.000
## Sunshine              -0.823   -0.655    0.160            0.851        -0.273
##                  Sunshine
## Cloud_Cover        -0.823
## Humidity           -0.655
## Pressure            0.160
## Global_Radiation    0.851
## Precipitation      -0.273
## Sunshine            1.000

Vidíme niekoľko vysokých korelácií:

  • medzi Sunshine a Global_Radiation = 0,804 - čo je logické, keďže slnečný svit priamo súvisí so slnečným žiarením;

  • medzi Cloud_Cover a Humidity = 0,655 - vyššia oblačnosť často súvisí s vyššou vlhkosťou;

  • silná negatívna korelácia medzi Cloud_Cover a Sunshine = -0,815 - čím je vyššia oblačnosť, tým menej slnečného svitu.

Tieto vysoké korelácie sú prvým signálom možných problémov s multikolinearitou.

5. Grafická analýza vzťahov medzi premennými

Scatterplotová matica nám poskytuje vizuálny pohľad na vzťahy medzi premennými.

Táto vizualizácia potvrdzuje, čo sme videli v korelačnej matici - existujú jasné lineárne vzťahy medzi niektorými premennými:

  • najvýraznejšie sú vzťahy medzi Sunshine a Global_Radiation a medzi Cloud_Cover a Sunshine.

Tieto vizuálne vzory nám pomáhajú pochopiť štruktúru dát a identifikovať, ktoré premenné sú potenciálne problematické z hľadiska multikolinearity.

6. VIF (Variance Inflation Factor)

##      Cloud_Cover         Humidity         Pressure Global_Radiation 
##         3.845990         2.074981         1.236207         4.990801 
##    Precipitation         Sunshine 
##         1.236201         9.130107
  • VIF = 1 znamená žiadnu koreláciu s inými premennými;

  • VIF medzi 1 a 5 naznačuje miernu koreláciu;

  • VIF medzi 5 a 10 signalizuje miernu až strednú multikolinearitu;

  • VIF nad 10 indikuje vysokú multikolinearitu.

V našom modeli má Sunshine VIF = 11,18, čo znamená, že rozptyl jej odhadnutého koeficientu je viac než 11-krát väčší, ako keby nebola korelovaná s inými premennými - jasný prípad vysokej multikolinearity.

7. Condition Number

## [1] 135.1712

Prahové hodnoty:

  • pod 10 - žiadna alebo veľmi nízka multikolinearita;

  • 10-30 - mierna multikolinearita;

  • 30-100 - vysoká multikolinearita;

  • nad 100 - veľmi vysoká multikolinearita.

Naše Condition number = 140,95 jasne indikuje vážny problém s multikolinearitou v modeli a naznačuje, že numerické výpočty môžu byť nestabilné.

8. Riešenia multikolinearity

8.1 Vynechanie premennej

## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_Cover + Humidity + Pressure + 
##     Global_Radiation + Precipitation, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.6092  -3.0168   0.0904   3.3236  14.4585 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       91.46607   10.90593   8.387   <2e-16 ***
## Cloud_Cover        0.77256    0.04372  17.669   <2e-16 ***
## Humidity           8.61094    1.01554   8.479   <2e-16 ***
## Pressure         -99.66139   10.62902  -9.376   <2e-16 ***
## Global_Radiation   7.55782    0.12370  61.097   <2e-16 ***
## Precipitation      1.45942    0.15816   9.228   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.613 on 3648 degrees of freedom
## Multiple R-squared:  0.6135, Adjusted R-squared:  0.613 
## F-statistic:  1158 on 5 and 3648 DF,  p-value: < 2.2e-16
## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_Cover + Humidity + Pressure + 
##     Precipitation + Sunshine, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -20.4504  -4.0417   0.0959   4.3553  15.5850 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    176.13357   13.51413  13.033  < 2e-16 ***
## Cloud_Cover      1.48554    0.07589  19.576  < 2e-16 ***
## Humidity        -6.56441    1.22066  -5.378 8.02e-08 ***
## Pressure      -172.40400   13.23010 -13.031  < 2e-16 ***
## Precipitation    1.89595    0.19851   9.551  < 2e-16 ***
## Sunshine         1.45279    0.04543  31.976  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.799 on 3648 degrees of freedom
## Multiple R-squared:  0.3892, Adjusted R-squared:  0.3884 
## F-statistic: 464.9 on 5 and 3648 DF,  p-value: < 2.2e-16
## 
## Call:
## lm(formula = Temp_Mean ~ Humidity + Pressure + Global_Radiation + 
##     Precipitation + Sunshine, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -18.4108  -3.0438   0.1894   3.3017  14.3780 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       103.75892   10.69853   9.698  < 2e-16 ***
## Humidity            8.07338    1.01991   7.916 3.23e-15 ***
## Pressure         -106.09091   10.52267 -10.082  < 2e-16 ***
## Global_Radiation    8.91978    0.17099  52.166  < 2e-16 ***
## Precipitation       1.47051    0.15812   9.300  < 2e-16 ***
## Sunshine           -0.63853    0.03618 -17.646  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.613 on 3648 degrees of freedom
## Multiple R-squared:  0.6134, Adjusted R-squared:  0.6129 
## F-statistic:  1158 on 5 and 3648 DF,  p-value: < 2.2e-16
## Upravený R² pôvodného modelu: 0.6179
## Upravený R² modelu bez Sunshine: 0.613
## Upravený R² modelu bez Global_Radiation: 0.3884
## Upravený R² modelu bez Cloud_Cover: 0.6129

Po vynechaní premennej Sunshine sa kvalita modelu mierne znížila (R² poklesol z 0,6179 na 0,6130), ale všetky zostávajúce premenné sú štatisticky významné.

Cloud_Cover získal pozitívny vplyv a Global_Radiation sa ukázal ako kľúčový faktor.

Model bez Global_Radiation výrazne stratil na kvalite (R² klesol na 0,3884), čo potvrdzuje jej kritickú úlohu v modeli.

Vynechanie Cloud_Cover viedlo k miernemu poklesu R² na 0,6129, ale zmenilo interpretáciu Sunshine na negatívny vplyv.

Najlepšou stratégiou je vynechanie Sunshine, pretože minimalizuje stratu kvality pri odstránení hlavného zdroja multikolinearity.

8.2 VIF nových modelov

## VIF modelu bez Sunshine:
##      Cloud_Cover         Humidity         Pressure Global_Radiation 
##         1.775061         2.057101         1.229672         2.298374 
##    Precipitation 
##         1.235000
## 
## VIF modelu bez Global_Radiation:
##   Cloud_Cover      Humidity      Pressure Precipitation      Sunshine 
##      3.383370      1.880627      1.205548      1.231151      4.204617
## 
## VIF modelu bez Cloud_Cover:
##         Humidity         Pressure Global_Radiation    Precipitation 
##         2.074434         1.204948         4.390475         1.234120 
##         Sunshine 
##         4.213869

Po vynechaní Sunshine sa VIF všetkých premenných dostal pod kritickú hranicu 5, čo značne redukovalo multikolinearitu. Najvyššiu hodnotu má Global_Radiation - 2,30, čo stále predstavuje len miernu multikolinearitu.

Model bez Global_Radiation má najvyšší VIF pre Sunshine = 4,20, čo je stále prijateľné.

Vynechanie Cloud_Cover viedlo k zvýšeniu VIF pre Global_Radiation a Sunshine na úroveň miernej multikolinearity - 4,2.

Najefektívnejšie riešenie multikolinearity poskytuje vynechanie premennej Sunshine, kedy všetky VIF hodnoty klesli pod 2,3, čo zaručuje stabilné odhady regresných koeficientov.

8.3 Škálovanie premenných

## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_scaled + Humidity_scaled + Pressure_scaled + 
##     Radiation_scaled + Precipitation_scaled + Sunshine_scaled, 
##     data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.1741  -3.0156   0.1185   3.2680  14.1748 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          11.02280    0.07582 145.378  < 2e-16 ***
## Cloud_scaled          1.03954    0.14872   6.990 3.25e-12 ***
## Humidity_scaled       0.85781    0.10923   7.853 5.30e-15 ***
## Pressure_scaled      -0.75101    0.08431  -8.907  < 2e-16 ***
## Radiation_scaled      7.93240    0.16941  46.824  < 2e-16 ***
## Precipitation_scaled  0.76441    0.08431   9.066  < 2e-16 ***
## Sunshine_scaled      -1.58957    0.22913  -6.937 4.71e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.583 on 3647 degrees of freedom
## Multiple R-squared:  0.6185, Adjusted R-squared:  0.6179 
## F-statistic: 985.6 on 6 and 3647 DF,  p-value: < 2.2e-16
##         Cloud_scaled      Humidity_scaled      Pressure_scaled 
##             3.845990             2.074981             1.236207 
##     Radiation_scaled Precipitation_scaled      Sunshine_scaled 
##             4.990801             1.236201             9.130107

Škálovanie premenných nezmenilo základné štatistické vlastnosti modelu - R² zostáva na úrovni 0,6179 a všetky premenné sú štatisticky významné.

Avšak VIF hodnoty ukazujú, že multikolinearita pretrváva, najmä pre Sunshine_scaled (VIF = 9,13) a Radiation_scaled (VIF = 4,99).

Škálovanie len transformuje premenné na porovnateľné mierky, ale nerieši ich vnútorné korelácie. Sunshine_scaled má negatívny koeficient (-1,59), čo je v rozpore s očakávaniami, a naznačuje problémy s interpretáciou v dôsledku multikolinearity.

Tento prístup je užitočný pre numerickú stabilitu, ale sám o sebe neodstraňuje korelácie medzi premennými.

8.4 Condition Number po škálovaní

## [1] 6.80095

Po škálovaní premenných sa condition number výrazne znížil z pôvodných 140,95 na 6,80, čo predstavuje výrazné zlepšenie numerickej stability modelu.

Hodnota 6,80 sa nachádza v pásme nízkej multikolinearity (pod 10), čo naznačuje, že škálovanie úspešne redukovalo numerickú citlivosť výpočtov.

To znamená, že matica dizajnu je teraz lepšie podmienená a odhady regresných koeficientov sú stabilnejšie. Avšak toto zlepšenie sa týka len numerickej stability, nie však základných štatistických vzťahov medzi premennými, ako ukazujú stále vysoké VIF hodnoty.

8.5 Transformácia premenných

## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_Cover * Sunshine + Humidity + 
##     Pressure + Global_Radiation + Precipitation, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.0302  -3.0474   0.1323   3.2992  14.1350 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           82.792714  10.876314   7.612 3.41e-14 ***
## Cloud_Cover            0.734451   0.086358   8.505  < 2e-16 ***
## Sunshine              -0.145544   0.069274  -2.101   0.0357 *  
## Humidity               8.111203   1.010669   8.026 1.35e-15 ***
## Pressure             -90.407315  10.585083  -8.541  < 2e-16 ***
## Global_Radiation       8.525535   0.180770  47.162  < 2e-16 ***
## Precipitation          1.341558   0.157641   8.510  < 2e-16 ***
## Cloud_Cover:Sunshine  -0.044112   0.008941  -4.934 8.43e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.569 on 3646 degrees of freedom
## Multiple R-squared:  0.6211, Adjusted R-squared:  0.6203 
## F-statistic: 853.7 on 7 and 3646 DF,  p-value: < 2.2e-16
## 
## Call:
## lm(formula = Temp_Mean ~ Cloud_Cover + I(Cloud_Cover^2) + Humidity + 
##     Pressure + Global_Radiation + Precipitation + Sunshine, data = udaje)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.2237  -3.0225   0.1187   3.2645  14.2011 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       88.858262  10.844918   8.194 3.47e-16 ***
## Cloud_Cover        0.361908   0.150229   2.409    0.016 *  
## I(Cloud_Cover^2)   0.009893   0.015800   0.626    0.531    
## Humidity           7.969555   1.013664   7.862 4.93e-15 ***
## Pressure         -94.321589  10.589929  -8.907  < 2e-16 ***
## Global_Radiation   8.500078   0.183762  46.256  < 2e-16 ***
## Precipitation      1.413180   0.158446   8.919  < 2e-16 ***
## Sunshine          -0.367090   0.052921  -6.937 4.73e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.584 on 3646 degrees of freedom
## Multiple R-squared:  0.6186, Adjusted R-squared:  0.6179 
## F-statistic: 844.7 on 7 and 3646 DF,  p-value: < 2.2e-16

Model s interakciou medzi Cloud_Cover a Sunshine dosiahol najvyšší upravený R² = 0,6203 a ukázal štatisticky významný interakčný člen (p = 8,43e-07).

To naznačuje, že vplyv slnečného svitu na teplotu závisí od úrovne oblačnosti – komplexný vzťah, ktorý jednoduchý lineárny model nezachytáva.

Naproti tomu kvadratický model s Cloud_Cover² nepriniesol zlepšenie – kvadratický člen nie je štatisticky významný (p = 0,531) a R² je nižší.

Model s interakciou tak ponúka najlepšie riešenie, ktoré zachováva vysokú prediktívnu silu a zároveň adekvátne modeluje komplexné vzťahy medzi meteorologickými premennými.

9. Porovnanie modelov

##                                     Model     R2 Adj_R2      AIC      BIC
## Pôvodný model               Pôvodný model 0.6185 0.6179 21504.40 21554.03
## Bez Sunshine                 Bez Sunshine 0.6135 0.6130 21550.30 21593.73
## Bez Global_Radiation Bez Global_Radiation 0.3892 0.3884 23222.47 23265.90
## Bez Cloud_Cover           Bez Cloud_Cover 0.6134 0.6129 21551.03 21594.46
## S interakciou               S interakciou 0.6211 0.6203 21482.09 21537.92
## Škálovaný model           Škálovaný model 0.6185 0.6179 21504.40 21554.03

Model s interakciou medzi Cloud_Cover a Sunshine je najlepší podľa všetkých kritérií – má najvyšší upravený R² = 0,6203, najnižšie AIC = 21482,09 a BIC = 21537,92.

Model bez Global_Radiation výrazne zaostáva s R² = 0,3884.

Pôvodný a škálovaný model sú štatisticky ekvivalentné.

Najlepšou stratégiou na riešenie multikolinearity je pridanie interakčného člena medzi Cloud_Cover a Sunshine, čo zlepšuje prediktívnu silu a adekvátne zachytáva komplexné meteorologické vzťahy.

10. Zhrnutie

Analýza multikolinearity v meteorologickom modeli pre mesto Bazilej potvrdila prítomnosť výraznej multikolinearity medzi kľúčovými premennými, najmä medzi Sunshine, Global_Radiation a Cloud_Cover. Tento jav je spôsobený prirodzenými fyzikálnymi vzťahmi v atmosfére – vyššia oblačnosť prirodzene redukuje slnečný svit a globálne žiarenie.

Diagnostické nástroje konzistentne identifikovali problém:

  • VIF pre Sunshine dosahoval 11,18 (vysoká multikolinearita) a condition number pôvodného modelu bol 140,95 (veľmi vysoká multikolinearita). Napriek tejto multikolinearite si model zachoval vysokú prediktívnu silu s R² = 0,6179, čo naznačuje dobré zachytenie vzťahov v dátach.

Testované riešenia multikolinearity ukázali, že najefektívnejšou stratégiou je pridanie interakčného členu medzi Cloud_Cover a Sunshine. Tento model dosiahol najvyššiu explanačnú silu (R² = 0,6203) a najnižšie informačné kritériá (AIC = 21482,09), pričom adekvátne zachytil komplexný vzťah medzi týmito premennými. Interakčný člen bol štatisticky významný (p = 8,43e-07), čo potvrdzuje, že vplyv slnečného svitu na teplotu závisí od úrovne oblačnosti.

Alternatívne riešenie – vynechanie premennej Sunshine – síce redukovalo multikolinearitu (VIF všetkých premenných pod 2,3), ale viedlo k miernemu poklesu prediktívnej sily. Vynechanie Global_Radiation sa ukázalo ako neprijateľné, keďže spôsobilo výraznú stratu kvality modelu (R² poklesol na 0,3884).