Tento dokument analyzuje dataset DailyDelhiClimateTest.csv, ktorý obsahuje dennú klímu v Dillí. Dáta obsahujú 114 pozorovaní a tieto premenné:
date — dátum meraniameantemp — priemerná denná teplota (°C)humidity — priemerná relatívna vlhkosť (%)wind_speed — priemerná rýchlosť vetrameanpressure — priemerný atmosférický tlakCieľom analýzy je overiť špecifikáciu modelu pomocou Ramsey RESET testu, preskúmať možné nelinearity a transformácie, a porovnať alternatívne modely (lineárny, kvadratický, a model s lomom podľa rýchlosti vetra).
date meantemp humidity wind_speed meanpressure
Length:114 Min. :11.00 Min. :17.75 Min. : 1.387 Min. : 59
Class :character 1st Qu.:16.44 1st Qu.:39.62 1st Qu.: 5.564 1st Qu.:1007
Mode :character Median :19.88 Median :57.75 Median : 8.069 Median :1013
Mean :21.71 Mean :56.26 Mean : 8.144 Mean :1004
3rd Qu.:27.71 3rd Qu.:71.90 3rd Qu.:10.069 3rd Qu.:1017
Max. :34.50 Max. :95.83 Max. :19.314 Max. :1023
Rows: 114
Columns: 5
$ date <chr> "2017-01-01", "2017-01-02", "2017-01-03", "2017-01-04", "2017-01-05", "2017-01-06", …
$ meantemp <dbl> 15.91304, 18.50000, 17.11111, 18.70000, 18.38889, 19.31818, 14.70833, 15.68421, 14.5…
$ humidity <dbl> 85.86957, 77.22222, 81.88889, 70.05000, 74.94444, 79.31818, 95.83333, 83.52632, 80.8…
$ wind_speed <dbl> 2.743478, 2.894444, 4.016667, 4.545000, 3.300000, 8.681818, 10.041667, 1.950000, 6.5…
$ meanpressure <dbl> 59.000, 1018.278, 1018.333, 1015.700, 1014.333, 1011.773, 1011.375, 1015.550, 1015.9…
Call:
lm(formula = meantemp ~ humidity + wind_speed + meanpressure,
data = df)
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
Výsledky lineárnej regresie skúmajúce vplyv vlhkosti, rýchlosti vetra a priemerného tlaku na priemernú teplotu ukazujú, že model dokáže vysvetliť približne 74,4 % variability teploty, čo je veľmi dobré. Priemerná odchýlka predpovedí od skutočných hodnôt je približne 3,26 °C a medián reziduálov je takmer nulový, čo naznačuje, že model je vo väčšine prípadov presný. Jedinou premennou so štatisticky významným vplyvom je vlhkosť, ktorá má negatívny efekt – s každým zvýšením vlhkosti o jednu jednotku klesá teplota približne o 0,3 °C. Rýchlosť vetra a priemerný tlak sa ukázali ako nevýznamné, ich vplyv na teplotu nie je štatisticky preukázaný. Intercept modelu udáva predpokladanú priemernú teplotu, keď sú všetky tri premenné nulové, a je približne 42,8 °C. Celkovo je model štatisticky významný, čo potvrdzuje vysoká hodnota F-štatistiky. Reziduály naznačujú, že niektoré predpovede sa odchyľujú až o 6–7 stupňov od skutočných hodnôt, no väčšina odchýlok je menšia. Z výsledkov vyplýva, že vlhkosť je kľúčovým faktorom ovplyvňujúcim priemernú teplotu v analyzovaných dátach, zatiaľ čo ostatné premenné majú zanedbateľný efekt. Model teda poskytuje spoľahlivý náhľad na závislosť teploty od meteorologických faktorov, pričom jeho predpovede sú vo všeobecnosti presné a vysvetľujú väčšinu variability dát.
RESET test
data: m1
RESET = 7.4471, df1 = 1, df2 = 109, p-value = 0.007409
Výsledky RESET testu (Regression Equation Specification Error Test) pre model m1 ukazujú, že hodnota testovej štatistiky je 7,4471 s 1 a 109 stupňami voľnosti a p-hodnota je 0,0074. To naznačuje, že model môže byť nesprávne špecifikovaný, teda lineárna forma modelu nemusí úplne zachytávať vzťah medzi premennými. P-hodnota nižšia ako 0,05 znamená, že existuje štatisticky významný dôkaz proti nulovej hypotéze, podľa ktorej je model správne špecifikovaný. Inými slovami, model pravdepodobne vynecháva nejaké nelineárne vzťahy alebo interakcie medzi premennými, ktoré by mohli zlepšiť jeho presnosť.
par(mfrow = c(1,1))
plot(m1$fitted.values, resid(m1), main="Residuals vs Fitted (baseline)", xlab="Fitted values", ylab="Residuals")
abline(h=0, col="red", lty=2)Diagnostický graf “Zvyšky vs. Spočítané hodnoty” slúži na overenie kľúčových predpokladov lineárnej regresie. Na grafe vidíme náhodný a rovnomerný rozptyl bodov okolo červenej nulovej línie (\(y=0\)). To je ideálny stav.Tento rozptyl bez viditeľného systémového vzoru (ako lievik alebo krivka) silne naznačuje, že:Bol splnený predpoklad homoskedasticity (konštantný rozptyl chýb).Vzťah medzi premennými je pravdepodobne lineárny.Model \(m1\) je teda primerane vhodný a spĺňa základné predpoklady o rozptyle. V grafe sa nachádza len niekoľko extrémnych hodnôt (outliers), ktoré by bolo vhodné dodatočne preskúmať.
Tieto grafy porovnávajú lineárny vzťah modelu (modrá čiara) so skutočným tvarom vzťahu v dátach (ružová čiara).Humidity (Vlhkosť): Modrá a ružová čiara sú si veľmi blízke. Lineárny vzťah bol správne špecifikovaný.Wind_speed (Rýchlosť vetra): Čiary sú taktiež blízke. Lineárny predpoklad je v poriadku. Meanpressure (Priemerný tlak): Ružová čiara sa dramaticky odchyľuje od modrej. To je jasný dôkaz, že predpoklad linearity bol porušený.
m2 <- lm(meantemp ~ humidity + wind_speed + meanpressure +
I(humidity^2) + I(wind_speed^2) + I(meanpressure^2), data = df)
summary(m2)
Call:
lm(formula = meantemp ~ humidity + wind_speed + meanpressure +
I(humidity^2) + I(wind_speed^2) + I(meanpressure^2), data = df)
Residuals:
Min 1Q Median 3Q Max
-5.7992 -1.9583 0.0246 2.0645 5.1344
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -4.565e+00 7.171e+00 -0.637 0.5257
humidity -2.309e-01 9.291e-02 -2.485 0.0145 *
wind_speed -2.442e-01 2.609e-01 -0.936 0.3514
meanpressure 6.469e-01 8.041e-02 8.044 1.26e-12 ***
I(humidity^2) 6.561e-04 7.759e-04 0.846 0.3997
I(wind_speed^2) 8.862e-03 1.429e-02 0.620 0.5365
I(meanpressure^2) -6.016e-04 7.449e-05 -8.076 1.08e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.532 on 107 degrees of freedom
Multiple R-squared: 0.8499, Adjusted R-squared: 0.8415
F-statistic: 101 on 6 and 107 DF, p-value: < 2.2e-16
Analysis of Variance Table
Model 1: meantemp ~ humidity + wind_speed + meanpressure
Model 2: meantemp ~ humidity + wind_speed + meanpressure + I(humidity^2) +
I(wind_speed^2) + I(meanpressure^2)
Res.Df RSS Df Sum of Sq F Pr(>F)
1 110 1170.07
2 107 685.87 3 484.2 25.179 2.105e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
RESET test
data: m2
RESET = 8.5516, df1 = 1, df2 = 106, p-value = 0.004222
Do modelu boli pridané kvadratické členy premenných, aby sa zachytili nelineárne vzťahy s priemernou teplotou. Reziduály sa zmenšili, priemerne sa odchyľujú o 2,53 °C, čo naznačuje lepšie prispôsobenie dátam. Významný vplyv na teplotu majú vlhkosť, priemerný tlak a jeho kvadratický člen, ostatné členy nie sú štatisticky významné. Model vysvetľuje približne 84 % variability teploty a pridanie kvadratických členov významne zlepšilo jeho presnosť. RESET test však stále naznačuje, že model nemusí úplne zachytávať všetky nelineárne vzťahy (p = 0,0042). Celkovo nový model lepšie vystihuje závislosť teploty od meteorologických faktorov, no stále existuje priestor na zlepšenie.
[1] 0.3434343
Graf Box-Cox transformácie hľadá optimálnu hodnotu pre transformáciu závislej premennej. Optimálna hodnota: Vrchol krivky (maximum log-vierohodnosti) je približne pri lambde 0,34. Interval spoľahlivosti: 95% interval spoľahlivosti pre lamdu (ohraničený zvislými čiarami) zahŕňa hodnotu .
df$meantemp_bc <- (df$meantemp^lambda - 1)/lambda
m3 <- lm(meantemp_bc ~ humidity + wind_speed + meanpressure, data = df)
summary(m3)
Call:
lm(formula = meantemp_bc ~ humidity + wind_speed + meanpressure,
data = df)
Residuals:
Min 1Q Median 3Q Max
-1.01649 -0.34253 0.05839 0.34554 0.82117
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.1333300 0.4945401 16.446 <2e-16 ***
humidity -0.0387929 0.0022655 -17.123 <2e-16 ***
wind_speed -0.0180166 0.0120851 -1.491 0.139
meanpressure -0.0004137 0.0004579 -0.904 0.368
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4311 on 110 degrees of freedom
Multiple R-squared: 0.7402, Adjusted R-squared: 0.7331
F-statistic: 104.5 on 3 and 110 DF, p-value: < 2.2e-16
RESET test
data: m3
RESET = 3.6061, df1 = 1, df2 = 109, p-value = 0.06021
Model s transformovanou teplotou (meantemp_bc) veľmi dobre predpovedá hodnoty, reziduály sú malé (±0,43). Významný vplyv na teplotu má iba vlhkosť, ktorá má negatívny efekt, zatiaľ čo rýchlosť vetra a priemerný tlak nie sú významné. Model vysvetľuje približne 74 % variability teploty a je štatisticky významný. RESET test (p = 0,060) nenaznačuje výraznú nesprávnu špecifikáciu modelu, takže lineárna forma s transformovanou premennou je vhodná.
df <- df %>% mutate(D_wind_high = ifelse(wind_speed > 10, 1, 0))
m4 <- lm(meantemp ~ humidity + wind_speed + D_wind_high + I(D_wind_high*wind_speed) + meanpressure, data=df)
summary(m4)
Call:
lm(formula = meantemp ~ humidity + wind_speed + D_wind_high +
I(D_wind_high * wind_speed) + meanpressure, data = df)
Residuals:
Min 1Q Median 3Q Max
-6.3345 -2.2007 0.0068 2.4501 7.3959
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 43.309586 3.759192 11.521 <2e-16 ***
humidity -0.301661 0.017450 -17.287 <2e-16 ***
wind_speed -0.164822 0.159300 -1.035 0.303
D_wind_high 4.623241 3.352098 1.379 0.171
I(D_wind_high * wind_speed) -0.320819 0.293371 -1.094 0.277
meanpressure -0.003430 0.003486 -0.984 0.327
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.256 on 108 degrees of freedom
Multiple R-squared: 0.7495, Adjusted R-squared: 0.7379
F-statistic: 64.63 on 5 and 108 DF, p-value: < 2.2e-16
Analysis of Variance Table
Model 1: meantemp ~ humidity + wind_speed + meanpressure
Model 2: meantemp ~ humidity + wind_speed + D_wind_high + I(D_wind_high *
wind_speed) + meanpressure
Res.Df RSS Df Sum of Sq F Pr(>F)
1 110 1170.1
2 108 1144.9 2 25.126 1.185 0.3097
RESET test
data: m4
RESET = 9.3041, df1 = 1, df2 = 107, p-value = 0.002883
Do modelu boli pridané premenné D_wind_high (indikátor silného vetra) a interakčný člen D_wind_high * wind_speed, aby sa zachytil potenciálny odlišný efekt vetra pri silnom vetre. Reziduály sú podobné ako v predchádzajúcich modeloch, s priemernou odchýlkou okolo 3,26 °C.
Z koeficientov vyplýva, že jedinou významnou premennou zostáva vlhkosť (humidity, p < 0,001), ktorá má negatívny vplyv na teplotu. Ostatné premenné vrátane rýchlosti vetra, indikátora silného vetra, interakčného člena a priemerného tlaku nie sú štatisticky významné.
Model vysvetľuje približne 75 % variability teploty (R² = 0,749), čo je len mierne zlepšenie oproti pôvodnému modelu. Porovnanie s jednoduchším modelom cez analýzu variance ukazuje, že pridanie indikátora a interakcie neprinieslo štatisticky významné zlepšenie (p = 0,31). RESET test však ukazuje p-hodnotu 0,0029, čo naznačuje, že model môže byť stále nesprávne špecifikovaný a nelineárne vzťahy medzi premennými nie sú úplne zachytené.
Celkovo pridanie indikátora silného vetra a interakcie nezlepšilo významne predikciu, vlhkosť zostáva hlavnou premennou ovplyvňujúcou teplotu a model stále nemusí úplne zachytávať všetky nelineárne vzťahy.
| Model | Adj R² | RESET p-hodnota | Poznámka |
|---|---|---|---|
| Základný lineárny | 0.737 | 0.00741 | Test signifikantný |
| Kvadratický | 0.842 | 0.00422 | Lepší fit, ale RESET stále signifikantný |
| Piecewise | 0.738 | 0.00288 | Mierne zlepšenie |
| Box–Cox | 0.733 | 0.0602 | Transformácia znižuje odchýlku |