Cvičenia na výber modelu načrtli neistú tématiku hľadania vhodného modelu. Štruktúra Lineárneho modelu nám ponúka variabilitu ako modelovať. Pri robustnej verzii sme využili medián, kvantil a podobne.

Naviažme na posledné cvičenie, kde sme spomínali Veľa a málo regresorov. Vtedy keď regresorov je toľko, že si každý môžeme poriadne prezrieť,sme trénovali posledných 9 cvičení. V prípade veľa regresorov sa situácia mení, nemôžeme si prezrieť regresory, ale môžeme využiť “triky” rôzne miery na redukciu.

Redukovať počet regresorov môžete rôzne. Ešte pred tým než sa pustíte do popisovania odozvy lineárnym modelom si vezmete prediktory a urobíte ortogonálnu transformáciu. Proces sa nazýva anaýza hlavných komponentov (PCA) je to jeden z využívaných a najelegantnejších postupov na redukciu regresorov a zároveň získate nové regresory, ktoré majú dobré vlastnosti.

Regresné modely obsahujúce penáltu (cenu) za počet prediktorov sú tiež veľmi účinné a aj keď by ste ich nepoužili, tak vám vedia dobre poradiť alebo prezradiť budúcu štruktúru lineárneho modelu.

Analýza hlavných komponentov (budúcich prediktorov)

Metóda sa hojne využíva v rôznych odvetviach štatistiky, nie len pre lineárnou regresiou a má aj niekoľko verzií. Na dátach hitters z knižnice ISLR si ukážeme redukciu parametrov na základe hlavných komponentov. Ako prvé načítajte dáta a využite doterajšie znalosti na ich obhliadku.

##      AtBat            Hits         HmRun            Runs       
##  Min.   : 16.0   Min.   :  1   Min.   : 0.00   Min.   :  0.00  
##  1st Qu.:255.2   1st Qu.: 64   1st Qu.: 4.00   1st Qu.: 30.25  
##  Median :379.5   Median : 96   Median : 8.00   Median : 48.00  
##  Mean   :380.9   Mean   :101   Mean   :10.77   Mean   : 50.91  
##  3rd Qu.:512.0   3rd Qu.:137   3rd Qu.:16.00   3rd Qu.: 69.00  
##  Max.   :687.0   Max.   :238   Max.   :40.00   Max.   :130.00  
##                                                                
##       RBI             Walks            Years            CAtBat       
##  Min.   :  0.00   Min.   :  0.00   Min.   : 1.000   Min.   :   19.0  
##  1st Qu.: 28.00   1st Qu.: 22.00   1st Qu.: 4.000   1st Qu.:  816.8  
##  Median : 44.00   Median : 35.00   Median : 6.000   Median : 1928.0  
##  Mean   : 48.03   Mean   : 38.74   Mean   : 7.444   Mean   : 2648.7  
##  3rd Qu.: 64.75   3rd Qu.: 53.00   3rd Qu.:11.000   3rd Qu.: 3924.2  
##  Max.   :121.00   Max.   :105.00   Max.   :24.000   Max.   :14053.0  
##                                                                      
##      CHits            CHmRun           CRuns             CRBI        
##  Min.   :   4.0   Min.   :  0.00   Min.   :   1.0   Min.   :   0.00  
##  1st Qu.: 209.0   1st Qu.: 14.00   1st Qu.: 100.2   1st Qu.:  88.75  
##  Median : 508.0   Median : 37.50   Median : 247.0   Median : 220.50  
##  Mean   : 717.6   Mean   : 69.49   Mean   : 358.8   Mean   : 330.12  
##  3rd Qu.:1059.2   3rd Qu.: 90.00   3rd Qu.: 526.2   3rd Qu.: 426.25  
##  Max.   :4256.0   Max.   :548.00   Max.   :2165.0   Max.   :1659.00  
##                                                                      
##      CWalks        League  Division    PutOuts          Assists     
##  Min.   :   0.00   A:175   E:157    Min.   :   0.0   Min.   :  0.0  
##  1st Qu.:  67.25   N:147   W:165    1st Qu.: 109.2   1st Qu.:  7.0  
##  Median : 170.50                    Median : 212.0   Median : 39.5  
##  Mean   : 260.24                    Mean   : 288.9   Mean   :106.9  
##  3rd Qu.: 339.25                    3rd Qu.: 325.0   3rd Qu.:166.0  
##  Max.   :1566.00                    Max.   :1378.0   Max.   :492.0  
##                                                                     
##      Errors          Salary       NewLeague
##  Min.   : 0.00   Min.   :  67.5   A:176    
##  1st Qu.: 3.00   1st Qu.: 190.0   N:146    
##  Median : 6.00   Median : 425.0            
##  Mean   : 8.04   Mean   : 535.9            
##  3rd Qu.:11.00   3rd Qu.: 750.0            
##  Max.   :32.00   Max.   :2460.0            
##                  NA's   :59

Použitie PCA má aj svoje nevýhody, vyžaduje plnú maticu bez NA a regresory môžu byť len v podobe scale. Na druhú stranu, faktorové regresory, ktoré poprípade nezahrniete môžete naspať vrátiť do matice po použití metódy. My vracať nič nebudeme a využijeme len nové špecialne regresory získané metódou.

Náhodne rozdelime riadky matice na trénovacie a testovacie v pomere 3:1 za použitia knižnice dplyr.

set.seed(1112) 
Hitters = Hitters %>% mutate(name = rownames(Hitters)) 
train = Hitters %>% sample_frac(3/4, replace=FALSE) 
test = anti_join(Hitters, train, by="name")
train = train %>% select(-name)
test = test %>% select(-name)

Na začiatok, zoberte trénovacie dáta a fitnite do nich čo najlepší lineárny fit so Salary ako odozvou. Spôsob akým to spravíte, je na vás. Ja som našiel napríklad takýto

## 
## Call:
## lm(formula = Salary ~ AtBat + Hits + Walks + CRuns + CRBI + CWalks + 
##     PutOuts, data = train)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -797.54 -161.92  -21.13  121.79 1207.38 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -6.1377    67.3885  -0.091 0.927526    
## AtBat        -1.7744     0.5702  -3.112 0.002146 ** 
## Hits          6.5407     1.7624   3.711 0.000271 ***
## Walks         5.9301     1.5624   3.796 0.000198 ***
## CRuns         0.6134     0.2464   2.489 0.013669 *  
## CRBI          0.4446     0.1955   2.274 0.024107 *  
## CWalks       -0.6777     0.2606  -2.600 0.010046 *  
## PutOuts       0.3250     0.0769   4.226  3.7e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 287.6 on 189 degrees of freedom
## Multiple R-squared:  0.5212, Adjusted R-squared:  0.5035 
## F-statistic: 29.39 on 7 and 189 DF,  p-value: < 2.2e-16

Pokračujem využítím PCA, ale len na budúce prediktory. Na metódu využite funkciu prcomp(). Pozor, budeme robiť transformáciu a na to je vhodné aby matica prediktorov bola preškálovaná.

## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5    PC6     PC7
## Standard deviation     2.6149 2.1043 1.3601 0.94311 0.80350 0.7408 0.48868
## Proportion of Variance 0.4274 0.2767 0.1156 0.05559 0.04035 0.0343 0.01493
## Cumulative Proportion  0.4274 0.7041 0.8197 0.87533 0.91568 0.9500 0.96490
##                            PC8     PC9    PC10    PC11    PC12    PC13
## Standard deviation     0.41611 0.34297 0.31447 0.25533 0.24100 0.16440
## Proportion of Variance 0.01082 0.00735 0.00618 0.00407 0.00363 0.00169
## Cumulative Proportion  0.97572 0.98307 0.98925 0.99333 0.99696 0.99865
##                           PC14    PC15    PC16
## Standard deviation     0.12408 0.07029 0.03609
## Proportion of Variance 0.00096 0.00031 0.00008
## Cumulative Proportion  0.99961 0.99992 1.00000

Vypíšme si podiel variancií prvých dvoch komponentov pomocou $rot ,aby sme získali ako takú predstavu o nich.

##   AtBat    Hits   HmRun    Runs     RBI   Walks   Years  CAtBat   CHits 
##   -0.14   -0.14   -0.17   -0.15   -0.19   -0.18   -0.31   -0.35   -0.35 
##  CHmRun   CRuns    CRBI  CWalks PutOuts Assists  Errors 
##   -0.34   -0.36   -0.36   -0.34   -0.05    0.02    0.04
##   AtBat    Hits   HmRun    Runs     RBI   Walks   Years  CAtBat   CHits 
##    0.41    0.40    0.28    0.41    0.36    0.26   -0.22   -0.15   -0.14 
##  CHmRun   CRuns    CRBI  CWalks PutOuts Assists  Errors 
##   -0.08   -0.13   -0.12   -0.15    0.18    0.14    0.16

Na voľbu ideálneho počtu komponentov (regresorov) použime napríklad obrázok.

Od teraz naše nové regresory reprezentujú poctane niečo iné ako tie pôvodné. Priložme odozvu k regresorom a znazornime si pairs graf.