source: trunk/RESULTATS/regandsignif_seriestemporelles.m @ 27

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

production de .ps au lieu de .eps

  • Property svn:keywords set to Id
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.ps``.
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='ps';
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.