23.2 Metodo delle componenti principali
L’analisi fattoriale eseguita mediante il metodo delle componenti principali, nonostante il nome, non è un’analisi delle componenti principali. Il metodo delle componenti principali costituisce invece un’applicazione del teorema di scomposizione spettrale di una matrice. Il teorema spettrale afferma che “data la matrice simmetrica \(\textbf{S}_{p \times p}\), è sempre possibile trovare una matrice \(\textbf{C}_{p \times p}\) ortogonale tale che
\[ \textbf{S} = \textbf{C}\textbf{D}\textbf{C}^{\mathsf{T}} \] con D diagonale.” Il teorema specifica inoltre che gli elementi presenti sulla diagonale di D sono gli autovalori di S, mentre le colonne di C rappresentano i rispettivi autovettori normalizzati associati agli autovalori di S.
Facciamo un esempio numerico utilizzando i dati discussi da Rencher(2002). Brown, Williams e Barlow (1984) hanno raccolto le valutazioni di una ragazza dodicenne relativamente a sette persone di sua conoscenza. Ciascuna persona veniva valutata su una scala a nove punti rispetto a cinque variabili: kind, intelligent, happy, likeable e just. La matrice di correlazione per tali variabili è riportata di seguito:
R <- matrix(
c(
1.000, .296, .881, .995, .545,
.296, 1.000, -.022, .326, .837,
.881, -.022, 1.000, .867, .130,
.995, .326, .867, 1.000, .544,
.545, .837, .130, .544, 1.000
),
ncol = 5, byrow = T, dimnames = list(
c("K", "I", "H", "L", "J"),
c("K", "I", "H", "L", "J")
)
)
Gli autovalori e gli autovettori si calcolano con la funzione eigen()
:
e <- eigen(R)
print(e, 3)
#> eigen() decomposition
#> $values
#> [1] 3.263377 1.538382 0.167969 0.030030 0.000242
#>
#> $vectors
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] -0.537 -0.186 -0.1899 -0.125 0.791
#> [2,] -0.287 0.651 0.6849 -0.120 0.103
#> [3,] -0.434 -0.474 0.4069 0.614 -0.212
#> [4,] -0.537 -0.169 -0.0953 -0.629 -0.527
#> [5,] -0.390 0.538 -0.5658 0.444 -0.204
Come indicato in precedenza, la matrice R può essere espressa come \(\textbf{R} = \textbf{C}\textbf{D}\textbf{C}^{\ensuremath{\mathsf{T}}}\):
e$vectors %*% diag(e$values) %*% t(e$vectors)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 1.000 0.296 0.881 0.995 0.545
#> [2,] 0.296 1.000 -0.022 0.326 0.837
#> [3,] 0.881 -0.022 1.000 0.867 0.130
#> [4,] 0.995 0.326 0.867 1.000 0.544
#> [5,] 0.545 0.837 0.130 0.544 1.000
Esaminiamo ora gli autovalori. I primi due autovalori spiegano da soli il 96% della varianza campionaria:
Usando i primi due autovalori e i primi due autovettori sarà dunque possibile riprodurre in maniera soddisfacente la matrice R operando nel contempo una riduzione di dimensionalità dei dati.
Per fattorizzare \(\textbf{R} = \textbf{C}\textbf{D}\textbf{C}^{\ensuremath{\mathsf{T}}}\) nella forma \(\hat{\boldsymbol{\Lambda}} \hat{\boldsymbol{\Lambda}}^{\ensuremath{\mathsf{T}}}\) iniziamo a scrivere
\[\textbf{D}= \textbf{D}^{1/2} \textbf{D}^{1/2}\]
dove
\[ \textbf{D}^{1/2} = \left[ \begin{array}{ c c c c } \sqrt{\theta_1} & 0 & \dots & 0 \\ 0 & \sqrt{\theta_2} & \dots & 0 \\ \dots & \dots & & \dots \\ 0 & 0 & \dots & \sqrt{\theta_p} \end{array} \right] \]
Viene qui usata la notazione \(\theta\) per denotare gli autovalori anziché il tradizionale \(\lambda\) per evitare la confusione con la notazione \(\lambda_{jl}\) usata per le saturazioni fattoriali. In questo modo, possiamo scrivere
\[\begin{equation} \begin{aligned} \textbf{R} &= \textbf{C}\textbf{D}\textbf{C}^{\mathsf{T}}\notag\\ &= \textbf{C}\textbf{D}^{1/2}\textbf{D}^{1/2}\textbf{C}^{\mathsf{T}}\notag\\ &= (\textbf{C}\textbf{D}^{1/2}) (\textbf{C}\textbf{D}^{1/2})^{\mathsf{T}} \end{aligned} \end{equation}\]
Non possiamo però limiarci a definire \(\hat{\boldsymbol{\Lambda}}=\textbf{C}\textbf{D}^{1/2}\) in quanto \(\textbf{C}\textbf{D}^{1/2}\) è di ordine \(p \times p\) e non otteniamo quindi una riduzione di dimensioni. Quello che cerchiamo è una matrice \(\hat{\boldsymbol{\Lambda}}\) di ordine \(p \times m\) con \(m < p\). Dunque, definiamo la matrice \(\textbf{D}_1= \text{diag}(\theta_1, \theta_2, \dots, \theta_m)\) come la la matrice contenente gli \(m\) autovalori più grandi di R e \(\textbf{C}_1=( \textbf{c}_1, \textbf{c}_2, \dots, \textbf{c}_m)\) come la matrice contenente i rispettivi autovettori. Mediante il metodo delle componenti principali, le saturazioni fattoriali \(\hat{\boldsymbol{\Lambda}}\) vengono quindi stimate nel modo seguente:
\[\begin{equation} \begin{aligned} \hat{\boldsymbol{\Lambda}} &= \textbf{C}_1 \textbf{D}_1^{1/2}\notag\\ &= (\sqrt{\theta_1} \textbf{c}_1, \sqrt{\theta_2} \textbf{c}_2, \dots, \sqrt{\theta_m} \textbf{c}_m) \end{aligned} \end{equation}\]
Per l’esempio presente, con \(m=2\) e \(p=5\), avremo
\[ \left[ \begin{array}{ c c } \hat{\lambda}_{11} & \hat{\lambda}_{12} \\ \hat{\lambda}_{21} & \hat{\lambda}_{22} \\ \hat{\lambda}_{31} & \hat{\lambda}_{32} \\ \hat{\lambda}_{41} & \hat{\lambda}_{42} \\ \hat{\lambda}_{51} & \hat{\lambda}_{52} \end{array} \right] = \left[ \begin{array}{ c c } c_{11} & c_{12} \\ c_{21} & c_{22} \\ c_{31} & c_{32} \\ c_{41} & c_{42} \\ c_{51} & c_{52} \end{array} \right] \left[ \begin{array}{ c c } \sqrt{\theta_1} & 0\\ 0 &\sqrt{\theta_2} \end{array} \right] \]
Le saturazioni fattoriali stimate sono dunque uguali a
\[ \left[ \begin{array}{ c c } \sqrt{\theta_1}c_{11} & \sqrt{\theta_2}c_{12} \\ \sqrt{\theta_1}c_{21} & \sqrt{\theta_2}c_{22} \\ \sqrt{\theta_1}c_{31} & \sqrt{\theta_2}c_{32} \\ \sqrt{\theta_1}c_{41} & \sqrt{\theta_2}c_{42} \\ \sqrt{\theta_1}c_{51} & \sqrt{\theta_2}c_{52} \end{array} \right] \]
Svolgendo i calcoli con \(\textsf{R}\) otteniamo:
L <- cbind(
e$vectors[, 1] * sqrt(e$values[1]),
e$vectors[, 2] * sqrt(e$values[2])
)
round(L, 3)
#> [,1] [,2]
#> [1,] -0.970 -0.231
#> [2,] -0.519 0.807
#> [3,] -0.785 -0.588
#> [4,] -0.971 -0.210
#> [5,] -0.704 0.667
La matrice di correlazione riprodotta (con le comunalità sulla diagonale principale) diventa
round(L %*% t(L), 3)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.993 0.317 0.896 0.990 0.529
#> [2,] 0.317 0.921 -0.067 0.335 0.904
#> [3,] 0.896 -0.067 0.961 0.885 0.160
#> [4,] 0.990 0.335 0.885 0.987 0.543
#> [5,] 0.529 0.904 0.160 0.543 0.940
Possiamo ora capire il motivo del nome “metodo delle componenti principali.” Le saturazioni fattoriali sono proporzionali agli autovettori di \(\textbf{R}\). Tuttavia, dopo la rotazione delle saturazioni fattoriali, l’interpretazione dei fattori è diversa da quella che viene assegnata ai risultai dell’analisi delle componenti principali.
È possibile condurre l’analisi fattoriale con il metodo delle componenti principali sia utilizzando la matrice \(\textbf{S}\) di varianze-covarianze sia la matrice \(\textbf{R}\) delle correlazioni. Tuttavia, le soluzioni ottenute usando \(\textbf{S}\) o \(\textbf{R}\) non sono legate da una relazione algebrica: il metodo delle componenti principali non è invariante rispetto ai cambiamenti di scala delle osservazioni. Un altro svantaggio del metodo delle componenti principali è che non fornisce un test di bontà di adattamento. Tale test può essere invece svolto quando la soluzione viene trovata con il metodo della massima verosimiglianza.