maggio 2019

Funzioni

prcomp(USArrests, scale = TRUE)
PCA <- princomp(USArrests, cor = TRUE)
PCA
## Call:
## princomp(x = USArrests, cor = TRUE)
## 
## Standard deviations:
##    Comp.1    Comp.2    Comp.3    Comp.4 
## 1.5748783 0.9948694 0.5971291 0.4164494 
## 
##  4  variables and  50 observations.

Procedura

  • matrice casi \(\times\) variabili
  • matrice variabili \(\times\) variabili
  • diagonalizzazione (prcomp = svd(); princomp = eig())
    • le componenti riproducono la varianza della matrice originale;
    • sono indipendenti;
    • sono trasformazioni delle variabili originarie, alle quali possono essere collegate (contributi)
  • se le variabili fossero perfettamente correlate, avremmo 1 componente;
  • se le variabili fossero perfettamente indipendenti, avremmo tante componenti quante sono le variabili.

summary

summary(PCA)
## Importance of components:
##                           Comp.1    Comp.2    Comp.3     Comp.4
## Standard deviation     1.5748783 0.9948694 0.5971291 0.41644938
## Proportion of Variance 0.6200604 0.2474413 0.0891408 0.04335752
## Cumulative Proportion  0.6200604 0.8675017 0.9566425 1.00000000

loadings

# o loadings(PCA)
PCA$loadings
## 
## Loadings:
##          Comp.1 Comp.2 Comp.3 Comp.4
## Murder    0.536  0.418  0.341  0.649
## Assault   0.583  0.188  0.268 -0.743
## UrbanPop  0.278 -0.873  0.378  0.134
## Rape      0.543 -0.167 -0.818       
## 
##                Comp.1 Comp.2 Comp.3 Comp.4
## SS loadings      1.00   1.00   1.00   1.00
## Proportion Var   0.25   0.25   0.25   0.25
## Cumulative Var   0.25   0.50   0.75   1.00

# vedi le differenze con USArrests %>% scale() %>% svd()
cor(USArrests) %>% eigen()
## eigen() decomposition
## $values
## [1] 2.4802416 0.9897652 0.3565632 0.1734301
## 
## $vectors
##            [,1]       [,2]       [,3]        [,4]
## [1,] -0.5358995  0.4181809 -0.3412327  0.64922780
## [2,] -0.5831836  0.1879856 -0.2681484 -0.74340748
## [3,] -0.2781909 -0.8728062 -0.3780158  0.13387773
## [4,] -0.5434321 -0.1673186  0.8177779  0.08902432

I centri

PCA$center
##   Murder  Assault UrbanPop     Rape 
##    7.788  170.760   65.540   21.232

sono le medie delle variabili

sapply(USArrests, mean)
##   Murder  Assault UrbanPop     Rape 
##    7.788  170.760   65.540   21.232

I grafici

Funzioni base

screeplot() barplot delle componenti (autovalori)
biplot() scatterplot di casi, variabili, e autovalori

Grafico degli autovalori

fviz_eig(PCA)

Grafico dei risultati

fviz_pca(PCA,labelsize = 3)

Interpretazione delle componenti

Gli autovalori

get_eig(PCA)
##       eigenvalue variance.percent cumulative.variance.percent
## Dim.1  2.4802416        62.006039                    62.00604
## Dim.2  0.9897652        24.744129                    86.75017
## Dim.3  0.3565632         8.914080                    95.66425
## Dim.4  0.1734301         4.335752                   100.00000

Informazioni sulle variabili

# estraggo le informazioni sulle variabili
PCA.var <- get_pca_var(PCA)

Contributi

proporzione della variabile sul fattore:

PCA.var$coord
##              Dim.1      Dim.2      Dim.3       Dim.4
## Murder   0.8439764  0.4160354  0.2037600  0.27037052
## Assault  0.9184432  0.1870211  0.1601192 -0.30959159
## UrbanPop 0.4381168 -0.8683282  0.2257242  0.05575330
## Rape     0.8558394 -0.1664602 -0.4883190  0.03707412
PCA.var$contrib
##              Dim.1     Dim.2     Dim.3     Dim.4
## Murder   28.718825 17.487524 11.643977 42.149674
## Assault  34.010315  3.533859  7.190358 55.265468
## UrbanPop  7.739016 76.179065 14.289594  1.792325
## Rape     29.531844  2.799553 66.876071  0.792533

Coseni quadrati

quanto le componenti rappresentano ciascuna variable

PCA.var$cos2 %>% round(3)
##          Dim.1 Dim.2 Dim.3 Dim.4
## Murder   0.712 0.173 0.042 0.073
## Assault  0.844 0.035 0.026 0.096
## UrbanPop 0.192 0.754 0.051 0.003
## Rape     0.732 0.028 0.238 0.001