IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Test de stationnarité
Différence entre le test de Fisher et celui de student, par Haache

Le , par Haache

0PARTAGES

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

Code : Sélectionner tout
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
/*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;
Commentez. On peut aussi discuter en privé. ariel92and@gmail.com

Une erreur dans cette actualité ? Signalez-nous-la !