# ======================== # ACP en R avec FactoMineR # ======================== # Exemple d'analyse en composantes principales (ACP), avec les données "food.txt" (Birks 87) # de préférences alimentaires relatives à 20 aliments pour 16 pays d'Europe en 1987 foodr = read.table("food.txt", header=TRUE, row.names="pays") # la colonne "pays" est l'identifiant foodr # pour voir... fix(foodr) # si on veut "éditer" les données; la suite du script ne peut s'exécuter que # lorsque l'éditeur est refermé # Pour faire l'ACP, on utilise la procédure "PCA" du package "FactoMineR", qu'il convient # donc de charger préalablement # Attention "PCA" en majuscule ! (c'est le choix des auteurs de FactoMineR) library(FactoMineR) # pour charger le package "FactoMineR" supposé déjà installé # alternative par script à la commande "Charger le package..." du menu "Packages" help(PCA) # si on veut lire l'aide de la commande "PCA" acpfood = PCA(foodr, scale.unit=FALSE) # ici ACP non normée et plan 1-2 plot.PCA(acpfood, axes=c(2,3)) # si on veut le plan 2-3 (procédure "plot.PCA" du package) plot.PCA(acpfood, axes=c(2,3), choix="var") # idem pour les variables # Et pour les résultats numériques acpfood$eig # les valeurs propres, ou taux d'inertie, successives ("eigenvalues") acpfood$ind # ce qui concerne les individus acpfood$ind$coord # seulement les composantes principales (ou nouvelles coordonnées) acpfood$var # les variables # On peut sauvegarder les composantes principales, par exemple, dans un fichier externe write.table(acpfood$ind$coord, file="acpres.txt") # ou write.table(acpfood$ind$coord, file="acpres.txt", sep=";", dec=",") si nécessaire # ou encore pour un fichier "csv" directement lisible par Excel write.table(acpfood$ind$coord, file="acpres.csv", sep=",", col.names=NA, qmethod = "double") acpfood2 = PCA(foodr, scale.unit=FALSE, ind.sup=15:16) # avec GB et IRE en supplémentaires # ou aussi bien "ind.sup=c(15,16)", utile si ces lignes n'avaient pas été consécutives plot.PCA(acpfood2, axes=c(2,3)) plot.PCA(acpfood2, axes=c(2,3), choix="var") acpfood2$eig acpfood2$ind acpfood2$ind.sup # ce qui concerne les individus supplémentaires acpfood2$var