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:

(e$values[1] + e$values[2]) / 5
#> [1] 0.9603517

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.