Le fichier precipitations.txt comporte des données de
précipitations sur plusieurs îles de Polynésie,
Atuona, Faaa, Here, Rapa, Tubuai, Takaroa, Omoa,
Paea, Papara, Papeeno.
Par années, mois et jours, les précipitations sont données en mm de
pluie (-99 correspond à une donnée manquante).
On récupérera le fichier precipitations.txt.
On transformera les données en matrice comme suit.
stacksize(10000000);
// taille mémoire
M=fscanfMat('precipitations.txt');
// convertit un tableau de données en matrice
Stations =list("Atuona","Faaa","Here","Rapa","Tubuai","Takaroa",...
"Omoa","Paea1","Papara1","Papeeno1");
// liste des stations de mesure
stations=size(Stations);
// nombre des stations de mesure
De nombreuses données manquantes sont repérées par le nombre -99.
Question 1
Identifier les stations sans données manquantes.
Tracer la courbe des précipitations.
|
ZU=bool2s(M==-99);
// matrice de 1 (si élément = -99) et de 0 (sinon)
[lhs,rhs]=maxi(ZU($:-1:1,4:$),"r");
// rhs contient les indices, comptés depuis la fin, à partir desquels
// -99 n'apparait plus sur la colonne correspondante
// sauf si -99 n'apparait jamais dans une colonne !!!
printf('indices des stations sans donnees manquantes :\n');
SDM=find(rhs==1)
for i=SDM
xset("window",i); xbasc();
plot2d(M(:,i+3));
xtitle('Precipitations pour la station'+string(Stations(i)),...
'jours','precipitations (mm)');
end
xdel(SDM);
Question 2
Identifier, pour chaque station, la première date à partir de laquelle
il n'y a pas de donnée manquante après.
Tracer, pour chaque station, la courbe des précipitations à partir de
cette date.
|
ZU=bool2s(M==-99);
[lhs,rhs]=maxi(ZU($:-1:1,4:$),"r");
// rhs contient les indices, comptés depuis la fin, à partir desquels
// -99 n'apparait plus sur la colonne correspondante
// sauf si -99 n'apparait jamais dans une colonne !!!
// dates-rhs : pour chaque station, indice de date à partir de laquelle
// il n'y a pas de donnée manquante
for i=1:stations
if rhs(i)==1 then rhs(i)=dates, end
xset("window",i); xbasc();
plot2d(dates-rhs(i)+2:dates,M(dates-rhs(i)+2:dates,i+3));
xtitle('Precipitations pour la station'+string(Stations(i)),...
'jours','precipitations (mm)');
end
xdel(1:stations);
Question 3
Extraire du tableau les lignes n'ayant aucune donnée manquante.
Ceci correspondant aux jours pour lesquels toutes les stations
ont une mesure de précipitation. Calculer la matrice des corrélations pour
ces données. Représenter les valeurs propres par ordre décroissant.
Tracer projections du nuage et cercles des corrélations sur les premiers
plans factoriels.
|
getf("ACP.sci");
// chargement du fichier ACP.sci
// PROBLEME DES DONNES MANQUANTES
z=mini(M,"c");
// minimum par ligne
ind=find(z>=0);
// indices correspondants
A=M(ind,4:$);
// matrice extraite correspondant aux jours pour lesquels
// il n'y a pas de donnée manquante pour aucune station
mat_cor=correlation(A);
// matrice des corrélations
valp=val_prop(mat_cor);
// valeurs propres
xset("window",0);
xbasc();plot2d2(1:sum(ones(valp)),valp/sum(valp));
xtitle("Eboulement des valeurs propres (normalisées)")
Coord=acp_indiv(A);
i=1;j=2;
xset("window",1);
nuage(Coord,i,j);
xset("window",2);
cercle(Coord,i,j);
xtitle("cercle des correlations : plan 1-2");
i=1;j=3;
xset("window",3);
nuage(Coord,i,j);
xset("window",4);
cercle(Coord,i,j);
xtitle("cercle des correlations : plan 1-3");
i=2;j=3;
xset("window",5);
nuage(Coord,i,j);
xset("window",6);
cercle(Coord,i,j);
xtitle("cercle des correlations : plan 2-3");
xset("window",7);
i=1;j=2;
qualite_indiv(A,i,j);
xdel(0:7)