Vo financiách sa často vyskytuje logaritmická transformácia regresorov len z dôvodu interpretácie výsledkov. Takýto zásah do dát bez toho aby sa na dáta ktokoľvek pozrel je nepriatelný. Z princípu, dáta majú prezratiť akú štruktúru má model mať. Ibaže by sme použili veštiacu gulu. Vysvetlime si to, predpokladajme lineárny model:

\[y=X\beta+\epsilon \quad \rightarrow \quad y\sim N(X\beta, \sigma^2I)\] Ztransformujem odozvu spojitou funkciou \(h()\), potom máme model

\[h(y)=X\beta+\epsilon \quad \rightarrow \quad h(y)\sim ???\] Pretransformovanie odozvy je hrubý zásah do celého modelu, mení aj význam parametrov.

Pri prediktoroch je to inak, dokonca nutná transformácia sa dá vyčítať aj z obrázka podľa oka, niekedy to voláme aj odmodelovanie. Žial nie vždy sa dajú vykresliť obrázky, hlavne ak máme “veľa” prediktorov. Na odhalenie nutnej transformácie nám slúžia rôzne nástroje ako napríklad neparametrická regresia o ktorej si bližšie povieme na druhom kurze. V cvičení použijeme aditívny model využívajúci spline, len ako “radiaci nástroj”.

Transformácia odozvy

Na ukážku, vezmime slávne dáta ozone a pre jednoduchosť uvažujme regresory O3, temp, humidity a ibh. Najprv urobte, čo je potrebné pred každým lineárnym modelom, potom:

Odmodelujte dáta lineárnim modelom s O3 ako odozvou.

##                Estimate  Std. Error t value  Pr(>|t|)
## (Intercept) -1.0494e+01  1.6165e+00 -6.4918 3.159e-10
## temp         3.2963e-01  2.1095e-02 15.6261 < 2.2e-16
## humidity     7.7377e-02  1.3394e-02  5.7771 1.775e-08
## ibh         -1.0044e-03  1.6386e-04 -6.1296 2.543e-09
## 
## n = 330, p = 4, Residual SE = 4.52433, R-Squared = 0.68

Urobte diagnostiku tohto lineárneho modelu. Sústredte sa hlavne na obrázok residuals vs. fitted. Poriadne okomentujte tento obrázok. Rovnako postupujte aj pri ostatných diagnostických nástrojov.

Ako by ste postupovali v takomto prípade, ak by ste mali použiť zatial vám známe nástroje?

Box-Coxová transformácia odozvy

Odhadnúť z obrázku, ako transformovať odozvu je ťažké viac menej je to len pokus a omyl. Z tohoto dôvodu boli vymyslené rôzne nástroje. Naučme sa používať aspoň jeden. Použime boxcoxovú metodu boxcox() z knižnice MASS na odhadnutie transformácie odozvy nášho lineárneho modelu.

  • Interpretujte obrázok.
  • Čo by znamenalo, keby bol maximum likelihood okolo 1?

Použite radu z funkcie a transformujte odozvu.

##                Estimate  Std. Error t value  Pr(>|t|)
## (Intercept)  9.7115e-02  2.2001e-01  0.4414    0.6592
## temp         4.7221e-02  2.8711e-03 16.4471 < 2.2e-16
## humidity     1.1061e-02  1.8229e-03  6.0676  3.60e-09
## ibh         -1.6451e-04  2.2302e-05 -7.3762  1.36e-12
## 
## n = 330, p = 4, Residual SE = 0.61578, R-Squared = 0.72
  • Ako sa zmenili odhady parametrov?
  • Ako sa zmenila ich signifikancia?
  • Koľko percent variancie takýto model vysvetluje?

Urobte diagnostiku transformovaného modelu a vysvetlite na obrázku residuals vs. fitted.

  • Zmenili sa výstupy z diagnostických nástrojov?
  • Aký vplyv mala transformácia odozvy na model?

Transformácia (modelovanie) prediktorov

Vezmime si najjednoduchší prípad a uvažujme len O3 ako odozvu a temp ako prediktor. Pozrime sa ako plýva teplota na ozón, najlepšie bude ak si to znázorníme na obrázku.

Ak sa nevieme rozhodnúť akú transformáciu použijeme, môžeme vyskušať nakresliť si cez dáta splajn jedena z možností neparametrickej regresie. Použijeme na to aditívny model gam() z knižnice mgcv. Sintax je rovnaký ako vo funkcii lm(), len na každý prediktor, ktorý chcete “vyhladiť” použijete funkciu s(). V našom jednoduchom prípade

mo_s=gam(O3~s(temp), data=ozone)
plot(mo_s)

Aditívny model budeme používať len ako poradcu pri transformovaní, nebudeme sa venovať interpretácií výsledkov. Na odmodelovanie krivky v lineárnom modeli sa používa polynómom k-teho stupňa s funkciou poly() a bez nej.

##                 Estimate Std. Error t value  Pr(>|t|)
## (Intercept)     11.77576    0.26201 44.9443 < 2.2e-16
## poly(temp, 2)1 113.44503    4.75961 23.8350 < 2.2e-16
## poly(temp, 2)2  28.94506    4.75961  6.0814 3.324e-09
## 
## n = 330, p = 3, Residual SE = 4.75961, R-Squared = 0.65
##               Estimate Std. Error t value  Pr(>|t|)
## (Intercept)  8.4264860  4.0105766  2.1011  0.036400
## temp        -0.3669889  0.1327230 -2.7651  0.006014
## I(temp^2)    0.0064675  0.0010635  6.0814 3.324e-09
## 
## n = 330, p = 3, Residual SE = 4.75961, R-Squared = 0.65

Interpretujte výstup a urobte diagnostiku modelu. Nakoniec zakreslite polynom do obrázka.

Teraz pritvrdme a uvažujeme model, ktorý bude obsahovať všetky prediktory z dát ozone. Použite aditívny model na poradenie vhodnej transformácie modelu.

gam(O3~s(vh)+s(wind)+s(humidity)+s(temp)+s(ibh)+s(dpg)+s(ibt)+s(vis)+s(doy),data=ozone)

Bližšie sa porzime napríklad posledný prediktor doy a skontrolujme či nám aditívny model vhodne poradil podľa oka.

Zakomponujte všetky rady aditývneho modelu do lineárneho a potom urobte diagnostiku. * Pomohly sme si týmito transformáciami voči netransformovanému modelu?


Samostatná práca

Vezmite dáta aatemp a urobte, čo je treba na začiatok. Fitnite plný regresný model s temp ako odozvou a year ako prediktorom.

  1. Zakreslite fit do obrázka odozva a prediktora.
  2. Vyskúšajte odmodelovať prediktor polynómom a otestujte ktorý je najlepší.
  3. Zakreslite naljepší fit do rovnakého obrázka z 1. a vysvetlite prečo je lepší (alebo nie) ako ten lineárny.