Académique Documents
Professionnel Documents
Culture Documents
GuideEconometrie PDF
GuideEconometrie PDF
Simon Leblond1
Université de Montréal
simon.leblond@umontreal.ca
9 septembre 2003
3 Graphiques 21
3.1 Exemples et résultats pour le Chapitre 3 . . . . . . . . . . . . 24
4 Régressions Simples 26
4.0.1 Estimateurs de Variance Robustes . . . . . . . . . . . . 28
4.1 Tests d’hétéroscédasticité . . . . . . . . . . . . . . . . . . . . . 30
4.2 Test de Changement structurel (Test de Chow) . . . . . . . . 32
1
5.3 Tests d’endogénéité . . . . . . . . . . . . . . . . . . . . . . . . 37
9 Séries Chronologiques 48
9.1 Opération sur les variables dans le cadre de séries chronologiques 48
9.2 Opérateurs de séries temporelles . . . . . . . . . . . . . . . . . 48
9.3 Tests d’autocorrélation . . . . . . . . . . . . . . . . . . . . . . 50
9.4 Méthode de Box-Jenkins . . . . . . . . . . . . . . . . . . . . . 51
9.4.1 Stationnarité des données . . . . . . . . . . . . . . . . 51
9.4.2 Modélisation des cycles: Modèles AR, MA, ARMA,
ARIMA . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.4.3 Sélection de Modèle . . . . . . . . . . . . . . . . . . . . 55
A Tableaux Récapitulatifs 62
A.1 Fonctions de Matlab . . . . . . . . . . . . . . . . . . . . . . . 62
A.2 Fonctions de Stata . . . . . . . . . . . . . . . . . . . . . . . . 65
A.3 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2
Introduction
Ce manuel ne vient pas se substituer à vos notes de cours, mais plutôt les
compléter en vous donnant un guide pour l’utilisation des logiciels économé-
triques. À ce titre, bien que vous trouverez quelques fois des explications
plus importantes sur la nature d’un problème économétrique, la majorité du
temps on supposera que vous possédez déjà les connaissances liées à la section
consultée.
Chaque section présente rapidement le but de l’opération qui y est traité.
Les commandes appropriées sont ensuite présentées, d’abord individuelle-
ment, puis dans le cadre d’exemples concrets. Pour l’instant, les deux logi-
ciels couverts par ce manuel sont Matlab et Stata. Notez que ce manuel
couvre la version 7 de Stata, la version 8 sera intégrée peu à peu pendant
l’année qui vient. Comme il s’agit d’un manuel encore en développement, des
changements lui seront constamment apportés en cours de session et la ver-
sion distribuée sera toujours la plus récente. Tout commentaire, suggestion
ou correction sera bienvenu et apprécié.
Prenez note que ce texte décrit seulement certaines fonctions ainsi que
leurs options les plus souvent utilisées pour le genre de recherches effectuées
au bac et à la maı̂trise en économie, il n’est donc pas du tout exhaustif. Un
conseil: apprenez à utiliser l’aide de Matlab et de Stata. Il s’agit là d’outils
fort utiles pour découvrir de nouvelles fonctions ou pour connaı̂tre l’ensemble
des options disponible pour les fonctions décrites dans ce guide.
Pour Matlab:
1. Le nom de la fonction;
2. Le format d’entrée;
3
3. Sa description;
5. Un exemple court.
Pour Stata:
2. Sa description;
3. Le format d’entrée;
5. Un exemple court.
• Le texte en sans serif désigne le texte tel qu’il serait entré à l’ordinateur.
4
Finalement, les deux derniers chapitres (11 et 12) (à venir) sortent quelque
peu du cadre de ce guide en abordant respectivement la manipulation des
données par Word et Excel et la recherche de données. Ces chapitres ont pour
but de vous aider dans le cadre plus général de la production d’un travail de
recherche.
5
Chapitre 1
Commandes générales
importantes
load
load nom de f ichier1
load fonctionne seulement avec les données numériques, mais a l’avantage
d’être la commande d’importation de données la plus simple de Matlab. load
importe le fichier spécifié dans une matrice du même nom. Les données
doivent être séparées par des espaces ou des tabulations.
Note: load devrait être suffisant pour les besoin du cours ECN 3949.
xlsread
[A, B] = xlsread(nom de f ichier)
1
Puisque le dossier de travail est déjà spécifié dans Matlab, il est inutile de donner le
chemin d’accès avec le nom des fichiers. Les extensions doivent par ailleurs être présentes.
6
xlsread lit la première feuille d’un tableur Microsoft Excel (‘.xls’) et renvoit
toutes les données numériques dans la matrice A et toutes les données texte
dans la matrice B de même taille. Les élément de texte sont remplacés par
‘NaN’ dans la matrice A et les éléments numériques sont laissés vides dans
la matrice B.
Si xlsread rencontre des données texte dans la première rangée et la première
colonne, la matrice B ne contiendra que ces valeurs.
textread
[A, B, C . . . ] = textread(‘nom de f ichier’, ‘f ormat’)
textread permet d’importer des données d’un fichier formatté nom de f ichier
vers les variables spécifiées A, B, C, etc. f ormat est une chaı̂ne de caractères
et spécifie le format des variables à importer, il doit y avoir un format par
variable. N’importe quel séparateur de données peut-être utilisé par le fichier.
Les formats possibles sont:
• %s: texte
7
dlmread
M = (‘nom de f ichier’, ‘séparateur de données’)
Moins flexible que textread, mais plus que load, dlmread fonctionne seule-
ment avec les données numériques, mais a l’avantage d’être plus simple.
dlmread importe le fichier spécifié dans la matrice M .
‘séparateur de données’ spécifie le type de séparateur dans le fichier, il peut
prendre les valeurs suivantes:
• ‘,’: virgule, valeur par défaut
• ‘;’: point-vigule
• ‘\t’: tabulation
• ‘ ’: espace
ex: M = (‘ECN3949TP1.txt’,‘\t’)
Stata
insheet
Rapide et efficace, insheet permet d’importer les données d’un fichier texte
possédant une observation par ligne et dont les données sont séparées par
des tabulations ou des virgules.
si le nom des données sont sur la première ligne:
insheet using nomdef ichier2
8
infile (inf)5
Permet plus de flexibilité que insheet en permettant que les observations
soient sur plusieurs lignes ou que les données soient séparées par des espaces.
une observation par ligne: infile nomdesvariables using nomdef ichier
observations sur plusieurs lignes:
infile nom des variables [ skip(#) nom des variables] using ‘‘nom de f ichier’’;
où # désigne le nombre de ligne à sauter pour continuer la lecture de l’observation.
options: clear, voir insheet
Stata
generate (g)
Probablement la commande la plus utile (et utilisée) dans Stata, elle permet
de créer des nouvelles variables.
generate nouvellevariable = expression
ex: g x2 = x^2
5
Le nom entre paranthèses qui suit le nom de la fonction désigne l’abréviation que l’on
peut utiliser dans le code.
9
replace
Même idée que generate, mais pour une variable existante.
replace variable existante = expression
Addition: +
Soustraction: -
Multiplication: *
Division: /
Puissance: ^
ET: &
OU: |
Non (¬) : ~
Égal : ==
Dif f érent : ~ =
P lusgrand : >
P luspetit : <
P lusgrandouégal : >=
P luspetitouégal : <=
10
Création de matrices
Les matrices et les vecteurs sont crées dans Matlab en inscrivant directement
le nom de la matrice et les opérations qu’on désire effectuer séparées par le
signe égal (‘=’).
ex:
A = [1,2,3,4;5,6,7,8]; où les virgules séparent les colonnes et les
points-virgules séparent les rangées. (matrice 2 × 4)
B = A*2
C = A^2
Fonctions matricielles
• Créer une matrice identité 2 × 2: I = eye(2)
• Créer une matrice 4x5 dont chaque élément égale à zéro: Z = zeros(4, 5)
• Créer une matrice 2x2 dont chaque élément est un aléa U(0,1): U =
rand(2), équivalent à U = rand(2, 2)
• Créer une matrice 3x8 dont chaque élément est un aléa N(0,1): N =
randn(3, 8)
• Empilage de matrices
11
– Empiler verticalement (mettre les colonnes une à côté de l’autre):
[A;A] (2 × 8)
• Inverse: Inv(A)
• Transposée: A0
• Création d’un vecteur dont les éléments sont une suite: v = début:incrément:f in;
ex: x = 1.0;0.1;2.0 produit le vecteur [1.0,1.1,1.2, . . . ,2.0];
notez que l’argument incrément est facultatif, ainsi x = 1:10 produit le
vecteur [1,2, . . . ,10].
Stata
Fonctions matricielles
matrix (mat)
L’équivalent de generate pour les matrices, permet de créer des nouvelles
matrices ou de modifier des matrices existantes.
matrix nom de la matrice = expression
12
ex:
Création d’une matrice: mat A = B*C
Modification d’une matrice existante: mat A = A*2
Construction d’une matrice: mat D = (1,0,0\0,1,0); où les vir-
gules séparent les colonnes et les \ séparent les rangées (matrice
2 × 3).
Extraction d’une sous-matrice: mat A = B(1..4,2...); se lit rangées
1 à 4, colonne 2 à N.
Remplacement d’un élément: mat A(1,1) = 3; remplace l’élément
a11 par 3.
mkmat
Permet de transformer des variables existantes en vecteurs du même nom ou
en une nouvelle matrice.
Transformation en vecteurs: mkmat nom(s) de variable(s)
Transformation en matrice: mkmat nom(s) de variable(s), matrix [(nom de la nouvelle matric
svmat
Inverse de mkmat, transforme les colonnes d’une matrice en vecteurs.
svmat matrice, [names(nom col1, nom col2, . . . )]; names peut aussi s’écrire
n
matrix get
Sert à obtenir une copie d’une matrice système6
Quelques matrices systèmes:
13
ex: matrix beta = get( b)
det(A): déterminant de A
rowsof(A): nombre de rangées de A
colsof(A): nombre de colonnes de A
el(A,i,j): élément aij de A
I(n): matrice identité n × n
inv(A): inverse de la matrice carrée A
diag(V ): matrice diagonale n × n, avec pour diagonale les éléments de V ,
où V est un vecteur n × 1 ou 1 × n
vecdiag(A): extrait la diagonale d’une matrice carrée A sous forme de
vecteur
Opérateurs matriciel
Soit A et B, deux matrices carrées définies positives n × n et C, une matrice
définie positive t × n:
Transposée: A0 (n × n)
Somme: A + B (n × n)
Différence: A - B (n × n)
Produit vectoriel: B*C 0 (n × n)
Division par un scalaire: A/k (n × n)
Empiler les rangées horizontalement: A ((n + t) × n)
Empiler les colonnes verticalement: A,B (n × 2n)
Soit un vecteur z 1 × n:
exp(z): exponentielle de z élément par élément
log(z): logarithme naturel de z élément par élément
sqrt(z): racine carrée de z élément par élément
mean(z): moyenne des éléments du vecteur z
std(z): écart-type des éléments du vecteur z
var(z): variance des éléments du vecteur z
14
sum(z): somme des éléments du vecteur z
cumsum(z): somme cumulative des éléments du vecteur z (retourne un vecteur
1 × n)
min(z): renvoie l’éléments du vecteur z ayant la valeur la moins élevée
max(z): renvoie l’éléments du vecteur z ayant la valeur la plus élevée
length(z): nombre de colonnes du vecteur z
size(z): renvoie un vecteur 1×2 contenant la taille de la matrice (rangées,colonnes)
Stata
1.4 Divers
Matlab
Commentaires
Il est possible d’insérer des commentaires dans son programme en prenant
soin de débuter la ligne de commentaire par le symbole ‘%’.
Suppression de la sortie
Pour que Matlab effectue une opération sans que l’on voit le résultat, il suffit
de terminer la ligne de commande par un point-virgule (‘;’).
15
Commande sur plusieurs lignes
Il est possible d’écrire une commande sur plusieurs lignes. Les ‘. . . ’ indiquent
à Matlab que la commande se poursuit à la ligne suivante.
ex:
[v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16] = . . .
textread(‘TP1donnees.txt’, fmt);
Stata
Commentaires
Il est possible d’insérer des commentaires dans son programme en prenant
soin de débuter la ligne de commentaire par le symbole ‘*’.
more
Avez-vous déjà rencontré le message --more-- qui fait une pause dans l’affichage
de vos données? Si ça vous énerve, vous pouvez enlever ce message en
spécifiant set more off au début de votre programme.
if
La majorité des fonctions peuvent être suivies de la commande if qui permet
de spécifier une condition pour que l’expression soit executée. if est placé
après la fonction, mais avant les options
Cette option ne sera pas mentionnée pour chaque fonction puisqu’elle est
présente très souvent.
commande if expression
16
in
La majorité des fonctions peuvent être suivies de la commande in qui permet
de spécifier l’étendue des données affectées par la fonction. in est placé après
la fonction, mais avant les options.
Cette option ne sera pas mentionnée pour chaque fonction puisqu’elle est
présente très souvent.
commande in étendue; où étendue peut prendre la forme # ou #/#, et
# peut-être un nombre positif, l (dernière observation), f (première obser-
vation) ou un nombre négatif (distance par rapport à la dernière observation).
ex:
regress y x1 x2 in f /60; équivalent à regress y x1 x2 in 1/60: les
60 premières observations.
list y in -10/l: les 10 dernières observations.
Matlab
load Donnees.dat;
% Attribution de noms à certaines des variables.
px = Donnees(:,1);
qt = Donnees(:,2);
% Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
% être inclu dans l’ensemble [0,25;0,5]et la 5e variable doit être égale
% à 1 pour que la variable binaire égale 1.
bin = (0.25 = Donnees(:,3)/Donnees(:,4) = 0.5 & Donnees(:,5) == 1);
% Création d’une variable indice.
no = [1:100]
Stata
17
set more off
infile px qt var3 var4 var5 ”c:\mes documents\Donnees.dat”, clear
* Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
* être inclu dans l’ensemble [0,25;0,5] et la 5e variable doit être égale
* à 1 pour que la variable binaire égale 1.
g bin = (0.25 = var3/var4 = 0.5 var5==1)
* Création d’une variable indice.
g no = n
18
Chapitre 2
Matlab affiche par défaut toutes les opérations effectuées à l’écran. Pour
éliminer la sortie, se référer à la section 1.4.
Stata
list
Affiche à l’écran la valeur des variables spécifées.
list [nom(s) de variable(s)]; si aucun nom de variable est spécifié, Stata
affiche toutes les variables.
2.1.2 Exportation
Matlab
diary
Permet de sauvegarder une copie de sa session dans le fichier spécifié. Doit
être suivi de diary(‘off’) à la fin du programme.
diary(‘nom de f ichier’)
programme
19
diary(‘off’)
wk1write
wk1write(‘nom de f ichier’,M )
Sauvegarde la matrice M dans un fichier de tableur nom de f ichier.wk1;
aucune extension ne doit donc être spécifiée.
Stata
log using
Permet de sauvegarder une copie de sa session dans le fichier spécifié. Doit
être suivi de log off à la fin du programme.
log using nom de f ichier
programme
log off
Options: replace, indique à Stata de remplacer le fichier existant.
2.1.3 Impression
Matlab
Stata
Matlab
diary(’ExChap2.out’);
20
load Donnees.dat;
% Attribution de noms à certaines des variables.
px = Donnees(:,1);
qt = Donnees(:,2);
% Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
% être inclu dans l’ensemble [0,25;0,5] et la 5e variable doit être égale
% à 1 pour que la variable binaire égale 1.
bin = (0.25 = Donnees(:,3)/Donnees(:,4) = 0.5 & Donnees(:,5) == 1);
# Création d’une variable indice.
no = [1:100]
diary(’off’)
Stata
21
Chapitre 3
Graphiques
Matlab
plot
Trace des nuages de point en deux ou trois dimensions.
plot(x, y,‘couleur style marqueur’,x, y2,‘couleur style marqueur de 2’,x, y3,
...)
Où ‘couleur style marqueur’ est une chaı̂ne de caractère optionnelle con-
tenant de un à quatre caractères et qui définit la couleur de la série, le style
de la ligne et le type de marqueur des points.
Les possibilités sont:
• Couleurs:
– ‘c’: cyan
– ‘m’: magenta
– ‘y’: jaune
– ‘r’: rouge
– ‘g’: vert
– ‘b’: bleu
– ‘w’: blanc
– ‘k’: noir
• Styles:
22
– ‘-’: solide
– ‘--’: tiret (???)
– ‘:’: pointillé
– ‘-.’: tiret-point
– ‘none’: pas de ligne
• Marqueurs:
Il est possible de donner une seule variable, Matlab fait alors un graphique
de cette variable par rapport à l’indice des observations.
ex:
plot(y): courbe de y par rapport à l’indice des observations
plot(x,y): courbe de y par rapport à x, options standard (ligne
pleine,pas de marqueur)
plot(x,y,‘k+’): courbe de y par rapport à x, marqueurs en ‘+’,
noirs (pas de ligne)
plot(x,y,‘b-d’,x,y2,‘r:’): courbe de y par rapport à x et de y2 par
rapport à x (sur le même graphique), première courbe bleue,
pleine, marqueurs en losanges, deuxième courbe rouge, pointillée
(pas de marqueurs)
Il est possible une fois le graphique tracé de modifier une foule de ses paramètres,
voici quelques-unes de ces fonctions:
23
axis: permet de définir les propriétés des axes, voir l’aide de Matlab pour
plus de détails.
grid: permet de définir les propriétés des axes, voir l’aide de Matlab pour
plus de détails.
hold
Permet de superposer plusieurs graphiques en spécifiant hold on.
Pour ne plus superposer les graphiques suivant, il suffit de spécifier hold
off.
plot(x,y)
hold on
plot(x,y2)
plot(x,y3)
hold off
Stata
graph (gr)
Trace des graphiques.
graph nom des variables, [type de graphique, autres options]
Où type de graphique peut prendre les valeurs suivantes:
• twoway (t): nuage de points à deux axes; valeur par défaut si plusieurs
variables sont affichés. La première variable spécifiée est toujours la
variable dépendante.
• xlog, ylog: spécifie que l’axe des x ou des y respectivement doit être
en échelle logarithmique.
24
• xline, yline: spécifie qu’une grille en x ou en y respectivement de-
vrait être affichée.
diary(’ExChap3.out’);
% création d’un indice de temps commençant à 4.
t = 4:103;
% création du log de cet indice.
lnt = log(t);
plot(t,lnt,‘k’)
plot(t,lnt,‘k-’)
plot(t,lnt,‘k-p’)
hold on
plot(t,-lnt,‘b-+’)
25
xlabel(‘temps’)
ylabel(‘log du temps’)
title(‘courbe logarithmique’)
diary(’off’)
Stata
26
Chapitre 4
Régressions Simples
y = β0 + β1 x1 + β2 x2 + · · · + βk xk + uy = Xβ + U
Matlab
MCO
Définition des variables:
X = [ones(size(x1),x1,x2,. . . ,xk]
[T,K] = size[X]
T et K sont respectivement le nombre d’observations et le nombre de variables
indépendantes.
Procédure pour calculer les moindres carrés ordinaires (MCO):
Calcul des coefficient:
b = inv(X’*X)*X’*y
où X est une matrice T × K, Y est un vecteur t × 1 et b un vecteur k × 1
Calcul des résidus:
e = y-X*b
27
Calcul de la variance des résidus:
sigma2 = (e’*e)/(T-K)
Calcul de la variance des coefficients:
varb = sigma2 * inv(X’*X)
Calcul de l’écart-type des coefficients:
etype = sqrt(diag(varb))
Création d’un vecteur de y-moyen:
ybar = [ones(size(y))*mean(y)]
Vecteur des y prédits:
yhat = X*b
Variation expliquée:
SSE = sum((yhat-ybar).^2)
Variation totale:
SST = sum((y-ybar).^2)
Calcul du R2 :
R2 = SSE/SST
28
La première ligne du fichier doit être sous la forme suivante:
function [varo1, varo2, . . . ] = N om de f onction(vari1, vari2, . . . )
où varo désigne une variable retournée par la fonction et vari désigne une
variable utilisée par la fonction.
Les lignes subséquentes contiennent le code à être exécuté.
La fonction peut ensuite être appelée par la commande suivante:
[vars1, vars2, . . . ] = N om de f onction(vare1, vare2, . . . )
où vars sont les nom qu’on désire utiliser pour les variables varo et vare le
nom de variables que l’on donne à la fonction.
ex: MCO.m
function [b,e,etype,R2] = MCO(X,y)
[T,K] = size(X);
b = inv(X’*X)*X’*y;
e = y-X*b;
sigma2Ch = (e’*e)/(T-K);
varChb = sigma2Ch * inv(X’*X);
etype = sqrt(diag(varChb));
ybar = [ones(size(y))*mean(y)];
yCh = X*b;
SSE = sum((yCh-ybar).^2);
SST = sum((y-ybar).v̂erb+2+);
R2 = SSE/SST;
29
ante: !
0
−1 T −1
X 0X
ˆ = 1 XX 1 X
2 0
V ar[b] e xi xi
T T T i=1 i T
En matlab, toujours en utilisant les résultats de la fonction MCO.m, on de-
vrait écrire:
e2 = e.^2
varWhite = T*inv(X’*X)*sum((e2.*X)*X’)/T*inv(X’*X)
Stata
regress (reg)
Incontournable si on désire faire des régressions par MCO. Effectue la régression
de la variable dépendante sur la ou les variables indépendantes spécifiées.
regress variable dépendante [variables indépendantes]
Options:
predict
Permet de calculer les valeurs prédites, les résidus, etc. pour toutes les ob-
servations.
predict nom de nouvelle variable; sans aucune option calcule les valeurs
prédites (ŷ).
Options:
30
ex: calcule les ŷ hors-échantillon
reg y x1 x2 x3 in 1/100
predict y hat if ˜
e(sample)
test (t)
test permet d’effectuer des tests d’hypothèses après une estimation. Il prend
principalement deux formes:
test [expression1 = expression2]: test que l’expression1 n’est pas statis-
tiquement différente de l’expression2
test liste de coef f icients: test que les coefficients ne sont pas conjointe-
ments statistiquement différents de zéro.
ex:
reg y x1 x2 x3
test x1 = x2
test x2 x3
31
Matlab
[b,u,etype,R2] = MCO(X,y)
u2 = u.^2
[bu,e,etypeu,R2u] = MCO(X,u2)
Test F:
F = (R2u/length(bu’))/((1-R2u)/(length(u2)-length(bu’))) 1
Test LM 2 :
LM = length(u2)*R2u
Notez bien que le R2 utilisé est celui de la régression auxiliaire
effectuée en 3.
Stata
reg y x1 x2
predict u, r
g u2 = u2̂
reg u2 x1 x2
Il suffit alors de regarder la statistique F donnée par Stata.
u2 = β0 + β1 ŷ + β2 ŷ 2 + e
2
Rappel: la statistique LM suit une χ2k
3
Il peut-être bien tentant de procéder systématiquement avec les variances robustes
32
• Estimer le modèle par MCG, i.e. modéliser la forme d’hétéroscédasticité
(voir le chapitre 7).
y = β0 + β1 x1 + β2 x2 + u
Le test de Chow sert à vérifier s’il existe une différence dans l’influence
d’une variable dépendante entre deux groupes de données, i.e. si le coefficient
est statistiquement différent. Les deux groupes de données pourraient être
deux séries d’observations ou deux périodes de temps par exemple.
La façon “classique” d’effectuer le test de Chow est d’effectuer la régression
du modèle pour les deux groupes de façon indépendante et pour les deux
groupes ensemble:
= β10 + β11 x11 + β12 x12
yˆ2 = β20 + β21 x21 + β22 x22
ŷ = β0 + β1 x1 + β2 x2 puis de tester si les coefficient sont statistiquement
différents par un test F :
ˆ y − SSR
(SSR ˆ y1 − SSRˆ y2 )/q
F =
(SSRˆ y1 − SSR
ˆ y2 )/n1 + n2 − 2k)
Eicker-White pour éviter de faire le test d’hétéroscédasticité, mais cette façon de faire
réduit la précision de vos résultats (i.e. gonfle les écarts-types et réduit la puissance des
tests) lorsque les données sont homoscédastiques.
4
Cette section et l’exemple qui la suit sont inspirés de la rubrique de l’aide de Stata:
How can I compute the Chow test statistic? par Bill Gould.
33
Soit δ la variable binaire:
ŷ = β0 + β1 x1 + β2 x2 β3 δ + β4 x1 δ + β5 x2 δ
On désire maintenant tester si β0 = (β0 + β3 ), si β1 = (β1 + β4 ) et si β2 =
(β2 + β5 ). Ce qui revient à tester si β3 , β4 et β5 sont conjointement différent
de 0. Ceci peut être facilement effectué par un test de F .
ex:
Matlab
g2 = (groupe ==2);
g2x1 = g2*X(:,2);
g2x2 = g2*X(:,3);
Xg = [X,g2,g2x1,g2x2];
function [b,u,etype,R2] = MCO(X,y);
function [bg,ug,etypeg,R2g] = MCO(Xg,y);
# Test F:
F = (R2 - R2g/length(b’))/((1-R2g)/(length(u)-length(b’)))5
Stata
g g2 = (groupe == 2)
g g2x1 = g2*x1
g g2x2 = g2*x2
reg y x1 x2 g2 g2x1 g2x2
test g2 g2x1 g2x2
2
5 (Ru r−Rr2 )/k
Rappel: la forme générale R2 du test F est: F = (1−Ru2 r)/(n−k−1)
34
Chapitre 5
Variables instrumentales et
Doubles Moindres Carrés
Lorsqu’une variable “indépendante” est corrélée avec le terme d’erreur, les hy-
pothèses classiques du modèle linéaire sont violées et on se retrouve face à un
problème d’endogénéité. Dans ces cas, on peut faire appel à l’estimateur
de variables instrumentales (VI) ou aux doubles moindres carrés or-
dinaires (DMCO).
où
1
(y − Z β̂(IV ) )0 (y − Z β̂(IV ) ).
σ̂ 2 =
T
ou, lorsque K > J (K étant le nombre de VI et J le nombre de variables
indépendantes), par:
35
σ̂ 2 [Z 0 X(X 0 X)−1 X 0 Z]−1 .
Matlab
Stata
ivreg
ivreg permet de faire directement une régression par DMCO.
ivreg variable dependante variables independantes (variable dependante =
variable(s) intrumentale(s)), options
où options peut prendre les mêmes valeurs que pour regress, ainsi que
first qui affiche les résultats de la première régression.
ex:
ivreg y1 z1 z2 (y2=x1), r first
36
5.2 DMCO
Le principe des doubles moindres carrés ordinaires est d’utiliser une estima-
tion de la variable endogène qui ne soit pas corrélée avec le terme d’erreur
pour effectuer la régression.
Soit le modèle suivant:
y1 = β0 + β1 x1 + β2 x2 + β3 y2 + u
et soit z une VI de y2 .
Matlab
Z = [ones(size(y1)),x1,x2,z]
[bz,uz,etypez,R2z] = MCO(Z,y2)
y2hat = Z*bz
X = [ones(size(y1)),x1,x2,y2hat]
[b,u,etype,R2] = MCO(X,y1)
Stata
37
5.3 Tests d’endogénéité
Le test de Hausman permet de vérifier s’il existe bel et bien une différence
entre l’estimateur VI et l’estimateur MCO, vérifiant ainsi s’il y a bel et bien
endogénéité des variables (si les deux estimateurs sont consistants, ils seront
asymptotiquement égaux). Sous H0 , la statistique de Hausman est:
H = [β̂(V I) − b]0 [σ̂ 2 [(Z 0 X(X 0 X)−1 X 0 Z]−1 − σ̂ 2 (Z 0 Z)−1 ]−1 [β̂(V I) − b] ∼ χ2 (J)
Matlab
Stata
hausman
Effectue le test de spécification d’Hausman.
Estimation du modèle moins efficient, mais convergent (VI ici)
hausman, save
Estimation du modèle efficient, mais peut-être pas convergent (MCO ici)
hausman
Options: constant (c), indique que la constante doit être inclue dans la
comparaison des deux modèles.
ex:
ivreg y1 z1 z2 (y2=x1)
hausman, save
reg y1 z1 z2 y2
hausman, c
38
Chapitre 6
Estimateur du Maximum de
Vraissemblance (EMV)
39
Les CPO sont:
δlnL (y − Xβ)(y − Xβ)
=
δβ 2σ 2
δlnL T (y − Xβ)0 (y − Xβ)
= − +
δσ 2 2σ 2 2σ 4
Ce qui nous permet de trouver
β̂ = (X 0 X)X 0 y
Matlab
fminsearch
[x, f val] = fminsearch(f onction, options, variables)
où x est la variable qui contiendra la/les valeur(s) qui minimise(nt)la fonc-
tion, f val est une variable facultative où seront stockées les valeurs de la
fonction pour chacune des valeur minimale, f onction est le nom de la fonc-
tion à minimiser (réfère à un fichier ‘.m’) et variables est une liste de variables
utilisées par la fonction, mais qui ne doivent pas être minimisées. Les options
possibles sont:
Si aucune option n’est désirée, il faut utilisée l’ensemble vide [] pour options.
40
Stata
ml
Permet de faire une estimation par maximum de vraisemblance pour une
équation donnée. Cette fonction étant fort complexe et très peu utilisée dans
le cadre des problèmes abordés dans ce guide, il est laissé à la discrétion du
lecteur le soin de consulter l’aide de Stata à son sujet. Il existe normalement
des fonctions pré-définies pour les estimateur abordées ici qui doivent être
traités par maximum de vraisemblance (probit et logit par exemple).
41
Chapitre 7
β̂ M CG = (X 0 V −1 X)−1 X 0 V −1 y
ou encore
β̂ M CG = (X 0 W −1 X)−1 W 0 V −1 y
et sa variance est
var[β̂] = σ 2 (X 0 V −1 X)−1 .
où V et W sont égaux à
x1 0 · · · 0
0 x2 · · · 0
W = σ 2 .. 2
.. ≡ σ V
.. . .
. . . .
0 0 · · · xn
Matlab
Le principe de base ici est de construire la matrice V avec la forme appropriée
de variance pour pouvoir ensuite calculer les β̂ M CG .
Voyons comment on estimerait le modèle y = β0 + β1 x1 + β2 x2 + ε où l’on
suppose que la variance suivre une fonction de type σ 2 (x) = σ 2 x2i :
X = [ones(size(y)),x1,x2];
V = diag(x2);
42
[T,K] = size(X);
bGLS = inv(X’*inv(V)*X)*X’*inv(V)*y;
eGLS = y-X*bGLS;
sigma2ChGLS = (eGLS’*eGLS)/(T-K);
varChbGLS = sigma2ChGLS * inv(X’*inv(V)*X);
etypeGLS = sqrt(diag(varChbGLS));
ybar = [ones(size(y))*mean(y)];
yChGLS = X*bGLS;
SSEGLS = sum((yChGLS-ybar).2 );
SST = sum((y − ybar).2 );
R2GLS = SSEGLS/SST
Stata
vwls
permet de faire une régression linéaire pondérée par la variance.
vwls variable dependante variables independantes [poids], options
Options: sd(nom variable) fournit une estimation de l’écart-type de la vari-
able dépendante.
ex:
vwls y x1 x2, sd(sigma2ch)
où sigma2ch est une estimation de l’écart-type de y.
43
Chapitre 8
Variables dépendantes
qualitatives
8.1 Probit/Logit
Un probit et un logit s’appuient en fait sur le même principe, ils ne diffèrent
que dans la forme de la fonction de répartition qu’ils utilisent pour calculer
l’effet sur la probabilité d’une variation de la variable latente. En effet,
lorsque la variable dépendante ne prend que des valeurs qualitatives (oui ou
non par exemple), l’effet d’une variable indépendante sur la probabilité de
dire oui doit être “traduit” par une fonction de répartition. Cette dernière
nous donne la probabilité associée à une valeur donnée de la valeur latente
exprimée par la combinaison linéaire des variables indépendantes.
Matlab
44
Pour le logit, on utilie plutôt la fonction de répartition de la loi logistique:
1
F (x) =
1 + e−x
Comme il n’existe pas de fonction prédéfinie dans Matlab pour la fonction
de répartition de la loi logistique, on doit en construire une:
function P = logvrais(b,X,y)
[T,K] = size(y);
sumy = sum(y);
summy = T - sum(y);
lXb = logitcdf(X*b’) L = y.*log(lXb) + (ones(T,1)-y).*log(ones(T,1)-
lXb);
P = -sum(L)
Voyons maintenant comment il nous est possible d’utiliser cette fonction pour
trouver les β̂ par maximum de vraisemblance:
options = []
bmin = fminsearch(@logvrais,[0,0,0,0,0,0,0,0,0,0,0],options,X,y)
Il ne nous reste maintenant qu’à calculer l’effet d’une variable sur la proba-
bilité. Ceci peut être fait en fixant toutes les autres variables à une valeur
(généralement leur moyenne échantillonalle), puis en estimant le modèle suc-
cessivement pour deux valeurs de la variable. La différence de la probabilité
de ces deux estimations linéaires de la variable dépendante (ŷ) donne la vari-
ation de probabilité.
45
ex: le modèle estimé est ŷ = β0 + β1 x1 + β2 x2 + β3 bin1 + µ où
bin1 est une variable binaire.
options = []
bmin = fminsearch(@logvrais,[0,0,0,0,0,0,0,0,0,0,0],options,X,y)
yhat1 = bmin(1) + bmin(2)*mean(x1) + bmin(3)*mean(x2) + bmin(4)
yhat2 = bmin(1) + bmin(2)*mean(x1) + bmin(3)*mean(x2)
diff = normcdf(yhat1)-normcdf(yhat2)
dF (X 0 β)
∂E[y|X]
= β = f (X 0 β)β
∂X d(X 0 β)
Par exemple, dans le cas d’un probit:
Pr(y = 1) = Φ(X 0 β)
∂ Pr(y = 1)
= φ(X 0 β)β
∂X
Stata
probit (prob)
Estime un modèle probit.
probit variable dépendante variable indépendante
Options: probit possède en grande partie les mêmes options que regress.
Note: Ici predict donne par défaut la probabilité. Pour avoir l’estimation
linéaire, il faut préciser xt dans les options de predict.
logit
Permet d’estimer un modèle logit.
logit variable dépendante variable indépendante
Options: logit possède en grande partie les mêmes options que regress.
46
8.2 Tobit
Un tobit est essentiellement un modèle dont les données sont tronquées.
Comme le probit, le tobit suit une loi normale.
Matlab
Soit un modèle tronqué à gauche à zéro (y ∗ étant une variable latente de y):
y∗ = X 0β + µ
y = max(0, y ∗ )
si y = 0 :
l1(β, σ) = log[1 − Φ(xi β/σ)
si y > 0 :
l2(β, σ) = log{(1/σ)φ[(yi − xi β)/σ]}
En matlab:
ybin = (y == 0)
lvrais = ybin.*log(1-normcdf(X’*b/sqrt(sigma2Ch))) + ...
(ones(T,1)-ybin).*log(1/sqrt(sigma2Ch)*normpdf((y-X’*b)/sqrt(sigma2Ch))
P = -sum(lvrais)
47
causer aucun problème...
Stata
tobit
Permet d’estimer un modèle tobit.
logit variable dépendante variable indépendante
Options: ll(#), ul(#): indiquent respectivement que les données sont
tronquées à gauche ou à droite. Une ou les deux de ces options doivent être
spécifiées. # indique le point de troncation. Si # n’est pas précisé, Stata
suppose qu’il s’agit respectivement de la valeur minimum et de la valeur
maximum.
Les autres options de tobit sont en grande partie commune avec regress.
ex:
tobit y x1 x2 x3 x4, ll(0)
48
Chapitre 9
Séries Chronologiques
Stata
tsset
Lorsqu’on travaille avec des séries chronologiques dans Stata, il est nécessaire
de l’en informer par la commande tsset.
tsset variable de temps
ex:
generate t = n
tsset = t
49
Matlab
ex:
• Opérateur Retard:
T = length(X)
x = X(3:T)
x lag1 = X(2:T-1)
x lag2 = X(1:T-2)
Note: il faut ajuster manuellement le nombre d’observations
considérées.
• Opérateur Avance:
T = length(X)
x = X(1:T-2)
x fwd1 = X(2:T-1)
x fwd2 = X(3:T)
Stata
l
L’opérateur l est l’opérateur Retard de stata. Il peut être utilisé avec toutes
les fonctions qui acceptent les séries temporelles une fois que la déclaration
de séries temporelles à été faite.
l#.variable
où variable est la variable sur laquelle l’opérateur doit agir et # est le nombre
de retards à appliquer. Si # est omis, un seul retard est appliqué (équivalent
à l1.variable).
tsset t
regress y x l.x l2.x
50
f
L’opérateur f est l’opérateur Avance de stata. Il peut être utilisé avec toutes
les fonctions qui acceptent les séries temporelles une fois que la déclaration
de séries temporelles à été faite.
f#.variable
où variable est la variable sur laquelle l’opérateur doit agir et # est le nom-
bre d’avance à appliquer. Si # est omis, une seule avance est appliquée
(équivalent à f1.variable).
tsset t
regress y x f.x f2.x
Choisissons n égal à 3.
Matlab
T = length(y)
[b,u,etype,R2] = MCO(X,y)
U = [ones(T-3,1),u(3:T-1),u(2:T-2);u(1:T-3)];
[bu,e,etypeu,R2u] = MCO(U,u(4:T))
Test F:
F = (R2u/length(bu’))/((1-R2u)/(length(u2)-length(bu’)-1))
Test LM:
LM = (T-3)*R2u
51
Stata
reg y x1 x2
predict u, r
reg u l.u l2.u l3.u
Il suffit alors de regarder la statistique F donnée par Stata.
• Changement structurel
• Tendance déterministe
• Racine unitaire
52
Changement structurel
Les changement structurels peuvent être détectés à l’aide du Test de Chow
(voir section 4.2). Malheureusement, rien ne peut généralement être fait pour
stationnariser une série dans le cas d’un changement structurel.
Tendance déterministe
Afin de régler le problème de la présence d’une tendance temporelle, il suffit
de la modéliser la tendance. Il faut faire attention de bien choisir la tendance
la mieux adaptée à nos données: linéaire, quadratique, logarithmique, etc.
Stata
t= n
t2 = t^2
tsset t
regress y t t2
Racines Unitaires
On fait face à un problème de racine unitaire lorsque ρ = 1 dans le modèle
suivant:
yt = α + ρyt−1 + et
Afin de régler le problème de racine unitaire, il faut différencier la série, i.e.
travailler sur ∆yt = yt − yt−1 plutôt que yt . Le modèle devient donc:
∆yt = α + θyt−1 + t
Matlab
53
T = length(y);
x = y(2:T) - y(1:T-1)
...
Stata
Tester pour la présence d’une racine unitaire se fait par un test t où H0
est θ = 0. Malheureusement, sous l’hypothèse nulle, la statistique t ne suit
pas la loi asymptotique habituelle. Il faut plutôt utiliser la loi de Dickey-
Fuller. S’il y a corrélation des termes d’erreur, il faut plutôt utiliser une loi
de Dickey-Fuller augmentée.
Stata
dfuller
Effectue un test de Dickey-Fuller augmenté sur la variable spécifiée.
dfuller nom de variable, options
Options:
pperron
Possède exactement la même structure et les mêmes options que dfuller,
mais effectue un test de Phillips-Perron plutôt qu’un test de Dickey-Fuller
augmenté.
54
arima
Permet d’estimer un modèle AR, MA, ARMA ou ARIMA par maximum de
vraisemblance.
arima variable dépendante variable indépendante, arima(p,d,q)
où p est le nombre de AR, d le nombre de différenciation et q le nombre de
MA.
Il n’est pas nécessaire de préciser de variables indépendates.
ex: AR(1)
arima t, arima(1,0,0)
ex: MA(1)
arima t, arima(0,0,1)
ex: ARIMA(1,1,2)
arima t, arima(1,1,2)
corrgram
Construit une table des autocorrélations et des autocorrélations partielles.
Permet de tracer l’autocorrélogramme et l’autocorrélogramme partiel.
corrgram nom de variable, option
Options: lags(#): spécifie le nombre de retards à calculer.
ac
Produit un autocorrélogramme.
ac nom de variable, options
Options:
55
• Toutes les options standards d’un graphique sont également
admissible.
pac
Produit un autocorrélogramme partiel. Même structure et mêmes
options que ac.
R-carré ajusté
Le R-carré ajusté (R̄2 ) est donné par la formule suivante:
n−1
R̄2 = 1 − (1 − R2 )
n−K
e0 e Klogn
BIC(K) = log( )+
n n
À la fois dans Matlab et Stata, ces critères doivent être construits manuelle-
ment.
56
Chapitre 10
Matlab
57
function [b,u,etype,R2] = MCO(X,y)
Stata
Matlab
58
a82 = (annee == 1982)
a83 = (annee == 1983)
g2 = (groupe == 2)
g3 = (groupe == 3)
g4 = (groupe == 4)
g5 = (groupe == 5)
X = [X,a81,a82,a83,g2,g3,g4,g5]
function [b,u,etype,R2] = MCO(X,y)
Stata
tsset
Cette fonction déjà vue dans le chapitre 9 permet également de déclarer nos
données comme un panel de séries temporelles. Il suffit pour ça d’ajouter la
variable de panel (de groupe) avant la variable de temps.
tsset variable de panel variable de temps
ex:
gt= n
tsset groupe t
59
Une fois tsset déclaré pour des données panel, il est possible de travailler
avec la famille de fonctions xt de Stata. Il existe une telle fonction pour cha-
cun des types de régression: xtreg, xtlogit, xprobit, xttobit, xtgls,
etc. Nous ne couvrirons ici que sommairement xtreg et nous vous référons
à l’aide de Stata pour plus de détails sur cette famille de fonctions.
xtreg
Permet de faire des régressions sur des données en Panel.
Effet fixe: xtreg variable dépendante variable indépendante, fe
Effet aléatoire estimé par MCG: xtreg variable dépendante variable indépendante,
re
Effet aléatoire estimé par EMV: xtreg variable dépendante variable indépendante,
mle
ex:
tsset groupe annee
xtreg y x1 x2, fe
60
Chapitre 11
61
Chapitre 12
62
Annexe A
Tableaux Récapitulatifs
63
Transformation de Variables
cumsum Somme cumulative des éléments cumsum(z)
d’un vecteur.
exp Exponentielle d’une matrice exp(z)
élément par élément.
length Nombre de colonnes d’un vecteur. length(z)
log Logarithme naturel d’une matrice log(z)
élément par élément.
max Renvoie l’éléments du vecteur max(z)
ayant la valeur la plus élevée.
mean Moyenne des éléments d’un mean(z)
vecteur.
min Renvoie l’éléments du vecteur min(z)
ayant la valeur la moins élevée.
size renvoie un vecteur 1 × 2 con- size(z)
tenant la taille d’une matrice
(rangées,colonnes).
std Écart-type des éléments d’un std(z)
vecteur.
sqrt Racine carrée d’une matrice sqrt(z)
élément par élément.
sum Somme des éléments du vecteur. sum(z)
var Variance des éléments d’un var(z)
vecteur.
64
Fonctions Matricielles
diag Extraction de la diagonale d’une diag(A)
matrice. / Création d’une ma-
trice diagonale.
eye Crée une matrice identité. I = eye(#)
inv Inverse d’une matrice. Inv(A)
ones Créer une matrice dont chaque O = ones(#, #)
élément égale à un.
rand Créer une matrice dont chaque U = rand(#, #)
élément est un aléa U(0,1)
randn Créer une matrice dont chaque N = randn(#, #)
élément est un aléa N(0,1)
zeros Créer une matrice dont chaque Z = zeros(#, #)
élément égale à zéro.
Autres Fonctions
diary Permet de sauvegarder une copie diary(‘nom de f ichier’)
de sa session dans le fichier programme diary(‘off’)
spécifié.
fminsearch Minimise une fonction. [x, f val] =
fminsearch(f onction, options, variables)
hold Permet de superposer plusieurs hold on graphiques hold off
graphiques.
normcdf Donne la valeur de la fonction de normcdf(X)
répartition de la loi normale.
normpsf Donne la valeur de la fonction de normpdf(X)
probabilité de la loi normale.
plot Trace un graphique en nuage de plot(x, y,‘couleur style marqueur’)
points.
wk1write Sauvegarde une matrice dans un wk1write(‘nom de f ichier’,M )
fichier de tableur.
65
A.2 Fonctions de Stata
Fonction Abréviation Description Forme
Importation de Données
infile inf Importe les données d’un infile nom des variables
fichier. using nomdef ichier
insheet Importe les données d’un insheet using
fichier (séparateurs: tabula- nom de f ichier
tions ou virgules).
Transformation de Variables
generate g Crée une nouvelle variable. generate
nouvelle variable =
expression
replace Remplace une variable exis- replace variable existante
tante. = expression
abs Valeur absolue. abs(x)
exp Exponentiel. exp(x)
log Logarithme naturel. log(x)
max Renvoie l’argument max(x1 , ..., xn )
possédant la valeur la
plus élevée.
min Renvoie l’argument min(x1 , ..., xn )
possédant la valeur la
moins élevée.
mod Modulo de x par rapport à mod(x,y)
y.
sqrt Racine carrée. sqrt(x)
sum Somme de tous les éléments sum(x)
de x.
uniform Donne une valeur aléatoire uniform()
entre 0 et 1 (ditribution uni-
forme sur [0,1)).
66
Fonctions Matricielles
matrix mat Crée ou modifie une ma- matrix nom de la matrice
trice. = expression
matrix get Permet d’obtenir copie matrix variable =
d’une matrice système. get(matrice système)
mkmat Transforme des variables en mkmat
vecteurs/matrice. nom(s) de variable(s),
matrix
[(nomdelanouvellematrice)]
svmat Transforme les colonnes svmat matrice,
d’une matrice en variables. [names(nom col1, nom col2, . . . )]
colsof nombre de colonnes d’une colsof(A)
matrice.
det Déterminant d’une matrice. det(A)
diag Matrice diagonale n × n, diag(V )
avec pour diagonale les
éléments de V .
el Élément aij d’une matrice. el(A,i,j)
I Matrice identité n × n. I(n):
inv Inverse d’une matrice inv(A)
carrée.
rowsof Nombre de rangées d’une rowsof(A)
matrice.
vecdiag Extrait la diagonale d’une vecdiag(A)
matrice carrée sous forme de
vecteur.
Fonctions Diverses
graph gr Trace un graphique. graph nomdesvariables,
[typedegraphique,
autresoptions]
list Affiche à l’écran les vari- list
ables spécifiées. [nom(s) de variable(s)]
log Enregistre la session. log using nom de f ichier
more Active ou désactive more on/off
l’affichage de --more--.
set matsize set mat Fixe la taille maximale des set matsize #
matrices.
67
Fonctions Diverses (suite)
tsset Déclaration de séries tem- tsset variable de temps
porelles/Données pannel.
l Opérateur retard. l#.variable
f Opérateur avance. f#.variable
Fonctions Économétriques
regress reg Effectue une régression regress vard ep [vars inds]
linéaire par MCO.
predict Calcule les valeurs prédites, predict nouvelle variable,
les résidus, etc. options
test t Effectue des tests test [expression1 =
d’hypothèse. expression2]
ivreg Effectue une régression par ivreg var dep vars inds
DMCO. (var dep = V I), options
hausman Effectue le test de hausman / hausman, save
spécification d’Hausman.
vwls Effectue une régression vwls vard ep vars inds
pondérée par la variance [poids], options
(FGLS).
probit prob Estime un modèle probit. probit var dep vars inds
logit Estime un modèle logit. logit var dep vars inds
tobit Estime un modèle tobit. tobit var dep vars inds,
[ll(#)] [ul(#)]
dfuller Effectue le test de Dickey- dfuller nom de variable,
Fuller augmenté. options
pperron Effectue le test de Phillips- pperron nom de variable,
Perron. options
corrgram Produit une table des au- corrgram
tocorrélations et des auto- nom de variable, option
corrélations partielles.
xtreg Effectue une régression sur xtreg var dep vars inds,
des données panel. [fe] [re] [mle]
68
A.3 Opérateurs
Description Forme
Opérateurs Mathématiques
Addition +
Soustraction -
Multiplication *
Division /
Puissance ^
Opérateurs Logiques
ET &
OU |
Non (¬) ~
Opérateurs de Comparaison
Égal ==
Différent ~=
Plus grand >
Plus petit <
Plus grand ou égal >=
Plus petit ou égal <=
69