1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #librairie lecture fichier excel
library(xlsReadWrite)
#chargement des données dans la première feuille de calcul
#première colonne = label des observations
#les données sont dans la première feuille
ville <- read.xls(file="c:/caf.xls",rowNames=T,sheet=1)
#qqs vérifications
#affichage
print(ville)
#statistiques descriptives
summary(ville)
#nuages de points
pairs(ville)
#partition des données (var. actives et illustratives)
ville.actifs <- ville[,1:23]
#nombre d'observations
n <- nrow(ville.actifs)
print(n)
#*******************************
# ACP avec la procédure princomp
#*******************************
#centrage et réduction des données --> cor = T
#calcul des coordonnées factorielles --> scores = T
acp.ville <- princomp(ville.actifs, cor = T, scores = T)
#print
print(acp.ville)
#summary
print(summary(acp.ville))
#quelles les propriétés associées à l'objet
print(attributes(acp.ville))
#*************************
#**** val. propres *******
#*************************
#obtenir les variances associées aux axes c.-à-d. les valeurs propres
val.propres <- acp.ville$sdev^2
print(val.propres)
#scree plot (graphique des éboulis des valeurs propres)
plot(1:6,val.propres,type="b",ylab="Valeurs propres",xlab="Composante",main="Scree plot")
#intervalle de confiance des val.propres à 95%
val.basse <- val.propres * exp(-1.96 * sqrt(2.0/(n-1)))
val.haute <- val.propres * exp(+1.96 * sqrt(2.0/(n-1)))
#tableau
tableau <- cbind(val.basse,val.propres,val.haute)
colnames(tableau) <- c("B.Inf.","Val.","B.Sup")
print(tableau,digits=3)
#*************************************************
#coordonnées des variables sur les axes factoriels
#*************************************************
#**** corrélation variables-facteurs ****
c1 <- acp.ville$loadings[,1]*acp.ville$sdev[1]
c2 <- acp.ville$loadings[,2]*acp.ville$sdev[2]
#affichage
correlation <- cbind(c1,c2)
print(correlation,digits=2)
#carrés de la corrélation
print(correlation^2,digits=2)
#cumul carrés de la corrélation
print(t(apply(correlation^2,1,cumsum)),digits=2)
#*** cercle des corrélations - variables actives ***
plot(c1,c2,xlim=c(-1,+1),ylim=c(-1,+1),type="n")
abline(h=0,v=0)
text(c1,c2,labels=colnames(ville.actifs),cex=0.5)
symbols(0,0,circles=1,inches=F,add=T)
#***************************************************************
#*** projection des individus dans le premier plan factoriel ***
#***************************************************************
#l'option "scores" demandé dans princomp est très important ici
plot(acp.ville$scores[,1],acp.ville$scores[,2],type="n",xlab="Comp.1 - 74%",ylab="Comp.2 - 14%")
abline(h=0,v=0)
text(acp.ville$scores[,1],acp.ville$scores[,2],labels=rownames(ville.actifs),cex=0.75)
#**************************************************************************************
#*** représentation simultanée : individus x variables - cf. Lebart et al., pages 46-48
#**************************************************************************************
biplot(acp.ville,cex=0.75)
#**************************************
#*** contributions des individus actifs
#**************************************
#contributions à une composante - calcul pour les 2 premières composantes
all.ctr <- NULL
for (k in 1:2){all.ctr <- cbind(all.ctr,100.0*(1.0/n)*(acp.ville$scores[,k]^2)/(acp.ville$sdev[k]^2))}
print(all.ctr) |
Partager