1 Analisi delle componenti principali
Vengono caricati i packages necessari per realizzare questo documento
1.1 Primo esempio con tre sole variabili
Data Frame Summary
dati
Dimensions: 1427 x 3Duplicates: 103
No | Variable | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing |
---|---|---|---|---|---|---|
1 | Altezza [numeric] | Mean (sd) : 151.9 (10.1) min < med < max: 127 < 151 < 183 IQR (CV) : 15 (0.1) | 54 distinct values | 1427 (100%) | 0 (0%) | |
2 | Span [numeric] | Mean (sd) : 153.6 (11.2) min < med < max: 123 < 153 < 184 IQR (CV) : 16 (0.1) | 60 distinct values | 1427 (100%) | 0 (0%) | |
3 | Torace [numeric] | Mean (sd) : 75.6 (7.8) min < med < max: 57 < 74 < 104 IQR (CV) : 10 (0.1) | 44 distinct values | 1427 (100%) | 0 (0%) |
Generated by summarytools 0.9.6 (R version 4.0.2)
2020-09-12
1.2 Variabili osservate.
matrice di grafici per le sole variabili Altezza, Span, Torace rilevate su 1427 righe
output
Altezza Span Torace
Altezza 1.000 0.892 0.587
Span 0.892 1.000 0.578
Torace 0.587 0.578 1.000
plot
1.3 Principal Component Analysis
Primo esempio con tre sole variabili:
Come misurare la correlazione globalmente presente fra le 3 variabili?
Possiamo trovare una nuova variabile combinazione lineare delle variabili originali che in qualche modo le riassuma meglio
cerchiamo la retta che minimizza la somma dei quadrati degli scarti dei punti dalla retta stessa (misurata ortogonalmente) (retta rossa nella figura)
Vedremo dopo che questa nuova variabile corrispondente a questa retta (ossia le nuove coordinate ottenute dalle proiezioni dei punti) è quella che ha la massima varianza
output
Altezza Span Torace
Altezza 1.000 0.892 0.587
Span 0.892 1.000 0.578
Torace 0.587 0.578 1.000
output
[1] 2.383 0.509 0.108
output
[1] 3
output
[,1] [,2] [,3]
[1,] -0.609 -0.352 0.711
[2,] -0.606 -0.372 -0.703
[3,] -0.512 0.859 -0.013
output
glX
1
output
Importance of components:
Comp.1 Comp.2 Comp.3
Standard deviation 1.5430776 0.7134693 0.32828463
Proportion of Variance 0.7942527 0.1697985 0.03594879
Cumulative Proportion 0.7942527 0.9640512 1.00000000
You must enable Javascript to view this page properly.
1.4 Retta di regressione principale
Voglio trovare la retta che meglio passa attraverso i dati.
Sottolineo la differenza con la regressione semplice e multipla: adesso voglio minimizzare le distanze dai punti ortogonalmente rispetto a questa retta, che chiameremo Retta di regressione principale
1.5 Rotazione assi
Dopo aver fatto questa operazione una prima volta, possiamo ripeterla cercando un’altra retta che minimizzi la sommadei quadrati delle distanze dei punti da questa retta, ma limitando la ricerca alle retteortogonali rispetto alla prima retta di regressione principale
L’operazione si può ripetere fino alla \(k-\)esima retta…
Analisi delle componenti principali: con tre variabili non vi è alcuna perdita di informazione ovviamente; la trasformazione corrisponde ad una rotazione degli assi
2 Esempio numerico:
output
List of 7
$ sdev : Named num [1:3] 1.543 0.713 0.328
..- attr(*, "names")= chr [1:3] "Comp.1" "Comp.2" "Comp.3"
$ loadings: 'loadings' num [1:3, 1:3] 0.609 0.606 0.512 0.352 0.372 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:3] "Altezza" "Span" "Torace"
.. ..$ : chr [1:3] "Comp.1" "Comp.2" "Comp.3"
$ center : Named num [1:3] 8.90e-16 -8.87e-16 7.67e-16
..- attr(*, "names")= chr [1:3] "Altezza" "Span" "Torace"
$ scale : Named num [1:3] 1 1 1
..- attr(*, "names")= chr [1:3] "Altezza" "Span" "Torace"
$ n.obs : int 1427
$ scores : num [1:1427, 1:3] -1.95 -1.36 -1.83 -2.02 -1.26 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:3] "Comp.1" "Comp.2" "Comp.3"
$ call : language princomp(x = rid)
- attr(*, "class")= chr "princomp"
NULL
plot
Comp.1 | Comp.2 | Comp.3 | |
---|---|---|---|
Comp.1 | 2.382758 | 0.0000000 | 0.0000000 |
Comp.2 | 0.000000 | 0.5093955 | 0.0000000 |
Comp.3 | 0.000000 | 0.0000000 | 0.1078464 |
source
output
Altezza Span Torace
0.6085715 0.6063977 0.5117838
output
[1] 1
output
Loadings:
Comp.1 Comp.2 Comp.3
Altezza 0.609 0.352 0.711
Span 0.606 0.372 -0.703
Torace 0.512 -0.859 -0.013
Comp.1 Comp.2 Comp.3
SS loadings 1.000 1.000 1.000
Proportion Var 0.333 0.333 0.333
Cumulative Var 0.333 0.667 1.000
output
Comp.1 Comp.2 Comp.3
Comp.1 1 0 0
Comp.2 0 1 0
Comp.3 0 0 1
2.1 Confronto fra spazio originale e trasformato:
Mettiamo a fianco le due figure precedenti (in 3d):
La prima variabile principale, lungo il primo asse principale, in rosso, spiega il 79.43% della variabilità complessiva.
Di contro l’ultima variabile principale, la terza, asse blu, spiega soltanto il 3.59% della variabilità.
output
glX
5
output
Importance of components:
Comp.1 Comp.2 Comp.3
Standard deviation 1.5430776 0.7134693 0.32828463
Proportion of Variance 0.7942527 0.1697985 0.03594879
Cumulative Proportion 0.7942527 0.9640512 1.00000000
output
Importance of components:
Comp.1 Comp.2 Comp.3
Standard deviation 1.5430776 0.7134693 0.32828463
Proportion of Variance 0.7942527 0.1697985 0.03594879
Cumulative Proportion 0.7942527 0.9640512 1.00000000
You must enable Javascript to view this page properly.
2.2 Analisi in Componenti principali per 7 variabili
Utilizziamo ancora lo stesso data frame antropometric
ma prendiamo stavolta 7 variabili, di cui riportiamo ancora delle statistiche e grafici descrittivi, insieme con la matrice dei grafici a coppia:
Data Frame Summary
dati
Dimensions: 1427 x 7Duplicates: 0
No | Variable | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing |
---|---|---|---|---|---|---|
1 | Altezza [numeric] | Mean (sd) : 151.9 (10.1) min < med < max: 127 < 151 < 183 IQR (CV) : 15 (0.1) | 54 distinct values | 1427 (100%) | 0 (0%) | |
2 | Peso [numeric] | Mean (sd) : 45 (10.7) min < med < max: 21 < 43 < 100 IQR (CV) : 14 (0.2) | 65 distinct values | 1427 (100%) | 0 (0%) | |
3 | Torace [numeric] | Mean (sd) : 75.6 (7.8) min < med < max: 57 < 74 < 104 IQR (CV) : 10 (0.1) | 44 distinct values | 1427 (100%) | 0 (0%) | |
4 | Cranio [numeric] | Mean (sd) : 54.8 (1.6) min < med < max: 50 < 55 < 60 IQR (CV) : 2 (0) | 11 distinct values | 1427 (100%) | 0 (0%) | |
5 | Bisacrom [numeric] | Mean (sd) : 34.5 (3) min < med < max: 23 < 34 < 46 IQR (CV) : 4 (0.1) | 21 distinct values | 1427 (100%) | 0 (0%) | |
6 | Bitrocan [numeric] | Mean (sd) : 26.3 (2.8) min < med < max: 20 < 26 < 38 IQR (CV) : 4 (0.1) | 18 distinct values | 1427 (100%) | 0 (0%) | |
7 | Span [numeric] | Mean (sd) : 153.6 (11.2) min < med < max: 123 < 153 < 184 IQR (CV) : 16 (0.1) | 60 distinct values | 1427 (100%) | 0 (0%) |
Generated by summarytools 0.9.6 (R version 4.0.2)
2020-09-12
plot
Altezza | Peso | Torace | Cranio | Bisacrom | Bitrocan | Span | |
---|---|---|---|---|---|---|---|
Altezza | 1.00 | 0.72 | 0.59 | 0.48 | 0.75 | 0.74 | 0.89 |
Peso | 0.72 | 1.00 | 0.91 | 0.54 | 0.75 | 0.84 | 0.69 |
Torace | 0.59 | 0.91 | 1.00 | 0.48 | 0.69 | 0.77 | 0.58 |
Cranio | 0.48 | 0.54 | 0.48 | 1.00 | 0.50 | 0.49 | 0.47 |
Bisacrom | 0.75 | 0.75 | 0.69 | 0.50 | 1.00 | 0.76 | 0.78 |
Bitrocan | 0.74 | 0.84 | 0.77 | 0.49 | 0.76 | 1.00 | 0.71 |
Span | 0.89 | 0.69 | 0.58 | 0.47 | 0.78 | 0.71 | 1.00 |
Le variabili sono a due a due correlate, ma ovviamente stavolta non possiamo rappresentarle graficamente tutte.
L’analisi delle componenti principali ci permette però di ricavare le combinazioni di maggior varianza delle variabili originarie. Questo ci consente di rappresentare i dati in uno spazio di due o tre dimensioni ma anche di misurare in qualche modo una sorta di correlazione multipla fra le variabili.
Potremo anche vedere il grado di collinearità fra le variabili.
Calcoliamo i 7 autovalori, e riportiamo anche le deviazioni standard (ricavate dalla teoria asintotica, per la quale \(Var(\hat{\lambda_j})=\frac{2\lambda_j^2}{n}\), nel caso di campioni provenienti da distribuzioni normali multivariate: ci danno comunque un’ordine di grandezza dell’eventuale errore campionario)output
[1] "Autovalori"
output
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
5.082 0.666 0.624 0.246 0.207 0.105 0.065
output
[1] "Errori standard approssimati"
output
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
0.190 0.025 0.023 0.009 0.008 0.004 0.002
In sintesi possiamo vedere che la variabilità globale delle sette variabili del dataset dati
è spiegata per una percentuale di 72.65% dalla prima componente, mentre le prime tre componenti, rappresentate nel grafico 3d successivo, spiegano una percentuale di 91.09%
plot
output
Importance of components:
Comp.1 Comp.2 Comp.3
Standard deviation 2.254309 0.8160813 0.78985197
Proportion of Variance 0.797567 0.1045219 0.09791109
Cumulative Proportion 0.797567 0.9020889 1.00000000
You must enable Javascript to view this page properly.
2.3 I loadings (autovettori) e i primi due assi principali
output
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7
Comp.1 1 0 0 0 0 0 0
Comp.2 0 1 0 0 0 0 0
Comp.3 0 0 1 0 0 0 0
Comp.4 0 0 0 1 0 0 0
Comp.5 0 0 0 0 1 0 0
Comp.6 0 0 0 0 0 1 0
Comp.7 0 0 0 0 0 0 1
output
Comp.1 Comp.2 Comp.3
Altezza 0.388 0.416 0.245
Peso 0.409 -0.194 -0.325
Torace 0.376 -0.333 -0.488
Cranio 0.283 -0.674 0.681
Bisacrom 0.393 0.161 0.023
Bitrocan 0.399 -0.001 -0.226
Span 0.384 0.446 0.285
plot
2.4 Complementi. Il biplot: relazioni fra osservazioni e variabili
plot
2.5 Parte teorica
Vedremo che se \(\Sigma\) è la matrice di varianza e covarianza dei dati, le varianze delle componenti principali sono gli autovalori di \(\Sigma\), mentre i coefficienti delle nuove variabili (loadings
), sono i corrispondenti autovettori normalizzati.
Indichiamo con \(\boldsymbol{ \gamma} _{j}\) un autovettore di \(\mathrm{V}\left[\mathbf{X}\right]\), (normalizzato, ossia con \(\boldsymbol{ \gamma} _{j}^{\mathsf{T}}\boldsymbol{ \gamma} _{j}=1\)) e con \(\lambda_j\) il corrispondente autovalore; allora si ha:
\[ \boldsymbol{ \gamma} _{j}^{\mathsf{T}} \mathrm{V}\left[\mathbf{X}\right] \boldsymbol{ \gamma} _{j}=\boldsymbol{ \gamma} _{j}^{\mathsf{T}} \lambda_j \boldsymbol{ \gamma} _{j}= \lambda_j \] La prima delle precedenti eguaglianze deriva dalla definizione degli autovettori e degli autovalori; la seconda eguaglianza deriva dalla condizione di normalizzazione degli autovettori \(\boldsymbol{ \gamma} _{j}^{\mathsf{T}}\boldsymbol{ \gamma} _{j}=1.\)
Deriva dall’equazione fondamentale: \[ \mathrm{V}\left[\mathbf{X}\right]\boldsymbol{ \gamma} _{j}=\lambda_j \boldsymbol{ \gamma} _{j} \] e con la convenzione che gli autovalori siano ordinati in senso decrescente: \(\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_p\) (in effetti per alcune delle scomposizioni fatte occorrerebbe anche ipotizzare che siano tutti distinti, ma per ora non è necessario precisare altro)
dal momento che una matrice di varianze e covarianze è sempre semidefinita positiva
2.6 Estensioni e generalizzazioni.
L’analisi delle componenti principali è la più semplice delle cosiddette tecniche fattoriali. Appartiene alla famiglia dell’analisi delle correlazioni canoniche (massimizzare la correlazione fra due gruppi di variabili), come l’analisi delle corrispondenze (per variabili categoriali); sono possibili estensioni anche per dati suddivisi in gruppi (analisi delle funzioni discriminanti, recentemente ribattezzate come tecniche di SVM, Support Vector Machine).