View file src/j/acp.ijs - Download
NB. Analyse en composantes principales
NB. Exemple tiré de http://www.math.u-bordeaux.fr/~mchave100p/wordpress/wp-content/uploads/2013/10/ACP_L3.pdf
NB. http://log.chez.com/text/math/ACP_L3.pdf
transpose =: |:
matprod =: + / . *
id =: (= / ~) @ i.
diag =: 3 : 0
y * id # y
)
NB. Tableau de données
X =: 1 3 $ 90 140 6.0
X =: X , 60 85 5.9
X =: X , 75 135 6.1
X =: X , 70 145 5.8
X =: X , 85 130 5.4
X =: X , 70 145 5.0
n =: # X
p =: # 0 { X
M =: (+ / X) % # X NB. Moyenne des colonnes
Y =: X - (1 + 0 * i. # X) * / M NB. Données centrées
E =: ((+ / Y ^ 2) % # Y) ^ 0.5 NB. Ecarts-types des colonnes
Z =: Y % (1 + 0 * i. # Y) * / E NB. Données centrées-réduites
C =: ((transpose Y) matprod Y) % # Y NB. Matrice des covariances
R =: ((transpose Z) matprod Z) % # Z NB. Matrice des corrélations
LV =: deflation R NB. Valeurs et vecteurs propres
V =: > 1 { LV NB. Vecteurs propres
NB. V =: V % (1 + 0 * i. # V) * / (+ / V ^ 2) ^ 0.5 NB. Vecteurs propres normés
F =: Z matprod V NB. Composantes principales
echo 'Composantes principales :'
echo F
S =: (Z matprod transpose Z) % # Z
KU =: deflation S
U =: > 1 { KU
NB. U =: U % (1 + 0 * i. # U) * / (+ / U ^ 2) ^ 0.5
A =: ((transpose Z) matprod U) % # Z
echo 'Coordonnées factorielles des variables :'
echo A
L =: diag (> 0 { LV) ^ 0.5
K =: diag (> 0 { KU) ^ 0.5
F1 =: U matprod K
A1 =: V matprod L