Manuel Eviews

32
INITIATION A LA PROGRAMMATION SOUS EVIEWS APPLICATION AUX SERIES TEMPORELLES Marie Bessec EURIsCO - Université Paris Dauphine Ce document fourni t les élémen ts essenti els à la constitu tion de progr ammes sous EViews. Il n’est évide mment pas exhaustif. Nous avons en particulier choisi de mett re l’ac cen t sur les opérat ions non pré-programmée s dans le logi ciel EViews. Par ailleur s, nous nous concentrons sur les commande s utiles au traitement des séries temporel les. Pour plus de détails, le lecteur se réfèrera à l’ai de en ligne (men u HelpnCommand & Programming Reference). Le document est organisé comme suit. Nous décrivons dans une première section les di¤érents modes d’exécution d’un programme sous EViews. La deuxième section expose les principales catégories d’objets. Nous présentons dans un troisième temps les di¤érentes commandes et fonctions pouvant leur être ap- pliq uées. La quatrième section est consa crée au calcul matrici el. Nous présen tons dans une cinqu ième section les éléments de base de la progr amma tion sous EViews. En…n, quelque s exemples simple s de programmes applicables à des séries temporelles sont donnés. 1 La création et l’exécution d’un programme Plusieurs modes Il existe plusieurs façons d’éditer et d’exécuter un programme sous EViews. - l’“interactive use ” : des comman des élémentaires peuvent tout d’abord être reporté es une à une dans la ligne de commande (situé e au-dessous de la barre de menu). Les commandes seront alors exécutées immédiatement, mais ne seront pas enregistrées dans un …chier. - le “batch use ” : ce mode permet d’exécuter un bloc de commandes et de les enregistrer dans un …chier. On pourra alors exécuter le programme de façon répétée et l’appliquer à d’autres bases de données. Le “batch use” On ouvre alors une nouvelle fenêtre dans laquelle on va enregistrer une séquence de commandes. - Pour ouvrir un programme existant ! File nOpen nProgram - Pour créer un programme ! File nNew nProgram ou taper dans la ligne de commande program pgm1 (on crée et ouvre alors un programme de nom pgm1 ). 1

Transcript of Manuel Eviews

Page 1: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 1/32

INITIATION A LA PROGRAMMATION SOUS EVIEWS

APPLICATION AUX SERIES TEMPORELLES

Marie BessecEURIsCO  - Université Paris Dauphine 

Ce document fournit les éléments essentiels à la constitution de programmes sous EViews. Il n’est

évidemment pas exhaustif. Nous avons en particulier choisi de mettre l’accent sur les opérations non

pré-programmées dans le logiciel EViews. Par ailleurs, nous nous concentrons sur les commandes utiles

au traitement des séries temporelles. Pour plus de détails, le lecteur se réfèrera à l’aide en ligne (menu

HelpnCommand & Programming Reference).Le document est organisé comme suit. Nous décrivons dans une première section les di¤érents modes

d’exécution d’un programme sous EViews. La deuxième section expose les principales catégories d’objets.

Nous présentons dans un troisième temps les di¤érentes commandes et fonctions pouvant leur être ap-

pliquées. La quatrième section est consacrée au calcul matriciel. Nous présentons dans une cinquième

section les éléments de base de la programmation sous EViews. En…n, quelques exemples simples de

programmes applicables à des séries temporelles sont donnés.

1 La création et l’exécution d’un programme

Plusieurs modes

Il existe plusieurs façons d’éditer et d’exécuter un programme sous EViews.

- l’“interactive use ” : des commandes élémentaires peuvent tout d’abord être reportées une à une dans

la ligne de commande (située au-dessous de la barre de menu). Les commandes seront alors exécutées

immédiatement, mais ne seront pas enregistrées dans un …chier.

- le “batch use ” : ce mode permet d’exécuter un bloc de commandes et de les enregistrer dans un …chier.On pourra alors exécuter le programme de façon répétée et l’appliquer à d’autres bases de données.

Le “batch use”

On ouvre alors une nouvelle fenêtre dans laquelle on va enregistrer une séquence de commandes.

- Pour ouvrir un programme existant ! File nOpen nProgram 

- Pour créer un programme ! File nNew nProgram  ou taper dans la ligne de commande program pgm1

(on crée et ouvre alors un programme de nom pgm1 ).

1

Page 2: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 2/32

- Exemple : le programme qui suit génère un vecteur gaussien de taille 100.

smpl 1 100 

series eps = nrnd 

- Pour exécuter le programme ! bouton RUN

- Pour interrompre l’exécution d’un programme ! F1

- Pour sauvegarder le programme ! bouton SAVE ou SAVE AS

2 Les di¤érentes catégories d’objets

Les programmes EViews font intervenir di¤érents objets : des vecteurs, des matrices, des séries, des

équations, .... Avant de pouvoir utiliser ces objets dans un programme, il convient préalablement de les

déclarer, c’est-à-dire de leur donner un nom et d’en spéci…er la nature. On pourra ensuite dé…nir leur

contenu et leur appliquer di¤érentes opérations.

2.1 Déclaration d’un objet

- Syntaxe générale : type_objet nom_objet 

- Types d’objets les plus importants :

series  ! série de nombres, exemple : series x, x = nrnd 

pool  ! panel, exemple : pool panel, panel = y_france y_usa y_all y_jap y_canada 

group ! ensemble de séries (permettant de faire un traitement simultané sur plusieurs séries),

exemple : group g x y  (crée un groupe de nom g contenant les variables x et y)

2

Page 3: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 3/32

sample  ! plage des observations constituant l’échantillon, exemple : sample periode 1975:5 2005:5 

(dé…nit une période d’échantillon allant de mai 1975 à mai 2005), remarque : on peut rajouter une clause

if  (voir aussi la section 5) a…n de ne prendre en compte dans l’échantillon que les observations respectant

une condition, exemple : sample periode 1975:5 2005:5 if x >0 

graph  ! graphique, syntaxe : graph nom ser1 ser2 ... (déclare un graphique qui sera construit à

partir des séries ser1, ser2, ...), exemple : graph …gure x y 

scalar  ! scalaire, exemple : scalar x, x=5 

vector  ! vecteur, exemple : vector(2) x, x(1)=1, x(2)=2  (crée le vecteur x =

21

) (la taille du

vecteur est optionnelle ; en l’absence d’information sur la dimension, la taille est de 1 ; par défaut, il

contient des 0).

matrix  ! matrice, exemple : matrix(2,2) mat, mat(1,1)=1 (crée la matrice  mat =

1 00 0

) (la

taille de la matrice est optionnelle ; comme pour le vecteur, si l’opérateur ne fournit pas d’information

sur la dimension, la taille est de 1 1 ; par défaut, elle contient des 0).

equation  ! équation, exemple : equation eq1, eq1.ls y c x  (déclare une équation appelée eq1 et lui

associe une régression MCO d’une variable y sur une constante et une variable x).

system  ! système d’équations

coef  ! paramètres d’une équation, exemple coef(2) estim  (la dimension (2) est optionnelle ; par

défaut, l’objet créé est de taille 1 et contient des 0).

logL ! log-vraisemblance utilisée pour estimer un modèle par maximum de vraisemblance

model  ! système d’équations simultanées utilisé pour la prévision et la simulation

var  ! modèle VAR ou VECM

2.2 Dé…nition d’un objet

Une fois l’objet déclaré, l’opérateur peut en dé…nir le contenu:

- Syntaxe générale : nom_objet= expression 

- Exemple : series y, y=log(x)+nrnd  où x est une série.

- Remarque : il est possible de déclarer et de dé…nir simultanément un objet.

- Exemple : series x = nrnd 

- Les fonctions : on pourra utiliser des fonctions  pour dé…nir le contenu d’un objet. Contrairement

aux commandes  dé…nies ci-après, les fonctions renvoient toujours des nombres et ont généralement des

arguments. On les reconnaîtra facilement puisqu’elles sont précédées du signe @. Les principales fonctions

sont décrites dans la section 3.

- Exemple : matrix y = @transpose(x) ! pour stocker la transposée de la matrice x dans la matrice y.

- Remarque : lorsque l’on utilise un ob jet pour en dé…nir un autre, il faut qu’il soit du même type. On

utilisera dans le cas contraire des opérateurs de conversion (voir les commandes stom  et mtos  dé…nies

dans les sections 3.1 et 3.3).

3

Page 4: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 4/32

2.3 Action sur les objets

Une fois les objets déclarés, on va pouvoir leur appliquer di¤érentes commandes . On pourra ainsi calculer

des statistiques descriptives sur une série, construire des représentations graphiques à partir d’un groupe

de séries, leur appliquer des tests de causalité, etc. Les résultats associés pourront être a¢chés, enregistrés

ou encore être imprimés.

- Syntaxe générale :

action (act _opt ) objet :proc (proc _opt ) arg _list 

où action  = action après l’application d’une commande sur l’objet, act_opt  = option modi…ant le com-

portement de l’action, objet  = nom de l’objet qui va subir une action, proc  = commande qui va être

appliquée à l’objet, proc_opt  = option modi…ant le comportement de la commande, arg_list  = liste

d’arguments de la commande.

- Actions possibles :do ! exécution sans a¢chage du résultat

show  ! exécution avec a¢chage du résultat

 freeze  ! exécution et création d’un tableau ou d’un graphique (si freeze(nom) : un nom est donné

au résultat).

print  ! exécution et impression du résultat (si print(l) l’impression sera faite en format paysage).

- Commandes possibles : line  (pour faire une courbe), sheet  (pour a¢cher la feuille de calcul ou le

"spreadsheet"), stats  (pour calculer des statistiques descriptives), ls  (pour estimer une équation par les

MCO),... Les commandes principales seront présentées dans la section 3.

- Exemple : show pib.line  (représente graphiquement la série de PIB), do eq1.ls pib c conso (stocke

dans l’objet eq1 les résultats de la régression MCO du PIB sur une constante et la consommation),

 freeze(graphe) pib.line  (stocke dans l’objet graphe  le graphique de la série pib).

- Remarque : les actions  peuvent souvent être omises. Ainsi, il est équivalent d’écrire do eq1.ls y c x  ou

eq1.ls y c x  ou encore show x.stats  ou x.stats 

2.4 Gestion des objets

- Pour dupliquer un objet : copy nom_initial nom_…nal . A l’issue de cette opération, l’espace de travail

contiendra deux objets de noms di¤érents nom_initial  et nom_…nal .et de même contenu.

- Pour renommer un objet : rename nom_initial nom_…nal . Par rapport à l’opération précédente, un

seul objet nom_…nal  apparaît dans l’espace de travail à l’issue de cette opération.

- Pour détruire un objet : delete nom_objet .

4

Page 5: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 5/32

3 Les commandes et fonctions principales par catégorie d’objet

Décrivons maintenant les di¤érentes fonctions et commandes qui peuvent être appliquées à des objets

dé…nis sous EViews. Nous les avons classées par catégorie d’objet. Notez toutefois que l’usage de nombre

d’entre elles n’est pas exclusif à une classe donnée d’objet.

3.1 Séries ou groupes de séries (series, group)

Commandes

- Présentation

label  ! pour a¢cher des informations relatives à un objet (nom, date de création,...), exemple : show 

pib.label 

sheet  ! pour a¢cher la feuille de calcul ou "spreadsheet", exemple : show pib.sheet 

line  ! pour représenter la série sous forme de courbe, exemple : show pib.line 

bar  ! pour représenter la série sous forme de diagramme en bâtons, exemple : show pib.bar 

xyline  ! pour représenter une série en fonction d’une autre, exemple : group g x y, show g.xyline  (la

deuxième série sera représentée en fonction de la première).

scat  ! pour représenter une série en fonction d’une autre sous la forme d’un nuage de points,

exemple : group g x y, show g.scat  (de même, la deuxième série est représentée en fonction de la première;

contrairement à la commande précédente, les points ne sont pas reliés).

hist  ! pour construire la fonction de distribution et calculer des statistiques descriptives sur la série

(moyenne, médiane, maximum, minimum, écart-type,...), exemple : show pib.hist kdensity  ! pour construire une fonction de distribution lissée par la méthode des noyaux

Syntaxe : nom_série.kdensity(options), options : 1) k=arg  avec arg = e  (noyau Epanechnikov), r  (trian-

gulaire), u  (uniforme), n  (gaussien), 2) s  (largeur de fenêtre par défaut : règle de Silverman), b=nombre 

(pour spéci…er à la main la largeur de fenêtre, ex b=1 )

Exemple : show pib.kdensity(k=n)

cdfplot  ! pour construire la fonction de répartition, exemple : show pib.cdfplot 

qqplot  ! pour représenter les quantiles de la distribution empirique d’une série en fonction des quan-

tiles d’une distribution théorique (loi normale, uniforme,...). Si la distribution empirique est proche de ladistribution théorique, les points se situeront sur la première bissectrice

S yntaxe : nom_objet.qqplot(options), options : n  (loi normale), u  (loi uniforme), e  (loi exponentielle), l 

(distribution logistique), s=nom_série (les quantiles de la série sont représentés en fonction des quantiles

d’une autre série)

Exemple : show pib.qqplot(n)

stats  ! pour calculer des statistiques descriptives (moyenne, médiane, maximum, minimum,...), ex-

emple : show pib.stats 

5

Page 6: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 6/32

close  ! pour fermer un objet, syntaxe : close nom_objet , exemple : close gdp

- Traitements

add  ! pour ajouter une série à un groupe de séries, exemple g.add x y  (ajoute au groupe g  les séries

x et y )

drop ! pour retirer une série à un groupe de séries, exemple g.drop x  (retire au groupe g  la série x )

cause  ! test de causalité à la Granger entre 2 variables

Syntaxe : cause(n) ser1 ser2 ser3  ou nom_groupe.cause(n) (fait les tests de causalité entre toutes les

paires de variables en régressant la variable concernée sur n  de ses retards et n  retards de l’autre variable

et une constante)

Exemple : group g x y, g.cause(2) (tests de causalité entre x  et y  avec 2  retards).

coint  ! test de cointégration de Johansen

Syntaxe : nom_groupe.coint(test_option,n,option) ou coint(test_option,n,option) y1 y2 y3 @ x1 x2 ,

options : 1) spéci…cation de la partie déterministe du VECM : a  (pas de tendance dans les données et

pas de constante et de tendance dans la relation de cointégration), b (pas de tendance dans les données et

une constante mais pas de tendance dans la relation de cointégration), c  (une tendance dans les données

et une constante mais pas de tendance dans la relation de cointégration), d  (une tendance dans les

données et une constante et une tendance dans la relation de cointégration), e  (une tendance quadratique

dans les données et une constante et une tendance dans la relation de cointégration), s  (balayage des

5 spéci…cations possibles), 2) save = nom_matrice  (pour stocker dans une matrice nom_matrice, de

taille (k + 1) 4 avec k le nombre de variables endogènes, les valeurs propres dans la 1 ere colonne, les

statistiques de la valeur propre maximale dans la 2eme colonne, les statistiques de la trace dans la 3eme

colonne, les log-vraisemblances dans la 4eme colonne.

cor ! pour calculer la matrice des corrélations entre les séries d’un groupe, syntaxe : nom_groupe.cor 

cov ! pour calculer la matrice de variance-covariance d’un groupe de séries, syntaxe : nom_groupe.cov 

genr  ! même utilisation que series  mais permet de générer des séries multivariées

hpf  ! pour lisser une série en utilisant le …ltre de Hodrick-Prescott

Syntaxe : hpf(n) série_initiale série_…ltrée  ou série_initiale.hpf(n) série_…ltrée  (pour …ltrer une série

avec comme paramètre de lissage n  et la stocker dans une nouvelle série appelée série_…ltrée )

Exemple : hpf(1600) gdp gdp_hp

na  ! pour créer des valeurs manquantes, exemple : smpl if z <0, z=na  (remplace toutes les valeurs

négatives de z  par des valeurs manquantes)

resample  ! pour faire du bootstrap à partir d’une série ou d’un groupe de séries,

Syntaxe : nom_objet.resample(options) [nom_output] , options : outsmpl = ""  pour dé…nir la taille de

l’échantillon dans lequel on veut faire des tirages si celle-ci ne correspond pas à celle dé…nie dans l’espace de

travail, permute  pour faire des tirages sans remise (option non utilisable pour des tirages par blocs), weight 

=nom_série_de_poids  pour attribuer des probabilités di¤érentes de tirage aux observations (option non

6

Page 7: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 7/32

utilisable pour des tirages sans remise), par défaut tirage équiprobable, block = entier  pour faire des

tirages de blocs d’observations, par défaut = 1, withna  (par défaut), dropna , …xna  pour gérer les valeurs

manquantes

Exemple : group g x y, g.resample  (crée des séries x_b et y_b contenant des tirages aléatoires dans x et

y).

sort  ! pour trier les séries du “work…le” par valeurs croissantes d’une série que l’on précisera,

Syntaxe : sort(option) ser1 ser2 ser3... pour trier les séries du “work…le” suivant les valeurs croissantes

de ser1 (puis si la série ser1 comporte des valeurs identiques, par valeurs croissantes de ser2 , puis de

ser3 , etc), option : d  : tri par ordre décroissant, remarque : les valeurs manquantes na  sont considérées

comme les plus petites valeurs d’une série.

stom  ! pour convertir une série (ou un groupe de séries) en un vecteur (une matrice),

Syntaxe : stom(nom_serie,nom_vecteur[,sample]) ou stom(nom_groupe,nom_matrice[,sample]), on pré-

cisera l’échantillon concerné s’il di¤ère de celui dé…ni par défaut

Remarque : les valeurs manquantes sont automatiquement exclues (utiliser stomna  si l’on souhaite le

contraire)

Exemple : sample s 1960 1990, stom(pib,vec_pib,s)

Remarque : pour faire l’opération inverse, on utilisera la commande mtos  (voir vecteurs et matrices).

uroot  ! pour faire un test ADF ou de Phillips-Perron sur une série

Syntaxe : nom_série.uroot(options,n) ou uroot(options) nom_série  où n  représente le nombre de termes

augmentés (test ADF) ou le paramètre de troncature (test de PP), options : n  (modèle sans constante

et sans tendance), c  (modèle avec une constante), t  (modèle avec une constante et une tendance), h  (test

de PP)

Exemple : pib.uroot(t,3) (test ADF dans le modèle avec constante et tendance avec 3 termes augmentés)

x11 ! désaisonnalisation d’un série par application du …ltre Census X11.

x12  ! désaisonnalisation d’un série par application du …ltre Census X12 (pour les séries trimestrielles

et mensuelles seulement).

ar(l) ! composante autorégressive d’ordre l , exemple : ls y c ar(1) ar(2) (pour estimer un processus

AR(2) avec une constante sur y).

ma(l) ! composante MA d’ordre l , exemple : ls y c ma(1) ma(2) (pour estimer un processus MA(2)

avec une constante sur y).

Fonctions

- Les fonctions mathématiques

Les fonctions mathématiques présentées ici sont également applicables aux vecteurs et aux matrices.

Lorsqu’elles sont appliquées à une série, elles sont appliquées à chacun des éléments de la série. De même,

7

Page 8: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 8/32

dans le cas d’un vecteur ou d’une matrice, elles retournent une valeur pour chaque élément de l’objet

matriciel.

@abs(x) ou abs(x) ! jxj @inv(x) ! 1=x @cos(x) ! cos(x)@exp(x) ou exp(x) ! ex @log(x) ou log(x) ! ln(x) @sin(x) ! sin(x)@fact(x)

!x! @sqrt(x) ou sqrt(x)

!p 

x @tan(x)

!tan(x)

- Les fonctions de statistique descriptive

De même, les fonctions décrites ci-dessous peuvent être appliquées à des objets vectoriels ou matriciels.

@obs(x) ! nombre d’observations @quantile(x,q) ! quantile (q 2 [0; 1])@sum(x) ! somme @mean(x) ! moyenne arithmétique@sumsq(x) ! somme des carrés @median(x) ! médiane@min(x) ! minimum @stdev(x) ! écart-type (corrigé)@max(x) ! maximum @var(x) ! variance (non corrigée)

- Les fonctions de séries temporelles

x(-n) ! pour construire une série retardée xtn à partir d’une série initiale xt

d(x) ! (1 L)xt = xt xt1

d(x,n)! (1 L)nxt

dlog(x)! (1 L)log(x) = log(xt) log(xt1)

dlog(x,n)! (1 L)n log(x)

@seas(n) ! dummy de saisonnalité (vecteur comprenant des 1 quand le trimestre ou le mois corre-

spond à n  et des 0 sinon)

@trend  ! tendance (vecteur de 0,1,2,....) normalisé à 0 à la première observation

@trend(n) ! tendance (vecteur de 0,1,2,....) normalisé à 0 à la neme observation

@recode(s,x,y) ! retourne x  si la condition s est véri…ée, y  sinon, exemple : series z = @recode(y >0,x,2)

- Les principales distributions statistiques

Loi fonction de distribution fonction de répartition quantile nb aléatoireNormale N (0; 1) @dnorm(x) @cnorm(x) @qnorm(p) @rnorm ou nrnd  

Poisson P (m) @dpoisson(x,m) @cpoisson(x,m) @qpoisson(p,m) @rpoisson(m)Khi-deux (v) @dchisq(x,v) @cchisq(x,v) @pchisq(p,v) @rchisq(v)Student St(v) @dtdist(x,v) @ctdist(x,v) @dtdist(p,v) @rtdist(v)

Uniforme U [a;b] @dunif(x,a,b) @cunif(x,a,b) @qunif(p,a,b) @runif(a,b) ou rdn Fisher F (v1; v2) @dfdist(x,v1; v2) @cfdist(x,v1; v2) @qfdist(p,v1; v2) @rfdist(  v1; v2)

Remarque : la commande rndseed  permet de répéter un même tirage aléatoire, exemple : rndseed 12,

series x =nrnd, rndseed 12, series y = nrnd  (les séries x  et y  contiendront des tirages aléatoires iden-

tiques).

- Autres

@elem(ser,"d") ! extrait l’élément d’une série correspondant à une date donnée d , exemple : scalar 

a = @elem(ser1,"1975.1") (le scalaire a  contiendra la valeur de ser1 en 1975.1)

8

Page 9: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 9/32

@otod(n) ! renvoie la date correspondant à un indice initialisé en 1 au début de l’échantillon, exemple:

si le work…le contient des données annuelles allant de 1981 à 2000, @otod(3) renverra la date 1983.

Remarque : opérateurs applicables à des séries ou à des scalaires

+ : somme, exemple : x+y 

- : di¤érence, exemple : x-y 

* : produit, exemple : x*y 

/ : division, exemple : x/y 

^ : puissance, exemple : x^y 

Opérateurs de comparaison : = (égal), > (supérieur), >= (supérieur ou égal), < (inférieur), <=

(inférieur ou égal), <> (di¤érent de), exemple : scalar a = 1<>2  ! le scalaire a contiendra un 1 puisque

1 6= 2 ; il vaudrait 0 si la condition n’était pas véri…ée.

3.2 Echantillon (sample)

Commandes

- set  ! pour changer la dé…nition de l’échantillon

Exemple :

sample periode 1960:1 1990:4

periode.set 1965:1 @last 

periode.set @…rst 1965:1

periode.set @all 

On déclare et dé…nit une taille d’échantillon allant de 1960.1 à 1990.4, on la redé…nit comme allant de

1965.1 à la dernière observation, puis de la première à 1965.1, puis on reprend l’ensemble des observations.

- smpl  ! pour utiliser un échantillon dé…ni préalablement ou un échantillon que l’on dé…nit, exemple 1:

sample période 1960:1 1990:4, smpl periode , exemple 2 : smpl 1960:1 1990:4

Remarque : on peut utiliser, notamment lorsque l’on travaille en coupe instantanée, la clause if  pour

exclure les observations ne respectant pas une condition, exemple : supposons que l’espace de travail

contienne une variable sexe  valant 1 pour les hommes, 0 pour les femmes. On utilisera alors la commande

smpl @all if sexe=1 pour utiliser les seules observations concernant les hommes.

Fonctions

@all  ! plage de l’ensemble des observations (“range” dé…ni dans l’espace de travail)

@…rst  ! indice de la première observation du “range”

@last  ! indice de la dernière observation du “range”

9

Page 10: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 10/32

@obssmpl  ! donne le nombre d’observations de l’échantillon du “work…le” (remarque : @obsrange 

donne le nombre d’observations du “range” du “work…le”).

3.3 Vecteurs et matrices (vector, matrix)

Commandes

- A¢chage

sheet  ! pour a¢cher la matrice ou le vecteur, exemple : vec1.sheet  (pour a¢cher le vecteur vec1 )

- Traitements

cor ! pour calculer la matrice des corrélations des colonnes de la matrice, syntaxe : nom_matrice.cor 

cov ! pour calculer la matrice de variance-covariance des colonnes de la matrice, syntaxe : nom_matrice.cov 

 …ll 

!pour remplir les éléments d’une matrice ou d’un vecteur, voir section 4.2.

matplace, rowplace, colplace  ! pour copier une matrice dans une autre matrice de dimension distincte

(voir section 4.2).

mtos  ! pour convertir un vecteur (une matrice) en une série (un groupe de séries), syntaxe :

mtos(vecteur,série[,échantillon]) ou mtos(matrice,groupe_séries[,échantillon]) , si l’échantillon n’est pas

précisé, l’échantillon dé…ni dans l’espace de travail est utilisé par défaut (opération inverse : stom , voir

séries).

Fonctions

@columnextract, @rowextract, @subextract  ! pour intégrer une partie d’une matrice dans une autre

matrice (voir section 4.2).

@columns(m), @rows(m) ! renvoie le nombre de colonnes et le nombre de lignes d’une matrice (ou

d’un vecteur) m 

@cor(v1,v2) ! calcule la corrélation entre deux vecteurs v1 et v2 

@cov(v1,v2) ! calcule la covariance entre deux vecteurs v1 et v2 

@det(m) ! calcule de déterminant d’une matrice m 

@eigenvalue(m)!

calcule les valeurs propres d’une matrice m 

@eigenvectors(m) ! retourne une matrice contenant les vecteurs propres d’une matrice m 

@getmaindiagonal(m) ! extrait la diagonale d’une matrice m 

@identity(n) ! crée une matrice identité de dimension nn, exemple : matrix(2,2) = m, m=@identity(2)

(matrice identité de dimension 2)

@inverse(m) ! retourne l’inverse d’une matrice m 

@issingular(m) ! retourne le nombre 1 si matrice m  est singulière donc non inversible

@kronecker(m1,m2) ! calcule le produit de Kronecker de deux matrices m1 et m2 

10

Page 11: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 11/32

@permute(m) ! renvoie une matrice de même dimension dont les lignes sont tirées au hasard sans

remise

@rank(m) ! calcule le rang de la matrice m 

@resample(m,n2,n3,v4) avec m  une matrice de taille l c, n2  un nombre entier (0 si non précisé) et

n3  un nombre entier positif (1 si non précisé) et v4 un vecteur ! reconstitue une matrice de dimension

(l + n2) c en tirant des lignes de la matrice m  au hasard et avec remise par bloc de taille n3  (1 si non

précisé) avec des poids précisés dans le vecteur v4 (les observations seront tirées avec une probabilité

proportionnelle au poids de la ligne correspondante ; les poids ne doivent pas nécessairement sommer à

1, EViews les normalisant automatiquement).

@trace(m) ! retourne la trace de la matrice m 

@transpose(m) ! calcule la transposée d’une matrice m 

@unitvector(n1,n2) ! crée un vecteur de taille n1 avec un 1 au n2ème rang et des 0 ailleurs,

exemple : vector vec1 = @unitvector(8,5) (vecteur de dimension 8 constitué de 0 hormis le cinquième

élément égal à 1)

@vec(m) ! empile les colonnes d’une matrice m 

3.4 Equations (equation)

Commandes

- Présentation

spe c ! pour a¢cher la spéci…cation de l’équation estimée, exemple : show eq1.spec 

results  ! pour a¢cher les résultats d’une équation estimée, exemple : show eq1.results 

resids  ! pour a¢cher les résidus estimés, syntaxe : nom_équation.resids(options) , options : g  pour

avoir une représentation graphique des résidus (par défaut), t  pour les avoir sous forme de tableau,

exemple : show eq1.resids 

makemodel  ! pour créer un modèle à partir de l’équation estimée

makeresids  ! pour stocker les résidus d’une équation estimée dans une série dont on précisera le nom

Syntaxe : nom_équation.makeresids nom_série_résidus 

Exemple : equation eq1.ls y c x, eq1.makeresids res 

Remarque : si le nom de la série de résidus n’est pas précisé, un nom RESID0i est donné par défaut

- Traitements : estimation et prévision

ls  ! pour estimer une équation par les moindres carrés linéaires ou non-linéaires

Syntaxe : nom_équation.ls(options) y c x1 x2  ou nom_equation.ls y=c(1)+c(2)*x1+c(3)*x2  (pour

régresser y  sur une constante et les variables explicatives x1, x2  et x3 , omettre c  ou c(1) si pas de

constante ; dans la deuxième spéci…cation, utiliser le vecteur c  ou déclarer auparavant un vecteur et

l’utiliser dans la commande, exemple : coef(3) par, nom_equation.ls y=par(1)+par(2)*x1+par(3)*x2 ),

11

Page 12: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 12/32

options : w=nom_series  : moindres carrés pondérés ! chaque observation va être multipliée par la

série spéci…ée, h  : écart-type avec correction de White de l’hétéroscédasticité, n  : écart-types robustes

à l’hétéroscédasticité et l’autocorrélation de Newey-West, m=nombre_entier  : pour …xer un nombre

maximum d’itérations dans le cas des MC non-linéaires, m=scalaire  : pour …xer un critère de convergence

dans le cas des MC non-linéaires, s  pour utiliser les valeurs contenues dans le vecteur c  comme valeurs

initiales dans le cas des MC non-linéaires.

Remarque : on pourra utiliser la commande param  pour …xer les valeurs initiales dans le cas d’une

estimation par MC non-linéaires, syntaxe : param nom_coef(1) nb1 nom_coef(2) nb2  ..., exemple :

param c(1) 0.1 c(2) 0.5 c(3) 0.4

rls  ! pour a¢cher les résultats d’une régression récursive

Syntaxe : nom_equation.rls(options) ou nom_equation.rls(options) c(1) c(2) ... suivant l’option retenue,

options principales : r  (pour représenter les résidus récursifs et leur intervalle de con…ance à 95%), r,s 

(pour représenter les résidus récursifs et sauvegarder les résidus et leurs écart-types dans des séries

appelées R_RES  et R_RESSE ), c (pour représenter les coe¢cients qu’il faut alors mentionner c(1)...

estimés de façon récursive dans un intervalle de con…ance à 95%), c,s  (pour représenter les coe¢cients

estimés et les sauvegarder ainsi que leurs écart-types dans des séries appelées R_C1, R_C1SE, R_C2,

R_C2SE, ...).

gmm  ! pour estimer une équation par les GMM

arch  ! pour estimer un modèle ARCH

Syntaxe : arch(p,q,options) y x1 x2 @ v1 v2  (pour estimer un modèle GARCH(p,q) avec y  en fonction

de x1 et x2  dans l’équation de l’espérance. On pourra ajouter des régresseurs supplémentaires v1, v2 ,...

dans l’équation de la variance en les séparant des précédents par @ ), options principales: e  (exponential

GARCH), t  (TARCH)

Exemple : eq1.garch(1,3) y c x1

 …t  ! pour construire des prévisions statiques (quand l’équation estimée contient comme régresseur

la variable expliquée retardée, les valeurs observées sont utilisées), exemple : do eq1.…t yhat yse  (stocke

dans yhat  et yse  la série ajustée et les écart-types associés, yse  est optionnel)

 forecast  ! pour construire des prévisions dynamiques (quand l’équation estimée contient comme

régresseur la variable expliquée retardée, les valeurs prévues sont utilisées lorsque l’horizon de prévision

est supérieur à 1), exemple : smpl 1 100, do eq1.ls y c x, smpl 101 105, do eq1.forecast yhat yse  (de

même, yse  est optionnel)

- Traitements : tests

archtest  ! pour faire un test d’e¤ets ARCH dans les résidus estimés du modèle

Syntaxe : nom_équation.archtest(n) ou archtest(n) (pour faire un test d’e¤ets ARCH d’ordre n )

Exemple : eq1.archtest(4) (pour faire un test d’e¤ets ARCH d’ordre 4 dans les résidus du modèle).

auto ! pour faire un test d’autocorrélation à la Breusch-Godfrey dans les résidus

12

Page 13: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 13/32

Exemple : show eq1.auto(2) (test d’autocorrélation d’ordre 2).

chow  ! pour faire un test de Chow

Syntaxe : chow(options) date1 date2 ... (pour faire un test de Chow avec comme date de rupture date1,

puis date2, ...), option : f  pour le Chow forecast test (ne mettre alors qu’une seule date de rupture)

Exemple : eq1.chow 1970:1 (test de Chow avec comme date de rupture 1970:1).

testadd  ! pour faire des tests de variables omises

Syntaxe : nom_équation.testadd ser1 ser2 ... (teste si l’omission des séries ser1, ser2,... dégrade signi-

…cativement le pouvoir explicatif du modèle)

testdrop ! pour faire des tests de variables redondantes

Syntaxe : nom_équation.testadd ser1 ser2 ... (teste si la prise en compte des séries ser1 et ser2  améliore

signi…cativement le pouvoir explicatif du modèle)

wald  ! test de Wald de restrictions sur les coe¢cients

Exemple : show eq1.wald c(2) = 0, c(3)=1 (teste simultanément la nullité du deuxième coe¢cient et

l’égalité du troisième à 1).

white  ! pour faire un test d’homocédasticité des résidus

Exemple : show eq1.white  (pour prendre en compte tous les termes croisés show eq1.white(c)).

Fonctions

- Scalaires

@aic 

!critère d’information AIC, exemple scalar a = eq1.@aic 

@schwarz  ! critère d’information de Schwarz

@coef(i) ou c(i) ! ième coe¢cient estimé

@coefcov(i,j) ! covariances des coe¢cients estimés i et j

@dw  ! statistique de Durbin Watson

@logl  ! log-vraisemblance

@r2  ! coe¢cient de détermination

@rbar2  ! coe¢cient de détermination ajusté

@regobs  ! nombre d’observations utilisées dans la régression

@ncoef  ! nombre de coe¢cients intervenant dans l’équation constante comprise

@se  ! écart-type résiduel

@ssr  ! somme des carrés des résidus

@stderr(i) ! écart-type estimé du ième coe¢cient de l’équation

@tstat(i) ! t-statistique du ième coe¢cient de l’équation

- Vecteurs et matrices

@coefs  ou c  ! vecteur des coe¢cients estimés

13

Page 14: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 14/32

Exemple : ls y c x, coef estim = c  pour stocker dans le vecteur estim  les résultats d’estimation de y  sur

une constante et x , attention c  représente la constante dans la première ligne et le vecteur des coe¢cients

estimés dans la deuxième).

@coefcov  ! matrice de variance-covariance des coe¢cients estimés

@stderr  ! vecteur des écart-types estimés des coe¢cients estimés

@tstats  ! vecteur des t-statistiques des coe¢cients estimés, exemple : vector a = eq1.@tstat 

3.5 Log-vraisemblance (logL)

Commandes

append  ! pour spéci…er la log-vraisemblance

ml  ! pour en rechercher le maximum (estimation par maximum de vraisemblance),

syntaxe : nom_équation.ml(options) , options principales : b (algorithme d’optimisation numérique

Berndt Hall Hall Hausmann (BHHH), par défaut Marquardt), m=entier  (nombre maximum d’itérations),

c=scalaire  (critère de convergence portant sur la variation relative des coe¢cients estimés entre deux

itérations).

grads  ! pour a¢cher les gradients estimés

results  ! pour a¢cher les résultats d’estimation

spe c ! pour a¢cher la spéci…cation de la vraisemblance

Fonctions

Outre les di¤érentes fonctions présentées pour l’objet équation, on pourra utiliser :

@logl  ! valeur de la log-vraisemblance estimée

@byeq  ! évaluation de la spéci…cation équation par équation

@byobs  ! évaluation de la spéci…cation observation par observation (par défaut)

Exemple : voir section 6.2

3.6 Panel (pool)

On ne présentera ici que les procédures spéci…ques aux données de panel, mais notez que les commandes

et fonctions dé…nies pour l’objet équation sont également applicables au panel (voir section équation).

Commandes

add  ! pour ajouter un individu au panel

drop ! pour retirer un individu au panel

14

Page 15: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 15/32

de…ne  ! pour redé…nir les individus du panel

ls  ! estimation d’un modèle en données de panel par moindres carrés

Syntaxe : nom_équation.ls(options) y x1 x2  @ z1 z2 (on mettra avant le signe @ les régresseurs dont le

coe¢cient est contraint à être identique pour tous les individus du panel et après le signe @ les régresseurs

qui ont des coe¢cients di¤érents pour chaque individu, option : n  (pas de constante), f  (modèle à e¤ets

…xes, i.e. une constante di¤érente pour chaque individu du panel), r  (modèle à e¤ets aléatoires), h 

(écart-types estimés avec la correction de White de l’hétéroscédasticité), b (estimation en utilisant un

panel cylindré).

Exemple : pool panel allemagne danemark france irlande italie, panel.ls(f) y_? x_?  (l’opérateur ?  per-

met de se référer aux séries y_pays  et x_pays  dé…nies dans l’espace de travail avec

pays={allemagne,danemark,france,irlande,italie}).

wald  ! pour faire des tests de restrictions (voir équation)

Fonctions

- Scalaires

@e¤ects(i) ! e¤et …xe ou aléatoire estimé du ième individu du panel (fonction utilisable exclusivement

pour les modèles à e¤ets …xes ou aléatoires)

@totalobs  ! nombre total d’observations du panel (si le panel est cylindré : nombre d’individus nombre d’observations)

- Vecteurs

@e¤ects ! vecteur estimé des e¤ets …xes ou aléatoires (fonction utilisable exclusivement pour les

modèles à e¤ets …xes ou aléatoires)

3.7 Modèles VAR et VECM (var)

Commandes

- Présentation

arroots  ! racines inverses du polynôme retard

Syntaxe : nom_var.arroots(options) , options : 1) name = nom_matrice  (pour stocker les racines dans

une matrice nom_matrice  avec en première colonne la partie réelle et en deuxième colonne la partie

imaginaire des racines), 2) graph  : pour représenter les racines dans le disque unité complexe

Exemple : var1.arroots(graph) (calcule et représente les racines associés au VAR var1 ).

impulse  ! fonctions de réponse impulsionnelles

resids  ! pour a¢cher les résidus estimés

Syntaxe : nom_var.resids(options), options : g  pour avoir une représentation graphique des résidus (par

défaut), t  pour les avoir sous forme de tableau

15

Page 16: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 16/32

results  ! pour a¢cher les résultats de l’estimation, syntaxe : nom_var.results , exemple : var1.results 

makeresids  ! pour stocker les résidus des équations estimées dans des séries dont on précisera le nom

(il en faut autant que d’équations)

Syntaxe : nom_var.makeresids nom_série_résidus_eq1 nom_série_résidus_eq2...

residcov  ! pour a¢cher la matrice de variance-covariance des résidus d’un VAR

Syntaxe : nom_var.residcov 

Exemple : var1.residcov  (calcule la matrice de variance-covariance des résidus de var1 )

- Traitements : estimation

ec  ! estimation d’un VECM

Syntaxe : nom_var.ec(trend,n) paires_retards y1 y2 @ x1 x2  pour estimer un VECM avec n  relations

de cointégration et un nombre de retards spéci…é par paires_retards  et en incluant éventuellement des

variables exogènes xi  en les précédant du signe @ et avec une partie déterministe déterminée par trend 

(avec les notations a , b, c , d  et e  de la commande coint, voir séries).

Exemple : var vec1.ec(1,c) 1 4 y1 y2  (déclare et estime un modèle VECM vec1 avec une relation de

cointégration, une tendance dans les données, une constante dans la relation de cointégration et avec 4

retards).

ls  ! estimation d’un VAR non contraint

Syntaxe : nom_var.ls paires_retards ser1 ser2 ser3 @ exog1 exog2  (permet d’estimer un VAR sur les

séries ser1, ser2  et ser3  d’ordre dé…ni par paires_retards  et en incluant éventuellement des variables

exogènes exogi  en les précédant par @)

Exemple : var1.ls 1 2 y1 y2 y3  (pour estimer un VAR d’ordre 2 sur les séries y1, y2  et y3 )

- Traitements : tests

coint  ! test de cointégration de Johansen, syntaxe nom_var.coint(test_option,n,option) , voir séries.

laglen  ! a¢chage des di¤érents critères et tests utilisés dans le choix du nombre de retards (test

LR, FPE, AIC, Schwarz, Hannan-Quinn) calculés pour des retards compris entre 1 et n  pour le choix de

l’ordre du VAR, syntaxe : nom_var.laglen(n)

qstats  ! syntaxe : nom_var.qstats(n,name=Q), pour calculer les statistiques du portemanteau as-

sociées à un VAR pour des retards allant de 1 à n  et, si on le précise, stocker les statistiques dans la

matrice Q

testlags  ! pour faire des tests d’exclusion des retards du VAR, syntaxe : nom_var.testlags(options),

option : name = nom_matrice  : pour stocker les statistiques de test dans une matrice de taille m(k +1)

où m est le nombre de retards et k le nombre de variables endogènes du VAR.

white  ! version multivariée du test de White, syntaxe : nom_var.white(option), option : c  pour

prendre en compte les termes croisés dans le test (produits des variables explicatives).

Fonctions

16

Page 17: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 17/32

- Scalaires concernant une équation du VAR

@eqlog(k) ! log-vraisemblance de l’équation k

@eqncoef(k) ! nombre de coe¢cients estimés de l’équation k

@eqregobs(k) ! nombre d’observations dans l’équation k

@r2(k) ! R2 de l’équation k

@rbar2(k) ! R2 de l’équation k

a(i,j) ! coe¢cient de la force de rappel de l’équation k (si le modèle est un VECM)

b(i,j) ! coe¢cient de jème variable de la ième relation de cointégration (si le modèle est un VECM)

c(i,j) ! coe¢cient du jème régresseur de la ième équation du VAR ou du jème régresseur en di¤érence

première de la ième équation du VECM

- Scalaires concernant le VAR dans son ensemble

@aic 

!critère d’information AIC

@sc  ! critère d’information de Schwarz

@logl  ! log-vraisemblance du système

@ncoefs  ! nombre de coe¢cients estimés du VAR

@neqn  ! nombre d’équations du VAR

@regobs  ! nombre d’observations dans le VAR

- Vecteurs et matrices

@coefmat  ! matrice de coe¢cients

@coefse !

matrice des écart-types estimés des coe¢cients estimés

@cointse  ! écart-types des vecteurs cointégrants

@cointvec  ! vecteurs cointégrants

@residcov  ! matrice de variance-covariance des résidus

4 Les opérations sur les vecteurs et les matrices

4.1 Déclaration d’un vecteur ou d’une matrice

- Syntaxe

vector(l) vec1 ! crée un vecteur de taille l de nom vec1

matrix(l,c) mat1 ! crée une matrice de taille l c de nom mat1

- Exemple

vector(10) vec1 ! crée un vecteur de taille 10 de nom vec1

matrix(10,2) mat1 ! crée une matrice de taille 10 2 de nom mat1

- Remarques

1) Les vecteurs et matrices sont formés de 0 par défaut.

17

Page 18: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 18/32

2) Ils sont de taille 1 (ou 1 1) par défaut.

4.2 Dé…nition d’un vecteur ou d’une matrice

1ère méthode : élément par élément

Exemple : le programme suivant crée la matrice

5 0

.

matrix(1,2) data 

data(1,1)=5 

2ème méthode : commande …ll

matrix(3,2) data, data.…ll 1,2,3,4,5,6 

La commande …ll  remplit la matrice colonne par colonne, dans l’exemple 0@1 42 53 6

1A.

Remarques

1) pour remplir la matrice en ligne : …ll(b=r)

exemple : data.…ll(b=r) 1,2,3,4,5,6 

0@ 1 2

3 45 6

1A

2) Pour répéter dans la matrice une suite de nombre, …ll(l)

exemple : data.…ll(l) 1,2 

0@ 1 2

2 11 2

1A

3ème méthode : avec des scalaires ou vecteurs/matrices préalablement dé…nis

- sans décomposition

exemple 1 : matrix(2,2) mat1 = 5 

5 55 5

exemple 2 : matrix(2,2) mat2=mat1

5 55 5

Remarque : si la dimension de mat2  di¤ère de celle de mat1, mat2  est redimensionnée comme mat1 (sauf 

si mat1 est un scalaire comme dans l’exemple 1).

Pour éviter cela, on pourra utiliser les commandes :

matplace(matrice_de_réception, matrice_copiée, ligne_de_début, colonne_de_…n)

colplace(matrice_de_réception,vecteur_copié,colonne_de_réception)

rowplace(matrice_de_réception,vecteur_copié,ligne_de_réception)

Exemple : matrix m1(5,5) = 1, vector(5,1) v1 = 2 , colplace(m1,v1,2) ! place le vecteur v1 dans la 2ème

colonne de m1.

- Pour ne copier qu’une partie d’une matrice, on utilisera les fonctions :

@rowextract(mat,i) ! extrait la ième ligne de la matrice mat 

@columnextract(mat,j) ! extrait la jème colonne de la matrice mat 

18

Page 19: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 19/32

@subextract(mat,i_début,j_début,i_…n,l_…n) ! extrait le sous-bloc de la matrice mat  allant de

l’élément (i_début,j_début) à l’élément (i_…n,j_…n)

exemple : matrix mat2(2,2) = @subextract(mat1,1,2,2), vector vec1 = @columnextract(mat1,1)

4.3 Opérations sur les matrices

Considérons deux matrices a  et b. Plusieurs opérations pourront leur être appliquées :

- addition : +, exemple : matrix sum = a + b

- di¤érence : -, exemple : matrix di¤ = a - b

- produit : *, exemple : matrix prod1 = a*b, matrix prod2 = 5*a 

- division : /, exemple : matrix rapp1 = a/b, matrix rapp2 = a/2 

- Opérateurs de comparaison (élement par élément) : = (égal), > (supérieur), >= (supérieur ou égal), <

(inférieur), <= (inférieur ou égal), <> (di¤érent de), exemple : scalar a = mat1=mat2 

!le scalaire a

vaudra 0 si un ou plusieurs éléments de mat1 di¤èrent des éléments des lignes et colonnes correspondantes

de mat2 .

5 La programmation sous EViews

5.1 Quelques astuces de présentation

- Les commentaires : une ligne précédée du signe ’ ne sera pas exécutée.

- Pour couper une ligne trop longue, taper le caractère _ à la …n de la ligne que l’on souhaite couper.

Exemple :

eq1.ls _

y c x 

permet d’exécuter la commande eq1.ls y c x 

5.2 Les di¤érents types de variables

Variables de contrôle

- Il s’agit de variables locales contenant des valeurs numériques. Elles n’existent pas en dehors du

programme et n’existent que durant le temps d’exécution du programme. Elles n’ont pas besoin d’être

déclarées comme les objets, mais doivent être dé…nies avant d’être utilisées.

- Notation : Elles commencent par le signe !

- Dé…nition : !nom = valeur numérique ou expression

- exemple: !x=7.356 , !compteur=@rows(vec1)

- Elles pourront être utilisées dans une expression.

19

Page 20: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 20/32

Variables "string"

- Il s’agit de variables locales contenant des chaînes de caractères. Comme les variables de contrôle, elles

n’existent pas en dehors du programme et n’existent que durant le temps d’exécution du programme.

Elles n’ont pas besoin d’être déclarées comme les objets, mais doivent être dé…nies avant d’être utilisées.

- Notation : Elles commencent par le signe %.

- Dé…nition : %nom = "expression"

- exemple : %dep="x1 x2 x3 x4" 

Arguments d’un programme

- Les arguments d’un programme sont des variables dont le contenu est précisé par l’opérateur au moment

de l’exécution du programme.

- Exemple : ls %1 c %2  (lors de l’exécution du programme, il sera demandé à l’opérateur de préciser les

arguments %1 et %2. On pourra ainsi appliquer un programme à di¤érentes variables sans modi…cation

préalable des lignes de commandes).

5.3 Les contrôles de l’exécution

5.3.1 Le conditionnement IF

- Lorsque l’on souhaite exécuter des commandes seulement si une ou plusieurs conditions sont satisfaites,

on utilise les commandes IF condition THEN /ENDIF . Les lignes qui suivent sont exécutées seulement

si les conditions sont véri…ées. Lorsque l’on veut utiliser plusieurs conditions, on utilise AND (toutes les

conditions doivent être satisfaites) ou OR (au moins l’une des conditions doit être satisfaite). On pourra

aussi utiliser la clause ELSE pour exécuter des commandes si la (les) condition(s) sont non satisfaites.

- Syntaxe :

if [condition] then 

commandes à exécuter si la condition est véri…ée 

else 

commandes à exécuter si la condition n’est pas véri…ée 

endif 

- Exemple :

if  !i >5 and  !i <10  then

series x = gdp/sqr(gdp)

else

series x = gdp/(2*sqr(gdp))

endif 

- Remarque : l’opérateur if  peut également être utilisé pour exclure des observations de l’échantillon.

Dans l’exemple suivant,

20

Page 21: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 21/32

smpl if x >=0 

eq1.ls y c x 

on utilisera seulement dans la régression les observations correspondant à des valeurs positives de x.

5.3.2 La boucle FOR

Elle permet de répéter une série de commandes pour di¤érentes valeurs de variables de contrôle ou

"string". La syntaxe dépend du type de variable concernée.

boucle FOR pour des variables de contrôle ou des scalaires

- Syntaxe :

1. FOR valeur_initiale de la variable de contrôle ou d’un scalaire TO valeur_…nale STEP nombre

indiquant de combien est modi…ée la variable de contrôle à chaque …n de boucle

2. Commandes à exécuter à chaque tour de boucle3. NEXT

- Remarque : si le pas n’est pas précisé, il est par défaut de 1.

- Exemples :

1) pour estimer des équations en augmentant progressivement la taille de l’échantillon :

for !horizon=10 to 72  step  1

smpl 1970:1 1970:1+!horizon 

equation eq{!horizon}.ls sales c orders 

next2) pour utiliser des éléments di¤érents d’un vecteur ou d’une matrice

!rows=@rows(vec1)

vector cusum1 =vec1

 for !i=2 to !rows 

cusum1(!i) = cusum1(!i-1)+vec(!i)

next 

On calcule dans cet exemple les sommes cumulées des éléments du vecteur vec1 et on les stocke dans le

vecteur cusum1.

3) pour utiliser des éléments di¤érents d’une série, on aura recours aux fonctions @otod (qui retourne

la date associée à l’indice d’une observation) et @elem (qui extrait l’élément correspondant à la date

donnée)

 for !i=2 to !rows 

cusum1(!i) = @elem(ser1,@otod(!i))

next 

4) on peut aussi construire des boucles avec des scalaires plutôt qu’avec des variables de contrôle

21

Page 22: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 22/32

scalar i 

vector (10) x 

 for i=1 to 10 

x(i)=i 

next 

boucle FOR pour des variables "string"

On peut aussi vouloir répéter des opérations pour di¤érentes "valeurs" des variables "string".

Exemple : le programme suivant :

 for %y gdp gnp ndp

equation {%y}reg.ls %y c {%y}(-1)

next 

permet d’éxécuter les commandes :

equation gdpreg.ls gdp c gdp(-1)

equation gnpreg.ls gnp c gdp(-1)

equation ndpreg.ls ndp c gdp(-1)

5.3.3 La boucle WHILE

- Elle permet d’exécuter une série de commandes tant qu’une ou plusieurs conditions sont satisfaites. Elle

a l’avantage d’être plus ‡exible pour le choix des conditions.

- Syntaxe :

1. Initialiser les variables de contrôle

2. WHILE condition

3. Commandes à exécuter tant que la condition est satisfaite

4. Réactualisation des variables de contrôle exécutée à chaque …n de boucle

5. WEND

- Exemple :

!i=1

!val=1

WHILE  !i <10 and !val <10000 

!val=!val*10 

!i=!i+1

WEND

22

Page 23: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 23/32

5.3.4 Les commandes d’arrêt

- stop pour arrêter le programme

exemple :

if x <0 

stop

endif 

- exitloop pour mettre …n à une boucle

exemple :

 for !i=1 to 10 

!pval=...

if !pval <0 

exitloop

endif 

next 

- return  pour sortir d’une "subroutine" (cf. suite).

- exit  : pour sortir et fermer l’application EViews .

5.4 Les programmes multiples

- Pour exécuter des commandes inclues dans un autre programme : include chemin nnom du programme 

- Exemple :include c:nmesdoc npgm1

series x = nrnd 

exécute pgm1 puis simule un vecteur gaussien.

5.5 Les "subroutines"

Les "subroutines" sont des sous-blocs de commandes qui pourront être exécutés à l’intérieur du pro-

gramme par un simple appel (call ). Elles s’apparentent à des fonctions. Elles doivent être dé…nies au

début du programme.

Dé…nition d’une "subroutine"

- Syntaxe :

SUBROUTINE nom(argument)

commandes 

ENDSUB 

- Exemples :

23

Page 24: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 24/32

1) "subroutine" sans argument ! calcul du carré d’une série

subroutine carre 

series y =x^2 

endsub

2) "subroutine" avec arguments

subroutine puissance(series x,series y,scalar p)

y =x^p

endsub

- Remarques : 1) le type des arguments doit être précisé, 2) il n’est pas obligatoire de préciser le (ou

les) output(s) (dans l’exemple y ) dans les arguments, mais son inclusion permettra lors de l’appel de la

sous-routine de le stocker dans un objet dont on pourra préciser le nom. Si on omet series y  dans les

arguments dans l’exemple précédent, la série x  élevée à la puissance p sera stockée par défaut dans une

série appelée y  qui sera donc écrasée à chaque appel de la "subroutine" puissance , 3) une "subroutine"

peut faire appel à une autre "subroutine".

Appel d’une "subroutine"

- Une fois la "subroutine" dé…nie, on peut y faire appel en utilisant la commande call . Il convient

auparavant de déclarer et dé…nir les arguments.

- Exemple :

series a = gdp

series a_3 

call puissance(a,a_3,3) ! élève la série a  à la puissance 3 et la stocke dans la série x_3 .

Les "subroutines" globales/locales

- Variables globales/locales 

Les "subroutines" utilisent des objets pouvant être locaux ou globaux. Les premiers n’ont de sens qu’à

l’intérieur de la "subroutine", mais n’ont pas d’existence en dehors et sont détruits dès que la "subroutine"

est …nie. Les objets globaux sont des objets qui existent déjà lorsque la "subroutine" est appelée ou qui

sont créés par la "subroutine" et qui demeureront dans l’espace de travail (work…le) après son exécution.

- "subroutines" globales 

Par défaut, les "subroutines" sont globales.

Règles :

1) Les objets qu’elles créent seront globaux et seront inclus dans le work…le  après son exécution.

2) Les objets globaux préexistant dans le work…le  peuvent être utilisés et modi…és directement à

l’intérieur d’une "subroutine". Néanmoins, si l’un des objets globaux a le même nom qu’un des arguments

de la "subroutine", le nom de la variable désignera l’argument et non la variable globale.

24

Page 25: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 25/32

3) Les arguments (dans l’exemple qui suit a et a_3) doivent être déclarés avant l’appel de la "sub-

routine".

Exemple :

subroutine operation(series x,series y, scalar p)

scalar i = 5^p

y =x^p + i 

endsub

series a=gdp

series a_3 

call puissance(a,a_3,3)

Cette "subroutine" est globale. Elle crée les variables a , a_3  et i .

- "subroutines" locales 

Si l’on inclut le mot local  avant le nom de la "subroutine", tous les objets crées à l’intérieur de la

"subroutine" seront détruits à la …n de son exécution.

Règles :

1) Des objets globaux ne peuvent pas être utilisés et/ou modi…és à l’intérieur de la "subroutine".

2) Les arguments (dans l’exemple qui suit a et a_3) doivent être déclarés avant l’appel de la "sub-

routine".

3) Tous les autres objets de la "subroutine" sont locaux et disparaissent à la …n de son exécution.

Pour sauver des objets dé…nis dans la procédure, il faut donc les inclure dans les arguments.

Exemple :

subroutine local operation(series x,series y, scalar p)

scalar i = 5^p

y =x^p + i 

endsub

series a=gdp

series a_3 

call puissance(x,y,3)

Cette "subroutine" est locale. Elle crée les variables x et y, mais i disparaît après son exécution. En

revanche, si l’on déclare subroutine local operation(series x,series y, scalar p,scalar i), le scalaire i est

conservé.

5.6 Les commandes et fonctions générales

Commandes

25

Page 26: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 26/32

 fetch  ! pour charger dans le work…le  des objets contenus dans des bases de données EViews ou des

…chiers, syntaxe : fetch(options) noms_objets .

work…le  ! pour créer un “work…le” (espace de travail qui contiendra les objets crées) ou charger un

“work…le” existant

Syntaxe : work…le nom  ou work…le nom fréquence date_début date_…n , dans le premier cas, charge le

work…le  s’il existe déjà, fréquence : a  (annuel), s  (semestriel), q  (trimestriel), m  (mensuel), w  (hebdo-

madaire), d  (journalier avec 5 jours par semaine), 7  (journalier avec 7 jours par semaine), u  (non daté

ou à échéances irrégulières)

Exemple : work…le …chier1 a 1980 2005  (crée un work…le pour des données annuelles s’étendant de 1980

à 2005)

range  ! pour modi…er la plage d’observations du work…le

Syntaxe : range date_début date_…n 

Exemple :

work…le dossier a 1950 1990 

sample s1 1955 1985 

range 1950 1980 

La première ligne crée un espace de travail contenant des données annuelles allant de 1950 à 1990 et la

troisième réduit la taille à 1950-1980 ; noter que l’échantillon va aussi être modi…é à 1950-1980).

tic [commandes] toc  : pour a¢cher le temps d’exécution d’un ensemble de commandes

Remarque : pour stocker le temps d’exécution dans une variable a  : tic [commandes] scalar a=@toc 

Fonctions

@isobject("nom_objet") ! retourne le nombre 1 si l’objet existe dans le work…le

6 Quelques exemples simples1

6.1 Comparaison des prévisions issues d’un modèle théorique à celles d’unemarche aléatoire

Nous examinons ici la validité du fameux constat de Meese et Rogo¤ (1983) selon lequel les modèles

théoriques prévoient moins bien les taux de change qu’une marche aléatoire. On estime à cette …n de

façon récursive le modèle monétaire et on construit les prévisions associées à 1 et 4 pas. La série des

erreurs de prévisions de ce modèle est comparée à celle d’une marche aléatoire sur la base du critère

RMSE.

’ Comparaison des prévisions issues des modèles théoriques à celles d’une marche aléatoire 

smpl @all 

1 Les programmes sont fournis sur le site http://www.dauphine.fr/eurisco/marie.bessec_software.html.

26

Page 27: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 27/32

scalar hmax=4

scalar taille = 40 

scalar a =@obs(e) - hmax - taille 

equation mod1

matrix(a,2) e1

matrix(a,2) eRW 

On dé…nit ici les di¤érentes paramètres intervenant dans le programme. hmax  désigne l’horizon maximal

de prévision, taille  la largeur de la fenêtre d’estimation, e1 la matrice qui contiendra les erreurs de

prévisions du modèle monétaire et eRW  les erreurs de prévisions associées à une marche aléatoire sans

drift.

For !i=1 to a 

’ estimation 

%1 = @otod(!i)

%2 = @otod(!i+taille)

smpl %1 %2 

mod1.ls e c m y i in‡ 

’ prévision 

scalar prev_RW = @elem(e,%2)

%3 = @otod(!i+taille+1)

%4 = @otod(!i+taille+hmax)

smpl %3 %4

mod1.forecast prev_mod1

’ calcul et stockage des erreurs de prévisions 

series erreur_mod1 = e-prev_mod1

series erreur_RW = e - prev_RW 

e1(!i,1)= @elem(erreur_mod1,@otod(!i+taille+1))

e1(!i,2)= @elem(erreur_mod1,@otod(!i+taille+hmax))

eRW(!i,1)= @elem(erreur_RW,@otod(!i+taille+1))

eRW(!i,2)= @elem(erreur_RW,@otod(!i+taille+hmax))

next 

Le modèle monétaire est estimé sur une "fenêtre roulante" de 40 observations, les prévisions de la série

sont construites à 1 et 4 pas, puis les erreurs de prévisions issues de ce modèle et les erreurs de prévi-

sion associées à une marche aléatoire sont calculées. La prévision issue du dernier modèle correspond

simplement à la dernière observation connue de la série.

’ Calcul du RMSE du modèle et comparaison à celui de la RW 

’ horizon de prévision h=1

27

Page 28: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 28/32

!rmse_m1_h1 = @stdev(@columnextract(e1,1))

!rmse_rw_h1 = @stdev(@columnextract(eRW,1))

scalar rapp_rmse_h1=!rmse_m1_h1/!rmse_rw_h1

’ horizon de prévision h=4

!rmse_m1_h4 = @stdev(@columnextract(e1,2))

!rmse_rw_h4 = @stdev(@columnextract(eRW,2))

scalar rapp_rmse_h4=!rmse_m1_h4/!rmse_rw_h4

On calcule en…n le critère RMSE associé sur les séries d’erreur de prévision aux di¤érents horizons de

prévision pour le modèle monétaire et la marche aléatoire et on en fait le rapport. Les résultats sont

stockés dans rapp_rmse_h1 et rapp_rmse_h4 pour les horizons de prévision 1 et 4 respectivement. Un

résultat inférieur à 1 est favorable au modèle théorique et inversement.

6.2 Tabulation des valeurs critiques des tests de Dickey Fuller

Ce programme détermine les valeurs critiques à 1, 5 et 10% du test de Dickey Fuller dans le modèle sans

constante et tendance. Il calcule à cette …n les quantiles correspondant de la distribution de la statistique

de test t̂

obtenue sous l’hypothèse nulle de racine unitaire.

’Tabulation des VC du test ADF (modèle sans constante et tendance)

work…le table u 1 10 000 

’Simulation d’une marche aléatoire pure 

subroutine simul(series y,scalar taille)

series u = nrnd 

 for !h=2 to taille 

y(!h)=y(!h-1) + u(!h)

next 

endsub

scalar nb_replic = 10000 

vector(6) t 

t.…ll 25,50,100,250,500,10000 

scalar nt=@rows(t)

matrix(nb_replic,nt) t_adf 

For !i=1 to nt 

!taille =t(!i)

 for !j=1 to nb_replic 

smpl 1 !taille 

series z=0 

28

Page 29: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 29/32

scalar n=!taille 

call simul(z,n)

equation mod1.ls d(z) z(-1)

t_adf(!j,!i)=@tstat(1)

next 

next 

’Calcul des valeurs critiques 

matrix(3,nt) vc 

 for !k=1 to nt 

vector vec = @columnextract(t_adf,!k)

vc(1,!k) = @quantile(vec,0.01)

vc(2,!k) = @quantile(vec,0.05)

vc(3,!k) = @quantile(vec,0.10)

next 

6.3 Estimation d’un modèle par maximum de vraisemblance

Nous prenons ici l’exemple le plus simple de l’estimation d’un modèle linéaire :

yt = + xt + "t; "t N (0; 2)

par maximum de vraisemblance. La log-vraisemblance associée à un échantillon de T observations s’écrit

comme suit :

L(; ; ) =T 

2

log(2) + log(2)

T Xt=1

(yt xt)2

22

=T Xt=1

log

yt xt

avec la fonction de densité d’une loi normale centrée réduite (elle est donnée par la fonction @dnorm 

sous EViews).

’ Estimation d’un modèle linéaire par maximum de vraisemblance 

’ Initialisation du vecteur de paramètres avec les estimations MCO 

equation eqmco.ls y c x 

c(3) = eqmco.@se^2 

’ Nom de l’objet qui contiendra les estimations par MV 

logl eqmv 

’ Nom de l’objet dans lequel seront stockées les contributions de chaque observation à la log-vraisemblance 

eqmv.append @logl logl1

’ Spéci…cation de la vraisemblance 

29

Page 30: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 30/32

eqmv.append sres = (y - c(1) -c(2)*x)/@sqrt(c(3))

eqmv.append logl1 = log(@dnorm(sres)) -log(c(3))/2 

’ Estimation par MV 

eqmv.ml 

eqmv.results 

6.4 Simulation et estimation d’un modèle STR logistique et exponentiel

Un modèle à seuil à transition lisse pour une série univariée fytg admet l’écriture générale suivante :

yt = (a0 + a1x1 + ::: + a px p) f1 F (zt; ; d)g + (b0 + b1x1 + ::: + b px p) F (zt; ; d) + ut (1)

où ut iid N (0; 2), F  est la fonction de transition, zt la variable de transition.

La fonction de transition F (ytd; ; d) est une fonction continue bornée entre zéro et un. Deux dé…nitions

alternatives sont généralement considérées. La fonction de transition logistique, d’une part :

F (ytd; ; d) = f1 + exp[ (zt c)]g1 (2)

et, d’autre part, la fonction de transition exponentielle :

F (ytd; ; d) = f1 exp[ (zt c)2]g (3)

Dans ces fonctions, c représente le paramètre de seuil et  est un paramètre strictement positif mesurant la

vitesse de transition entre les deux régimes. Le système d’équations (1) et (2) dé…nit le modèle Logistique

STR (LSTR) et (1) et (3) le modèle Exponentiel STR (ESTR).

Simulation d’un modèle ST(A)R et représentation de la fonction de transition estimée

Ce programme simule des modèles à seuil à transition lisse et représente les fonctions de transition

estimées.

work…le STAR u 1 500 

subroutine SIMUL_STAR(series y,series Fl,series z1,series x,vector coef)

!stdz = @stdev(z1)

if model = 1 then 

Fl=1/(1+@exp(-(coef(1)/!stdz)*(z1-coef(2))))

else 

Fl=1-@exp(-(coef(1))*((z1-coef(2))/!stdz)^2)

endif 

y=(coef(6)+coef(7)*z1+coef(8)*x)*(1-Fl)+(coef(3)+coef(4)*z1+coef(5)*x)*Fl + nrnd 

endsub

smpl 1 500 

30

Page 31: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 31/32

’ Choix du modèle : 1 = LSTAR, 2 = ESTAR

scalar model = 2 

series exog = nrnd 

’ Variable de seuil 

series var_seuil =nrnd 

vector(8) coef 

coef.…ll 2,0.5,2,0.5,0.7,1.5,0.4,0.6 

’ Ordre des paramètres : vitesse de transition,seuil,coef du régime 1, coef du régime 2 

series endog 

series Ftrans 

call simul_star(endog,Ftrans,var_seuil,exog,coef)

’ Représentation de la série simulée 

endog.line 

’ Représentation de la fonction de transition estimée 

sort var_seuil 

group g var_seuil Ftrans 

g.scat 

Estimation d’un modèle ST(A)R

Ce programme estime par Moindres Carrés Non linéaires un modèle ST(A)R de type logistique ou ex-

ponentiel. Il représente ensuite les séries ajustée et observée, la variable expliquée classée par régime et

retrace en…n la fonction de transition estimée. On estime ici la présence d’e¤ets de seuil dans la fonction

de consommation keynésienne.

’ Choix du modèle : 1 = LSTAR, 2 = ESTAR

scalar model = 1

’ Dé…nition de la variable endogène et de la variable de seuil 

series endog = d_consommation 

series exog = d_revenu

series var_seuil = d_taux_d’interet 

scalar stdz = @stdev(var_seuil)

’ Choix des conditions initiales pour l’estimation du modèle 

param c(1) 2 c(2) 0.5 c(3) 2 c(4) 0.5 c(5) 0.7 c(6) 1.5 c(7) 0.4 c(8) 0.6 

’ Estimation par MCNL

if model = 1 then 

31

Page 32: Manuel Eviews

7/22/2019 Manuel Eviews

http://slidepdf.com/reader/full/manuel-eviews 32/32

equation eq_star.ls endog =(1-1/(1+exp(-(c(1)/stdz)*(var_seuil-c(2)))) )*(c(3) + c(4)*var_seuil 

+ c(5)*exog) + (c(6) + c(7)*var_seuil + c(8)*exog)*(1/(1+exp(-(c(1)/stdz)*(var_seuil-c(2)))) )

else 

equation eq_star.ls endog =(@exp(-(c(1))*((var_seuil-c(2))/stdz)^2))*(c(3) + c(4)*var_seuil 

+ c(5)*exog) +(1-@exp(-(c(1))*((var_seuil-c(2))/stdz)^2))*(c(6) + c(7)*var_seuil + c(8)*exog)

endif 

’ A¢chage des résultats d’estimation 

eq_star.results 

’ Representation de la série observée et de la série ajustée 

eq_star.makeresids residus 

series …t = endog-residus 

group g1 endog …t 

graph graphique1.line g1

graphique1.addtext(t) Fig1 : La série observée et ajustée 

show graphique1

’ Représentation de la série classée par régime 

if model =1 then 

series F_trans = 1/(1+exp(-(c(1)/stdz)*(z1-c(2))))

else 

series F_trans = 1-@exp(-(c(1))*((z1-c(2))/stdz)^2)

endif 

series endog_reg1 = @recode(F_trans >0.5,endog,na)

series endog_reg2 = @recode(F_trans <0.5,endog,na)

group g2 endog_reg1 endog_reg2 

graph graphique2.line g2 

graphique2.addtext(t) Fig2 : Les observations classées par régime 

show graphique2 

’ Representation de la fonction de transition estimee 

sort var_seuil 

group g3 var_seuil F_trans 

graph graphique3.scat g3 

graphique3.addtext(t) Fig3 : La fonction de transition estimée 

show graphique3