Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


r:analisi_esplorativa:acp_interpretazione_factoextra

ACP: interpretazione dei risultati con Factoextra

Factoextra è un pacchetto che facilita l'estrazione e l'elaborazione delle informazioni dai risultati di diverse procedure di analisi esplorativa dei dati, nonché la creazione di grafici più complessi e personalizzabili, basati su ggplot. Per tale ragione, dopo aver installato il pacchetto, richiameremo anche i pacchetti del tidyverse:

install.packages("factoextra")
library(tidyverse>
library(factoextra)

Prendiamo ad esempio i risultati della funzione princomp():

PCA <- princomp(USArrests, cor = TRUE)

Le funzioni che seguono possono essere applicate anche ai risultati dell'ACP ottenuta con prcomp(), e produrranno output simili a quelli dell'ACP con FactoMineR.

Autovalori

Possiamo ottenere la tabella degli autovalori, con la funzione get_eig():

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

Rispetto al risultato di summary(PCA), abbiamo qui un vero e proprio dataframe, che potrà essere facilmente inserito in un report. Inoltre, i valori sono presentati in colonna.

Quando le variabili sono numerose, il grafico degli autovalori è di grande aiuto nel decidere quante componenti utilizzare.

fviz_eig(PCA)
&nolink|

Dal grafico, è possibile notare come la quota di varianza rappresentata da ciascun autovalore si riduce rapidamente. Come si è detto, infatti, le componenti vengono estratte in maniera da riprodurre la massima varianza, in ordine gerarchico decrescente.

I grafici delle componenti principali

I grafici possono essere ottenuti con le funzioni fviz_pca() (casi e variabili), fviz_pca_var() (variabili) e fviz_pca_ind() (casi, o individui).

La funzione fviz_pca() produce un grafico simile a quello che si può ottenere con biplot(PCA).

fviz_pca(PCA)
&nolink|

L'origine degli assi rappresenta la media delle variabili, o il valore rispetto al quale le variabili sono state normalizzate.

Il grafico delle variabili

fviz_pca_var(PCA)
&nolink|

Possiamo personalizzare i risultati modificando gli argomenti della funzione:

fviz_pca_var(PCA, geom=c("point", "text"), 
             labelsize = 3, repel = T,
             title = "Le variabili")
&nolink|

Il grafico degli individui

Per migliorare la leggibilità del grafico degli individui, usiamo gli argomenti labelsize = 3 e repel = T, in modo da ridurre le dimensioni del carattere delle etichette e di evitare che queste ultime si sovrappongano.

fviz_pca_ind(PCA,
             labelsize = 3, repel = T)
&nolink|

Interpretazione e valutazione delle componenti

Il pacchetto factoextra consente di estrarre le informazioni necessarie all'interpretazione degli assi fattoriali in questo modo:

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

I contributi

I contributi (o contributi assoluti) sono pari alla comunalità, moltiplicata per cento.

Possiamo calcolare la comunalità elevando al quadrato i loadings, e dividendoli per il totale di riga (calcolando cioè le proporzioni per riga):

comm <- as.table(PCA$loadings)
comm <- prop.table(comm^2, margin = 1)
comm
             Comp.1     Comp.2     Comp.3     Comp.4
Murder   0.28718825 0.17487524 0.11643977 0.42149674
Assault  0.34010315 0.03533859 0.07190358 0.55265468
UrbanPop 0.07739016 0.76179065 0.14289594 0.01792325
Rape     0.29531844 0.02799553 0.66876071 0.00792533
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

I contributi rappresentano quindi la percentuale di varianza delle variabili rappresentata da ciascuna componente. Per tale ragione, possono essere interpretati in termini di contributo dato da ciascuna variabile alla definizione delle componenenti.

Una variabile con un contributo alto è importante ai fini dell'interpretazione semantica della componente.

I coseni quadri

I coseni quadri (o contributi relativi) rappresentano la quota di variabilità della variabile "spiegata" dalla componente:

PCA.var$cos2
             Dim.1     Dim.2      Dim.3       Dim.4
Murder   0.7122962 0.1730854 0.04151814 0.073100217
Assault  0.8435380 0.0349769 0.02563817 0.095846950
UrbanPop 0.1919463 0.7539938 0.05095143 0.003108430
Rape     0.7324611 0.0277090 0.23845544 0.001374491

Una variabile con un coseno quadrato alto è ben rappresentata dalla componente. Quando le variabili sono numerose, può essere utile tenere a mente la distinzione fra contributi e coseni quadrati.

Ad esempio, la varianza della prima variabile Murder sulla prima componente è pari al 29% del 2,48% di varianza spiegata dalla componente stessa:

28.72 * 2.48
[1] 71.2256

Anche se questa variabile contribuisce in misura maggiore al quarto asse (42%), è meglio rappresentata dal primo. Il quarto asse, infatti, riproduce solo lo 0,2% della varianza totale:

42.15 * 0.1734301
[1] 7.310079

Script di esempio

E' possibile scaricare ed eseguire lo script dell'esempio:

PCA_factoextra.R
library(tidyverse>
library(factoextra)
PCA <- princomp(USArrests, cor = TRUE)
# autovalori
get_eig(PCA)
# grafici
fviz_eig(PCA)
fviz_pca(PCA)
fviz_pca_var(PCA)
fviz_pca_ind(PCA,
             labelsize = 3, repel = T)
# interpretazione delle componenti
PCA.var <- get_pca_var(PCA)
PCA.var$contrib
PCA.var$cos2
r/analisi_esplorativa/acp_interpretazione_factoextra.txt · Ultima modifica: 19/06/2022 19:01 da admin