Bonjour,

Je vous propose un nouvel élément à utiliser : Test de stationnarité: Différence entre le test de Fisher et celui de student pour le choix du meilleur modele

Sas propose une procédure "ARIMA" pour effectuer un test de Dikey Fuller. La théorie de ce test suggère d'abord de tester la présence de racine unitaire pour chaque type de modèle. Si la présence de racine unitaire est rejetée (si p.value < 5%, ou si rho différent de 0) alors il faut tester la spécification du modèle avant de conclure. Le problème dont il est question dans ce petit texte concerne la spécification du modèle.



SAS exécute un test de Fisher pour tester la spécification. Or selon la théorie il faut faire un test de Fisher lorsque la présence de racine unitaire n'est pas rejetée (p.value > 5%). Dans le cas contraire, le test convenable est en principe celui de student pour tester uniquement la significativité de la tendance ou de la constante. Ce résultat n'est pas fourni par défaut par SAS. Dans ces conditions, il est alors recommandé de construire le test avec une proc reg.



Je propose ici une macro pour implémenter ce test. les résultats de cette macro, en plus de la proc arima son suffisants pour tester la stationnarité. Pour bien comprendre la nuance entre le test de Fisher et Celui de Student dans le processus du test de stationnarité, je vous invite à lire cette petite note en cliquant ici .





Pour ce qui concerne la macro, Data permet de renseigner la table contenant la variable, var la variable, p le nombre de retards qu'il faut prendre (à déterminer sur le chorellogramme de la différence première). Pour cette dernière variable macro, la valeur par défaut est fixée à 2. Si la variable macro dif=0 alors, le test est effectué sur la variable à niveau, dif=1 veut dire qu'on veut tester le présence de racine unitaire sur la variable différenciée, et ainsi de suite.



Commentez. On peut aussi discuter en privé. ariel92and@gmail.com

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/*Test de stationnarité*/Options sasmstore=Mmacro mstored;
 
%macro DFA(data= ,var= ,p=2 ,dif=0)/STORE DES="TEST DE DIVKEY FULLER AUGMENTE";
 
;
 
data _DFA_;
 
set &Data;
 
D1_&var=dif(&var);
 
run;
 
/*J'ai créé la l'odre d'intégration de la variable à modéliser*/
 
%if &dif >=1 %then %do;
 
	%let k=%sysevalf(&dif+1);
 
	%do i=2 %to &k;
 
		%let j=%sysevalf(&i-1);
 
		data _DFA_;
 
		set _DFA_;
 
		D&i._&var=dif(D&j._&var.);
 
		run;
 
	%end;
 
	/*le premier facteur de corrélation*/
 
	%if &p>=1 %then %do;
 
		data _DFA_;
 
		set _DFA_;
 
		L1_D&k._&var=lag(D&k._&var.);
 
		label L1_D&k._&var="TETA 1";
 
		run;
 
	%end;
 
	/*J'ai créé le rho y t-1 selon le modele*/
 
	data _DFA_;
 
	set _DFA_;
 
	L1_D&dif._&var=lag(D&dif._&var);
 
	label L1_D&dif._&var="PHI";
 
	run;
 
%end;
 
%else %do;
 
	data _DFA_;
 
	set _DFA_;
 
	L1_&var=lag(&var);
 
	label L1_&var="PHI";
 
	run;
 
	%if &p>=1 %then %do;
 
	data _DFA_;
 
	set _DFA_;
 
	L1_D1_&var=lag(D1_&var.);
 
	label L1_D1_&var="TETA 1";
 
	run;
 
	%end;
 
%end;
 
/*Créer les facteur d'autocorrélation*/
 
%if &p>=2 %then %do;
 
	%do i=2 %to &p;
 
		%let k=%sysevalf(&dif+1);
 
		%let j=%sysevalf(&i-1);
 
		data _DFA_;
 
		set _DFA_;
 
		L&i._D&k._&var=lag(L&j._D&k._&var);
 
		label L&i._D&k._&var="TETA &i";
 
		run;
 
	%end;
 
%end;
 
 
 
 
 
/*Prise en compte des var non manquantes*/
 
%if &dif=0 %then %do;
 
	data _DFA_;
 
	set _DFA_;
 
	if not missing(L1_&var);
 
	run;
 
%end;
 
%else %do;
 
	data _DFA_;
 
	set _DFA_;
 
	if not missing(L1_D&dif._&var);
 
	run;
 
%end;
 
%if &p>=1 %then %do;
 
	%let k=%sysevalf(&dif+1);
 
	data _DFA_;
 
	set _DFA_;
 
	if not missing(L&p._D&k._&Var);
 
	run;
 
%end;
 
data _DFA_;
 
set _DFA_;
 
_trend_=_n_;
 
_constante_=1;
 
label _trend_="TREND";
 
label _constante_="CONSTANTE";
 
run;
 
 
 
 
 
/*Définition du vecteur de retard*/
 
%if &p=0 %then %do;
 
	%if &dif=0 %then %do;
 
		proc autoreg data=_DFA_ ;
 
		model D1_&var =L1_&var/ noint plots=none;
 
		model D1_&var = _constante_ L1_&var / noint plots=none;
 
		model D1_&var= _trend_ _constante_ L1_&var/ noint plots=none;
 
		run;
 
	%end;
 
	%else %do;
 
		%let k=%sysevalf(&dif+1);
 
		proc autoreg data=_DFA_ ;
 
		model D&k._&var =L1_D&dif._&var/ noint plots=none;
 
		model D&k._&var = _constante_ L1_D&dif._&var /noint plots=none;
 
		model D&k._&var= _trend_ _constante_ L1_D&dif._&var/ noint plots=none;
 
		run;
 
	%end;
 
%end;
 
%else %do;
 
	/*Construction de vesteur des p autocorrélation*/
 
	%let k=%sysevalf(&dif+1);
 
	%let A=L1_D&k._&var;
 
	%if &p>=2 %then %do;
 
		%do i=2 %to &p;
 
			%let A=&A L&i._D&k._&var ;
 
		%end;
 
	%end;
 
	%if &dif=0 %then %do;
 
		proc autoreg data=_DFA_ ;
 
		model D1_&var =L1_&var &A/ noint plots=none;
 
		model D1_&var =_constante_ L1_&var &A/ noint plots=none;
 
		model D1_&var= _trend_ _constante_ L1_&var &A/ noint plots=none;
 
		run;
 
	%end;
 
	%else %do;
 
		%let k=%sysevalf(&dif+1);
 
		proc autoreg data=_DFA_ ;
 
	    model D&k._&var =L1_D&dif._&var &A/ noint plots=none;
 
		model D&k._&var = _constante_ L1_D&dif._&var &A / noint plots=none;
 
		model D&k._&var= _trend_ _constante_ L1_D&dif._&var &A/ noint plots=none;
 
		run;
 
	%end;
 
%end;
 
proc datasets nolist;
 
delete _dfa_;
 
run;
 
%put ***************************************************************************************;
 
%put MACRO CREEE PAR ARISTIDE HOUNDETOUNGAN, CONTRIBUER EN ENVOYANT VOS;
 
%put CRITIQUES: ariel92and@gmail.com;
 
%put ***************************************************************************************;
 
%mend;


Qu'en pensez-vous ?