INITIATION A LA PROGRAMMATION SOUS EVIEWS APPLICATION AUX SERIES TEMPORELLES Marie Bessec EURIsCO - UniversitØ Paris Dauphine Ce document fournit les ØlØments essentiels la constitution de programmes sous EViews. Il nest Øvidemment pas exhaustif. Nous avons en particulier choisi de mettre laccent 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ØfLrera laide en ligne (menu HelpnCommand & Programming Reference). Le document est organisØ comme suit. Nous dØcrivons dans une premiLre section les di/Ørents modes dexØcution dun programme sous EViews. La deuxiLme section expose les principales catØgories dobjets. Nous prØsentons dans un troisiLme temps les di/Ørentes commandes et fonctions pouvant leur Œtre ap- pliquØes. La quatriLme section est consacrØe au calcul matriciel. Nous prØsentons dans une cinquiLme section les ØlØments de base de la programmation sous EViews. Enn, quelques exemples simples de programmes applicables des sØries temporelles sont donnØs. 1 La crØation et lexØcution dun programme Plusieurs modes Il existe plusieurs faons dØditer et dexØcuter un programme sous EViews. -linteractive use : des commandes ØlØmentaires peuvent tout dabord Œ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 dexØcuter un bloc de commandes et de les enregistrer dans un chier. On pourra alors exØcuter le programme de faon rØpØtØe et lappliquer dautres 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 ! FilenOpennProgram - Pour crØer un programme ! FilenNewnProgram ou taper dans la ligne de commande program pgm1 (on crØe et ouvre alors un programme de nom pgm1 ). 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INITIATION A LA PROGRAMMATION SOUS EVIEWSAPPLICATION 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 ! FilenOpennProgram
- Pour créer un programme ! FilenNewnProgram ou taper dans la ligne de commande program pgm1
(on crée et ouvre alors un programme de nom pgm1 ).
1
- 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
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 objet 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
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
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 la
distribution théorique, les points se situeront sur la première bissectrice
Syntaxe : 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
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).
@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 n�eme 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 nrndPoisson 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 rdnFisher 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
@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
@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 n�n, 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
@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
spec ! 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