source: trunk/RESULTATS/regandsignif_seriestemporelles.m @ 24

Last change on this file since 24 was 24, checked in by pinsard, 15 years ago

modif de commentaires pour cause de renommage de scripts, de chgt d'IO etc.

File size: 7.1 KB
Line 
1%REGANDSIGNIF_SERIESTEMPORELLES calcule la regression lineaire d'une serie temporelle issue du champ de donnees initial
2% (selectionne en un point d'espace particulier) et une composante principale choisie     
3%
4% Date: Avril-Mai 2008
5% Auteur: juliette.mignot@locean-ipsl.upmc.fr
6% Contexte Ecole d'ete ENVI-STAT 2008
7%+
8%
9% module
10% ======
11%
12% ``regandsignif_seriestemporelles``
13%
14% DESCRIPTION
15% ===========
16%
17% ``regandsignif_seriestemporelles`` lit les fichiers fichiers
18% ``../DONNEES/lsmask_tropatl_PacandMedblancs.mat``,
19% ``../DONNEES/skt.mon.tropatl.mat``.
20%
21% ``regandsignif_seriestemporelles`` lit aussi le fichier
22% ``../DONNEES//eof_SSTan_tropAtl30N-20S.mat``
23% produit par eof_NCEP_an.m_.
24%
25% ``regandsignif_seriestemporelles`` calcule ++
26%
27% ``regandsignif_seriestemporelles`` affiche ++
28%
29% ``regandsignif_seriestemporelles`` sauve cette image dans
30% ``./eof_SSTan_tropAtl30N-20S.mat_regandsignif_seriestemporelles_1.eps``.
31%
32% EXAMPLES
33% ========
34%
35% ::
36%
37% >> addpath('../PROGRAMMES/')
38% >> tpacpandreg_startup
39% >> regandsignif_seriestemporelles
40%
41%
42% SEE ALSO
43% ========
44%
45% tpacpandreg_startup.m_
46%
47% .. _tpacpandreg_startup.m : tpacpandreg_startup.m.html
48%
49% eof_NCEP_an.m_
50%
51% .. _eof_NCEP_an.m : eof_NCEP_an.m.html
52%
53% TODO
54% ====
55%
56% improve description
57%
58% pourquoi ``return`` à la fin
59%
60% ajout xlabel et ylabel
61%
62% EVOLUTIONS
63% ==========
64%
65% $Id$
66%
67%
68% - fplod 2009-08-25T10:40:16Z aedon.locean-ipsl.upmc.fr (Darwin)
69%
70%    * modif commentaires liée au renommage
71%
72% - jmignot 2009-08-25
73%
74%   * RESULTATS/Reg_seriestemporelles.m renommé en
75%     RESULTATS/regandsignif_seriestemporelles.m pour éviter confusion
76%     avec PROGRAMMES/Reg_seriestemporelles.m
77%   * chgt de noms de fichiers : ``EOF_ devient ``eof_``
78%
79% - fplod 2009-08-24T11:44:38Z aedon.locean-ipsl.upmc.fr (Darwin)
80%
81%   * add header
82%   * répertoire de données relatifs au répertoire courant
83%   * suppression de ``clear all`` présent dans ``tpacpandreg_startup.m``
84%   * as octave save default format is ASCII and no default extension
85%     while matlab save default format is MAT v5 mat-file (little endian) and
86%     default extension is ``.mat``, write more precise save instruction
87%   * save the figure
88%   * replace file radical ``EOF_SST_tropAtl`` by ``EOF_SSTan_tropAtl``
89%   * split lines with multiple statements
90%   * handle ``corrcoef`` octave/matlab difference of output
91%
92%-
93
94%%
95%% PARAMETRES DU PROGRAMME
96% selection de la composante principale a considerer
97ipc=1; %rang de la composante principale que l'on va considerer ici
98
99% les coordonnees du point d'espace auquel on veut comparer cette
100% composante principale doit etre choisi plus bas, apres chargement des
101% longitudes et latitudes
102%%
103%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
105%%%%              CHARGEMENT ET PREPARATION DES DONNEES
106%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
107
108nannees=60;
109repertoire=[ '..' filesep 'DONNEES' filesep ]; % a adapter a chaque cas: chemin d acces aux donnees
110
111% Mask
112%------
113file='lsmask_tropatl_PacandMedblancs.mat'
114   load([repertoire file]);
115% Data
116%--------
117  repertoire2=[repertoire 'MAT' filesep] % a adapter a chaque cas: chemin d acces aux donnees
118  file=['skt.mon.tropatl.mat']
119  load([repertoire2 file]); % chargement des donnees
120  tab=permute(tab,[2 3 1]); % permutation des dimensions pour organiser le tableau sous la forme [lat lon temps]
121
122% Application du masque
123%----------------------
124mask3D=repmat(mask,[1 1 size(tab,3)]);
125tab(mask3D~=0)=NaN;
126
127
128%  MANIPULATIONS TEMPORELLES: MOYENNES
129
130% Construction de moyennes annuelles
131%---------------------------------------
132tab=reshape(tab,size(tab,1),size(tab,2),12,nannees);
133tab_an=squeeze(mean(tab,3));
134%Calcul des anomalies
135%tab_an_mean=squeeze(mean(tab_an,3));
136%tab_an_mean=repmat(tab_an_mean,[1 1 size(tab_an,3)]);
137%tab_an=tab_an-tab_an_mean;
138
139%%
140%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
141%%%% selection d'un point d'espace
142%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143% le point d'espace est selectionne en reperant son indice i,j dans le
144% tableau de longitude et de latitude
145
146%i=find(lon>-96 & lon<-94);
147%j=find(lat>19 & lat<21);
148i=find(lon>-96 & lon<-94);
149j=find(lat>19 & lat<21);
150%i=find(lon>-21 & lon<-19);
151%j=find(lat>19 & lat<21);
152%i=find(lon>4 & lon<6)
153%j=find(lat>-11 & lat<-9)
154
155SST=squeeze(tab_an(j,i,:));
156
157%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158%%%%% chargement des composantes principales
159%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
160
161file=['eof_SSTan_tropAtl30N-20S.mat'];
162titledataeof='SST' % je definis ce nom pour pouvoir l'inclure dans le graphique plus bas.
163if (run_octave == 0)
164 load([repertoire file]);
165else
166 load('-v7',[repertoire file]);
167end
168PC=PC(:,ipc);
169
170%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
171%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172%%%%               NUAGE DE POINTS
173%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
174
175ifigure=1;
176figure(ifigure);
177plot(SST,PC,'x')
178hold on
179
180%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
181%%%%%%   REGRESSION LINEAIRE
182%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183
184%[b0,b1,s,R,sigb0,sigb1] = linreg(SST,serie);
185
186SSTmean=mean(SST);PCmean=mean(PC);
187n=length(SST);
188
189% calcul de b1 et b0, coefficient directeur et ordonnee a l origine de la
190% droite de regression
191b1=sum((PC-PCmean).*(SST-SSTmean))/(sum(SST.*SST)-n*SSTmean^2);
192b0=PCmean-b1*SSTmean;
193
194PCc=b0+b1*SST;
195
196%trace de la droite de regression
197%---------------------------------
198plot(SST,PCc,'r')
199
200%Calcul du coefficient de détermination
201%----------------------------------------
202s=sqrt(sum((PC-PCc).^2)/(n-2));
203R=sum((PCc-PCmean).^2)/sum((PC-PCmean).^2);
204
205%significativite statistique comparaison de la correlation r et de la
206%valeur critique rc donnee par la table de student en fonction du nombre de
207%degres de liberte ndf
208%------------------------------
209
210r=corrcoef(SST,PC);
211if (run_octave == 0)
212 r=r(2,1);
213end
214
215% remarque: b1=r*std(PC)/std(SST)
216
217% on estime le nombre de degrés de liberté
218ndf=nannees; %(l'atmosphère est approximativement un bruit blanc à l'échelle de temps interanuellee)
219
220% on calcule le seuil de significativité au percentile P en inversant
221% l'écart réduit T=y*sqrt(nn)./(1-y.^2).^0.5 qui est distribue selon
222% un loi de student avec nn=ndf-2 degres de liberte.
223P=.95;
224nn=ndf-2;
225t=tinv(P,nn);
226rc = t ./ ( nn + t.^2 ).^0.5;
227% rc est la valeur ccritique de la correlation pour rejeter l'hypothese nulle
228
229title(['r = ' num2str(r) '  valeur critique: rc= ' num2str(rc)])
230
231% significativite statistique de b0 et b1
232%--------------------------------------------
233
234% sauvegarde de la figure
235printer='eps';
236print_printer=['-d', printer];
237fullfilename=['.' filesep file '_' mfilename '_'  num2str(ifigure) '.' printer];
238print(print_printer,fullfilename);
239clear print_printer;
240clear fullfilename;
241clear printer;
242%
243clear ifigure;
244
245return
246
Note: See TracBrowser for help on using the repository browser.