Úvod

Tento dokument analyzuje dataset DailyDelhiClimateTest, ktorý obsahuje denné klimatické údaje z Dillí v období roka 2017.
Dataset obsahuje premenné:

Cieľom dokumentu je zopakovať analýzy z Cvicenie9 na tvojich vlastných dátach.

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lubridate)
library(GGally)

data <- read.csv("DailyDelhiClimateTest.csv")
data$date <- ymd(data$date)

summary(data)
##       date               meantemp        humidity       wind_speed    
##  Min.   :2017-01-01   Min.   :11.00   Min.   :17.75   Min.   : 1.387  
##  1st Qu.:2017-01-29   1st Qu.:16.44   1st Qu.:39.62   1st Qu.: 5.564  
##  Median :2017-02-26   Median :19.88   Median :57.75   Median : 8.069  
##  Mean   :2017-02-26   Mean   :21.71   Mean   :56.26   Mean   : 8.144  
##  3rd Qu.:2017-03-26   3rd Qu.:27.71   3rd Qu.:71.90   3rd Qu.:10.069  
##  Max.   :2017-04-24   Max.   :34.50   Max.   :95.83   Max.   :19.314  
##   meanpressure 
##  Min.   :  59  
##  1st Qu.:1007  
##  Median :1013  
##  Mean   :1004  
##  3rd Qu.:1017  
##  Max.   :1023
glimpse(data)
## Rows: 114
## Columns: 5
## $ date         <date> 2017-01-01, 2017-01-02, 2017-01-03, 2017-01-04, 2017-01-…
## $ meantemp     <dbl> 15.91304, 18.50000, 17.11111, 18.70000, 18.38889, 19.3181…
## $ humidity     <dbl> 85.86957, 77.22222, 81.88889, 70.05000, 74.94444, 79.3181…
## $ wind_speed   <dbl> 2.743478, 2.894444, 4.016667, 4.545000, 3.300000, 8.68181…
## $ meanpressure <dbl> 59.000, 1018.278, 1018.333, 1015.700, 1014.333, 1011.773,…

##Vývoj priemernej teploty

ggplot(data, aes(x = date, y = meantemp)) +
geom_line(color = "blue") +
labs(title = "Denná priemerná teplota v Dillí",
x = "Dátum",
y = "Teplota (°C)") +
theme_minimal()

Zobrazený graf prezentuje vývoj dennej priemernej teploty v stupňoch celzia v Dillí v priebehu času od januára do konca apríla. Časový rad jasne demonštruje rastúci trend, ktorý je typický pre prechod zo zimy do jari a skorého leta na severnej pologuli. Počiatočné teploty v januári sa pohybovali prevažne medzi10 a 20 stupňami, s výraznými krátkodobými poklesmi. Od februára do apríla je pozorovateľný postupné oscilujúce zvyšovanie teploty, pričom najvyššie hodnoty, presahujúce 30 stupňov, boli zaznamenané koncom sledovaného obdobia. Graf potvrdzuje predpokladanú sezónnu variabilitu, ktorá kulminuje v rast teplôt s blížiacim sa letným obdobím.

##Vývoj vlhkosti

ggplot(data, aes(x = date, y = humidity)) +
geom_line(color = "darkgreen") +
labs(title = "Denná vlhkosť vzduchu",
x = "Dátum",
y = "Vlhkosť (%)") +
theme_minimal()

Zobrazený graf zachytáva časový rad dennej vlhkosti vzduchu (v percentách) od januára do konca apríla. Na začiatku sledovaného obdobia, v januári a februári, sa vlhkosť vzduchu pohybovala na vysokých úrovniach, prevažne medzi 60% a 85%. V priebehu celého štvrťroka je pozorovateľný výrazný a konzistentný klesajúci trend dennej vlhkosti. Na konci obdobia, v apríli, hodnoty klesli na najnižšie úrovne, s minimami blížiacimi sa k 50%. Tento trend je typický pre prechod z chladnejších a vlhkejších zimných mesiacov do suchších jarných mesiacov a môže korelovať so stúpajúcimi teplotami.

##Vývoj rýchlosti vetra

ggplot(data, aes(x = date, y = wind_speed)) +
geom_line(color = "purple") +
labs(title = "Denná rýchlosť vetra",
x = "Dátum",
y = "Rýchlosť vetra") +
theme_minimal()

Zobrazený graf vizualizuje časový rad dennej rýchlosti vetra od januára do konca apríla. Na rozdiel od teploty a vlhkosti, rýchlosť vetra nepreukazuje jasný dlhodobý trend (rastúci alebo klesajúci) v priebehu sledovaného obdobia. Dominuje tu vysoká denná variabilita, kde sa hodnoty často menia medzi minimami blížiacimi sa k 0 m/s a maximálnymi nárazmi presahujúcimi 0 m/s. Najvyššie špičky rýchlosti vetra, blížiace sa k 20 m/s, sú viditeľné najmä koncom marca a v priebehu apríla. Celkovo je rýchlosť vetra charakterizovaná náhodnou fluktuáciou bez zjavného sezónneho vzoru na úrovni štvrťroka.

##Lineárna regresia:

#Teplota ~ Vlhkosť + Rýchlosť vetra + Tlak

model <- lm(meantemp ~ humidity + wind_speed + meanpressure, data = data)
summary(model)
## 
## Call:
## lm(formula = meantemp ~ humidity + wind_speed + meanpressure, 
##     data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.4346 -2.3787  0.0088  2.3849  7.3508 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  42.823718   3.741722  11.445   <2e-16 ***
## humidity     -0.296567   0.017141 -17.302   <2e-16 ***
## wind_speed   -0.140056   0.091436  -1.532    0.128    
## meanpressure -0.003272   0.003464  -0.945    0.347    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.261 on 110 degrees of freedom
## Multiple R-squared:  0.744,  Adjusted R-squared:  0.737 
## F-statistic: 106.6 on 3 and 110 DF,  p-value: < 2.2e-16

Zostavený regresný model bol navrhnutý na predpovedanie priemernej dennej teploty na základe vlhkosti, rýchlosti vetra a tlaku. Model sa ukázal ako silný nástroj na vysvetlenie variability teploty, keďže takmer tri štvrtiny všetkých zmien teploty sú vysvetlené zahrnutými prediktormi. Kľúčové zistenie je, že vlhkosť vzduchu má vysoko signifikantný a negatívny vplyv na teplotu, čo znamená, že čím vyššia je vlhkosť, tým nižšia je teplota, a tento vzťah nie je náhodný. Naopak, rýchlosť vetra a priemerný tlak sa v tomto modeli nepreukázali ako štatisticky významné prediktory teploty. Celkovo je však celý regresný model ako súbor štatisticky významný, čo potvrdzuje jeho relevantnosť pri analýze vzájomných vzťahov týchto premenných.

##Diagnostika modelu

par(mfrow = c(2,2))
plot(model)
## Warning in sqrt(crit * p * (1 - hh)/hh): NaNs produced
## Warning in sqrt(crit * p * (1 - hh)/hh): NaNs produced

par(mfrow = c(1,1))

Zobrazené diagnostické grafy slúžia na overenie základných predpokladov lineárnej regresie (model, ktorý ste predtým analyzovali). Graf Residuals vs Fitted ukazuje, že predpoklad linearity je splnený, pretože reziduá sú rovnomerne rozptýlené okolo vodorovnej línie bez zjavného zakrivenia. Graf Normal Q-Q svedčí o tom, že reziduá približne sledujú normálne rozdelenie, hoci mierne odchýlky na extrémnych koncoch (chvostoch) sú viditeľné. Graf Scale-Location naznačuje, že predpoklad homoscedasticity je splnený, pretože rozptyl štandardizovaných reziduálov je stály v celom rozsahu prispôsobených hodnôt. Graf Residuals vs Leverage neidentifikuje žiadne body, ktoré by prekročili Cookovu vzdialenosť, čo znamená, že v dátach sa nenachádzajú žiadne extrémne vplyvné pozorovania, ktoré by mohli výrazne skresľovať výsledky regresie.

##Autokorelácia teploty

acf(data$meantemp, main = "ACF - Priemerná teplota")

Zobrazený graf Autokorelačnej funkcie (ACF) skúma závislosť medzi aktuálnou a predchádzajúcimi hodnotami priemernej teploty. Prvý stĺpec (lag 1) vykazuje takmer perfektnú kladnú autokoreláciu, čo signalizuje, že teplota v daný deň je silne ovplyvnená teplotou z predchádzajúceho dňa. Autokorelácia klesá pomaly a plynulo so zvyšovaním časového oneskorenia (lag), pričom signifikantne prekračuje modré hranice spoľahlivosti aj pri lag 20. Pomalé znižovanie závislosti je typickým znakom pre nestacionárne časové rady, ktoré obsahujú dlhodobý trend alebo sezónnosť, ako bolo pozorované v pôvodnom grafe teploty. Tento výsledok potvrdzuje, že modelovanie teplotného časového radu si vyžaduje zohľadnenie dlhodobej pamäte a trendovej zložky (napr. pomocou diferencovania).

##Sezónnosť teploty

ggplot(data, aes(x = month(date), y = meantemp)) +
stat_summary(fun = mean, geom = "line") +
labs(title = "Priemerná teplota podľa mesiaca",
x = "Mesiac",
y = "Priemerná teplota") +
theme_minimal()

Tento graf vizuálne potvrdzuje sezónny vzor v teplotných dátach agregáciou priemernej dennej teploty do mesačných hodnôt. Výsledná krivka zobrazuje silný a monotónne rastúci trend od prvého mesiaca (január) až po štvrtý mesiac (apríl). Priemerná teplota začína v januári na hodnote približne 16 stupňov a stabilne stúpa. Najvýraznejší nárast priemernej teploty je viditeľný medzi tretím a štvrtým mesiacom, kde krivka stúpa strmšie a v apríli dosahuje hodnotu mierne nad 30 stupňov. Tento silný lineárny trend medzi mesiacmi je hlavnou príčinou pomalého poklesu autokorelácie (ACF), a jasne poukazuje na nástup letného obdobia.