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”.
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?
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.
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
Urobte diagnostiku transformovaného modelu a vysvetlite na obrázku residuals vs. fitted.
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
?poly
)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?
Vezmite dáta aatemp
a urobte, čo je treba na začiatok. Fitnite plný regresný model s temp
ako odozvou a year
ako prediktorom.