Indice
L'analisi in componenti principali con FactoMineR
L'analisi in componenti principali in FactoMineR adotta un approccio ancora diverso. Come in princomp, le componenti vengono estratte dalla matrice delle correlazioni; diversamente che negli altri casi, però, l'analisi delle variabili e dei casi, nonché l'interpretazione dei fattori, viene condotta in base all'associazione variabili-componenti o individui-componenti.
In questo modo, è possibile rappresentare sui piani fattoriali le variabili eventualmente escluse dall'analisi (supplementari, o illustrative), anche categoriali, e non solo quantitative. Le misure di associazione e di qualità della rappresentazione utilizzate sono infatti — oltre alle correlazioni fra variabili attive e componenti — i coseni quadri e i valori test, che possono essere calcolati anche per le modalità delle variabili categoriali (Vedi anche Analisi delle corrispondenze).
FactoMineR ha una interfaccia che si apre nel browser, e che permette di e un plugin per RCommander, che fornisce una interfaccia a menu per l'esecuzione dei comandi.
Da script
Lo script utilizzato in questo esempio è disponibile all'indirizzo http://factominer.free.fr/docs/code_pca.r
In primo luogo, carichiamo la libreria necessaria, e il dataset di esempio:
> library(FactoMineR) > data(decathlon)
Eseguiamo poi il comando, indicando le variabili supplementari quantitative (quanti.sup
) e quelle qualitative (quali.sup
). Le altre variabili contenute nel dataset saranno automaticamente utilizzate come attive — ovvero per il calcolo delle componenti. Questo significa che il file deve contenere tutte e solo le variabili necessarie all'analisi.
> res <- PCA(decathlon, quanti.sup = 11:12, quali.sup = 13)
I grafici dei casi e delle variabili
L'output produce anche il grafico dei casi
che corrisponde al comamdo plot(res, choix=“ind”, axes=1:2)
e quello delle variabili
che corrisponde al comamdo plot(res, choix=“var”, axes=1:2)
Possiamo omettere i grafici con l'opzione graph = FALSE
.
L'interpretazione dei risultati
Per una analisi dettagliata di questi output, si veda ACP: interpretazione dei risultati con Factoextra (factoextra è un pacchetto che permette di ottenere un output simile a questi, a partire dai risultati delle funzioni della distribuzione base di R).
Gli oggetti contenuti in res
sono:
> res
**Results for the Principal Component Analysis (PCA)** The analysis was performed on 41 individuals, described by 13 variables *The results are available in the following objects: name description 1 "$eig" "eigenvalues" 2 "$var" "results for the variables" 3 "$var$coord" "coord. for the variables" 4 "$var$cor" "correlations variables - dimensions" 5 "$var$cos2" "cos2 for the variables" 6 "$var$contrib" "contributions of the variables" 7 "$ind" "results for the individuals" 8 "$ind$coord" "coord. for the individuals" 9 "$ind$cos2" "cos2 for the individuals" 10 "$ind$contrib" "contributions of the individuals" 11 "$quanti.sup" "results for the supplementary quantitative variables" 12 "$quanti.sup$coord" "coord. for the supplementary quantitative variables" 13 "$quanti.sup$cor" "correlations suppl. quantitative variables - dimensions" 14 "$quali.sup" "results for the supplementary categorical variables" 15 "$quali.sup$coord" "coord. for the supplementary categories" 16 "$quali.sup$v.test" "v-test of the supplementary categories" 17 "$call" "summary statistics" 18 "$call$centre" "mean of the variables" 19 "$call$ecart.type" "standard error of the variables" 20 "$call$row.w" "weights for the individuals" 21 "$call$col.w" "weights for the variables"
Usiamo gli elementi contenuti in res
per approfondire l'analisi.
Autovalori
Autovalori e varianza spiegata (% e %cum):
> res$eig
eigenvalue percentage of variance comp 1 3.2719055 32.719055 comp 2 1.7371310 17.371310 comp 3 1.4049167 14.049167 comp 4 1.0568504 10.568504 comp 5 0.6847735 6.847735 comp 6 0.5992687 5.992687 comp 7 0.4512353 4.512353 comp 8 0.3968766 3.968766 comp 9 0.2148149 2.148149 comp 10 0.1822275 1.822275 cumulative percentage of variance comp 1 32.71906 comp 2 50.09037 comp 3 64.13953 comp 4 74.70804 comp 5 81.55577 comp 6 87.54846 comp 7 92.06081 comp 8 96.02958 comp 9 98.17773 comp 10 100.00000
Grafico degli autovalori:
> barplot(res$eig[, 1])
Variabili
Medie e deviazioni standard (scarto tipo) delle variabili attive:
> round(cbind(res$call$centre, res$call$ecart.type), 2)
[,1] [,2] 100m 11.00 0.26 Long.jump 7.26 0.31 Shot.put 14.48 0.81 High.jump 1.98 0.09 400m 49.62 1.14 110m.hurdle 14.61 0.47 Discus 44.33 3.34 Pole.vault 4.76 0.27 Javeline 58.32 4.77 1500m 279.02 11.53
(cbind
serve ad unire i dataframe, round
serve ad arrotondare i decimali)
Coordinate fattoriali delle prime quattro componenti:
> res$var$coord[, 1:4]
Dim.1 Dim.2 Dim.3 Dim.4 100m -0.77471983 0.1871420 -0.18440714 -0.03781826 Long.jump 0.74189974 -0.3454213 0.18221105 0.10178564 Shot.put 0.62250255 0.5983033 -0.02337844 0.19059161 High.jump 0.57194530 0.3502936 -0.25951193 -0.13559420 400m -0.67960994 0.5694378 0.13146970 0.02930198 110m.hurdle -0.74624532 0.2287933 -0.09263738 0.29083103 Discus 0.55246652 0.6063134 0.04295225 -0.25967143 Pole.vault 0.05034151 -0.1803569 0.69175665 0.55153397 Javeline 0.27711085 0.3169891 -0.38965541 0.71227728 1500m -0.05807706 0.4742238 0.78214280 -0.16108904
Correlazioni delle variabili con le prime quattro componenti:
> res$var$cor[, 1:4]
Dim.1 Dim.2 Dim.3 Dim.4 100m -0.77471983 0.1871420 -0.18440714 -0.03781826 Long.jump 0.74189974 -0.3454213 0.18221105 0.10178564 Shot.put 0.62250255 0.5983033 -0.02337844 0.19059161 High.jump 0.57194530 0.3502936 -0.25951193 -0.13559420 400m -0.67960994 0.5694378 0.13146970 0.02930198 110m.hurdle -0.74624532 0.2287933 -0.09263738 0.29083103 Discus 0.55246652 0.6063134 0.04295225 -0.25967143 Pole.vault 0.05034151 -0.1803569 0.69175665 0.55153397 Javeline 0.27711085 0.3169891 -0.38965541 0.71227728 1500m -0.05807706 0.4742238 0.78214280 -0.16108904
Casi
Coordinate, contributi e coseni quadri (vedi: Analisi delle corrispondenze):
> round(cbind(res$ind$coord[, 1:4], res$ind$contrib[,1:4], res$ind$cos2[, 1:4]), 2)
Dim.1 Dim.2 Dim.3 Dim.4 Dim.1 Dim.2 Dim.3 Dim.4 SEBRLE 0.79 0.77 0.83 1.17 0.47 0.84 1.19 3.18 CLAY 1.23 0.57 2.14 -0.35 1.14 0.46 7.96 0.29 KARPOV 1.36 0.48 1.96 -1.86 1.38 0.33 6.64 7.95 BERNARD -0.61 -0.87 0.89 2.22 0.28 1.07 1.37 11.38 YURKOV -0.59 2.13 -1.23 0.87 0.26 6.38 2.61 1.76 .... Dim.1 Dim.2 Dim.3 Dim.4 SEBRLE 0.11 0.11 0.12 0.25 CLAY 0.12 0.03 0.37 0.01 KARPOV 0.16 0.02 0.33 0.30 BERNARD 0.05 0.10 0.10 0.65 YURKOV 0.04 0.50 0.16 0.08 ....
Caratterizzazione degli assi
> dimdesc(res)
$Dim.1 $Dim.1$quanti correlation p.value Points 0.9561543 0.000000e+00 Long.jump 0.7418997 2.849886e-08 Shot.put 0.6225026 1.388321e-05 High.jump 0.5719453 9.362285e-05 Discus 0.5524665 1.802220e-04 Rank -0.6705104 1.616348e-06 400m -0.6796099 1.028175e-06 110m.hurdle -0.7462453 2.136962e-08 100m -0.7747198 2.778467e-09 $Dim.2 $Dim.2$quanti correlation p.value Discus 0.6063134 2.650745e-05 Shot.put 0.5983033 3.603567e-05 400m 0.5694378 1.020941e-04 1500m 0.4742238 1.734405e-03 High.jump 0.3502936 2.475025e-02 Javeline 0.3169891 4.344974e-02 Long.jump -0.3454213 2.696969e-02 $Dim.3 $Dim.3$quanti correlation p.value 1500m 0.7821428 1.554450e-09 Pole.vault 0.6917567 5.480172e-07 Javeline -0.3896554 1.179331e-02
Infine, FactoMineR include una funzione che consente di esportare l'intero output in un file csv:
write.infile(res,file="my_FactoMineR_results.csv")
Script di esempio
- FM-PCA-ex.R
data(decathlon) res <- PCA(decathlon,quanti.sup=11:12,quali.sup=13) res res$eig barplot(res$eig[,1]) round(cbind(res$call$centre,res$call$ecart.type),2) res$var$coord[,1:4] res$var$cor[,1:4] round(cbind(res$ind$coord[,1:4],res$ind$contrib[,1:4],res$ind$cos2[,1:4]),2) dimdesc(res) write.infile(res,file="my_FactoMineR_results.csv")
Con Factoshiny
library(Factoshiny) PCAshiny(USArrests)
L'interfaccia si apre nel browser mostrando i grafici
Nella tabella “Values” possiamo scegliere se visualizzare la sintesi dei risultati, gli autovalori, i risultati relativi alle variabili o quelli relativi agli individui (i casi).
I parametri dell'analisi e le opzioni relative ai grafici sono modificabili nei relativi menu.
Nella tabella “Automatic description of the axes” possiamo visualizzare i dati utili alla caratterizzazione degli assi.
I risultati vengono organizzati in un report automatico personalizzabile dal relativo menu:
E' infine possibile esportare il codice dell'analisi.