Vous êtes sur la page 1sur 32

INITIATION A LA PROGRAMMATION SOUS EVIEWS

APPLICATION AUX SERIES TEMPORELLES


Marie Bessec
EURIsCO - Universit Paris Dauphine
Ce document fournit les lments essentiels la constitution de programmes sous EViews. Il nest
videmment pas exhaustif. Nous avons en particulier choisi de mettre laccent sur les oprations non
pr-programmes dans le logiciel EViews. Par ailleurs, nous nous concentrons sur les commandes utiles
au traitement des sries temporelles. Pour plus de dtails, le lecteur se rfrera laide en ligne (menu
HelpCommand & Programming Reference).
Le document est organis comme suit. Nous dcrivons dans une premire section les dirents modes
dexcution dun programme sous EViews. La deuxime section expose les principales catgories dobjets.
Nous prsentons dans un troisime temps les direntes commandes et fonctions pouvant leur tre ap-
pliques. La quatrime section est consacre au calcul matriciel. Nous prsentons dans une cinquime
section les lments de base de la programmation sous EViews. Enn, quelques exemples simples de
programmes applicables des sries temporelles sont donns.
1 La cration et lexcution dun programme
Plusieurs modes
Il existe plusieurs faons dditer et dexcuter un programme sous EViews.
- linteractive use : des commandes lmentaires peuvent tout dabord tre reportes une une dans
la ligne de commande (situe au-dessous de la barre de menu). Les commandes seront alors excutes
immdiatement, mais ne seront pas enregistres dans un chier.
- le batch use : ce mode permet dexcuter un bloc de commandes et de les enregistrer dans un chier.
On pourra alors excuter le programme de faon rpte et lappliquer dautres bases de donnes.
Le batch use
On ouvre alors une nouvelle fentre dans laquelle on va enregistrer une squence de commandes.
- Pour ouvrir un programme existant FileOpenProgram
- Pour crer un programme FileNewProgram ou taper dans la ligne de commande program pgm1
(on cre et ouvre alors un programme de nom pgm1).
1
- Exemple : le programme qui suit gnre un vecteur gaussien de taille 100.
smpl 1 100
series eps = nrnd
- Pour excuter le programme bouton RUN
- Pour interrompre lexcution dun programme F1
- Pour sauvegarder le programme bouton SAVE ou SAVE AS
2 Les direntes catgories dobjets
Les programmes EViews font intervenir dirents objets : des vecteurs, des matrices, des sries, des
quations, .... Avant de pouvoir utiliser ces objets dans un programme, il convient pralablement de les
dclarer, cest--dire de leur donner un nom et den spcier la nature. On pourra ensuite dnir leur
contenu et leur appliquer direntes oprations.
2.1 Dclaration dun objet
- Syntaxe gnrale : type_objet nom_objet
- Types dobjets les plus importants :
series srie 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 sries (permettant de faire un traitement simultan sur plusieurs sries),
exemple : group g x y (cre un groupe de nom q contenant les variables r et j)
2
sample plage des observations constituant lchantillon, exemple : sample periode 1975:5 2005:5
(dnit une priode dchantillon allant de mai 1975 mai 2005), remarque : on peut rajouter une clause
if (voir aussi la section 5) an de ne prendre en compte dans lchantillon que les observations respectant
une condition, exemple : sample periode 1975:5 2005:5 if x0
graph graphique, syntaxe : graph nom ser1 ser2 ... (dclare un graphique qui sera construit
partir des sries 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 (cre le vecteur r =
_
2
1
_
) (la taille du
vecteur est optionnelle ; en labsence dinformation sur la dimension, la taille est de 1 ; par dfaut, il
contient des 0).
matrix matrice, exemple : matrix(2,2) mat, mat(1,1)=1 (cre la matrice :at =
_
1 0
0 0
_
) (la
taille de la matrice est optionnelle ; comme pour le vecteur, si loprateur ne fournit pas dinformation
sur la dimension, la taille est de 1 1 ; par dfaut, elle contient des 0).
equation quation, exemple : equation eq1, eq1.ls y c x (dclare une quation appele eq1 et lui
associe une rgression MCO dune variable j sur une constante et une variable r).
system systme dquations
coef paramtres dune quation, exemple coef(2) estim (la dimension (2) est optionnelle ; par
dfaut, lobjet cr est de taille 1 et contient des 0).
logL log-vraisemblance utilise pour estimer un modle par maximum de vraisemblance
model systme dquations simultanes utilis pour la prvision et la simulation
var modle VAR ou VECM
2.2 Dnition dun objet
Une fois lobjet dclar, loprateur peut en dnir le contenu.
- Syntaxe gnrale : nom_objet=expression
- Exemple : series y, y=log(x)+nrnd o r est une srie.
- Remarque : il est possible de dclarer et de dnir simultanment un objet.
- Exemple : series x = nrnd
- Les fonctions : on pourra utiliser des fonctions pour dnir le contenu dun objet. Contrairement
aux commandes dnies ci-aprs, les fonctions renvoient toujours des nombres et ont gnralement des
arguments. On les reconnatra facilement puisquelles sont prcdes du signe @. Les principales fonctions
sont dcrites dans la section 3.
- Exemple : matrix y = @transpose(x) pour stocker la transpose de la matrice r dans la matrice j.
- Remarque : lorsque lon utilise un objet pour en dnir un autre, il faut quil soit du mme type. On
utilisera dans le cas contraire des oprateurs de conversion (voir les commandes stom et mtos dnies
dans les sections 3.1 et 3.3).
3
2.3 Action sur les objets
Une fois les objets dclars, on va pouvoir leur appliquer direntes commandes. On pourra ainsi calculer
des statistiques descriptives sur une srie, construire des reprsentations graphiques partir dun groupe
de sries, leur appliquer des tests de causalit, etc. Les rsultats associs pourront tre achs, enregistrs
ou encore tre imprims.
- Syntaxe gnrale :
action(act_opt) objet.proc(proc_opt) arg_list
o action = action aprs lapplication dune commande sur lobjet, act_opt = option modiant le com-
portement de laction, objet = nom de lobjet qui va subir une action, proc = commande qui va tre
applique lobjet, proc_opt = option modiant le comportement de la commande, arg_list = liste
darguments de la commande.
- Actions possibles :
do excution sans achage du rsultat
show excution avec achage du rsultat
freeze excution et cration dun tableau ou dun graphique (si freeze(nom) : un nom est donn
au rsultat).
print excution et impression du rsultat (si print(l) limpression sera faite en format paysage).
- Commandes possibles : line (pour faire une courbe), sheet (pour acher 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 prsentes dans la section 3.
- Exemple : show pib.line (reprsente graphiquement la srie de PIB), do eq1.ls pib c conso (stocke
dans lobjet eq1 les rsultats de la rgression MCO du PIB sur une constante et la consommation),
freeze(graphe) pib.line (stocke dans lobjet graphe le graphique de la srie pib).
- Remarque : les actions peuvent souvent tre omises. Ainsi, il est quivalent dcrire 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 lissue de cette opration, lespace de travail
contiendra deux objets de noms dirents nom_initial et nom_nal.et de mme contenu.
- Pour renommer un objet : rename nom_initial nom_nal. Par rapport lopration prcdente, un
seul objet nom_nal apparat dans lespace de travail lissue de cette opration.
- Pour dtruire un objet : delete nom_objet.
4
3 Les commandes et fonctions principales par catgorie dobjet
Dcrivons maintenant les direntes fonctions et commandes qui peuvent tre appliques des objets
dnis sous EViews. Nous les avons classes par catgorie dobjet. Notez toutefois que lusage de nombre
dentre elles nest pas exclusif une classe donne dobjet.
3.1 Sries ou groupes de sries (series, group)
Commandes
- Prsentation
label pour acher des informations relatives un objet (nom, date de cration,...), exemple : show
pib.label
sheet pour acher la feuille de calcul ou "spreadsheet", exemple : show pib.sheet
line pour reprsenter la srie sous forme de courbe, exemple : show pib.line
bar pour reprsenter la srie sous forme de diagramme en btons, exemple : show pib.bar
xyline pour reprsenter une srie en fonction dune autre, exemple : group g x y, show g.xyline (la
deuxime srie sera reprsente en fonction de la premire).
scat pour reprsenter une srie en fonction dune autre sous la forme dun nuage de points,
exemple : group g x y, show g.scat (de mme, la deuxime srie est reprsente en fonction de la premire;
contrairement la commande prcdente, les points ne sont pas relis).
hist pour construire la fonction de distribution et calculer des statistiques descriptives sur la srie
(moyenne, mdiane, maximum, minimum, cart-type,...), exemple : show pib.hist
kdensity pour construire une fonction de distribution lisse par la mthode des noyaux
Syntaxe : nom_srie.kdensity(options), options : 1) k=arg avec arg = e (noyau Epanechnikov), r (trian-
gulaire), u (uniforme), n (gaussien), 2) s (largeur de fentre par dfaut : rgle de Silverman), b=nombre
(pour spcier la main la largeur de fentre, ex b=1)
Exemple : show pib.kdensity(k=n)
cdfplot pour construire la fonction de rpartition, exemple : show pib.cdfplot
qqplot pour reprsenter les quantiles de la distribution empirique dune srie en fonction des quan-
tiles dune distribution thorique (loi normale, uniforme,...). Si la distribution empirique est proche de la
distribution thorique, les points se situeront sur la premire bissectrice
Syntaxe : nom_objet.qqplot(options), options : n (loi normale), u (loi uniforme), e (loi exponentielle), l
(distribution logistique), s=nom_srie (les quantiles de la srie sont reprsents en fonction des quantiles
dune autre srie)
Exemple : show pib.qqplot(n)
stats pour calculer des statistiques descriptives (moyenne, mdiane, maximum, minimum,...), ex-
emple : show pib.stats
5
close pour fermer un objet, syntaxe : close nom_objet, exemple : close gdp
- Traitements
add pour ajouter une srie un groupe de sries, exemple g.add x y (ajoute au groupe g les sries
x et y)
drop pour retirer une srie un groupe de sries, exemple g.drop x (retire au groupe g la srie 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 rgressant la variable concerne sur n de ses retards et n retards de lautre 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 cointgration de Johansen
Syntaxe : nom_groupe.coint(test_option,n,option) ou coint(test_option,n,option) y1 y2 y3 @ x1 x2,
options : 1) spcication de la partie dterministe du VECM : a (pas de tendance dans les donnes et
pas de constante et de tendance dans la relation de cointgration), b (pas de tendance dans les donnes et
une constante mais pas de tendance dans la relation de cointgration), c (une tendance dans les donnes
et une constante mais pas de tendance dans la relation de cointgration), d (une tendance dans les
donnes et une constante et une tendance dans la relation de cointgration), e (une tendance quadratique
dans les donnes et une constante et une tendance dans la relation de cointgration), s (balayage des
5 spcications possibles), 2) save = nom_matrice (pour stocker dans une matrice nom_matrice, de
taille (/ + 1) 4 avec / le nombre de variables endognes, les valeurs propres dans la 1
ere
colonne, les
statistiques de la valeur propre maximale dans la 2
eme
colonne, les statistiques de la trace dans la 3
eme
colonne, les log-vraisemblances dans la 4
eme
colonne.
cor pour calculer la matrice des corrlations entre les sries dun groupe, syntaxe : nom_groupe.cor
cov pour calculer la matrice de variance-covariance dun groupe de sries, syntaxe : nom_groupe.cov
genr mme utilisation que series mais permet de gnrer des sries multivaries
hpf pour lisser une srie en utilisant le ltre de Hodrick-Prescott
Syntaxe : hpf(n) srie_initiale srie_ltre ou srie_initiale.hpf(n) srie_ltre (pour ltrer une srie
avec comme paramtre de lissage n et la stocker dans une nouvelle srie appele srie_ltre)
Exemple : hpf(1600) gdp gdp_hp
na pour crer des valeurs manquantes, exemple : smpl if z<0, z=na (remplace toutes les valeurs
ngatives de z par des valeurs manquantes)
resample pour faire du bootstrap partir dune srie ou dun groupe de sries,
Syntaxe : nom_objet.resample(options) [nom_output], options : outsmpl = "" pour dnir la taille de
lchantillon dans lequel on veut faire des tirages si celle-ci ne correspond pas celle dnie dans lespace de
travail, permute pour faire des tirages sans remise (option non utilisable pour des tirages par blocs), weight
=nom_srie_de_poids pour attribuer des probabilits direntes de tirage aux observations (option non
6
utilisable pour des tirages sans remise), par dfaut tirage quiprobable, block = entier pour faire des
tirages de blocs dobservations, par dfaut = 1, withna (par dfaut), dropna, xna pour grer les valeurs
manquantes
Exemple : group g x y, g.resample (cre des sries x_b et y_b contenant des tirages alatoires dans r et
j).
sort pour trier les sries du workle par valeurs croissantes dune srie que lon prcisera,
Syntaxe : sort(option) ser1 ser2 ser3... pour trier les sries du workle suivant les valeurs croissantes
de ser1 (puis si la srie ser1 comporte des valeurs identiques, par valeurs croissantes de ser2, puis de
ser3, etc), option : d : tri par ordre dcroissant, remarque : les valeurs manquantes na sont considres
comme les plus petites valeurs dune srie.
stom pour convertir une srie (ou un groupe de sries) en un vecteur (une matrice),
Syntaxe : stom(nom_serie,nom_vecteur[,sample]) ou stom(nom_groupe,nom_matrice[,sample]), on pr-
cisera lchantillon concern sil dire de celui dni par dfaut
Remarque : les valeurs manquantes sont automatiquement exclues (utiliser stomna si lon souhaite le
contraire)
Exemple : sample s 1960 1990, stom(pib,vec_pib,s)
Remarque : pour faire lopration inverse, on utilisera la commande mtos (voir vecteurs et matrices).
uroot pour faire un test ADF ou de Phillips-Perron sur une srie
Syntaxe : nom_srie.uroot(options,n) ou uroot(options) nom_srie o n reprsente le nombre de termes
augments (test ADF) ou le paramtre de troncature (test de PP), options : n (modle sans constante
et sans tendance), c (modle avec une constante), t (modle avec une constante et une tendance), h (test
de PP)
Exemple : pib.uroot(t,3) (test ADF dans le modle avec constante et tendance avec 3 termes augments)
x11 dsaisonnalisation dun srie par application du ltre Census X11.
x12 dsaisonnalisation dun srie par application du ltre Census X12 (pour les sries trimestrielles
et mensuelles seulement).
ar(l) composante autorgressive dordre l, exemple : ls y c ar(1) ar(2) (pour estimer un processus
AR(2) avec une constante sur j).
ma(l) composante MA dordre l, exemple : ls y c ma(1) ma(2) (pour estimer un processus MA(2)
avec une constante sur j).
Fonctions
- Les fonctions mathmatiques
Les fonctions mathmatiques prsentes ici sont galement applicables aux vecteurs et aux matrices.
Lorsquelles sont appliques une srie, elles sont appliques chacun des lments de la srie. De mme,
7
dans le cas dun vecteur ou dune matrice, elles retournent une valeur pour chaque lment de lobjet
matriciel.
@abs(x) ou abs(x) [r[ @inv(x) 1,r @cos(x) cos(r)
@exp(x) ou exp(x) c
x
@log(x) ou log(x) ln(r) @sin(x) sin(r)
@fact(x) r! @sqrt(x) ou sqrt(x)
_
r @tan(x) tan(r)
- Les fonctions de statistique descriptive
De mme, les fonctions dcrites ci-dessous peuvent tre appliques des objets vectoriels ou matriciels.
@obs(x) nombre dobservations @quantile(x,q) quantile ( [0, 1])
@sum(x) somme @mean(x) moyenne arithmtique
@sumsq(x) somme des carrs @median(x) mdiane
@min(x) minimum @stdev(x) cart-type (corrig)
@max(x) maximum @var(x) variance (non corrige)
- Les fonctions de sries temporelles
x(-n) pour construire une srie retarde r
tn
partir dune srie initiale r
t
d(x) (1 1)r
t
= r
t
r
t1
d(x,n) (1 1)
n
r
t
dlog(x) (1 1) log(r) = log(r
t
) log(r
t1)
dlog(x,n) (1 1)
n
log(r)
@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 premire observation
@trend(n) tendance (vecteur de 0,1,2,....) normalis 0 la n
eme
observation
@recode(s,x,y) retourne x si la condition s est vrie, y sinon, exemple : series z = @recode(y0,x,2)
- Les principales distributions statistiques
Loi fonction de distribution fonction de rpartition quantile nb alatoire
Normale (0, 1) @dnorm(x) @cnorm(x) @qnorm(p) @rnorm ou nrnd
Poisson 1(:) @dpoisson(x,m) @cpoisson(x,m) @qpoisson(p,m) @rpoisson(m)
Khi-deux () @dchisq(x,v) @cchisq(x,v) @pchisq(p,v) @rchisq(v)
Student ot() @dtdist(x,v) @ctdist(x,v) @dtdist(p,v) @rtdist(v)
Uniforme l
[a;b]
@dunif(x,a,b) @cunif(x,a,b) @qunif(p,a,b) @runif(a,b) ou rdn
Fisher 1(
1
,
2
) @dfdist(x,
1
,
2
) @cfdist(x,
1
,
2
) @qfdist(p,
1
,
2
) @rfdist(
1
,
2
)
Remarque : la commande rndseed permet de rpter un mme tirage alatoire, exemple : rndseed 12,
series x =nrnd, rndseed 12, series y = nrnd (les sries x et y contiendront des tirages alatoires iden-
tiques).
- Autres
@elem(ser,"d") extrait llment dune srie correspondant une date donne d, exemple : scalar
a = @elem(ser1,"1975.1") (le scalaire a contiendra la valeur de ser1 en 1975.1)
8
@otod(n) renvoie la date correspondant un indice initialis en 1 au dbut de lchantillon, exemple:
si le workle contient des donnes annuelles allant de 1981 2000, @otod(3) renverra la date 1983.
Remarque : oprateurs applicables des sries ou des scalaires
+ : somme, exemple : x+y
- : dirence, exemple : x-y
* : produit, exemple : x*y
/ : division, exemple : x/y
^ : puissance, exemple : x^y
Oprateurs de comparaison : = (gal), (suprieur), = (suprieur ou gal), < (infrieur), <=
(infrieur ou gal), < (dirent de), exemple : scalar a = 1<2 le scalaire a contiendra un 1 puisque
1 ,= 2 ; il vaudrait 0 si la condition ntait pas vrie.
3.2 Echantillon (sample)
Commandes
- set pour changer la dnition de lchantillon
Exemple :
sample periode 1960:1 1990:4
periode.set 1965:1 @last
periode.set @rst 1965:1
periode.set @all
On dclare et dnit une taille dchantillon allant de 1960.1 1990.4, on la rednit comme allant de
1965.1 la dernire observation, puis de la premire 1965.1, puis on reprend lensemble des observations.
- smpl pour utiliser un chantillon dni pralablement ou un chantillon que lon dnit, exemple 1:
sample priode 1960:1 1990:4, smpl periode, exemple 2 : smpl 1960:1 1990:4
Remarque : on peut utiliser, notamment lorsque lon travaille en coupe instantane, la clause if pour
exclure les observations ne respectant pas une condition, exemple : supposons que lespace 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 lensemble des observations (range dni dans lespace de travail)
@rst indice de la premire observation du range
@last indice de la dernire observation du range
9
@obssmpl donne le nombre dobservations de lchantillon du workle (remarque : @obsrange
donne le nombre dobservations du range du workle).
3.3 Vecteurs et matrices (vector, matrix)
Commandes
- Achage
sheet pour acher la matrice ou le vecteur, exemple : vec1.sheet (pour acher le vecteur vec1)
- Traitements
cor pour calculer la matrice des corrlations 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 lments dune matrice ou dun 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 srie (un groupe de sries), syntaxe :
mtos(vecteur,srie[,chantillon]) ou mtos(matrice,groupe_sries[,chantillon]), si lchantillon nest pas
prcis, lchantillon dni dans lespace de travail est utilis par dfaut (opration inverse : stom, voir
sries).
Fonctions
@columnextract, @rowextract, @subextract pour intgrer une partie dune matrice dans une autre
matrice (voir section 4.2).
@columns(m), @rows(m) renvoie le nombre de colonnes et le nombre de lignes dune matrice (ou
dun vecteur) m
@cor(v1,v2) calcule la corrlation entre deux vecteurs v1 et v2
@cov(v1,v2) calcule la covariance entre deux vecteurs v1 et v2
@det(m) calcule de dterminant dune matrice m
@eigenvalue(m) calcule les valeurs propres dune matrice m
@eigenvectors(m) retourne une matrice contenant les vecteurs propres dune matrice m
@getmaindiagonal(m) extrait la diagonale dune matrice m
@identity(n) cre une matrice identit de dimension ::, exemple : matrix(2,2) = m, m=@identity(2)
(matrice identit de dimension 2)
@inverse(m) retourne linverse dune matrice m
@issingular(m) retourne le nombre 1 si matrice m est singulire donc non inversible
@kronecker(m1,m2) calcule le produit de Kronecker de deux matrices m1 et m2
10
@permute(m) renvoie une matrice de mme dimension dont les lignes sont tires au hasard sans
remise
@rank(m) calcule le rang de la matrice m
@resample(m,n2,n3,v4) avec m une matrice de taille | c, n2 un nombre entier (0 si non prcis) et
n3 un nombre entier positif (1 si non prcis) et v4 un vecteur reconstitue une matrice de dimension
(| + :2) c en tirant des lignes de la matrice m au hasard et avec remise par bloc de taille n3 (1 si non
prcis) avec des poids prciss dans le vecteur v4 (les observations seront tires avec une probabilit
proportionnelle au poids de la ligne correspondante ; les poids ne doivent pas ncessairement sommer
1, EViews les normalisant automatiquement).
@trace(m) retourne la trace de la matrice m
@transpose(m) calcule la transpose dune matrice m
@unitvector(n1,n2) cre un vecteur de taille n1 avec un 1 au n2me rang et des 0 ailleurs,
exemple : vector vec1 = @unitvector(8,5) (vecteur de dimension 8 constitu de 0 hormis le cinquime
lment gal 1)
@vec(m) empile les colonnes dune matrice m
3.4 Equations (equation)
Commandes
- Prsentation
spec pour acher la spcication de lquation estime, exemple : show eq1.spec
results pour acher les rsultats dune quation estime, exemple : show eq1.results
resids pour acher les rsidus estims, syntaxe : nom_quation.resids(options), options : g pour
avoir une reprsentation graphique des rsidus (par dfaut), t pour les avoir sous forme de tableau,
exemple : show eq1.resids
makemodel pour crer un modle partir de lquation estime
makeresids pour stocker les rsidus dune quation estime dans une srie dont on prcisera le nom
Syntaxe : nom_quation.makeresids nom_srie_rsidus
Exemple : equation eq1.ls y c x, eq1.makeresids res
Remarque : si le nom de la srie de rsidus nest pas prcis, un nom RESID0i est donn par dfaut
- Traitements : estimation et prvision
ls pour estimer une quation par les moindres carrs linaires ou non-linaires
Syntaxe : nom_quation.ls(options) y c x1 x2 ou nom_equation.ls y=c(1)+c(2)*x1+c(3)*x2 (pour
rgresser y sur une constante et les variables explicatives x1, x2 et x3, omettre c ou c(1) si pas de
constante ; dans la deuxime spcication, utiliser le vecteur c ou dclarer auparavant un vecteur et
lutiliser dans la commande, exemple : coef(3) par, nom_equation.ls y=par(1)+par(2)*x1+par(3)*x2),
11
options : w=nom_series : moindres carrs pondrs chaque observation va tre multiplie par la
srie spcie, h : cart-type avec correction de White de lhtroscdasticit, n : cart-types robustes
lhtroscdasticit et lautocorrlation de Newey-West, m=nombre_entier : pour xer un nombre
maximum ditrations dans le cas des MC non-linaires, m=scalaire : pour xer un critre de convergence
dans le cas des MC non-linaires, s pour utiliser les valeurs contenues dans le vecteur c comme valeurs
initiales dans le cas des MC non-linaires.
Remarque : on pourra utiliser la commande param pour xer les valeurs initiales dans le cas dune
estimation par MC non-linaires, 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 acher les rsultats dune rgression rcursive
Syntaxe : nom_equation.rls(options) ou nom_equation.rls(options) c(1) c(2) ... suivant loption retenue,
options principales : r (pour reprsenter les rsidus rcursifs et leur intervalle de conance 95%), r,s
(pour reprsenter les rsidus rcursifs et sauvegarder les rsidus et leurs cart-types dans des sries
appeles R_RES et R_RESSE), c (pour reprsenter les coecients quil faut alors mentionner c(1)...
estims de faon rcursive dans un intervalle de conance 95%), c,s (pour reprsenter les coecients
estims et les sauvegarder ainsi que leurs cart-types dans des sries appeles R_C1, R_C1SE, R_C2,
R_C2SE, ...).
gmm pour estimer une quation par les GMM
arch pour estimer un modle ARCH
Syntaxe : arch(p,q,options) y x1 x2 @ v1 v2 (pour estimer un modle GARCH(p,q) avec y en fonction
de x1 et x2 dans lquation de lesprance. On pourra ajouter des rgresseurs supplmentaires v1, v2,...
dans lquation de la variance en les sparant des prcdents par @), options principales: e (exponential
GARCH), t (TARCH)
Exemple : eq1.garch(1,3) y c x1
t pour construire des prvisions statiques (quand lquation estime contient comme rgresseur
la variable explique retarde, les valeurs observes sont utilises), exemple : do eq1.t yhat yse (stocke
dans yhat et yse la srie ajuste et les cart-types associs, yse est optionnel)
forecast pour construire des prvisions dynamiques (quand lquation estime contient comme
rgresseur la variable explique retarde, les valeurs prvues sont utilises lorsque lhorizon de prvision
est suprieur 1), exemple : smpl 1 100, do eq1.ls y c x, smpl 101 105, do eq1.forecast yhat yse (de
mme, yse est optionnel)
- Traitements : tests
archtest pour faire un test deets ARCH dans les rsidus estims du modle
Syntaxe : nom_quation.archtest(n) ou archtest(n) (pour faire un test deets ARCH dordre n)
Exemple : eq1.archtest(4) (pour faire un test deets ARCH dordre 4 dans les rsidus du modle).
auto pour faire un test dautocorrlation la Breusch-Godfrey dans les rsidus
12
Exemple : show eq1.auto(2) (test dautocorrlation dordre 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 quune 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 lomission des sries ser1, ser2,... dgrade signi-
cativement le pouvoir explicatif du modle)
testdrop pour faire des tests de variables redondantes
Syntaxe : nom_quation.testadd ser1 ser2... (teste si la prise en compte des sries ser1 et ser2 amliore
signicativement le pouvoir explicatif du modle)
wald test de Wald de restrictions sur les coecients
Exemple : show eq1.wald c(2) = 0, c(3)=1 (teste simultanment la nullit du deuxime coecient et
lgalit du troisime 1).
white pour faire un test dhomocdasticit des rsidus
Exemple : show eq1.white (pour prendre en compte tous les termes croiss show eq1.white(c)).
Fonctions
- Scalaires
@aic critre dinformation AIC, exemple scalar a = eq1.@aic
@schwarz critre dinformation de Schwarz
@coef(i) ou c(i) ime coecient estim
@coefcov(i,j) covariances des coecients estims i et ,
@dw statistique de Durbin Watson
@logl log-vraisemblance
@r2 coecient de dtermination
@rbar2 coecient de dtermination ajust
@regobs nombre dobservations utilises dans la rgression
@ncoef nombre de coecients intervenant dans lquation constante comprise
@se cart-type rsiduel
@ssr somme des carrs des rsidus
@stderr(i) cart-type estim du ime coecient de lquation
@tstat(i) t-statistique du ime coecient de lquation
- Vecteurs et matrices
@coefs ou c vecteur des coecients estims
13
Exemple : ls y c x, coef estim = c pour stocker dans le vecteur estim les rsultats destimation de y sur
une constante et x, attention c reprsente la constante dans la premire ligne et le vecteur des coecients
estims dans la deuxime).
@coefcov matrice de variance-covariance des coecients estims
@stderr vecteur des cart-types estims des coecients estims
@tstats vecteur des t-statistiques des coecients estims, exemple : vector a = eq1.@tstat
3.5 Log-vraisemblance (logL)
Commandes
append pour spcier la log-vraisemblance
ml pour en rechercher le maximum (estimation par maximum de vraisemblance),
syntaxe : nom_quation.ml(options), options principales : b (algorithme doptimisation numrique
Berndt Hall Hall Hausmann (BHHH), par dfaut Marquardt), m=entier (nombre maximum ditrations),
c=scalaire (critre de convergence portant sur la variation relative des coecients estims entre deux
itrations).
grads pour acher les gradients estims
results pour acher les rsultats destimation
spec pour acher la spcication de la vraisemblance
Fonctions
Outre les direntes fonctions prsentes pour lobjet quation, on pourra utiliser :
@logl valeur de la log-vraisemblance estime
@byeq valuation de la spcication quation par quation
@byobs valuation de la spcication observation par observation (par dfaut)
Exemple : voir section 6.2
3.6 Panel (pool)
On ne prsentera ici que les procdures spciques aux donnes de panel, mais notez que les commandes
et fonctions dnies pour lobjet 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
dene pour rednir les individus du panel
ls estimation dun modle en donnes de panel par moindres carrs
Syntaxe : nom_quation.ls(options) y x1 x2 @ z1 z2 (on mettra avant le signe @ les rgresseurs dont le
coecient est contraint tre identique pour tous les individus du panel et aprs le signe @ les rgresseurs
qui ont des coecients dirents pour chaque individu, option : n (pas de constante), f (modle eets
xes, i.e. une constante dirente pour chaque individu du panel), r (modle eets alatoires), h
(cart-types estims avec la correction de White de lhtroscdasticit), b (estimation en utilisant un
panel cylindr).
Exemple : pool panel allemagne danemark france irlande italie, panel.ls(f ) y_? x_? (loprateur ? per-
met de se rfrer aux sries y_pays et x_pays dnies dans lespace de travail avec
pays={allemagne,danemark,france,irlande,italie}).
wald pour faire des tests de restrictions (voir quation)
Fonctions
- Scalaires
@eects(i) eet xe ou alatoire estim du ime individu du panel (fonction utilisable exclusivement
pour les modles eets xes ou alatoires)
@totalobs nombre total dobservations du panel (si le panel est cylindr : nombre dindividus
nombre dobservations)
- Vecteurs
@eects vecteur estim des eets xes ou alatoires (fonction utilisable exclusivement pour les
modles eets xes ou alatoires)
3.7 Modles VAR et VECM (var)
Commandes
- Prsentation
arroots racines inverses du polynme retard
Syntaxe : nom_var.arroots(options), options : 1) name = nom_matrice (pour stocker les racines dans
une matrice nom_matrice avec en premire colonne la partie relle et en deuxime colonne la partie
imaginaire des racines), 2) graph : pour reprsenter les racines dans le disque unit complexe
Exemple : var1.arroots(graph) (calcule et reprsente les racines associs au VAR var1).
impulse fonctions de rponse impulsionnelles
resids pour acher les rsidus estims
Syntaxe : nom_var.resids(options), options : g pour avoir une reprsentation graphique des rsidus (par
dfaut), t pour les avoir sous forme de tableau
15
results pour acher les rsultats de lestimation, syntaxe : nom_var.results, exemple : var1.results
makeresids pour stocker les rsidus des quations estimes dans des sries dont on prcisera le nom
(il en faut autant que dquations)
Syntaxe : nom_var.makeresids nom_srie_rsidus_eq1 nom_srie_rsidus_eq2...
residcov pour acher la matrice de variance-covariance des rsidus dun VAR
Syntaxe : nom_var.residcov
Exemple : var1.residcov (calcule la matrice de variance-covariance des rsidus de var1)
- Traitements : estimation
ec estimation dun VECM
Syntaxe : nom_var.ec(trend,n) paires_retards y1 y2 @ x1 x2 pour estimer un VECM avec n relations
de cointgration et un nombre de retards spci par paires_retards et en incluant ventuellement des
variables exognes xi en les prcdant du signe @ et avec une partie dterministe dtermine par trend
(avec les notations a, b, c, d et e de la commande coint, voir sries).
Exemple : var vec1.ec(1,c) 1 4 y1 y2 (dclare et estime un modle VECM vec1 avec une relation de
cointgration, une tendance dans les donnes, une constante dans la relation de cointgration et avec 4
retards).
ls estimation dun VAR non contraint
Syntaxe : nom_var.ls paires_retards ser1 ser2 ser3 @ exog1 exog2 (permet destimer un VAR sur les
sries ser1, ser2 et ser3 dordre dni par paires_retards et en incluant ventuellement des variables
exognes exogi en les prcdant par @)
Exemple : var1.ls 1 2 y1 y2 y3 (pour estimer un VAR dordre 2 sur les sries y1, y2 et y3)
- Traitements : tests
coint test de cointgration de Johansen, syntaxe nom_var.coint(test_option,n,option), voir sries.
laglen achage des dirents critres et tests utiliss dans le choix du nombre de retards (test
LR, FPE, AIC, Schwarz, Hannan-Quinn) calculs pour des retards compris entre 1 et n pour le choix de
lordre du VAR, syntaxe : nom_var.laglen(n)
qstats syntaxe : nom_var.qstats(n,name=Q), pour calculer les statistiques du portemanteau as-
socies un VAR pour des retards allant de 1 n et, si on le prcise, stocker les statistiques dans la
matrice Q
testlags pour faire des tests dexclusion des retards du VAR, syntaxe : nom_var.testlags(options),
option : name = nom_matrice : pour stocker les statistiques de test dans une matrice de taille :(/+1)
o : est le nombre de retards et / le nombre de variables endognes du VAR.
white version multivarie du test de White, syntaxe : nom_var.white(option), option : c pour
prendre en compte les termes croiss dans le test (produits des variables explicatives).
Fonctions
16
- Scalaires concernant une quation du VAR
@eqlog(k) log-vraisemblance de lquation /
@eqncoef(k) nombre de coecients estims de lquation /
@eqregobs(k) nombre dobservations dans lquation /
@r2(k) 1
2
de lquation /
@rbar2(k)

1
2
de lquation /
a(i,j) coecient de la force de rappel de lquation / (si le modle est un VECM)
b(i,j) coecient de jme variable de la ime relation de cointgration (si le modle est un VECM)
c(i,j) coecient du jme rgresseur de la ime quation du VAR ou du jme rgresseur en dirence
premire de la ime quation du VECM
- Scalaires concernant le VAR dans son ensemble
@aic critre dinformation AIC
@sc critre dinformation de Schwarz
@logl log-vraisemblance du systme
@ncoefs nombre de coecients estims du VAR
@neqn nombre dquations du VAR
@regobs nombre dobservations dans le VAR
- Vecteurs et matrices
@coefmat matrice de coecients
@coefse matrice des cart-types estims des coecients estims
@cointse cart-types des vecteurs cointgrants
@cointvec vecteurs cointgrants
@residcov matrice de variance-covariance des rsidus
4 Les oprations sur les vecteurs et les matrices
4.1 Dclaration dun vecteur ou dune matrice
- Syntaxe
vector(l) vec1 cre un vecteur de taille | de nom vec1
matrix(l,c) mat1 cre une matrice de taille | c de nom mat1
- Exemple
vector(10) vec1 cre un vecteur de taille 10 de nom vec1
matrix(10,2) mat1 cre une matrice de taille 10 2 de nom mat1
- Remarques
1) Les vecteurs et matrices sont forms de 0 par dfaut.
17
2) Ils sont de taille 1 (ou 1 1) par dfaut.
4.2 Dnition dun vecteur ou dune matrice
1re mthode : lment par lment
Exemple : le programme suivant cre la matrice
_
5 0
_
.
matrix(1,2) data
data(1,1)=5
2me mthode : commande ll
matrix(3,2) data, data.ll 1,2,3,4,5,6
La commande ll remplit la matrice colonne par colonne, dans lexemple
_
_
1 4
2 5
3 6
_
_
.
Remarques
1) pour remplir la matrice en ligne : ll(b=r)
exemple : data.ll(b=r) 1,2,3,4,5,6
_
_
1 2
3 4
5 6
_
_
2) Pour rpter dans la matrice une suite de nombre, ll(l)
exemple : data.ll(l) 1,2
_
_
1 2
2 1
1 2
_
_
3me mthode : avec des scalaires ou vecteurs/matrices pralablement dnis
- sans dcomposition
exemple 1 : matrix(2,2) mat1 = 5
_
5 5
5 5
_
exemple 2 : matrix(2,2) mat2=mat1
_
5 5
5 5
_
Remarque : si la dimension de mat2 dire de celle de mat1, mat2 est redimensionne comme mat1 (sauf
si mat1 est un scalaire comme dans lexemple 1).
Pour viter cela, on pourra utiliser les commandes :
matplace(matrice_de_rception, matrice_copie, ligne_de_dbut, colonne_de_n)
colplace(matrice_de_rception,vecteur_copi,colonne_de_rception)
rowplace(matrice_de_rception,vecteur_copi,ligne_de_rception)
Exemple : matrix m1(5,5) = 1, vector(5,1) v1 = 2, colplace(m1,v1,2) place le vecteur v1 dans la 2me
colonne de m1.
- Pour ne copier quune partie dune matrice, on utilisera les fonctions :
@rowextract(mat,i) extrait la ime ligne de la matrice mat
@columnextract(mat,j) extrait la jme colonne de la matrice mat
18
@subextract(mat,i_dbut,j_dbut,i_n,l_n) extrait le sous-bloc de la matrice mat allant de
llment (i_dbut,j_dbut) llment (i_n,j_n)
exemple : matrix mat2(2,2) = @subextract(mat1,1,2,2), vector vec1 = @columnextract(mat1,1)
4.3 Oprations sur les matrices
Considrons deux matrices a et b. Plusieurs oprations pourront leur tre appliques :
- addition : +, exemple : matrix sum = a + b
- dirence : -, 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
- Oprateurs de comparaison (lement par lment) : = (gal), (suprieur), = (suprieur ou gal), <
(infrieur), <= (infrieur ou gal), < (dirent de), exemple : scalar a = mat1=mat2 le scalaire a
vaudra 0 si un ou plusieurs lments de mat1 dirent des lments des lignes et colonnes correspondantes
de mat2.
5 La programmation sous EViews
5.1 Quelques astuces de prsentation
- Les commentaires : une ligne prcde du signe ne sera pas excute.
- Pour couper une ligne trop longue, taper le caractre _ la n de la ligne que lon souhaite couper.
Exemple :
eq1.ls _
y c x
permet dexcuter la commande eq1.ls y c x
5.2 Les dirents types de variables
Variables de contrle
- Il sagit de variables locales contenant des valeurs numriques. Elles nexistent pas en dehors du
programme et nexistent que durant le temps dexcution du programme. Elles nont pas besoin dtre
dclares comme les objets, mais doivent tre dnies avant dtre utilises.
- Notation : Elles commencent par le signe !
- Dnition : !nom = valeur numrique ou expression
- exemple: !x=7.356, !compteur=@rows(vec1)
- Elles pourront tre utilises dans une expression.
19
Variables "string"
- Il sagit de variables locales contenant des chanes de caractres. Comme les variables de contrle, elles
nexistent pas en dehors du programme et nexistent que durant le temps dexcution du programme.
Elles nont pas besoin dtre dclares comme les objets, mais doivent tre dnies avant dtre utilises.
- Notation : Elles commencent par le signe %.
- Dnition : %nom = "expression"
- exemple : %dep="x1 x2 x3 x4"
Arguments dun programme
- Les arguments dun programme sont des variables dont le contenu est prcis par loprateur au moment
de lexcution du programme.
- Exemple : ls %1 c %2 (lors de lexcution du programme, il sera demand loprateur de prciser les
arguments %1 et %2. On pourra ainsi appliquer un programme direntes variables sans modication
pralable des lignes de commandes).
5.3 Les contrles de lexcution
5.3.1 Le conditionnement IF
- Lorsque lon souhaite excuter des commandes seulement si une ou plusieurs conditions sont satisfaites,
on utilise les commandes IF condition THEN /ENDIF. Les lignes qui suivent sont excutes seulement
si les conditions sont vries. Lorsque lon veut utiliser plusieurs conditions, on utilise AND (toutes les
conditions doivent tre satisfaites) ou OR (au moins lune des conditions doit tre satisfaite). On pourra
aussi utiliser la clause ELSE pour excuter des commandes si la (les) condition(s) sont non satisfaites.
- Syntaxe :
if [condition] then
commandes excuter si la condition est vrie
else
commandes excuter si la condition nest pas vrie
endif
- Exemple :
if !i5 and !i<10 then
series x = gdp/sqr(gdp)
else
series x = gdp/(2*sqr(gdp))
endif
- Remarque : loprateur if peut galement tre utilis pour exclure des observations de lchantillon.
Dans lexemple suivant,
20
smpl if x=0
eq1.ls y c x
on utilisera seulement dans la rgression les observations correspondant des valeurs positives de r.
5.3.2 La boucle FOR
Elle permet de rpter une srie de commandes pour direntes valeurs de variables de contrle ou
"string". La syntaxe dpend du type de variable concerne.
boucle FOR pour des variables de contrle ou des scalaires
- Syntaxe :
1. FOR valeur_initiale de la variable de contrle ou dun scalaire TO valeur_nale STEP nombre
indiquant de combien est modie la variable de contrle chaque n de boucle
2. Commandes excuter chaque tour de boucle
3. NEXT
- Remarque : si le pas nest pas prcis, il est par dfaut de 1.
- Exemples :
1) pour estimer des quations en augmentant progressivement la taille de lchantillon :
for !horizon=10 to 72 step 1
smpl 1970:1 1970:1+!horizon
equation eq{!horizon}.ls sales c orders
next
2) pour utiliser des lments dirents dun vecteur ou dune 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 cumules des lments du vecteur vec1 et on les stocke dans le
vecteur cusum1.
3) pour utiliser des lments dirents dune srie, on aura recours aux fonctions @otod (qui retourne
la date associe lindice dune observation) et @elem (qui extrait llment correspondant la date
donne)
for !i=2 to !rows
cusum1(!i) = @elem(ser1,@otod(!i))
next
4) on peut aussi construire des boucles avec des scalaires plutt quavec des variables de contrle
21
scalar i
vector (10) x
for i=1 to 10
x(i)=i
next
boucle FOR pour des variables "string"
On peut aussi vouloir rpter des oprations pour direntes "valeurs" des variables "string".
Exemple : le programme suivant :
for %y gdp gnp ndp
equation {%y}reg.ls %y c {%y}(-1)
next
permet dxcuter 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 dexcuter une srie de commandes tant quune ou plusieurs conditions sont satisfaites. Elle
a lavantage dtre plus exible pour le choix des conditions.
- Syntaxe :
1. Initialiser les variables de contrle
2. WHILE condition
3. Commandes excuter tant que la condition est satisfaite
4. Ractualisation des variables de contrle excute 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
5.3.4 Les commandes darrt
- stop pour arrter 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 dune "subroutine" (cf. suite).
- exit : pour sortir et fermer lapplication EViews.
5.4 Les programmes multiples
- Pour excuter des commandes inclues dans un autre programme : include cheminnom du programme
- Exemple :
include c:mesdocpgm1
series x = nrnd
excute pgm1 puis simule un vecteur gaussien.
5.5 Les "subroutines"
Les "subroutines" sont des sous-blocs de commandes qui pourront tre excuts lintrieur du pro-
gramme par un simple appel (call ). Elles sapparentent des fonctions. Elles doivent tre dnies au
dbut du programme.
Dnition dune "subroutine"
- Syntaxe :
SUBROUTINE nom(argument)
commandes
ENDSUB
- Exemples :
23
1) "subroutine" sans argument calcul du carr dune srie
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 prcis, 2) il nest pas obligatoire de prciser le (ou
les) output(s) (dans lexemple y) dans les arguments, mais son inclusion permettra lors de lappel de la
sous-routine de le stocker dans un objet dont on pourra prciser le nom. Si on omet series y dans les
arguments dans lexemple prcdent, la srie x leve la puissance p sera stocke par dfaut dans une
srie appele y qui sera donc crase chaque appel de la "subroutine" puissance, 3) une "subroutine"
peut faire appel une autre "subroutine".
Appel dune "subroutine"
- Une fois la "subroutine" dnie, on peut y faire appel en utilisant la commande call. Il convient
auparavant de dclarer et dnir les arguments.
- Exemple :
series a = gdp
series a_3
call puissance(a,a_3,3) lve la srie a la puissance 3 et la stocke dans la srie x_3.
Les "subroutines" globales/locales
- Variables globales/locales
Les "subroutines" utilisent des objets pouvant tre locaux ou globaux. Les premiers nont de sens qu
lintrieur de la "subroutine", mais nont pas dexistence en dehors et sont dtruits ds que la "subroutine"
est nie. Les objets globaux sont des objets qui existent dj lorsque la "subroutine" est appele ou qui
sont crs par la "subroutine" et qui demeureront dans lespace de travail (workle) aprs son excution.
- "subroutines" globales
Par dfaut, les "subroutines" sont globales.
Rgles :
1) Les objets quelles crent seront globaux et seront inclus dans le workle aprs son excution.
2) Les objets globaux prexistant dans le workle peuvent tre utiliss et modis directement
lintrieur dune "subroutine". Nanmoins, si lun des objets globaux a le mme nom quun des arguments
de la "subroutine", le nom de la variable dsignera largument et non la variable globale.
24
3) Les arguments (dans lexemple qui suit a et a_3) doivent tre dclars avant lappel 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 cre les variables a, a_3 et i.
- "subroutines" locales
Si lon inclut le mot local avant le nom de la "subroutine", tous les objets cres lintrieur de la
"subroutine" seront dtruits la n de son excution.
Rgles :
1) Des objets globaux ne peuvent pas tre utiliss et/ou modis lintrieur de la "subroutine".
2) Les arguments (dans lexemple qui suit a et a_3) doivent tre dclars avant lappel de la "sub-
routine".
3) Tous les autres objets de la "subroutine" sont locaux et disparaissent la n de son excution.
Pour sauver des objets dnis dans la procdure, 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 cre les variables r et j, mais i disparat aprs son excution. En
revanche, si lon dclare subroutine local operation(series x,series y, scalar p,scalar i), le scalaire i est
conserv.
5.6 Les commandes et fonctions gnrales
Commandes
25
fetch pour charger dans le workle des objets contenus dans des bases de donnes EViews ou des
chiers, syntaxe : fetch(options) noms_objets.
workle pour crer un workle (espace de travail qui contiendra les objets cres) ou charger un
workle existant
Syntaxe : workle nom ou workle nom frquence date_dbut date_n, dans le premier cas, charge le
workle sil existe dj, frquence : 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 chances irrgulires)
Exemple : workle chier1 a 1980 2005 (cre un workle pour des donnes annuelles stendant de 1980
2005)
range pour modier la plage dobservations du workle
Syntaxe : range date_dbut date_n
Exemple :
workle dossier a 1950 1990
sample s1 1955 1985
range 1950 1980
La premire ligne cre un espace de travail contenant des donnes annuelles allant de 1950 1990 et la
troisime rduit la taille 1950-1980 ; noter que lchantillon va aussi tre modi 1950-1980).
tic [commandes] toc : pour acher le temps dexcution dun ensemble de commandes
Remarque : pour stocker le temps dexcution dans une variable a : tic [commandes] scalar a=@toc
Fonctions
@isobject("nom_objet") retourne le nombre 1 si lobjet existe dans le workle
6 Quelques exemples simples
1
6.1 Comparaison des prvisions issues dun modle thorique celles dune
marche alatoire
Nous examinons ici la validit du fameux constat de Meese et Rogo (1983) selon lequel les modles
thoriques prvoient moins bien les taux de change quune marche alatoire. On estime cette n de
faon rcursive le modle montaire et on construit les prvisions associes 1 et 4 pas. La srie des
erreurs de prvisions de ce modle est compare celle dune marche alatoire sur la base du critre
RMSE.
Comparaison des prvisions issues des modles thoriques celles dune marche alatoire
smpl @all
1
Les programmes sont fournis sur le site http://www.dauphine.fr/eurisco/marie.bessec_software.html.
26
scalar hmax=4
scalar taille = 40
scalar a =@obs(e) - hmax - taille
equation mod1
matrix(a,2) e1
matrix(a,2) eRW
On dnit ici les direntes paramtres intervenant dans le programme. hmax dsigne lhorizon maximal
de prvision, taille la largeur de la fentre destimation, e1 la matrice qui contiendra les erreurs de
prvisions du modle montaire et eRW les erreurs de prvisions associes une marche alatoire 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
prvision
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 prvisions
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 modle montaire est estim sur une "fentre roulante" de 40 observations, les prvisions de la srie
sont construites 1 et 4 pas, puis les erreurs de prvisions issues de ce modle et les erreurs de prvi-
sion associes une marche alatoire sont calcules. La prvision issue du dernier modle correspond
simplement la dernire observation connue de la srie.
Calcul du RMSE du modle et comparaison celui de la RW
horizon de prvision h=1
27
!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 prvision 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 enn le critre RMSE associ sur les sries derreur de prvision aux dirents horizons de
prvision pour le modle montaire et la marche alatoire et on en fait le rapport. Les rsultats sont
stocks dans rapp_rmse_h1 et rapp_rmse_h4 pour les horizons de prvision 1 et 4 respectivement. Un
rsultat infrieur 1 est favorable au modle thorique et inversement.
6.2 Tabulation des valeurs critiques des tests de Dickey Fuller
Ce programme dtermine les valeurs critiques 1, 5 et 10% du test de Dickey Fuller dans le modle sans
constante et tendance. Il calcule cette n les quantiles correspondant de la distribution de la statistique
de test t
^

obtenue sous lhypothse nulle de racine unitaire.


Tabulation des VC du test ADF (modle sans constante et tendance)
workle table u 1 10 000
Simulation dune marche alatoire 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
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 dun modle par maximum de vraisemblance
Nous prenons ici lexemple le plus simple de lestimation dun modle linaire :
j
t
= c + ,r
t
+ -
t
, -
t
~ (0, o
2
)
par maximum de vraisemblance. La log-vraisemblance associe un chantillon de T observations scrit
comme suit :
1(c, ,, o) =
T
2
_
log(2) + log(o
2
)
_

t=1
(j
t
c ,r
t
)
2
2o
2
=
T

t=1
log c
_
j
t
c ,r
t
o
_
avec c la fonction de densit dune loi normale centre rduite (elle est donne par la fonction @dnorm
sous EViews).
Estimation dun modle linaire par maximum de vraisemblance
Initialisation du vecteur de paramtres avec les estimations MCO
equation eqmco.ls y c x
c(3) = eqmco.@se^2
Nom de lobjet qui contiendra les estimations par MV
logl eqmv
Nom de lobjet dans lequel seront stockes les contributions de chaque observation la log-vraisemblance
eqmv.append @logl logl1
Spcication de la vraisemblance
29
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 dun modle STR logistique et exponentiel
Un modle seuil transition lisse pour une srie univarie j
t
admet lcriture gnrale suivante :
j
t
= (a
0
+ a
1
r
1
+ ... + a
p
r
p
) 1 1 (.
t
; , d) + (/
0
+ /
1
r
1
+ ... + /
p
r
p
) 1 (.
t
; , d) + n
t
(1)
o n
t
iid (0, o
2
), 1 est la fonction de transition, .
t
la variable de transition.
La fonction de transition 1 (j
td
; , d) est une fonction continue borne entre zro et un. Deux dnitions
alternatives sont gnralement considres. La fonction de transition logistique, dune part :
1(j
td
; , d) = 1 + exp[(.
t
c)]
1
(2)
et, dautre part, la fonction de transition exponentielle :
1(j
td
; , d) = 1 exp[(.
t
c)
2
] (3)
Dans ces fonctions, c reprsente le paramtre de seuil et est un paramtre strictement positif mesurant la
vitesse de transition entre les deux rgimes. Le systme dquations (1) et (2) dnit le modle Logistique
STR (LSTR) et (1) et (3) le modle Exponentiel STR (ESTR).
Simulation dun modle ST(A)R et reprsentation de la fonction de transition estime
Ce programme simule des modles seuil transition lisse et reprsente les fonctions de transition
estimes.
workle 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
Choix du modle : 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 paramtres : vitesse de transition,seuil,coef du rgime 1, coef du rgime 2
series endog
series Ftrans
call simul_star(endog,Ftrans,var_seuil,exog,coef )
Reprsentation de la srie simule
endog.line
Reprsentation de la fonction de transition estime
sort var_seuil
group g var_seuil Ftrans
g.scat
Estimation dun modle ST(A)R
Ce programme estime par Moindres Carrs Non linaires un modle ST(A)R de type logistique ou ex-
ponentiel. Il reprsente ensuite les sries ajuste et observe, la variable explique classe par rgime et
retrace enn la fonction de transition estime. On estime ici la prsence deets de seuil dans la fonction
de consommation keynsienne.
Choix du modle : 1 = LSTAR, 2 = ESTAR
scalar model = 1
Dnition de la variable endogne et de la variable de seuil
series endog = d_consommation
series exog = d_revenu
series var_seuil = d_taux_dinteret
scalar stdz = @stdev(var_seuil)
Choix des conditions initiales pour lestimation du modle
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
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
Achage des rsultats destimation
eq_star.results
Representation de la srie observe et de la srie ajuste
eq_star.makeresids residus
series t = endog-residus
group g1 endog t
graph graphique1.line g1
graphique1.addtext(t) Fig1 : La srie observe et ajuste
show graphique1
Reprsentation de la srie classe par rgime
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_trans0.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 classes par rgime
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 estime
show graphique3
32