load Bordeaux.dat
%
% Les 6 colonnes représentent respectivement:
%   - L'année 19xx
%   - La somme des temp. moyennes journalières en degré
%   - La durée d'insolation en heures
%   - le nombre de jours de grande chaleur
%   - la hauteur des pluies en millimètre
%   - une note de qualité de 1 (cru exceptionnel) à 7
%
A=1900+Bordeaux(:,1);
Q=Bordeaux(:,end);
bar(A,Q),xlabel('année'),ylabel('qualité'),
title('Etude qualité des vins de Bordeaux'),
%
% Une petite régression linéaire pour commencer,
% on notera le signe des coefficients, en part de
% la pluviométrie...
%
n=length(A);
X=Bordeaux(:,2:5);
Xc=(X-ones(n,1)*mean(X))./(ones(n,1)*std(X));
mq=mean(Q);
sq=std(Q);
Qc=(Q-ones(n,1)*mq)./(ones(n,1)*sq);
m=Xc\Qc
hold on,plot(A,mq+sq*(Xc*m),'rx'),hold off,
pause
%
% Et une ACP normée pour confirmer
%
C=cov(Xc);
[U,S,V]=svd(C);
s=diag(S)
dispersion=(s(1)+s(2))/sum(s)
Y=Xc*U;
l=18;
plot(Y(1:l,1),Y(1:l,2),'rx',...
     Y((l+1):end,1),Y((l+1):end,2),'bx'),
for i=1:n,
   text(Y(i,1),Y(i,2),num2str(A(i)-1900)),
end,
xlabel('axe principale'),ylabel('second axe'),
title('Analyse en composante principale: nuage des points'),
pause,
t=0:0.01:(2*pi);
plot(cos(t),sin(t),'r');
for i=1:4,
   text(sqrt(s(1))*U(i,1),sqrt(s(2))*U(i,2),['X',num2str(i)]),
end,
xlabel('axe principale'),ylabel('second axe'),
title('Analyse en composante principale: explication des axes'),
