TD4 - Analyse en composantes principales >> p=[66 65 75 80 101 74 79 66 73 87 86 80 65 59 54]; >> t=[170 166 167 182 189 172 177 169 179 191 181 175 176 175 161]; >> plot(p,t,'x') % Calcul des moyennes >> mp = mean(p) mp = 74 >> mt = sum(t)/length(t) mt = 175.33 % Trace des axes >> lx=[50 110]; >> ly=[mt mt]; >> line(lx,ly) >> lx=[mp mp]; >> ly=[160 200]; >> line(lx,ly) % Calcul de la matrice de covariance >> A=[p;t] A = Columns 1 through 12 66 65 75 80 101 74 79 66 73 87 86 80 170 166 167 182 189 172 177 169 179 191 181 175 Columns 13 through 15 65 59 54 176 175 161 >> B(1,:)=A(1,:)-mp; >> B(2,:)=A(2,:)-mt; >> B B = Columns 1 through 7 -8.0000 -9.0000 1.0000 6.0000 27.0000 0 5.0000 -5.3333 -9.3333 -8.3333 6.6667 13.6667 -3.3333 1.6667 Columns 8 through 14 -8.0000 -1.0000 13.0000 12.0000 6.0000 -9.0000 -15.0000 -6.3333 3.6667 15.6667 5.6667 -0.3333 0.6667 -0.3333 Column 15 -20.0000 -14.3333 >> S = (B*(B'))/(length(t)-1) S = 146.8571 81.2857 81.2857 69.0952 >> [V,val]=eig(S) V = -0.8460 0.5331 -0.5331 -0.8460 val = 198.0822 0 0 17.8702 >> C(1,:)=-0.846*B(1,:)-0.5331*B(2,:) C = Columns 1 through 7 9.6112 12.5896 3.5965 -8.6300 -30.1277 1.7770 -5.1185 Columns 8 through 14 10.1443 -1.1087 -19.3499 -13.1729 -4.8983 7.2586 12.8677 Column 15 24.5611 >> Res=[C;A] Res = Columns 1 through 7 9.6112 12.5896 3.5965 -8.6300 -30.1277 1.7770 -5.1185 66.0000 65.0000 75.0000 80.0000 101.0000 74.0000 79.0000 170.0000 166.0000 167.0000 182.0000 189.0000 172.0000 177.0000 Columns 8 through 14 10.1443 -1.1087 -19.3499 -13.1729 -4.8983 7.2586 12.8677 66.0000 73.0000 87.0000 86.0000 80.0000 65.0000 59.0000 169.0000 179.0000 191.0000 181.0000 175.0000 176.0000 175.0000 Column 15 24.5611 54.0000 161.0000 >> sortrows(Res') ans = -30.1277 101.0000 189.0000 -19.3499 87.0000 191.0000 -13.1729 86.0000 181.0000 -8.6300 80.0000 182.0000 -5.1185 79.0000 177.0000 -4.8983 80.0000 175.0000 -1.1087 73.0000 179.0000 1.7770 74.0000 172.0000 3.5965 75.0000 167.0000 7.2586 65.0000 176.0000 9.6112 66.0000 170.0000 10.1443 66.0000 169.0000 12.5896 65.0000 166.0000 12.8677 59.0000 175.0000 24.5611 54.0000 161.0000 ------------------------------------------------------ II Second exemple ------------------------------------------------------ Le fichier glaw.m function GV = glaw(taille,M,E) % renvoit un vecteur normalement distribue autour de M avec un ecart type de E for i=1:taille GV(1,i)=M+E*sqrt(-2*log(rand))*cos(2*pi*rand); end >> A2(1,:)=glaw(500,175,20); >> for i=1:500 A2(2,i) = A2(1,i)-110+10*sqrt(-2*log(rand))*cos(2*pi*rand); end >> A2(3,:)=glaw(500,100,25); >> S = cov(A2') S = 364.9438 372.3848 -39.1530 372.3848 473.4370 -29.8236 -39.1530 -29.8236 605.6371 On note que les valeurs S(3,1) S(3,2) et leur sysmétrique sont faibles comparées aux autres. Cela reflète le fait que la variable QI est indépendantes des deux autres (en théorie ces valeurs devraient être nulles).