Guide d’´econom´etrie appliqu´ee
Simon Leblond
1Universit´ e de Montr´ eal simon.leblond@umontreal.ca
9 septembre 2003
1Merci `a William McCausland, Fran¸cois Vaillancourt et Benoit Perron pour leurs commentaires utiles dans l’´elaboration de ce document. Je demeure seule responsable de toutes les erreurs.
Table des Mati` eres
1 Commandes g´en´erales importantes 5
1.1 Importation des donn´ees . . . 5
1.2 Manipulation des donn´ees . . . 8
1.2.1 Op´erateurs math´ematiques . . . 9
1.2.2 Op´erateurs logiques et de comparaison . . . 9
1.2.3 Fonctions et Op´erateurs matriciels . . . 9
1.3 Autres transformations des variables . . . 13
1.4 Divers . . . 14
1.5 Exemples et r´esultats pour le Chapitre 1 . . . 16
2 Visualisation des donn´ees 18 2.1 Impression/Exportation des donn´ees . . . 18
2.1.1 Impression `a l’´ecran . . . 18
2.1.2 Exportation . . . 18
2.1.3 Impression . . . 19
2.2 Exemples et r´esultats pour le Chapitre 2 . . . 19
3 Graphiques 21 3.1 Exemples et r´esultats pour le Chapitre 3 . . . 24
4 R´egressions Simples 26 4.0.1 Estimateurs de Variance Robustes . . . 28
4.1 Tests d’h´et´erosc´edasticit´e . . . 30
4.2 Test de Changement structurel (Test de Chow) . . . 32
5 Variables instrumentales et Doubles Moindres Carr´es 34 5.1 Estimateur Variables Instrumentales . . . 34
5.2 DMCO . . . 36
5.3 Tests d’endog´en´eit´e . . . 37
6 Estimateur du Maximum de Vraissemblance (EMV) 38 7 Moindres Carr´es G´en´eralis´es 41 8 Variables d´ependantes qualitatives 43 8.1 Probit/Logit . . . 43
8.2 Tobit . . . 46
9 S´eries Chronologiques 48 9.1 Op´eration sur les variables dans le cadre de s´eries chronologiques 48 9.2 Op´erateurs de s´eries temporelles . . . 48
9.3 Tests d’autocorr´elation . . . 50
9.4 M´ethode de Box-Jenkins . . . 51
9.4.1 Stationnarit´e des donn´ees . . . 51
9.4.2 Mod´elisation des cycles: Mod`eles AR, MA, ARMA, ARIMA . . . 53
9.4.3 S´election de Mod`ele . . . 55
10 Donn´ees longitudinales (Panel) 56 10.1 Variables Binaires . . . 56
10.2 Effets Fixes et Effets Al´eatoires . . . 57
11 Interaction avec les traitements de texte et les tableurs 60 12 O`u trouver ses donn´ees et comment les extraires 61 A Tableaux R´ecapitulatifs 62 A.1 Fonctions de Matlab . . . 62
A.2 Fonctions de Stata . . . 65
A.3 Op´erateurs . . . 68
Introduction
Ce manuel ne vient pas se substituer `a vos notes de cours, mais plutˆot les compl´eter en vous donnant un guide pour l’utilisation des logiciels ´econom´e- triques. `A ce titre, bien que vous trouverez quelques fois des explications plus importantes sur la nature d’un probl`eme ´econom´etrique, la majorit´e du temps on supposera que vous poss´edez d´ej`a les connaissances li´ees `a la section consult´ee.
Chaque section pr´esente rapidement le but de l’op´eration qui y est trait´e.
Les commandes appropri´ees sont ensuite pr´esent´ees, 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´egr´ee peu `a peu pendant l’ann´ee qui vient. Comme il s’agit d’un manuel encore en d´eveloppement, des changements lui seront constamment apport´es en cours de session et la ver- sion distribu´ee sera toujours la plus r´ecente. Tout commentaire, suggestion ou correction sera bienvenu et appr´eci´e.
Prenez note que ce texte d´ecrit seulement certaines fonctions ainsi que leurs options les plus souvent utilis´ees pour le genre de recherches effectu´ees au bac et `a la maˆıtrise en ´economie, il n’est donc pas du tout exhaustif. Un conseil: apprenez `a utiliser l’aide de Matlab et de Stata. Il s’agit l`a d’outils fort utiles pour d´ecouvrir de nouvelles fonctions ou pour connaˆıtre l’ensemble des options disponible pour les fonctions d´ecrites dans ce guide.
Les fonctions sont pr´esent´ees dans le format suivant:
Pour Matlab:
1. Le nom de la fonction;
2. Le format d’entr´ee;
3. Sa description;
4. Ses options (s’il y en a);
5. Un exemple court.
Pour Stata:
1. Le nom de la fonction et, entre paranth`eses, le nom abrg´eg´e de la fonction;
2. Sa description;
3. Le format d’entr´ee;
4. Ses options (s’il y en a);
5. Un exemple court.
La majorit´e des chapitres se terminent par une section donnant un exemple plus long et plus concret d’applications des informations pr´esent´es dans le chapitre.
La nomenclature suivante est suivie dans ce guide:
• Le texte en machine `a ´ecrire d´esigne les fonctions dans leur forme g´en´erique.
• Le texte enitaliqued´esigne les variables et autres chaˆınes de caract`eres qui doivent ˆetre remplac´ees.
• Le texte ensans serifd´esigne le texte tel qu’il serait entr´e `a l’ordinateur.
Les chapitres 1 `a 3 font le tour des commandes de base dans Stata et Matlab, ainsi que leur format de saisie. A la suite de ces chapitres vous` devriez ˆetre en mesure d’importer, de manipuler, puis d’exporter vos donn´ees et de tracer des graphiques.
Les chapitres 4 `a 10 abordent quant `a eux chacun un sujet sp´ecifique de l’´econom´etrie. Ils prennent donc une approche quelque peu diff´erente puisqu’ils introduisent peu de nouvelles fonctions, se concentrant plutˆot sur la d´emarche `a adopter pour effectuer l’op´eration en question.
Finalement, les deux derniers chapitres (11 et 12) (`a venir) sortent quelque peu du cadre de ce guide en abordant respectivement la manipulation des donn´ees par Word et Excel et la recherche de donn´ees. Ces chapitres ont pour but de vous aider dans le cadre plus g´en´eral de la production d’un travail de recherche.
Chapitre 1
Commandes g´ en´ erales importantes
1.1 Importation des donn´ ees
Matlab load
load nom de f ichier1
load fonctionne seulement avec les donn´ees num´eriques, mais a l’avantage d’ˆetre la commande d’importation de donn´ees la plus simple de Matlab. load importe le fichier sp´ecifi´e dans une matrice du mˆeme nom. Les donn´ees doivent ˆetre s´epar´ees par des espaces ou des tabulations.
ex: importe les donn´ees du fichier ‘monfichier.dat’ dans la ma- trice ‘monfichier’
load monfichier.dat
Note: loaddevrait ˆetre suffisant pour les besoin du cours ECN 3949.
xlsread
[A, B] = xlsread(nom de f ichier)
1Puisque le dossier de travail est d´ej`a sp´ecifi´e dans Matlab, il est inutile de donner le chemin d’acc`es avec le nom des fichiers. Les extensions doivent par ailleurs ˆetre pr´esentes.
xlsreadlit la premi`ere feuille d’un tableur Microsoft Excel (‘.xls’) et renvoit toutes les donn´ees num´eriques dans la matrice A et toutes les donn´ees texte dans la matrice B de mˆeme taille. Les ´el´ement de texte sont remplac´es par
‘NaN’ dans la matrice A et les ´el´ements num´eriques sont laiss´es vides dans la matrice B.
Sixlsreadrencontre des donn´ees texte dans la premi`ere rang´ee et la premi`ere colonne, la matrice B ne contiendra que ces valeurs.
ex: importe les donn´ees du fichier ‘tableur.xls’ dans les matrices
‘num’
[num,txt]= xlsread(‘tableur.xls’) textread
[A, B, C . . .] = textread(‘nom de f ichier’, ‘f ormat’)
textreadpermet d’importer des donn´ees d’un fichier formatt´enom de f ichier vers les variables sp´ecifi´eesA, B, C, etc. f ormatest une chaˆıne de caract`eres et sp´ecifie le format des variables `a importer, il doit y avoir un format par variable. N’importe quel s´eparateur de donn´ees peut-ˆetre utilis´e par le fichier.
Les formats possibles sont:
• %u: donn´ees num´eriques, entier positif
• %f: donn´ees num´eriques non-enti´eres
• %s: texte
• %q: texte, si entre guillemets (‘ “xyz” ’), renvoie seulement le texte (‘xyz’)
• ‘lettres’: ignore le texte ´ecrit; par exemple si on a ‘etage6’, “ ‘f ormat0
= ‘etage%u’ renverait ‘6’ ”
Il est sugg´er´e de se limiter `a%f et %q qui sont amplements suffisants dans le cadre du cours.
Options: headerlines: sp´ecifie un nombre de lignes `a sauter au d´ebut du fichier.
[A, B, C, . . .] = textread(‘f ichier’,‘f ormat0’,‘headerlines’, #) ex: fmt = ‘%f%f%f%q’
[y,var1,var2,var3] = textread(‘ECN3949TP1.txt’,fmt,headerlines,2)
dlmread
M = (‘nom de f ichier’, ‘s´eparateur de donn´ees’)
Moins flexible que textread, mais plus queload,dlmreadfonctionne seule- ment avec les donn´ees num´eriques, mais a l’avantage d’ˆetre plus simple.
dlmread importe le fichier sp´ecifi´e dans la matrice M.
‘s´eparateur de donn´ees’sp´ecifie le type de s´eparateur dans le fichier, il peut prendre les valeurs suivantes:
• ‘,’: virgule, valeur par d´efaut
• ‘;’: point-vigule
• ‘\t’: tabulation
• ‘ ’: espace
ex: M = (‘ECN3949TP1.txt’,‘\t’)
Stata insheet
Rapide et efficace, insheetpermet d’importer les donn´ees d’un fichier texte poss´edantune observation par ligneet dont les donn´ees sont s´epar´ees par des tabulations ou desvirgules.
si le nom des donn´ees sont sur la premi`ere ligne:
insheet using nomdef ichier2
si le fichier ne contient pas le nom des donn´ees:
insheet [nomdesvariables]3 using nomdef ichier
options4: clear, sp´ecifie que les donn´ees en m´emoires peuvent ˆetre rem- plac´ees par les nouvelles donn´ees import´ees.
2A moins de pr´` ecisions contraires,nomdef ichierindique le nom complet, donc avec le chemin d’acc`es et l’extension (a:\test.txtpar exemple).
3La nomenclature de l’aide de Stata est conserv´ee tout au long de ce guide, ainsi les arguments entre “[ ]” d´esignent des arguments facultatifs.
4Les options dans stata sont s´epar´es du reste de la commande par une virgule. Par exemple, dans le cas pr´esent: insheet using”c:\test.txt”, clear
infile (inf)5
Permet plus de flexibilit´e que insheet en permettant que les observations soient sur plusieurs lignes ou que les donn´ees soient s´epar´ees 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`u#d´esigne le nombre de ligne `a sauter pour continuer la lecture de l’observation.
options: clear, voir insheet
ex: observation sur la premi`ere, la deuxi`eme et la quatri`eme ligne. . .
infile var1 var2 skip var3 var4 skip(1) var5 var6 using “a:\test.raw”
1.2 Manipulation des donn´ ees
Matlab
Matlab ´etant un logiciel de manipulations de matrices, il n’y a pas de distinction faite entre une matrice et une variable comme c’est le cas avec Stata. Les variables sont automatiquement trait´e comme des vecteurs dans le cas de Matlab.
Toutes les manipulations de donn´ees sont donc trait´ees dans la section 1.2.3:
Fonctions et op´erateurs matriciels.
Stata
generate (g)
Probablement la commande la plus utile (et utilis´ee) dans Stata, elle permet de cr´eer des nouvelles variables.
generate nouvellevariable = expression
ex: g x2 = x^2
5Le nom entre paranth`eses qui suit le nom de la fonction d´esigne l’abr´eviation que l’on peut utiliser dans le code.
replace
Mˆeme id´ee que generate, mais pour une variable existante.
replace variable existante =expression
ex: replace x2 = x/2
1.2.1 Op´ erateurs math´ ematiques
Ce sont les mˆemes dans Matlab et Stata:
Addition: + Soustraction: - Multiplication: * Division: / Puissance: ^
1.2.2 Op´ erateurs logiques et de comparaison
Ce sont les mˆemes dans Matlab et Stata:
ET: &
OU: | Non (¬) : ~ Egal´ : ==
Dif ferent´ :~= P lusgrand:>
P luspetit :<
P lusgrandou´egal:>=
P luspetitou´egal:<=
1.2.3 Fonctions et Op´ erateurs matriciels
Matlab
Cr´eation de matrices
Les matrices et les vecteurs sont cr´ees dans Matlab en inscrivant directement le nom de la matrice et les op´erations qu’on d´esire effectuer s´epar´ees par le signe ´egal (‘=’).
ex:
A = [1,2,3,4;5,6,7,8]; o`u les virgules s´eparent les colonnes et les points-virgules s´eparent les rang´ees. (matrice 2×4)
B = A*2 C = A^2
Fonctions matricielles
• Cr´eer une matrice identit´e 2×2: I = eye(2)
• Cr´eer une matrice 4x5 dont chaque ´el´ement ´egale `a z´ero: Z = zeros(4,5)
• Cr´eer un vecteur 1x6 dont chaque ´el´ement ´egale `a un: O = ones(1,6)
• Cr´eer une matrice 2x2 dont chaque ´el´ement est un al´ea U(0,1): U = rand(2), ´equivalent `a U = rand(2,2)
• Cr´eer une matrice 3x8 dont chaque ´el´ement est un al´ea N(0,1): N = randn(3,8)
Op´eration sur les matrices
• Extraction d’une sous-matrice:
– Extraire la deuxieme colonne de A: A(:,2) – Extraire la deuxieme rang´ee de A: A(2,:) – Extraire l’´el´ement A12: A(1,2)
– Extraire le vecteur (A12, A13, A14): A(1,2:4)
• Empilage de matrices
– Empiler horizontalement (mettre les rang´ees une sur l’autre): [A,A]
(4×4)
– Empiler verticalement (mettre les colonnes une `a cˆot´e de l’autre):
[A;A] (2×8)
• Op´eration ´el´ement par ´el´ement: op´erateur math´ematique pr´ec´ed´e d’un point (‘.’)
– Multiplication de A par B ´el´ement par ´el´ement: A.*B
• Inverse: Inv(A)
• Transpos´ee: A0
• Matrice diagonale n×n, avec pour diagonale les ´el´ements de V, o`u V est un vecteur n×1 ou 1×n: diag(V)
• Extraire la diagonale d’une matrice carr´ee A sous forme de vecteur:
diag(A)
Autres trucs utiles
• Cr´eation d’une variable binaire: g = (condition logique);
ex: d = (y >=0)
• Cr´eation d’un vecteur dont les ´el´ements sont une suite: v = d´ebut:incr´ement:f in;
ex: x = 1.0;0.1;2.0 produit le vecteur [1.0,1.1,1.2, . . . ,2.0];
notez que l’argumentincrement´ est facultatif, ainsix = 1:10 produitle vecteur [1,2, . . . ,10].
Stata
Fonctions matricielles matrix (mat)
L’´equivalent de generate pour les matrices, permet de cr´eer des nouvelles matrices ou de modifier des matrices existantes.
matrix nom de la matrice = expression
ex:
Cr´eation 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`u les vir- gules s´eparent les colonnes et les \ s´eparent les rang´ees (matrice 2×3).
Extraction d’une sous-matrice: mat A = B(1..4,2...); se lit rang´ees 1 `a 4, colonne 2 `a N.
Remplacement d’un ´el´ement: mat A(1,1) = 3; remplace l’´el´ement a11 par 3.
mkmat
Permet de transformer des variables existantes en vecteurs du mˆeme 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 matrice)]
ex: mkmat x1 x2 x3 x4, mat(X) svmat
Inverse de mkmat, transforme les colonnes d’une matrice en vecteurs.
svmatmatrice,[names(nom col1, nom col2, . . .)];namespeut aussi s’´ecrire n
ex: svmat X, n(x1,x2,x3,x4) matrix get
Sert `a obtenir une copie d’une matrice syst`eme6 Quelques matrices syst`emes:
• b: coefficients apr`es une estimation
• VCE: matrice de variance-covariance apr`es une estimation matrix variable = get(matrice syst`eme)
6Les variables et les matrices syst`emes sont stock´es par Stata dans des noms pr´ed´efinis apr`es une op´eration donn´ee.
ex: matrix beta = get( b) det(A): d´eterminant de A
rowsof(A): nombre de rang´ees de A colsof(A): nombre de colonnes de A el(A,i,j): ´el´ement aij deA
I(n): matrice identit´en×n
inv(A): inverse de la matrice carr´eeA
diag(V): matrice diagonale n×n, avec pour diagonale les ´el´ements de V, o`u V est un vecteur n×1 ou 1×n
vecdiag(A): extrait la diagonale d’une matrice carr´ee A sous forme de vecteur
Op´erateurs matriciel
Soit AetB, deux matrices carr´ees d´efinies positivesn×n etC, une matrice d´efinie positive t×n:
Transpos´ee: A0 (n×n) Somme: A + B (n×n) Diff´erence: A - B (n×n) Produit vectoriel: B*C0 (n×n) Division par un scalaire: A/k (n×n)
Empiler les rang´ees horizontalement: A ((n+t)×n) Empiler les colonnes verticalement: A,B (n×2n)
1.3 Autres transformations des variables
Matlab
Soit un vecteur z 1×n:
exp(z): exponentielle de z ´el´ement par ´el´ement log(z): logarithme naturel de z ´el´ement par ´el´ement sqrt(z): racine carr´ee de z ´el´ement par ´el´ement mean(z): moyenne des ´el´ements du vecteur z std(z): ´ecart-type des ´el´ements du vecteur z var(z): variance des ´el´ements du vecteur z
sum(z): somme des ´el´ements du vecteur z
cumsum(z): somme cumulative des ´el´ements du vecteurz(retourne un vecteur 1×n)
min(z): renvoie l’´el´ements du vecteur z ayant la valeur la moins ´elev´ee max(z): renvoie l’´el´ements du vecteur z ayant la valeur la plus ´elev´ee length(z): nombre de colonnes du vecteur z
size(z): renvoie un vecteur 1×2 contenant la taille de la matrice (rang´ees,colonnes) Stata
log(x): logarithme naturel de x, ´equivalent `a ln(x) exp(x): exponentiel de x, i.e. ex
mod(x,y): partie enti`ere de x par rapport `ay, par exemple: mod(5,26) = 5 abs(x): valeur absolue de x
sqrt(x): racine carr´ee de x, ´equivalent `ax^1/2
max(x1, ..., xn): renvoie l’argument poss´edant la valeur la plus ´elev´ee min(x1, ..., xn): renvoie l’argument poss´edant la valeur la moins ´elev´ee sum(x): somme de tous les ´el´ements de x
uniform(): donne une valeur al´eatoire entre 0 et 1 (ditribution uniforme sur [0,1))
1.4 Divers
Matlab Commentaires
Il est possible d’ins´erer des commentaires dans son programme en prenant soin de d´ebuter la ligne de commentaire par le symbole ‘%’.
ex: % Ceci est un commentaire.
Suppression de la sortie
Pour que Matlab effectue une op´eration sans que l’on voit le r´esultat, il suffit de terminer la ligne de commande par un point-virgule (‘;’).
ex: B = [8,7,6,5;4,3,2,1]; N’affichera pas la matrice B.
Commande sur plusieurs lignes
Il est possible d’´ecrire une commande sur plusieurs lignes. Les ‘. . . ’ indiquent
`
a Matlab que la commande se poursuit `a 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´erer des commentaires dans son programme en prenant soin de d´ebuter la ligne de commentaire par le symbole ‘*’.
ex: * Ceci est un commentaire.
more
Avez-vous d´ej`a rencontr´e le message--more--qui fait une pause dans l’affichage de vos donn´ees? Si ¸ca vous ´enerve, vous pouvez enlever ce message en sp´ecifiant set more off au d´ebut de votre programme.
set matsize (set mat)
La taille maximale des matrices est fix´ee par d´efaut `a 40×40 dans Stata.
Pour utiliser des matrices plus grandes vous devez utiliser la fonction set matsize.
set matsize #; o`u # est un nombre entre 10 et 800 qui indique la taille maximale des matrices.
if
La majorit´e des fonctions peuvent ˆetre suivies de la commandeifqui permet de sp´ecifier une condition pour que l’expression soit execut´ee. if est plac´e apr`es la fonction, mais avant les options
Cette option ne sera pas mentionn´ee pour chaque fonction puisqu’elle est pr´esente tr`es souvent.
commande if expression
ex: replace x=y if x < y
in
La majorit´e des fonctions peuvent ˆetre suivies de la commandeinqui permet de sp´ecifier l’´etendue des donn´ees affect´ees par la fonction. inest plac´e apr`es la fonction, mais avant les options.
Cette option ne sera pas mentionn´ee pour chaque fonction puisqu’elle est pr´esente tr`es souvent.
commande in etendue; o`´ u ´etendue peut prendre la forme # ou #/#, et
# peut-ˆetre un nombre positif, l (derni`ere observation), f (premi`ere obser- vation) ou un nombre n´egatif (distance par rapport `a la derni`ere observation).
ex:
regress y x1 x2 in f /60; ´equivalent `a regress y x1 x2 in 1/60: les 60 premi`eres observations.
list y in -10/l: les 10 derni`eres observations.
1.5 Exemples et r´ esultats pour le Chapitre 1
Lecture des donn´ees `a partir du fichier Donnees.dat et manipulation des variables dans le but de faire une r´egression. Le fichierDonnees.datcontient 5 variables, comptant chacune 100 observations.
Matlab
load Donnees.dat;
% Attribution de noms `a certaines des variables.
px = Donnees(:,1);
qt = Donnees(:,2);
% Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
%ˆetre inclu dans l’ensemble [0,25;0,5]et la 5e variable doit ˆetre ´egale
% `a 1 pour que la variable binaire ´egale 1.
bin = (0.25 = Donnees(:,3)/Donnees(:,4) = 0.5 & Donnees(:,5) == 1);
% Cr´eation d’une variable indice.
no = [1:100]
Stata
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
* ˆetre inclu dans l’ensemble [0,25;0,5] et la 5e variable doit ˆetre ´egale
* `a 1 pour que la variable binaire ´egale 1.
g bin = (0.25 = var3/var4 = 0.5 var5==1)
* Cr´eation d’une variable indice.
g no = n
Chapitre 2
Visualisation des donn´ ees
2.1 Impression/Exportation des donn´ ees
2.1.1 Impression ` a l’´ ecran
Matlab
Matlab affiche par d´efaut toutes les op´erations effectu´ees `a l’´ecran. Pour
´
eliminer la sortie, se r´ef´erer `a la section 1.4.
Stata list
Affiche `a l’´ecran la valeur des variables sp´ecif´ees.
list [nom(s) de variable(s)]; si aucun nom de variable est sp´ecifi´e, Stata affiche toutes les variables.
2.1.2 Exportation
Matlab diary
Permet de sauvegarder une copie de sa session dans le fichier sp´ecifi´e. Doit ˆ
etre suivi de diary(‘off’) `a la fin du programme.
diary(‘nom de f ichier’) programme
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 ˆetre sp´ecifi´ee.
Stata log using
Permet de sauvegarder une copie de sa session dans le fichier sp´ecifi´e. Doit ˆ
etre suivi de log off `a la fin du programme.
log using nom de f ichier programme
log off
Options: replace, indique `a Stata de remplacer le fichier existant.
2.1.3 Impression
Matlab
La fa¸con la plus pratique d’imprimer ses r´esultats est d’utiliser la fonction diary, puis de traiter le fichier de sortie avec son traitement de texte pr´ef´er´e.
Stata
La fa¸con la plus pratique d’imprimer ses r´esultats est d’utiliser la fonction log, puis de traiter le fichier “.log” avec son traitement de texte pr´ef´er´e.
2.2 Exemples et r´ esultats pour le Chapitre 2
Reprenons l’exemple du chapitre 1, en incluant cette fois les fonctions du chapitre 2.
Matlab
diary(’ExChap2.out’);
load Donnees.dat;
% Attribution de noms `a certaines des variables.
px = Donnees(:,1);
qt = Donnees(:,2);
% Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
%ˆetre inclu dans l’ensemble [0,25;0,5] et la 5e variable doit ˆetre ´egale
% `a 1 pour que la variable binaire ´egale 1.
bin = (0.25 = Donnees(:,3)/Donnees(:,4) = 0.5 & Donnees(:,5) == 1);
# Cr´eation d’une variable indice.
no = [1:100]
diary(’off’) Stata
log using ”c:\mes documents\ExChap2.log”, replace set more off
infile px qt var3 var4 var5 ”c:documents.dat”, clear
* Construction d’une variable binaire: le rapport de la 3e sur la 4e variable doit
* ˆetre inclu dans l’ensemble [0,25;0,5] et la 5e variable doit ˆetre ´egale
* `a 1 pour que la variable binaire ´egale 1.
g bin = (0.25 = var3/var4 = 0.5 & var5 ==1) list px qt bin
* Cr´eation d’une variable indice.
g no = n log close
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`u ‘couleur style marqueur’ est une chaˆıne de caract`ere optionnelle con- tenant de un `a quatre caract`eres et qui d´efinit la couleur de la s´erie, le style de la ligne et le type de marqueur des points.
Les possibilit´es sont:
• Couleurs:
– ‘c’: cyan – ‘m’: magenta – ‘y’: jaune – ‘r’: rouge – ‘g’: vert – ‘b’: bleu – ‘w’: blanc – ‘k’: noir
• Styles:
– ‘-’: solide – ‘--’: tiret (???) – ‘:’: pointill´e – ‘-.’: tiret-point – ‘none’: pas de ligne
• Marqueurs:
– ‘+’, ‘o’, ‘*’, ‘x’: marqueur du mˆeme signe – ‘s’: carr´e (plein)
– ‘d’: losange (plein)
– ‘^’,‘v’,‘<’: triangle vers le haut, le bas ou la gauche respective- ment (plein)
– ‘p’: pentagone (plein) – ‘h’: hexagone (plein)
Il est possible de donner une seule variable, Matlab fait alors un graphique de cette variable par rapport `a l’indice des observations.
ex:
plot(y): courbe de y par rapport `a l’indice des observations plot(x,y): courbe de y par rapport `a x, options standard (ligne pleine,pas de marqueur)
plot(x,y,‘k+’): courbe de y par rapport `a x, marqueurs en ‘+’, noirs (pas de ligne)
plot(x,y,‘b-d’,x,y2,‘r:’): courbe de y par rapport `a x et de y2 par rapport `a x (sur le mˆeme graphique), premi`ere courbe bleue, pleine, marqueurs en losanges, deuxi`eme courbe rouge, pointill´ee (pas de marqueurs)
Il est possible une fois le graphique trac´e de modifier une foule de ses param`etres, voici quelques-unes de ces fonctions:
xlabel(‘titre’): sp´ecifie le titre de l’axe des x ylabel(‘titre’): sp´ecifie le titre de l’axe des y title(‘titre)’: sp´ecifie le titre du graphique.
axis: permet de d´efinir les propri´et´es des axes, voir l’aide de Matlab pour plus de d´etails.
grid: permet de d´efinir les propri´et´es des axes, voir l’aide de Matlab pour plus de d´etails.
hold
Permet de superposer plusieurs graphiques en sp´ecifiant hold on.
Pour ne plus superposer les graphiques suivant, il suffit de sp´ecifier hold off.
plot(x,y) hold on plot(x,y2) plot(x,y3) hold off
Pour sauvegarder un graphique, il suffit de s´electionner Save dans le menu File de la fenˆetre du graphique.
Stata graph (gr)
Trace des graphiques.
graph nom des variables, [type de graphique, autres options]
O`u type de graphiquepeut prendre les valeurs suivantes:
• histogram (h): histogramme
• twoway (t): nuage de points `a deux axes; valeur par d´efaut si plusieurs variables sont affich´es. La premi`ere variable sp´ecifi´ee est toujours la variable d´ependante.
• bar (b): graphique `a barres
• pie (p): graphique en pointe de tartes
Voici certaines des options suppl´ementaires les plus utiles:
• xlog, ylog: sp´ecifie que l’axe des x ou des y respectivement doit ˆetre en ´echelle logarithmique.
• xline, yline: sp´ecifie qu’une grille en x ou en y respectivement de- vrait ˆetre affich´ee.
• connect(option)(c(option)): sp´ecifie si les points devraient ˆetre con- nect´es/. optionpeut prendre les valeurs suivantes:
– .: non-connect´es; valeur par d´efaut – l: lignes droites entre les points
– s: traces des lignes courbes entre les points ( ´A V´ERIFIER)
• symbol(option) (s(options)): sp´ecifie le symbole que doivent prendre les points. option peut prendre les valeurs suivantes:
– O: grand cercles; valeur par d´efaut – o: petits cercles
– .: points – i: invisibles
• saving(nomdef ichier), [replace]: sauvegarde le graphique dans le fichier sp´ecifi´e, si aucune extension n’est sp´ecifi´ee, Stata ajoute par d´efaut “.gph”.
replace indique que le fichier existant peut ˆetre remplac´e.
3.1 Exemples et r´ esultats pour le Chapitre 3
Matlab
diary(’ExChap3.out’);
% cr´eation d’un indice de temps commen¸cant `a 4.
t = 4:103;
% cr´eation 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-+’)
xlabel(‘temps’)
ylabel(‘log du temps’) title(‘courbe logarithmique’) diary(’off’)
Stata
log using ”e:\ExChap3.log”, replace set more off
* Fixer le nombre d’observations `a 100. set obs 100
* cr´eation d’un indice de temps commen¸cant `a 4. g t = n+3 * cr´eation du log de cet indice. g lnt = log(t) graph lnt t, saving(”e:1”, replace)
graph lnt t, yline saving(”e:2”, replace) graph lnt t, yline c(s) saving(”e:3”, replace) graph lnt t, yline s(.) saving(”e:4”, replace)
graph lcrd t, xlog yline c(s) s(i) saving(”e:5”, replace) log off
Chapitre 4
R´ egressions Simples
Dans ce chapitre et les suivants, il est sugg´er´e de lire la section de Matlab mˆeme si on utilise Stata: contrairement `a ce derni`er o`u on a qu’`a utiliser une fonction pour effectuer l’op´eration d´esir´ee, Matlab n´ecessite l’´elaboration pas
`
a pas de l’op´eration qui est effectu´ee par la boˆıte noire qu’est Stata.
Dans ce chapitre nous consid´ererons le mod`ele suivant:
y=β0+β1x1+β2x2+· · ·+βkxk+uy=Xβ+U
Matlab
MCO
D´efinition des variables:
X = [ones(size(x1),x1,x2,. . . ,xk]
[T,K] = size[X]
TetKsont respectivement le nombre d’observations et le nombre de variables ind´ependantes.
Proc´edure pour calculer les moindres carr´es ordinaires (MCO):
Calcul des coefficient:
b = inv(X’*X)*X’*y
o`u X est une matrice T ×K,Y est un vecteur t×1 et b un vecteur k×1 Calcul des r´esidus:
e = y-X*b
Calcul de la variance des r´esidus:
sigma2 = (e’*e)/(T-K)
Calcul de la variance des coefficients:
varb = sigma2 * inv(X’*X)
Calcul de l’´ecart-type des coefficients:
etype = sqrt(diag(varb))
Cr´eation d’un vecteur de y-moyen:
ybar = [ones(size(y))*mean(y)]
Vecteur des y pr´edits:
yhat = X*b
Variation expliqu´ee:
SSE = sum((yhat-ybar).^2) Variation totale:
SST = sum((y-ybar).^2) Calcul du R2:
R2 = SSE/SST
Tests d’hypoth` eses et Intervalles de confiance
Test de H0,β2 = 0:
b2 = b(3)
etype2 = etype(3) t2 = b2/etypeb2
On obtient ainsi la valeur de la statistique t.
Intervalle de confiance `a 95% de β2: bornesupp = b2 + etype2*1.96 borneinf = b2 + etype2*(-1.96)
Fonctions dans Matlab
La notion de fonction est introduite, car vous effectuerez des MCO tellement souvent qu’il vous est sugg´er´e d’en faire une fonction d`es maintenant.
Une fonction est un fichier matlab ind´ependant qui contient du code
`
a ˆetre ex´ecut´e lorsque son nom est invoqu´e.
La premi`ere ligne du fichier doit ˆetre sous la forme suivante:
function [varo1, varo2, . . .] = N om de f onction(vari1, vari2, . . .) o`u varo d´esigne une variable retourn´ee par la fonction et vari d´esigne une variable utilis´ee par la fonction.
Les lignes subs´equentes contiennent le code `a ˆetre ex´ecut´e.
La fonction peut ensuite ˆetre appel´ee par la commande suivante:
[vars1, vars2, . . .] = N om de f onction(vare1, vare2, . . .)
o`u vars sont les nom qu’on d´esire utiliser pour les variables varo etvare le nom de variables que l’on donne `a 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).ˆverb+2+);
R2 = SSE/SST;
Cette fonction serait appel´ee par la commande suivante:
[beta,u,etype,R2] = MCO(Z,y)
o`ubeta, u, etypeetR2 sont les noms de variables qui seront utilis´ees dans le code et Z ety sont les variables contenant les donn´ees `a ˆ
etre trait´ees. Zprend g´en´eralement la formeZ = [ones(size(x1)),x1,x2,...].
4.0.1 Estimateurs de Variance Robustes
Il peut ˆetre utile de pouvoir calculer une matrice de variance-covariance qui soit robuste `a la pr´esence d’h´et´erosc´edascticit´e. L’estimateur robuste de cette matrice le plus utilis´e est celui deWhitequi est donn´e par la formule suiv-
ante:
V ar[b] =ˆ 1 T
X0X T
−1 1 T
T
X
i=1
e2ixix0i
! X0X
T −1
En matlab, toujours en utilisant les r´esultats de la fonction MCO.m, on de- vrait ´ecrire:
e2 = e.^2
varWhite = T*inv(X’*X)*sum((e2.*X)*X’)/T*inv(X’*X) Stata
regress (reg)
Incontournable si on d´esire faire des r´egressions par MCO. Effectue la r´egression de la variable d´ependante sur la ou les variables ind´ependantes sp´ecifi´ees.
regress variable d´ependante [variables ind´ependantes]
Options:
• level(#) (l(#)): permet de sp´ecifier le niveau de confiance pour les intervalles et le p-value (# doit ˆetre un entier); si level() n’est pas sp´ecifi´e, # prend la valeur 95, i.e. le niveau de confiance est fix´e `a 95%.
• robust (r): calcule des variances robustes par la m´ethode de Eicker- White.
ex: reg y x1 x2 x3 if x1==1, r predict
Permet de calculer les valeurs pr´edites, les r´esidus, etc. pour toutes les ob- servations.
predict nom de nouvelle variable; sans aucune option calcule les valeurs pr´edites (ˆy).
Options:
• xb: calcule X0β, la valeur lin´eaire pr´edite
• residuals (r): calcule les r´esidus
• stdp: calcule les ´ecarts-types des valeurs pr´edites
ex: calcule les ˆy hors-´echantillon reg y x1 x2 x3 in 1/100
predict y hat if ˜ e(sample)
test (t)
testpermet d’effectuer des tests d’hypoth`eses apr`es une estimation. Il prend principalement deux formes:
test [expression1 = expression2]: test que l’expression1 n’est pas statis- tiquement diff´erente de l’expression2
test liste de coef f icients: test que les coefficients ne sont pas conjointe- ments statistiquement diff´erents de z´ero.
ex:
reg y x1 x2 x3 test x1 = x2 test x2 x3
4.1 Tests d’h´ et´ erosc´ edasticit´ e
La pr´esence d’h´et´erosc´edasticit´e ne vient pas biaiser vos r´esultats, elle biaise plutˆot les ´ecarts-types obtenus par MCO. Il existe plusieurs m´ethodes sim- ilaires de tester pour la pr´esence d’h´et´erosc´edasticit´e. La plus simple est le test de Breusch-Pagen:
1. r´ecup´erer les r´esidus de la r´egression qu’on d´esire tester;
2. g´en´erer le carr´e des r´esidus;
3. r´egresser la carr´e des r´esidus sur les variables d´ependantes de la r´egression originale;
4. tester si les coefficients sont conjointement significatifs (test F ou test LM).
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´e est celui de la r´egression auxiliaire effectu´ee en 3.
Stata reg y x1 x2 predict u, r g u2 = uˆ2 reg u2 x1 x2
Il suffit alors de regarder la statistique F donn´ee par Stata.
La faiblesse du test de Breusch-Pagan est qu’il suppose les erreurs nor- malement distribu´ees. Afin de laisser tomber cette hypoth`ese, il suffit d’ajouter le carr´e des variables d´ependantes et leurs produits crois´es dans la r´egression de l’´etape 3, il s’agˆıt l`a du test de White. Afin de limiter le nombre de r´egresseurs, on peut utiliser un test de White l´eg`erement modifi´e:
u2 =β0+β1yˆ+β2yˆ2+e
On proc`ede pour le reste exactement de la mˆeme fa¸con que pour le test de Breusch-Pagan.
Que faire lorsque vous trouvez la pr´esence d’h´et´erosc´edasticit´e? Deux op- tions s’offrent `a vous:
• Calculer des variances robustes par la m´ethode de White3
1Rappel: la forme g´en´erale du test F pour la signification conjointe de tous les coeffi- cients est: F = (1−R2R)/(n−k−1)2/k
2Rappel: la statistique LM suit uneχ2k
3Il peut-ˆetre bien tentant de proc´eder syst´ematiquement avec les variances robustes
• Estimer le mod`ele par MCG, i.e. mod´eliser la forme d’h´et´erosc´edasticit´e (voir le chapitre 7).
4.2 Test de Changement structurel (Test de Chow)
Consid´erez le mod`ele suivant:
y=β0+β1x1+β2x2+u
Le test de Chow sert `a v´erifier s’il existe une diff´erence dans l’influence d’une variable d´ependante entre deux groupes de donn´ees, i.e. si le coefficient est statistiquement diff´erent. Les deux groupes de donn´ees pourraient ˆetre deux s´eries d’observations ou deux p´eriodes de temps par exemple.
La fa¸con “classique” d’effectuer le test de Chow est d’effectuer la r´egression du mod`ele pour les deux groupes de fa¸con ind´ependante et pour les deux groupes ensemble:
= β10+β11x11+β12x12 ˆ
y2 =β20+β21x21+β22x22
ˆ
y = β0 +β1x1 +β2x2 puis de tester si les coefficient sont statistiquement diff´erents par un test F:
F = (SSRˆ y −SSRˆ y1 −SSRˆ y2)/q (SSRˆ y1 −SSRˆ y2)/n1+n2−2k)
Rappel: q est le nombre de contraintes et k le nombre de coefficients, ici q =k = 3
Une autre fa¸con plus rapide d’effectuer ce test est de construire une variable binaire ´egale `a un pour les observations du deuxi`eme groupe et de faire une seule r´egression sur les variables originales et sur les termes d’interaction avec la variable binaire4:
Eicker-White pour ´eviter de faire le test d’h´et´erosc´edasticit´e, mais cette fa¸con de faire r´eduit la pr´ecision de vos r´esultats (i.e. gonfle les ´ecarts-types et r´eduit la puissance des tests) lorsque les donn´ees sont homosc´edastiques.
4Cette section et l’exemple qui la suit sont inspir´es de la rubrique de l’aide de Stata:
How can I compute the Chow test statistic? par Bill Gould.
Soit δ la variable binaire:
ˆ
y=β0+β1x1+β2x2β3δ+β4x1δ+β5x2δ
On d´esire maintenant tester si β0 = (β0 +β3), si β1 = (β1 +β4) et si β2 = (β2+β5). Ce qui revient `a tester si β3,β4 etβ5 sont conjointement diff´erent de 0. Ceci peut ˆetre facilement effectu´e 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
5Rappel: la forme g´en´eraleR2 du testF est: F =(1−R(R22ur)/(n−k−1)r−R2r)/k
Chapitre 5
Variables instrumentales et Doubles Moindres Carr´ es
Lorsqu’une variable “ind´ependante” est corr´el´ee avec le terme d’erreur, les hy- poth`eses classiques du mod`ele lin´eaire sont viol´ees et on se retrouve face `a un probl`eme d’endog´en´eit´e. Dans ces cas, on peut faire appel `a l’estimateur de variables instrumentales (VI) ou auxdoubles moindres carr´es or- dinaires (DMCO).
5.1 Estimateur Variables Instrumentales
Soit X, une matrice de VI et Z, la matrice originale. L’estimateur VI est donn´e par:
βˆ(V I) = (X0Z)−1X0y et l’estimateur VI de la covariance par:
ˆ
σ2(X0Z)−1(X0X)(Z0X)−1 o`u
ˆ σ2 = 1
T(y−Zβˆ(IV))0(y−Zβˆ(IV)).
ou, lorsque K > J (K ´etant le nombre de VI et J le nombre de variables ind´ependantes), par:
βˆ(IV) = [Z0X(X0X)−1X0Z]−1Z0X(X0X)−1X0y.
ˆ
σ2[Z0X(X0X)−1X0Z]−1. Matlab
Cr´eons la fonctionVI pour l’estimateur VI:
function [bvi,evi,etypevi,varChbvi,R2vi] = VI(X,Z,y) [T,K] = size(X);
bvi = inv(X’*Z)*X’*y;
evi = y-Z*bvi;
sigma2Ch = (evi’*evi)/(T-K);
varChbvi = sigma2Ch * inv(X’*Z)*X’*X*inv(Z’*X);
etypevi = sqrt(diag(varChbvi));
ybar = [ones(size(y))*mean(y)];
yCh = Z*bvi;
SSEvi = sum((yCh-ybar).ˆ2);
SSTvi = sum((y-ybar).ˆ2);
R2vi = SSEvi/SSTvi;
Notez que cette fonction est optimale seulement pour K ≤J.
Stata ivreg
ivreg permet de faire directement une r´egression par DMCO.
ivreg variable dependante variables independantes (variable dependante= variable(s) intrumentale(s)), options
o`u options peut prendre les mˆemes valeurs que pour regress, ainsi que first qui affiche les r´esultats de la premi`ere r´egression.
ex:
ivreg y1 z1 z2 (y2=x1), r first predict peut ˆetre utilis´e apr`es ivreg
5.2 DMCO
Le principe des doubles moindres carr´es ordinaires est d’utiliser une estima- tion de la variable endog`ene qui ne soit pas corr´el´ee avec le terme d’erreur pour effectuer la r´egression.
Soit le mod`ele suivant:
y1 =β0+β1x1+β2x2 +β3y2+u et soit z une VI de y2.
Comme leur nom l’indique, les DMCO se font en deux ´etapes.
1. Estimation de la variable endog`ene:
R´egression de y2 sur toutes les variables ind´ependantes (x1 etx2 ici) et la/les VI pour y2 (z ici).
On r´ecup`ere ˆy2, l’estimation lin´eaire de y2. 2. R´egression du mod`ele avec ˆy2:
R´egression de y1 sur une constante, x1, x2 et ˆy2.
Cette derni`ere r´egression ne souffrant plus d’endog´en´eit´e, les ˆβ ainsi obtenus sont non-biais´es.
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
Voir la fonction ivreg `a la section pr´ec´edente.
5.3 Tests d’endog´ en´ eit´ e
Letest de Hausmanpermet de v´erifier s’il existe bel et bien une diff´erence entre l’estimateur VI et l’estimateur MCO, v´erifiant ainsi s’il y a bel et bien endog´en´eit´e des variables (si les deux estimateurs sont consistants, ils seront asymptotiquement ´egaux). Sous H0, la statistique de Hausman est:
H= [ ˆβ(V I)−b]0[ˆσ2[(Z0X(X0X)−1X0Z]−1 −σˆ2(Z0Z)−1]−1[ ˆβ(V I)−b]∼χ2(J)
Matlab
En utilisant la fonction d´evelopp´ee `a la section pr´ec´edente:
[bmco,umco,etypemco,varChbmco,R2mco] = MCO(X,y) [biv,uiv,etypeiv,varChbiv,R2iv] = IV(X,y)
H = (biv-bmco)’*(varChbiv-varChbmco))’*(biv-bmco) Stata
hausman
Effectue le test de sp´ecification d’Hausman.
Estimation du mod`ele moins efficient, mais convergent (VI ici) hausman, save
Estimation du mod`ele efficient, mais peut-ˆetre pas convergent (MCO ici) hausman
Options: constant (c), indique que la constante doit ˆetre inclue dans la comparaison des deux mod`eles.
ex:
ivreg y1 z1 z2 (y2=x1) hausman, save
reg y1 z1 z2 y2 hausman, c
Chapitre 6
Estimateur du Maximum de Vraissemblance (EMV)
La fonction de vraisemblance est la probabilit´e jointe des observations
´
etant donn´e les param`etres d’int´erˆets, i.e.:
L(θ|y) =f(y1, . . . , yn|θ) =
n
Y
i=1
f(yi|θ)
L’estimateur du maximum de vraisemblance (EMV) a pour but de choisir le vecteur de param`etresθ qui maximise la fonction de vraisemblance, i.e. pour lequel les donn´ees observ´ees sont les plus probables. Pour simplifier les choses, la fonction de log-vraisemblance,L(θ|y), est g´en´eralement utilis´ee1. Prenons l’exemple d’un ´echantillon normalement distribu´e, de moyenne 0 et de variance σ2:
f(y|X, β, σ2) =
T
Y
t=1
(2πσ2)−1/2exp[(yt−x0tβ)2]
= (2πσ2)−T /2exp
−(y−Xβ)0(y−Xβ) 2σ2
.
La log-vraisemblance est L(β, σ2) =−T
2 log(2π)− T
2 logσ2 −(y−Xβ)0(y−Xβ)
2σ2 .
1Le logarithme ´etant une fonction montone, la valeur qui maximiseL(θ|y) est la mˆeme que celle qui maximise L(θ|y).
Les CPO sont:
δlnL
δβ = (y−Xβ)(y−Xβ) 2σ2
δlnL
δσ2 =− T
2σ2 + (y−Xβ)0(y−Xβ) 2σ4
Ce qui nous permet de trouver
βˆ= (X0X)X0y σˆ2 = (y−Xβ)0(y−Xβ)
T = eˆ0ˆe T
Matlab
Il n’existe pas de fonction de maximisation dans Matlab, il faut donc min- imiser la n´egative de la fonction `a l’aide de la fonction suivante:
fminsearch
[x, f val] = fminsearch(f onction, options, variables)
o`u x est la variable qui contiendra la/les valeur(s) qui minimise(nt)la fonc- tion, f val est une variable facultative o`u seront stock´ees les valeurs de la fonction pour chacune des valeur minimale, f onction est le nom de la fonc- tion `a minimiser (r´ef`ere `a un fichier ‘.m’) etvariablesest une liste de variables utilis´ees par la fonction, mais qui ne doivent pas ˆetre minimis´ees. Les options possibles sont:
• Display: ajuste l’affichage de la progression de la minimisation; se r´ef´erer `a l’aide de Matlab pour plus d’info.
• MaxFunEvals: nombre maximal d’´evaluations de la fonction permises
• MaxIter: nombre maximal d’it´erations permises
Si aucune option n’est d´esir´ee, il faut utilis´ee l’ensemble vide[]pouroptions.
ex: voir section 8.1
Stata ml
Permet de faire une estimation par maximum de vraisemblance pour une
´
equation donn´ee. Cette fonction ´etant fort complexe et tr`es peu utilis´ee dans le cadre des probl`emes abord´es dans ce guide, il est laiss´e `a la discr´etion du lecteur le soin de consulter l’aide de Stata `a son sujet. Il existe normalement des fonctions pr´e-d´efinies pour les estimateur abord´ees ici qui doivent ˆetre trait´es par maximum de vraisemblance (probit et logit par exemple).
Chapitre 7
Moindres Carr´ es G´ en´ eralis´ es
La m´ethode des moindres carr´es g´en´eralis´es(MCG) cherche `a mod´eliser la fonction de la variance. Nous obtenons alors l’estimateur MCG
βˆM CG = (X0V−1X)−1X0V−1y ou encore
βˆM CG = (X0W−1X)−1W0V−1y et sa variance est
var[ ˆβ] =σ2(X0V−1X)−1. o`u V etW sont ´egaux `a
W =σ2
x1 0 · · · 0 0 x2 · · · 0 ... ... . .. ...
0 0 · · · xn
≡σ2V
Matlab
Le principe de base ici est de construire la matrice V avec la forme appropri´ee de variance pour pouvoir ensuite calculer les ˆβM CG.
Voyons comment on estimerait le mod`ele y = β0 +β1x1 +β2x2 +ε o`u l’on suppose que la variance suivre une fonction de type σ2(x) =σ2x2i:
X = [ones(size(y)),x1,x2];
V = diag(x2);
[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´egression lin´eaire pond´er´ee par la variance.
vwls variable dependante variables independantes [poids], options Options: sd(nom variable)fournit une estimation de l’´ecart-type de la vari- able d´ependante.
ex:
vwls y x1 x2, sd(sigma2ch)
o`u sigma2ch est une estimation de l’´ecart-type de y.
predict peut ˆetre utilis´e apr`es vwls
Chapitre 8
Variables d´ ependantes qualitatives
8.1 Probit/Logit
Un probit et un logit s’appuient en fait sur le mˆeme principe, ils ne diff`erent que dans la forme de la fonction de r´epartition qu’ils utilisent pour calculer l’effet sur la probabilit´e d’une variation de la variable latente. En effet, lorsque la variable d´ependante ne prend que des valeurs qualitatives (oui ou non par exemple), l’effet d’une variable ind´ependante sur la probabilit´e de dire oui doit ˆetre “traduit” par une fonction de r´epartition. Cette derni`ere nous donne la probabilit´e associ´ee `a une valeur donn´ee de la valeur latente exprim´ee par la combinaison lin´eaire des variables ind´ependantes.
Matlab
Pour le probit, on doit utiliser la fonction de r´epartition de la loi normale:
F(x) = Φ(x) = 1
√2π Z x
−∞
e−z
2 2 dz
normcdf normcdf(X)
Donne la valeur de la fonction de r´epartition de la loi normale pour la valeur de X sp´ecifi´ee.
Pour le logit, on utilie plutˆot la fonction de r´epartition de la loi logistique:
F(x) = 1 1 +e−x
Comme il n’existe pas de fonction pr´ed´efinie dans Matlab pour la fonction de r´epartition de la loi logistique, on doit en construire une:
function [Fx] = logitcdf(x) Fx = 1/(1+exp(-x))
La proc´edure ´etant la mˆeme pour un probit et un logit, elle ne sera d´emontr´ee qu’une seule fois pour le cas de la loi logistique (logit).
Voyons d’abord comment construire une fonction de log-vraisemblance pour une loi normale:
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’`a calculer l’effet d’une variable sur la proba- bilit´e. Ceci peut ˆetre fait en fixant toutes les autres variables `a une valeur (g´en´eralement leur moyenne ´echantillonalle), puis en estimant le mod`ele suc- cessivement pour deux valeurs de la variable. La diff´erence de la probabilit´e de ces deux estimations lin´eaires de la variable d´ependante (ˆy) donne la vari- ation de probabilit´e.
ex: le mod`ele estim´e est ˆy = β0 +β1x1+β2x2+β3bin1 +µ o`u 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)
Note: on pourrait aussi calculer l’effet marginal directement en calculant la d´eriv´ee de l’esp´erance de y sachant X:
∂E[y|X]
∂X =
dF(X0β) d(X0β)
β=f(X0β)β Par exemple, dans le cas d’un probit:
Pr(y= 1) = Φ(X0β)
∂Pr(y= 1)
∂X = φ(X0β)β
Stata
probit (prob)
Estime un mod`ele probit.
probit variable d´ependante variable ind´ependante
Options: probit poss`ede en grande partie les mˆemes options que regress.
Note: Ici predict donne par d´efaut la probabilit´e. Pour avoir l’estimation lin´eaire, il faut pr´eciser xt dans les options de predict.
logit
Permet d’estimer un mod`ele logit.
logit variable d´ependante variable ind´ependante
Options: logit poss`ede en grande partie les mˆemes options que regress.
8.2 Tobit
Un tobit est essentiellement un mod`ele dont les donn´ees sont tronqu´ees.
Comme le probit, le tobit suit une loi normale.
Matlab
Soit un mod`ele tronqu´e `a gauche `a z´ero (y∗ ´etant une variable latente dey):
y∗ = X0β+µ y = max(0, y∗)
Encore ici, on proc´edera par maximum de vraisemblance, mais on devra cette fois consid´erer qu’il existe deux fonctions: une pour y= 0 et une pour y > 0. La log vraisemblance pour le tobit sera donn´ee par la somme de la log vraisemblance des deux fonctions:
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)
Afin de calculer l’esp´erance de y´etant donn´e x, il suffit de calculer:
E(y|x) = Φ(xβ/σ)xβ+σφ(xβ/σ)
Le transfert de cette fonction en Matlab ne devrait plus, `a ce stade, vous
causer aucun probl`eme...
Stata tobit
Permet d’estimer un mod`ele tobit.
logit variable d´ependante variable ind´ependante
Options: ll(#), ul(#): indiquent respectivement que les donn´ees sont tronqu´ees `a gauche ou `a droite. Une ou les deux de ces options doivent ˆetre sp´ecifi´ees. # indique le point de troncation. Si # n’est pas pr´ecis´e, 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 avecregress.
ex:
tobit y x1 x2 x3 x4, ll(0)
Chapitre 9
S´ eries Chronologiques
9.1 Op´ eration sur les variables dans le cadre de s´ eries chronologiques
Matlab
Il n’y a pas d’op´eration particuli`ere `a effectuer avec Matlab lorsqu’on tra- vaille avec des s´eries chronologiques.
Stata tsset
Lorsqu’on travaille avec des s´eries chronologiques dans Stata, il est n´ecessaire de l’en informer par la commande tsset.
tsset variable de temps ex:
generate t = n tsset = t
9.2 Op´ erateurs de s´ eries temporelles
Voici comment reproduire l’´equivalent des op´erateursAvanceetRetarddans Matlab et Stata pour travailler sur les s´eries chronologiques.
Matlab
Il n’existe pas d’op´erateur de s´eries temporelles en soit dans Matlab, il faut donc utiliser les op´erateurs matriciels vus au chapitre 1.
ex:
• Op´erateur 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´er´ees.
• Op´erateur Avance:
T = length(X) x = X(1:T-2) x fwd1 = X(2:T-1) x fwd2 = X(3:T)
Stata l
L’op´erateurl est l’op´erateurRetardde stata. Il peut ˆetre utilis´e avec toutes les fonctions qui acceptent les s´eries temporelles une fois que la d´eclaration de s´eries temporelles `a ´et´e faite.
l#.variable
o`u variable est la variable sur laquelle l’op´erateur doit agir et # est le nombre de retards `a appliquer. Si # est omis, un seul retard est appliqu´e (´equivalent
`
a l1.variable).
tsset t
regress y x l.x l2.x
f
L’op´erateurfest l’op´erateurAvancede stata. Il peut ˆetre utilis´e avec toutes les fonctions qui acceptent les s´eries temporelles une fois que la d´eclaration de s´eries temporelles `a ´et´e faite.
f#.variable
o`u variable est la variable sur laquelle l’op´erateur doit agir et # est le nom- bre d’avance `a appliquer. Si # est omis, une seule avance est appliqu´ee (´equivalent `af1.variable).
tsset t
regress y x f.x f2.x
9.3 Tests d’autocorr´ elation
Inutile de mentionner que l’autocorr´elation est un probl`eme qui n’est perti- nent que dans le cas des s´eries temporelles. . .
Le testρest le test le plus simple `a effectuer pour tester la pr´esence d’autocorr´elation:
1. r´ecup´erer les r´esidus de la r´egression qu’on d´esire tester;
2. r´egresser ˆut sur ˆut−1 `a ˆut−n etX
3. Tester la signification conjointe des coefficients de cette r´egression par un test F.
Choisissons n ´egal `a 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
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´ee par Stata.
Le test de Durbin-Watson est aussi utilis´e pour tester la pr´esence d’autocorr´elation, mais comme il est moins pr´ecis et ne consid`ere qu’une seule p´eriode, nous ne le couvrirons pas ici.
9.4 M´ ethode de Box-Jenkins
Ce qu’il est important de comprendre, `a mon avis, dans la m´ethode de Box- Jenkins, c’est que l’objectif de toutes les op´erations que nous effectuons est de se retrouver avec un r´esidu qui est un bruit-blanc. Le but ultime ´etant de mod´eliser la s´erie afin de faire des pr´edictions, nous pouvons seulement ˆ
etre certain d’avoir tout extrait lorsqu’il nous reste seulement un bruit-blanc:
un processus qui est par d´efinission impossible `a pr´edire.
9.4.1 Stationnarit´ e des donn´ ees
La premi`ere ´etape de la m´ethode de Box-Jenkins consiste `a effectuer les transformations n´ecessaires afin de s’assurer que notre s´erie est stationnaire, si elle ne l’est pas, il nous sera impossible de travailler dessus.
Premi`ere question `a se poser: doit-on travailler en log ou pas? Si la vari- able croˆıt `a un taux constant, elle sera lin´eaire en log. De plus, les pro- pri´et´es du logarithme font en sorte qu’il “´ecrase” une variance croissante.
Outre la transformation logarithmique, il existe trois cas possibles de non- stationnarit´e qui impliqueront des changements dans la s´erie (ou sa mod´elisation):
• Changement structurel
• Tendance d´eterministe
• Racine unitaire
Changement structurel
Les changement structurels peuvent ˆetre d´etect´es `a l’aide du Test de Chow (voir section 4.2). Malheureusement, rien ne peut g´en´eralement ˆetre fait pour stationnariser une s´erie dans le cas d’un changement structurel.
Tendance d´eterministe
Afin de r´egler le probl`eme de la pr´esence d’une tendance temporelle, il suffit de la mod´eliser la tendance. Il faut faire attention de bien choisir la tendance la mieux adapt´ee `a nos donn´ees: lin´eaire, quadratique, logarithmique, etc.
ex: tendance quadratique Matlab
T = length(y);
t = 1:T;
t2 = t^2;
X = [ones(size(y)),t,t2]
[b,u,etype,R2] = MCO(X,y) Stata
t = n t2 = t^2 tsset t
regress y t t2
Racines Unitaires
On fait face `a un probl`eme de racine unitaire lorsque ρ = 1 dans le mod`ele suivant:
yt=α+ρyt−1+et
Afin de r´egler le probl`eme de racine unitaire, il faut diff´erencier la s´erie, i.e.
travailler sur ∆yt=yt−yt−1 plutˆot que yt. Le mod`ele devient donc:
∆yt=α+θyt−1 +t Matlab
T = length(y);
x = y(2:T) - y(1:T-1) ...
Stata
La diff´erenciation d’une s´erie est effectu´ee automatiquement dans Stata lors de l’utilisation de la fonction arima.
Tester pour la pr´esence d’une racine unitaire se fait par un test t o`u H0 est θ = 0. Malheureusement, sous l’hypoth`ese nulle, la statistique t ne suit pas la loi asymptotique habituelle. Il faut plutˆot utiliser la loi de Dickey- Fuller. S’il y a corr´elation des termes d’erreur, il faut plutˆot utiliser une loi de Dickey-Fuller augment´ee.
Stata dfuller
Effectue un test de Dickey-Fuller augment´e sur la variable sp´ecifi´ee.
dfuller nom de variable, options Options:
• lags(#): sp´ecifie le nombre de retards `a utiliser pour le calcul de la variance estim´ee Newey-West.
• trend: incluera une variable de tendance dans la r´egression.
pperron
Poss`ede exactement la mˆeme structure et les mˆemes options que dfuller, mais effectue un test de Phillips-Perron plutˆot qu’un test de Dickey-Fuller augment´e.
9.4.2 Mod´ elisation des cycles: Mod` eles AR, MA, ARMA, ARIMA
Stata