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.
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)
rm(list=ls())
udaje <- read.csv("weather_prediction_dataset.csv")
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")]
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
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))
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.
par(mfrow = c(2, 2))
plot(model)
par(mfrow = c(1, 1))
Úč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ý.
Úč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ý.
Úč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.
Úč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.
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.
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
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.
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.
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.
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)
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é.
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.
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.
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())
## 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 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 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.
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 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.
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ý.
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 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.
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.
Vyhladená krivka mierne klesá, čo poukazuje na slabý negatívny vzťah. To znamená, že pri vyššej vlhkosti má teplota tendenciu mierne klesať.
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.
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.
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.
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 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.
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.
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.
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 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 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 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.
Na základe dendrogramu hierarchického zhlukovania možno pozorovať nasledujúce:
## # 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
## 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.
## # 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.
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.
Rozhodla som sa modelovať \(teplotu\) \(v\) \(Budapešti\) ako funkciu troch vysvetľujúcich premenných:
Hypotézy:
## [1] 0
##
## 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:
\(Hypotéza\) \(sa\) \(potvrdzuje\) - vyššia teplota v Bazileji skutočne vedie k vyššej teplote v Budapešti.
\(Hypotéza\) \(sa\) \(potvrdzuje\) - vyššia vlhkosť vedie k nižšej teplote.
\(Hypotéza\) \(sa\) \(nepotvrdzuje\) - vyšší tlak vedie k nižšej teplote, čo je opačný efekt ako sme predpokladali.
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.
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
##
## 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 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.
##
## 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:
Hodnota je bližšie k \(2\), čo indikuje slabšiu pozitívnu autokoreláciu.
Koyckova transformácia výrazne \(zlepšila\) model, ale úplne \(neodstránila\) \(problém\) autokorelácie.
##
## 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é\).
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.
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.
## '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
##
## 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.
## 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.
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:
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.
## 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.
## [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é.
##
## 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.
## 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.
##
## 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.
## [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.
##
## 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.
## 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.
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:
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).