Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Juin 2017
Résumé
Ce guide a pour objet de faciliter les manipulations de données sous STATA. En règle générale les manipulations
sont illustrées à l'aide de capture d'écran qui proviennent de STATA 14 mais elles restent valables pour les autres
versions de STATA.
Les données des exemples sont téléchargeable dans ma page perso Researgate :
https ://www.researchgate.net/prole/Dalila_Chenaf
La version dta.
https ://www.researchgate.net/publication/318351252_Fichier_de_donnees_pour_les_exemples_du_chapitre_3_-
_guide_d'utilisation_de_Stata_format_dta
La version Excel.
https ://www.researchgate.net/publication/318340892_Fichier_de_donnees_du_chapitre_3_du_guide_stata_xls
Vous apprendrez dans ce chapitre 3 à faire de la statistique élémentaire sur des bases de données : construction
de table de fréquence, moyenne, variance, écart-type, matrice de corrélation, etc. Mais également de l'économétrie
de base (régression simple et multiple).
Chapitre 3 - Statistiques et économétrie
élémentaires sous Stata
Dans le chapitre 1, il vous a été expliqué comment télécharger une base de données au format Excel sous STATA.
Ici, il sera donc supposé que ce téléchargement a été eectué et que vous voulez à présent manipuler les variables
de cette base.
Les exemples seront fait à partir de la base de données téléchargeable au format Excel au lien suivant de ma
page perso Researchgate (DATA/ projetc : Guide d'utilisation de Stata) :
Vous pouvez également si vous voulez télécharger directement le chier au format stata (.dta) avec le lien suivant
de ma page perso Researchgate :
Le chier de données propose une série temporelle sur 14 périodes de temps. Les données de panel seront traitées
dans le chapitre suivant.
La première commande qui permet d'avoir un regard rapide sur les caractéristiques des données est summarize
(ou selon le raccourci admit par Stata sum). La commande est simple puisque dans le chier proposé il y a 4 variables
y,x1,x2,x3. Les statistiques élémentaires (moyenne, écart type, valeurs min, valeurs max, nombre d'observations)
s'obtiennent en faisant
summarize y x1 x2 x3
. summarize y x1 x2 x2
pouvez obtenir d'autres statistiques par variable comme la moyenne, l'écart type, la somme en utilisant une com-
mande déjà vue dans le chapitre 1 et 2 qui est egen :
egen moyenney=mean(y)
display moyenney
egen ecarttypey=sd(y)
display ecarttypey
egen sumy=sum(y)
display sumy
1
La commande display vous permet d'acher la valeur à l'écran.
Vous pouvez calculer le coecient de corrélation r entre deux ou plusieurs variables. avec si r= 0 il n'y a pas
de corrélation, si r=-1, la corrélation est négative, si r=1, la corrélation est positive.
Vous avez ici plusieurs options. La première commande ne donne que la valeur des coecient (correlate ou en
raccourci cor) :
correlate y x1 x2 x3
. correlate y x1 x2 x3
(obs=14)
y x1 x2 x3
y 1.0000
x1 0.9680 1.0000
x2 -0.9233 -0.9410 1.0000
x3 0.7520 0.7505 -0.7790 1.0000
Dans cet exemple on voit par exemple qu'il y a une forte corrélation positive entre y et x1 et une forte corrélation
négative entre y et x2.
On peut avec cette commande obtenir la matrice des variances et covariance de y et x1 par exemple
correlate y x1 , cov
. correlate y x1 , cov
(obs=14)
y x1
y 406.725
x1 334.473 293.516
Avec :
y x1
y variancey cov(x,y)
x1 cov(y,x) variancex1
La matrice étant symétrique puisque cov(x,y)=cov(y,x), Stata ne donne qu'une des deux valeurs.
La commande correlate y x , cov mean donne en plus les statistiques descriptives pour y et x1
Par contre on ne sait pas si le coecient est signicatif (même si on a pas trop de doute dans l'exemple donnée).
Pour avoir la signicativité (codé sig) on peut la demander avec le seuil désiré de 1%, 5%.....Il sut d'indiquer
star(valeur du seuil) et une étoile apparaitra derrière les coecients signicatifs au seuil de x%. Par exemple avec
un seuil de 5%, la commande est pour les variables y x1 :
2
. pwcorr y x1, sig star(5)
y x1
y 1.0000
x1 0.9680* 1.0000
0.0000
Si vous voulez que soit en plus indiqué le nombre d'observations la commande est :
Avec cette commande pwcorr vous pouvez calculer le coecient de y par rapport à x1 (avec x2 constant) puis
y par rapport x2 (avec x1 constat). Il faut écrire pcorr dans ce cas et non pwcorr.
. pcorr y x1 x2
(obs=14)
correlate y x1 if x3>12
correlate y x1 in 2/14
3
Si on veut modier le graphique il sut de cliquer sur l'histogramme avec le crayon dans la barre de menu de
la capture d'image précédente et une boite de dialogue s'ouvre pour modier les couleur des lignes, l'épaisseur, les
titres, etc.
Il est possible de reprendre l'ensemble des statistiques dans un tableau que l'on voudra construire. Vous pouvez
vous exercer avec le programme suivant. Il nécessite d'utiliser une syntaxe propre aux matrices. Nous verrons cela
dans un chapitre ultérieur. Cependant rien ne vous empêche de vous exercer avec le programme suivant :
*/créer les valeurs du tableau, à savoir les moyennes, écart-type, ....
egen sumy=sum(y) .
egen sumx1=sum(x1)
egen sumx2=sum(x2)
egen sumx3=sum(x3)
egen meany=sum(y)
egen meanx1=sum(x1)
egen meanx2=sum(x2)
egen meanx3=sum(x3)
egen sdty=sd(y)
egen sdtx1=sd(x1)
egen sdtx2=sd(x2)
egen sdtx3=sd(x3)
gen OBSy=_N
*/Les créer pour chacun des résultats des matrices en vecteur colonne
*/La commande mkma permet de créer à partir de données existante une matrice mat(" ").
mkmat sumy,mat(Totaly)
mkmat sumx1,mat(Totalx1)
mkmat sumx2,mat(Totalx2)
mkmat sumx3,mat(Totalx3)
mkmat meany,mat(Moyenney)
mkmat meanx1,mat(Moyennex1)
mkmat meanx2,mat(Moyennex2)
mkmat meanx3,mat(Moyennex3)
*/Vous pouvez maintenant récupérer les premières valeurs (les premier "éléments" =el) de chacune des matrices
*Comme on récupère la (1,1) première ligne et 1ere colonne de chaque vecteur on récupéré donc scalaire qui sera
intégré dans le tableau de données.
matrix TOTALY=el(Totaly,1,1)
svmat double TOTALY
4
matrix TOTALx1=el(Totalx1,1,1)
svmat double TOTALx1
matrix TOTALx2=el(Totalx2,1,1)
svmat double TOTALx2
matrix TOTALx3=el(Totalx3,1,1)
svmat double TOTALx3
matrix MOYENNEy=el(Moyenney,1,1)
svmat double MOYENNEy
matrix MOYENNEx1=el(Moyennex1,1,1)
svmat double MOYENNEx1
matrix MOYENNEx2=el(Moyennex2,1,1)
svmat double MOYENNEx2
matrix MOYENNEx3=el(Moyennex3,1,1)
svmat double MOYENNEx3
matrix SIGMAy=el(sigmay,1,1)
svmat double SIGMAy
matrix SIGMAx1=el(sigmax1,1,1)
svmat double SIGMAx1
matrix SIGMAx2=el(sigmax2,1,1)
svmat double SIGMAx2
matrix SIGMAx3=el(sigmax3,1,1)
svmat double SIGMAx3
*Récupérer ces éléments dans un seul vecteur ligne que l'on transpose pour avoir un vecteur colonne
mkmat TOTALY TOTALx1 TOTALx2 TOTALx3 MOYENNEy MOYENNEx1 MOYENNEx2 MOYENNEx3 SIGMAy SIGMAx1 SIGMAx2
SIGMAx3, mat(tableau)
matrix Tableaustat=(tableau)'
mat list Tableaustat
On peut naturellement améliorer le nom des colonnes, etc.. Mais à vous de jouer.
Il ne s'agit pas pour l'instant de traiter le thème de la stationnarité des séries chronologiques. Ce point sera
abordé ultérieurement. Ne seront traitées ici que la régression simple et multiple
5
tsset temps
Avec cette commande vous indiquez que la variable nommée temps est celle du temps. Vous verrez à l'écran
les phrases :
. tsset temps
time variable: temps, 1 to 14
delta: 1 unit
La variable du temps se nomme 'temps' et elle s'étend de 1 à 14 périodes. Le pas de la progression des données
est 1.
Si vous tapez la commande tssetll, dans la barre de commande, Stata remplace toutes les données manquantes
du chier
. tsreport
Starting period = 1
Ending period = 14
Observations = 14
Number of gaps = 0
6
180
160
140
120
100
Y Fitted values
Pour faire une régression de y par rapport à x1, la syntaxe et simple avec une commande qui s'écrit simplement
regress (ou en raccourci reg). Vous devez par exemple écrire :
reg y x1
En haut a droite de cette capture d'écran vous avez un premier tableau de résultat qui indique :
- Le nombre d'observations (toujours noté _N dans les programmes stata) est =14
- Le Fisher global et sa probabilité (qui dans le cas d'un modèle à 1 variable explicative correspond au t de
student). Il nous indique que les coecients du modèle sont globalement signicativement diérent de zéro et que
le modèle fait mieux qu'une constante
- Le coecient de détermination R2 et le R2 ajusté
En haut à gauche du tableau vous avez le tableau d'analyse de la variance, avec SCE (qui se dit mss sous
Stata), SCR (qui se dit rss). Vous pouvez en déduire SCT. Dans l'exemple, la Somme des carrés des résidus est
332,54, la Somme des carrés expliqués est 4954,86 et la Somme des carrés Total est 5287,42. Vous avez également
les degrés de liberté.
Le Tableau central reprend les éléments de la régression.
- Dans ce tableau la première colonne est celle des variables, la constante est notée (_cons) alors que dans
d'autres logiciels elle se nomme intercept.
- La deuxième colonne du tableau est celle de la valeur des coecients estimées (a1 chapeau=1,13 et a0 chapeau
pour la constante=21,94)
- La Troisième colonne est celle des écart-type estimés des coecients et naturellement le rapport du coecient
sur l'écart type nous donne la valeur du t de student qui est nal donné dans la quatrième colonne. La dernière
colonne nous donne la probabilité de rejeter à tort l'hypothèse selon laquelle a0=0 ou a1=1.
- Pour nir on trouve l'intervalle de conance.
On peut améliore la régression en ajoutant des options. Il faudra pour indiquer les options mettre une virgule
après le programme précédant. Par exemple
7
reg y x1, noconstant
reg y x1 in 1/13
reg y x1 if x1>0
Une fois la régression faite il est possible de récupérer en ensemble de données et de statistiques. Pour connaitre
tout ce que Stata peut stocker en mémoire après une régression simple ou multiple il sut d'écrire la commande :
ereturn list
. ereturn list
scalars:
e(N) = 14
e(df_m) = 1
e(df_r) = 12
e(F) = 178.7875828823532
e(r2) = .937102824939086
e(rmse) = 5.264379676017719
e(mss) = 4954.86425094935
e(rss) = 332.5643204792211
e(r2_a) = .9318613936840099
e(ll) = -42.03957116262542
e(ll_0) = -61.40334935775386
e(rank) = 2
Vous obtenez la liste précédente dans le cas de la régression. Attention selon le type de travaux réalisés (régression
robuste ou non, données de panel, données qualitatives), la liste de données disponibles peut varier.
Dans le cas de notre exemple vous avez le nombre d'observations (14), les degrés de liberté (ddlk=1 et ddl(k-
2=12)), le Fisher global, le R2 et le R2 ajusté, la somme des carrés des résidus (rss) et la somme des carrés ..etc.
Vous pouvez récupérer ces données pour réaliser un calcul en utilisant scalar comme dans l'exemple suivant
où est récupéré la somme des carrées des résidus stocké sous le nom du scalaire SCR. Ceci est utile pour calculer
soi-même certains tests (notamment les Fisher du test de Chow) que Stata ne calcule par forcément . :
scalar SCR=e(rss)
Si vous voulez récupérer les coecients estimés (de x1 dans l'exemple) pour, par exemple, calculer le t de student
à partir de l'écart-type estimé ((se) vous pouvez écrire :
8
display coefa1
display ecarttype
scalar student=_b[x1]/_se[x1]
display student
Vous retrouvez la valeur du t de Student qui était déjà donné dans le tableau de la régression.
Si vous voulez récupérer le coecient de la constant il faut remplacer le nom de la variable par _cons.
Vous pouvez également récupérer et stocker les valeurs estimées, comme celle de y estimé (Linear prediction) et
les résidus (Résidual). Il faut après la régression demander via le programme suivant ces valeurs :
predict yestimé, xb
predict res, re
3.2.3 L'utilisation des opérateurs dans une régression simple (ou multiple)
Dans certaines régression il est parfois nécessaire de créer des décalage temporels sur certaines variables. Par
exemple faire la régression de yt par rapport à x1t-1 et non pas par rapport à x1t. De même on peut vouloir faire
par exemple la régression de yt+1 par rapport à x1t. Il n'est pas nécessaire de créer ces variables retard (t-1) ou
forward (t+1). Il existe une syntaxe permettant d'utiliser ces variables :
3.2.4 Les tests d'hypothèse dans une régression simple (ou multiple)
Le premier test que l'on peut faire, après avoir vérier le R2, le F et le Student est celui de la normalité des
résidus de la régression. Les étapes du test sont les suivantes :
On faire la régression
0n récupère les résidus
on fait le test sur les résidus( sktest). Le test c'est H0 = les résidus sont normaux contre H1 = ils ne le sont
pas.
Dans le cas de notre exemple le programme est le suivant :
regress y x1
predict residu, re
sktest residu
9
. sktest residu
Vous obtenez le résultat précédant : la valeur du Skewness (assymétrie de la courbe), du Kurtosis (aplatissement),
du test joint (Jarque-Bera) et la probabilité de rejeter à tort H0. Ici vous avez 1,87% de chance de rejeter à tort
H0. Donc très peu de chance de rejeter et de vous tromper : donc les résidus ne sont pas normaux. Un graphique
des résidus montrent qu'eectivement il ne sont pas distribués selon une loi normale( faire histogram residu).
Le deuxième test est celui de l'hétéroscédasticité version Breusch-Pagan / Cook-Weisberg (qui est un
test du Khi2). La syntaxe du test est après avoir fait la régression : hettest.
regress y x1
estat hettest
. estat hettest
chi2(1) = 5.62
Prob > chi2 = 0.0178
L'hypothèse H0 est la variance est constante (homoscédasticité). Ici il y a 1,78% de chance rejeter à tort H0. Il
y a donc de neuroplasticité. Vous devez donc faire une régression robust (regres y x1, robust).
Vous pouvez faire un test de variable omise, qui est le test de Ramsey Reset. La syntaxe est la suivante :
regres y x1
ovtest
. ovtest
10
. estat ic
11
break structurel avec un date connue (c'est un test de Khi2). Les étapes du programme sont les suivantes :
on cherche le break
tsset temps
estat sbsingle
.
. estat sbsingle
1 2 3 4 5
........
Number of obs = 14
Full sample: 1 - 14
Trimmed sample: 4 - 12
Estimated break date: 4
Ho: No structural break
Exogenous variables: x1
Coefficients included in test: x1 _cons
Dans le cas de l'exemple proposé on obtient les résultats précédents où le break est après la 4ème période.
Ensuite on fait le test tout simplement :
estat sbknown, break(5)
Les résultats indiquent qu'il y a bien un break structurel à cette date. Mais cela n'exonère par du test de Chow.
On peut vouloir mettre en place un test de cusum ou cusum carré. Attention il faut télécharger le package
cusum6 qui n'est pas disponible dans toutes les versions de stata (taper cusum6 dans l'aide et laisse vous guider
pour eectuer le téléchargement en un click.
Le cusum permet d'étudier la stabilité du modèle estimé au cours du temps. Stata calculera la valeur du cusum
et vous fera les graphes. Si les coecients sont stables au cours du temps alors les résidus doivent rester dans les
intervalles dénis.
La syntaxe est :
0 0
4 14
temps
12
Ensuite en cliquent sur 'more' on obtient le graphe du cusum carré.
CUSUM squared
1
CUSUM squared
4 14
temps
On peut pour nir calculer le Durbin et Watson. Comme précédemment il faut faire la régression puis demander
la statististque qui s'obtient facilement en faisant estat dwatson
regress y x1
estat dwatson
. estat dwatson
regress y x1 x2 X3
. regress y x1 x2 x3
13
On note la qualité de qualité de l'ajustement avec un R2 de 0,93, un modèle avec des coecients globalement
signicatifs, et une seule variable qui a un coecient signicatif (x2).
Les tests qui peuvent être eectué restent les mêmes cependant on doit se poser la question de la colinéarité
entre les variables. On peut avoir une idée de celle-ci avec la matrice des corrélations mais le mieux reste de faire
un VIF test.
La matrice des corrélation donne le résultat suivant :
. pwcorr y x1 x2, sig star(5)
y x1 x2
y 1.0000
x1 0.9680* 1.0000
0.0000
regress y x1 x2 x3
estat VIF
. estat vif
x2 9.77 0.102372
x1 8.79 0.113726
x3 2.56 0.390459
Dans le cas de notre exemple il a bien un problème de colinéarité entre x1 et x2 pisuque le VIF est supérieur à
3.
14