manuel eviews
Post on 11-Feb-2018
241 Views
Preview:
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
top related