Considérons deux variables \(X1\)
et \(X2\) mesurées sur cinq individus
de poids uniformes :
M<-data.frame(x1=c(seq(1,4),9),x2=c(5,10,8,8,12))
2.Centrer la matrice (calcul de Z)
Z <- scale(M,center=TRUE,scale=FALSE)
#Conversion en format matrice pour les calculs suivants
Z <- as.matrix(Z)
3.Matrice de var cov(A)
A<-cov(M)
4.Diagonalisation de A
eig<-eigen(A)
#extraction des valeurs propres
valeurs_propres<-eig$values
#extraction des vecteurs propres(matrice V)
vecteurs_propres<-eig$vectors
#pour l'afficher
print("valeurs propres(ordre décroissant):")
## [1] "valeurs propres(ordre décroissant):"
print(valeurs_propres )
## [1] 14.812202 1.687798
print("vecteurs propres(colonnes):")
## [1] "vecteurs propres(colonnes):"
print(vecteurs_propres)
## [,1] [,2]
## [1,] -0.7813330 0.6241144
## [2,] -0.6241144 -0.7813330
5.Construction de V et coordonnées factorielles
V<- vecteurs_propres
V
## [,1] [,2]
## [1,] -0.7813330 0.6241144
## [2,] -0.6241144 -0.7813330
F<-Z%*%V
F
## [,1] [,2]
## [1,] 4.4345442 1.06527832
## [2,] 0.5326392 -2.21727209
## [3,] 0.9995350 -0.03049175
## [4,] 0.2182021 0.59362266
## [5,] -6.1849204 0.58886286
colnames(F) <-c("F1","F2")
rownames(F) <- 1:5 # Numéro des individus
6.Représentation graphique
p_axe1 <-round((valeurs_propres[1]/sum(valeurs_propres)) * 100, 2)
p_axe2 <-round((valeurs_propres[2]/sum(valeurs_propres)) * 100, 2)
plot(F[,1],F[,2],
pch=19,col="darkblue",
xlab="Axe 1",ylab = "Axe 2",
main="Plan factorieldes individus")
text(F[,1],F[,2],labels=1:5,pos=3,col="red",font =2)
abline(h=0,v=0,lty =2,col="gray")
mtext(paste("Inertie Axe 1:",p_axe1,"%"), side =3,line=-1.5,adj=0.05, col="darkgreen")
mtext(paste("Inertie Axe 2:",p_axe2, "%"), side =3,line=-2.8, adj = 0.05,col="darkred")
