Introduction a STATA
Ahmed Tritah, Université du Maine
Novembre 2014
Introduction
I On présente les éléments de base pour manipuler les données sous stata
I Stata est particuliérement adapté pour travailler sur des données individuelles
I Carectéristiques
I entièrement programmable
I commandes statistiques et econométriques évolutives
I trés larges variétés de graphique
I Support et aide en ligne formelle et informelle (StatList) I Stata permet d’e¤ectuer une étude entièrement "réplicable"
La syntaxe STATA
La commande use : appel des données existantes sous format stata (.dta)
I Deux possibilités
I les données sont dans votre répertoire de travail :cd (current directory) :
use census2c
I indiquer le chemin complet :
use"C :nAhmedncoursneconometriendatameust.census2c.dta"
I File)Open...chemin d’accés..
21. Wisconsin N Cntrl 4705.8 3020.7 29.40 41.1 17.5 20. Vermont NE 511.5 172.7 29.40 5.2 2.6 19. S. Dakota N Cntrl 690.8 320.8 28.90 8.8 2.8 18. Rhode Island NE 947.2 824.0 31.80 7.5 3.6 17. Pennsylvania NE 11863.9 8220.9 32.10 93.7 34.9 16. Ohio N Cntrl 10797.6 7918.3 29.90 99.8 58.8 15. N. Dakota N Cntrl 652.7 318.3 28.30 6.1 2.1 14. New York NE 17558.1 14858.1 31.90 144.5 62.0 13. New Jersey NE 7364.8 6557.4 32.20 55.8 27.8 12. New Hampshire NE 920.6 480.3 30.10 9.3 5.3 11. Nebraska N Cntrl 1569.8 987.9 29.70 14.2 6.4 10. Missouri N Cntrl 4916.7 3349.6 30.90 54.6 27.6 9. Minnesota N Cntrl 4076.0 2725.2 29.20 37.6 15.4 8. Michigan N Cntrl 9262.1 6551.6 28.80 86.9 45.0 7. Massachusetts NE 5737.0 4808.3 31.20 46.3 17.9 6. Maine NE 1124.7 534.1 30.40 12.0 6.2 5. Kansas N Cntrl 2363.7 1575.9 30.10 24.8 13.4 4. Iowa N Cntrl 2913.8 1708.2 30.00 27.5 11.9 3. Indiana N Cntrl 5490.2 3525.3 29.20 57.9 40.0 2. Illinois N Cntrl 11426.5 9518.0 29.90 109.8 51.0 1. Connecticut NE 3107.6 2449.8 32.00 26.0 13.5 state region pop popurb medage marr divr . list, sep(0)
(1980 Census data for NE and NC states)
. use "C:\Ahmed\cours\econometrie\datameust\census2c.dta"
Les types de variables
I voir la documentation :
I help data types
I Description des données : describe
Sorted by:
divr double %8.1f Divorces, '000
marr double %8.1f Marriages, '000
medage float %9.2f Median age, years
popurb double %8.1f 1980 Urban population, '000
pop double %8.1f 1980 Population, '000
region byte %-8.0g cenreg Census region
state str13 %-13s State
variable name type format label variable label storage display value
size: 1,134 (99.9% of memory free)
vars: 7 14 Jun 2006 08:48
obs: 21 1980 Census data for NE and NC states Contains data from C:\Ahmed\cours\econometrie\datameust\census2c.dta
. describe
_n et _N
I Les observations dans les données sont numérotées :
I list in 1/10 /*liste les observations de 1 à 10*/
I list in _N /*liste la dernières observations*/
I _n /*indice l’observation actuelle*/
browse if _n==15 /*a¢ che à l’écran la 15ième observation*/
I L’ordre des observations peut être manipulé
sort pop /*classe les observations du plus petit au plus élevé de la variable pop*/
generate et replace
I generatecrée une nouvelle variable
generate urbanized=popurb/pop /*taux d’urbanisation*/
summarize urbanized /*statistique descriptive simple sur urbanized*/
urbanized 21 .6667691 .1500842 .3377319 .8903645 Variable Obs Mean Std. Dev. Min Max . summarize urbanized
. generate urbanized=popurb/pop
I replace modi…e une variable existante
replace urbanized=100*urbanized /*% d’urbain*/
urbanized 21 66.67691 15.00843 33.77319 89.03645 Variable Obs Mean Std. Dev. Min Max . summarize urbanized
(21 real changes made)
. replace urbanized=100* urbanized
sort
I sort varlist /*classe les obersations dans un certains ordre dé…ni par varlist*/
I sortvar1 /*classe les obersations par ordre croissant de var1*/
I sortvar1var2 /*classe les observations par ordre croissant de var1 puis pour chaque valeur de var1 par ordre croissant de var2*/
Exemple :sort salaire age I gsort ( ou+) varlist
21. N Cntrl N. Dakota 652.7 20. N Cntrl S. Dakota 690.8 19. N Cntrl Nebraska 1569.8 18. N Cntrl Kansas 2363.7 17. N Cntrl Iowa 2913.8 16. N Cntrl Minnesota 4076.0 15. N Cntrl Wisconsin 4705.8 14. N Cntrl Missouri 4916.7 13. N Cntrl Indiana 5490.2 12. N Cntrl Michigan 9262.1 11. N Cntrl Ohio 10797.6 10. N Cntrl Illinois 11426.5 9. NE Vermont 511.5 8. NE New Hampshire 920.6 7. NE Rhode Island 947.2 6. NE Maine 1124.7 5. NE Connecticut 3107.6 4. NE Massachusetts 5737.0 3. NE New Jersey 7364.8 2. NE Pennsylvania 11863.9 1. NE New York 17558.1 region state pop . list region state pop . gsort region -pop
I gsort+var1 /*classe les
observations par ordre croissant de
var1*/
I gsort var1 /*classe les
observations par ordre décroissant de
var1*/
if et in
I in range /*restreint l’execution de la commande au sous ensemble d’observations indiqué par range
5. Michigan N Cntrl 9262.1 4. Ohio N Cntrl 10797.6 3. Illinois N Cntrl 11426.5 2. Pennsylvania NE 11863.9 1. New York NE 17558.1 state region pop . list state region pop in 1/5 . gsort -pop
21. New York NE 17558.1 20. Pennsylvania NE 11863.9 19. Illinois N Cntrl 11426.5 18. Ohio N Cntrl 10797.6 17. Michigan N Cntrl 9262.1 state region pop . list state region pop in -5/l 5. Rhode Island NE 947.2 4. New Hampshire NE 920.6 3. S. Dakota N Cntrl 690.8 2. N. Dakota N Cntrl 652.7 1. Vermont NE 511.5 state region pop . list state region pop in 1/5 . sort pop
I if exp varlist : restreint l’execution de la commande si l’expression est véri…ée :
10. Missouri N Cntrl 4916.7 . 9. Minnesota N Cntrl 4076.0 . 8. Michigan N Cntrl 9262.1 28.8 7. Massachusetts NE 5737.0 31.2 6. Maine NE 1124.7 . 5. Kansas N Cntrl 2363.7 . 4. Iowa N Cntrl 2913.8 . 3. Indiana N Cntrl 5490.2 29.2 2. Illinois N Cntrl 11426.5 29.9 1. Connecticut NE 3107.6 . state region pop medagel . list state region pop medagel in 1/10, sep(0) . sort state
(13 missing values generated) . generate medagel=medage if pop>5000
I Rq : stata attribue la valeur manquante "." aux observations qui ne remplissent pas la condition if
medage 8 30.65 1.363818 28.8 32.2 Variable Obs Mean Std. Dev. Min Max . summarize medage if pop>5000
medagel 8 30.65 1.363818 28.8 32.2 Variable Obs Mean Std. Dev. Min Max . summarize medagel
if exp et indicatrices
I On crée une indicatrice {0,1} en utilisant une condition booléaine qui, pour chaque observation, évalue si la condition est vraie (==1) ou fausse (==0)
I Ex. : Identi…er les états peu peuplés et trés peuplés
12. Connecticut 3107.6 1 0
11. Minnesota 4076.0 1 0
10. Wisconsin 4705.8 1 0
9. Missouri 4916.7 1 0
8. Indiana 5490.2 0 1
7. Massachusetts 5737.0 0 1
6. New Jersey 7364.8 0 1
5. Michigan 9262.1 0 1
4. Ohio 10797.6 0 1
3. Illinois 11426.5 0 1
2. Pennsylvania 11863.9 0 1
1. New York 17558.1 0 1 state pop smallpop largepop . list state pop smallpop largepop in 1/15, sep(0) (8 real changes made)
. replace largepop=1 if pop>5000 . gen largepop=0
(13 real changes made) . replace smallpop=1 if pop<=5000 . gen smallpop=0
I Avec condition booléaine
I gen
smallpop=(pop<=5000) if pop<.
I gen
largepop=(pop>5000) if pop<.
if exp versus by varlist
I if : pour restreintre l’analyse à certaines observations
divr 12 24.33583 19.684 2.142 58.809 marr 12 47.43642 35.29558 6.094 109.823 medage 12 29.525 .7008113 28.3 30.9 Variable Obs Mean Std. Dev. Min Max . summarize medage marr divr if region==2
divr 9 19.30433 19.57721 2.623 61.972 marr 9 44.47922 47.56717 5.226 144.518 medage 9 31.23333 1.023474 29.4 32.2 Variable Obs Mean Std. Dev. Min Max . summarize medage marr divr if region==1
I Pour des variables catégorielles : byvarlist
divr 12 24.33583 19.684 2.142 58.809 marr 12 47.43642 35.29558 6.094 109.823 medage 12 29.525 .7008113 28.3 30.9 Variable Obs Mean Std. Dev. Min Max -> region = N Cntrl
divr 9 19.30433 19.57721 2.623 61.972 marr 9 44.47922 47.56717 5.226 144.518 medage 9 31.23333 1.023474 29.4 32.2 Variable Obs Mean Std. Dev. Min Max -> region = NE
. by region, sort: summarize medage marr divr
I Attention : ne pas confondre le pre…x by varlist avec l’option by() qui accompagne certaines commandes
Total 21 30.25714 1.199821 28.3 32.2 N Cntrl 12 29.525 .7008113 28.3 30.9 NE 9 31.23333 1.023474 29.4 32.2 region N mean sd min max by categories of: region (Census region)
Summary for variables: medage
. tabstat medage, by(region) statistics(N mean sd min max)
I by varlist execute la commande sur toutes les combinaisons devarlist
divr 4 48.71475 8.091091 40.006 58.809 marr 4 88.6015 22.54513 57.853 109.823 medage 4 29.45 .5446711 28.8 29.9 Variable Obs Mean Std. Dev. Min Max -> region = N Cntrl, popsize = 2
divr 8 12.14637 8.448779 2.142 27.595 marr 8 26.85387 16.95087 6.094 54.625 medage 8 29.5625 .7998885 28.3 30.9 Variable Obs Mean Std. Dev. Min Max -> region = N Cntrl, popsize = 1
divr 4 35.64075 18.89519 17.873 61.972 marr 4 85.0645 44.61079 46.273 144.518 medage 4 31.85 .4509245 31.2 32.2 Variable Obs Mean Std. Dev. Min Max -> region = NE, popsize = 2
divr 5 6.2352 4.287408 2.623 13.488 marr 5 12.011 8.233035 5.226 26.048 medage 5 30.74 1.121606 29.4 32 Variable Obs Mean Std. Dev. Min Max -> region = NE, popsize = 1
. by region popsize, sort: sum medage marr divr
. generate popsize=smallpop+2*largepop /*popsize prend la valeur 1 si largepop==0 et 2 si largepop==1*/
Labels et notes
I On peut nommer (label) et a¤ecter des notes (notes) à des données, des variables et les modalités prises par une variable
popurb double %8.1f Population en zones urbaines, %
popsize float %9.0g Catégorie de taille de population
largepop float %9.0g Etats avec pop > 5 million, 1980 smallpop float %9.0g Etats avec pop <= 5 million, 1980
pop double %8.1f 1980 Population, '000
variable name type format label variable labelstorage display value . des pop smallpop largepop popsize popurb
. label var popsize "Catégorie de taille de population"
. label var smallpop "Etats avec pop <= 5 million, 1980"
. label var largepop "Etats avec pop > 5 million, 1980"
. label variable popurb "Population en zones urbaines, %"
. label data "Recensement US avec indicateurs de taille de population"
I label a¤ecte des étiquettes aux modalités d’une variable
4 West 3 South 2 N Cntrl 1 NE cenreg:
. label list cenreg /*liste les modalité des étiquettes contenues cenreg*/
region byte %-8.0g cenreg Census region variable name type format label variable labelstorage display value . describe region /*information sur la variable région*/
I Pour a¤ecter des étiquettes à une variables catégorielle 1. On crée une variable étiquette (correspondance entre les
valeurs et les étiquettes) :label define
2. On a¤ecte à une variable la variable étiquette :label values
medage 8 30.65 1.363818 28.8 32.2 Variable Obs Mean Std. Dev. Min Max -> popsize = > 5 million
medage 13 30.01538 1.071483 28.3 32 Variable Obs Mean Std. Dev. Min Max -> popsize = <= 5 million
. bys popsize: sum medage /*moyenne pour chaque modalité de popsize*/
Catégorie de taille de population popsize float %12.0g popsizelbl
variable name type format label variable labelstorage display value . des popsize
. label values popsize popsizelbl /*affecte les étiquettes*/
. label define popsizelbl 1 "<= 5 million" 2 "> 5 million" /*correspondace entre les modalités et les étiquettes*/
I notes : a¤ecte des notes aux données aux variables
2. value label definie pour cette variable
1. variable qui distingue les états par la taille de leur population popsize:
1. Echantillon des données de recensement, préparé le 18 Feb 2011 17:00 _dta:
. notes /* liste l'ensembles des notes*/
.
Note: dataset has changed since last saved Sorted by: popsize
* indicated variables have notes * Catégorie de taille de population popsize float %12.0g popsizelbl
largepop float %9.0g Etats avec pop > 5 million, 1980 smallpop float %9.0g Etats avec pop <= 5 million, 1980
divr double %8.1f Divorces, '000
marr double %8.1f Marriages, '000
medage float %9.2f Median age, years
popurb double %8.1f Population en zones urbaines, %
pop double %8.1f 1980 Population, '000
region byte %-8.0g cenreg Census region
state str13 %-13s State
variable name type format label variable label storage display value
size: 1,386 (99.9% of memory free) (_dta has notes) vars: 10 14 Jun 2006 08:48
obs: 21 Recensement US avec indicateurs de taille de population Contains data from C:\Ahmed\cours\econometrie\datameust\census2c.dta
. des /*racourci pour describe*/
. notes popsize: value label definie pour cette variable
. notes popsize: variable qui distingue les états par la taille de leur population . notes: Echantillon des données de recensement, préparé le TS
varlist
I La plupart des commandes stata requiert une liste de variable varlist
I varlist peut contenir
I le nom des variables
I var : toutes les variables qui se terminent par var ( pop==pop,smallpop,largepop)
I une liste tel que, cat1-cat4 : toutes les variables comprises entre cat1 et cat4
drop et keep
I drop varlist :e¤ace des données les variables contenues dans varlist
I keep varlist: ne garde que les variables contenues dans varlist
I On peut également utiliser ifet in
I drop ifexp : e¤ace si l’expressionexp est véri…ée
I drop inrange : e¤ace les observation indicées par range
I drop ifexp : garde les seules observation qui véri…eexp
I drop inrange : e¤ace les observation indicées par range
Example
keep if smallpop/*ne garde que les petits états*/
drop if smallpop/*ne garde que les états trés peuplés*/
rename et renvars
I Pour renommer une variable :
renameold_varname new_narname
I renpfix modi…e le pré…xe d’une variable (Ex, salaire80, salaire81 en sal80, sal81)
renpfix salaire sal
I Façon plus générale de renomer une variable voir renvars
or as specified by a user supplied rule
renames variables by changing prefixes, postfixes, substrings, 3/01 pp.4--6; STB Reprints Vol 10, pp.41--44
(help renvars if installed) . . . N. J. Cox and J. Weesie STB-60 dm88 . . . Renaming variables, multiply and systematically
trimend() option added and help file updated Q4/05 SJ 5(4):607
(help renvars if installed) . . . N. J. Cox and J. Weesie SJ-5-4 dm88_1 . . . Software update for renvars Search of official help files, FAQs, Examples, SJs, and STBs
Search: (1) Official help files, FAQs, Examples, SJs, and STBs Keywords: for renvars
Keyword search . look for renvars
La commande save
I Pour enregister les données sur lesquelles vous travailler :
save mesdonnes.dta, [replace]
I Si l’optionreplaceest invoquée STATA remplacer
mesdonnes.dtadéjà en mémoire parmesdonnes.dtaactuelle
I Les données sont enregistrées dans le répertoire de travail indiqué parcd
I Pour les enregistrer sous un autre répertoire indiquez le chemin ("C :nAhmedncoursn...nmesdonnes.dta" )
I STATA permet d’exporter des données sous le format ASCII pour être lu par un autre programme (SAS, excel, etc.).
Importer des données : insheet et in…le
I La commande à utiliser dépend du type de données
I Données délimitées (espace, tabulation, vergule) :insheet mesdonnes.txt
I Données non-délimitées avec ou sans dictionnaire (dictionaire.dct) :infile
I Pour les autres types de données :infix I Pour plus de détails :
help infiling ou voir "[U]21Inputtingdata"
3. An observation must be on only one line.
cannot be space separated.
2. The data must be tab separated or comma separated, but not both simultaneously, and 1. insheet reads text (ASCII) files created by a spreadsheet or database program.
insheet (see [D] insheet) Summary of the different methods
non-Stata data into memory. See [U] 21 Inputting data for more details.
This entry provides a quick reference for determining which method to use for reading Description
[D] infile Overview of reading data into Stata Title
help infiling
La fonction cond() (voir help functions)
I cond(C,xT,xF) : recode une variable xT lorsque C est vraie et xF lorsque C est fausse
Total 5142.903 30.25714 marr <= 2 divr 4277.178 30.08889 marr > 2 divr 5792.196 30.38333 netmarr2x pop medage by categories of: netmarr2x Summary statistics: mean . tabstat pop medage, by(netmarr2x) . label values netmarr2x netmarr2xc
. label define netmarr2xc 1 "marr > 2 divr" 2 "marr <= 2 divr"
> */ inférieur et supérieur à 2*/
> e net/*
. gen netmarr2x=cond(marr/divr>2,1,2) /* sépare les états qui ont un taux de marriag
Recoder les variables discretes et continues
I La commanderecode:
recode oldcode (2=5) (3=8)(5/7=12), gen(newcode)/ on gen´ ere une variable newcode qui recode la variable oldcode` /
I La fonctionrecode() :
Total 21 100.00
33 2 9.52 100.00 32 4 19.05 90.48 31 4 19.05 71.43 30 8 38.10 52.38 29 3 14.29 14.29 medagebrack Freq. Percent Cum.
. tabulate medagebrack
. gen medagebrack=recode(medage,28,29,30,31,32,33)
I La fonctionautocode(n)génère n interval identique entre une valeur maximale et minimale.
Graphique sous stata [help graph intro]
(file tpgraph.gph saved) (start=29, width=1)
> saving(tpgraph, replace)
> title(Northeast and North Central States: Median Age) ///
> xtitle(Upper limit of median Age) ///
> fcolor(gs15) addlabels addlabopts(mlabposition(6)) ///
. histogram medagebrack, discrete frequency lcolor(black) ///
3 8
4 4
2
02468Frequency
28 29 30 31 32 33
Upper limit of median Age Northeast and North Central States: Median Age
Gestion des données manquantes sous STATA
I Le code pour valeur manquante (vm) est :.
I .est considéré comme la valeur la plus élevée, la condition if exp < . permet d’exclure les vm de l’execution d’une commande.
I Par défaut les vm sont exclues des calculs : toute fonction qui appelle des données manquantes produira des données
manquantes. Pour la regression STATA exclue les observations avec vm sur au moins une des variables.
I Attention certaines commandes STATA traite les vm de façon non-standard : cas des fonction invoquées par la commande egen
egen meanrow =rowmean(x1,x2,x3) /*moyenne ligne*/
I mvdecodeet mvencodegénéreent d’autres codage pour les vm : utile pour importer ou exporter des données (voir help...)
Conversion valeur numérique-alphanumérique (string)
I STATA distigue 2 types de variables : numérique et alphanumérique (string)
I Plusieurs commandes possible pour passer de alpha à num :
genhhid =real(household)/*les valeurs qui ne peuvent pas être lues de façon numérique sont codées manquantes*/
I destring: génère une nouvelle variable qui transforme la variable spéci…é en numérique
I encode : a¤ecte des valeurs numérique aux valeurs alphanum et a¤ecte comme étiquettes à la variable transformé les valeurs aplhanum
I Voir aussi destring et tostring
Fonctions prédé…nies pour les commandes generate et replace
I Ces fonctions sont regroupé sous le nom functions (tappez help programming functions) :
generatenewvar=function()
Exemple : group(n) : crée n groupe de taille équivalente et prenant les valeur 1,2, ...,n. Sin un 100 on crée des percentiles
I Voir aussi les fonctions inrange(), inlist() et sum(). Cette dernière fonctionne somme une variable en colonne, elle est trés utile avec by. Par exemple l’expérience d’un individu à la date t est la somme de ses anciennetés sur l’ensemble des emplois occupé :
bysID emploie year :generateexperience=sum(anc)
La commande egen [voir help egen]
I Syntax similaire à generate
egen newvar =function(varlist)
I mais avec di¤érences importantes :
I Les fonctions de egen ne sont pas toutes compatible avecby varlist
I les indices d’observation _n et _N ne peuvent pas être explicitement utilisé avec egen
I Les fonction ligne (sur les variables) de egen :
I somme ligneegen y=rowmean(Y1,Y2,Y3) ouegen
y=rowmean(Y ) /*moyenne deY1,Y2,Y3ou moyenne de toutes les variables dont le nom débute par Y*/
I rowmax()(maximum) ;rowmin()(minimum),rowtotal() et rowsd()(écartype)
I egen() utile pour calculer des statistiques par groupe
d’obervations (individus d’une même ville, famille, entreprises d’un même secteur..) : ce sont des opérations en colonne sur une variable et un sous ensemble d’observation.
I count() ; mean() ;min(), max() et total()
I Parmis les fonctions statistiques utiles on a : iqr() (écart intercartiles) ; kurt()kurtosis ;mad() (median absolute deviation), median(); mode(),pc()(pourcentage),
pctile(), p(n)(nième percentile), rank(),sd(),skew() (skewness), etc.
Calcule et transormation par groupes d’observation : by
I le pré…xby varlist qui précéde une commande est utile pour obtenir des statistiques sur des sous-groupes
I Dans ce cas les indices _n et _N sont relatives aux groupes de…nis par by varlist
21. N Cntrl N. Dakota 652.7 58865.67 20. N Cntrl S. Dakota 690.8 58212.95 19. N Cntrl Nebraska 1569.8 57522.18 18. N Cntrl Kansas 2363.7 55952.36 17. N Cntrl Iowa 2913.8 53588.68 16. N Cntrl Minnesota 4076.0 50674.87 15. N Cntrl Wisconsin 4705.8 46598.9 14. N Cntrl Missouri 4916.7 41893.14 13. N Cntrl Indiana 5490.2 36976.45 12. N Cntrl Michigan 9262.1 31486.23 11. N Cntrl Ohio 10797.6 22224.15 10. N Cntrl Illinois 11426.5 11426.52 9. NE Vermont 511.5 49135.28 8. NE New Hampshire 920.6 48623.83 7. NE Rhode Island 947.2 47703.22 6. NE Maine 1124.7 46756.06 5. NE Connecticut 3107.6 45631.4 4. NE Massachusetts 5737.0 42523.83 3. NE New Jersey 7364.8 36786.79 2. NE Pennsylvania 11863.9 29421.97 1. NE New York 17558.1 17558.07 region state pop totpop . list region state pop totpop, sepby(region) .
. by region: generate totpop=sum(pop) /*somme cumulé des populations des états pour chaque régions*/
. gsort region -pop /*ordonne les obersvation par ordre décroissant*/
(1980 US Census data with population size indicators) . use census2d
12. N Cntrl 36976.45 region totpop -> region = N Cntrl 9. NE 17558.07
region totpop -> region = NE
> de chaque région*/
. by region: list region totpop if _n==_N /*liste la population///
I Une alternative
15. N Cntrl Wisconsin 4705.8 4905.473 14. N Cntrl Missouri 4916.7 4905.473 13. N Cntrl Indiana 5490.2 4905.473 12. N Cntrl Michigan 9262.1 4905.473 11. N Cntrl Ohio 10797.6 4905.473 10. N Cntrl Illinois 11426.5 4905.473 9. NE Vermont 511.5 5459.476 8. NE New Hampshire 920.6 5459.476 7. NE Rhode Island 947.2 5459.476 6. NE Maine 1124.7 5459.476 5. NE Connecticut 3107.6 5459.476 4. NE Massachusetts 5737.0 5459.476 3. NE New Jersey 7364.8 5459.476 2. NE Pennsylvania 11863.9 5459.476 1. NE New York 17558.1 5459.476 region state pop meanpop . list region state pop meanpop in 1/15, sepby(region)
. by region: egen meanpop=mean(pop) /*la population moyenne par région*/
21. N Cntrl > 5 million Indiana 5490.2 9244.112 20. N Cntrl > 5 million Michigan 9262.1 9244.112 19. N Cntrl > 5 million Ohio 10797.6 9244.112 18. N Cntrl > 5 million Illinois 11426.5 9244.112 17. N Cntrl <= 5 million Nebraska 1569.8 2736.153 16. N Cntrl <= 5 million Missouri 4916.7 2736.153 15. N Cntrl <= 5 million S. Dakota 690.8 2736.153 14. N Cntrl <= 5 million Wisconsin 4705.8 2736.153 13. N Cntrl <= 5 million N. Dakota 652.7 2736.153 12. N Cntrl <= 5 million Kansas 2363.7 2736.153 11. N Cntrl <= 5 million Iowa 2913.8 2736.153 10. N Cntrl <= 5 million Minnesota 4076.0 2736.153 9. NE > 5 million New York 17558.1 10630.96 8. NE > 5 million Pennsylvania 11863.9 10630.96 7. NE > 5 million New Jersey 7364.8 10630.96 6. NE > 5 million Massachusetts 5737.0 10630.96 5. NE <= 5 million Rhode Island 947.2 1322.291 4. NE <= 5 million New Hampshire 920.6 1322.291 3. NE <= 5 million Connecticut 3107.6 1322.291 2. NE <= 5 million Vermont 511.5 1322.291 1. NE <= 5 million Maine 1124.7 1322.291 region popsize state pop meanpop2 . list region popsize state pop meanpop2, sepby(region) .
> dans les états les plus et les moins peuplé de chaque région*/
. bys region popsize: egen meanpop2=mean(pop) /*population moyenne///
. **même calcule mais avec plusieurs variable de groupes
I Pour générer des données de stat. descrtive par groupes voir commande collapse
Les macro locales
I Une macro est une variable de stockage qui garde en mémoire un objet tel que la nom d’une variable, un nombre, une chaine de caractère (string), une liste, etc.
I Lorsque la macro est invoquée elle doit étre entourée des signes ‘et ’:
111 112 136 134 . display "`ctycode'"
USA FRA DEU GBR . display "`country'"
. local ctycode 111 112 136 134 . local country USA FRA DEU GBR
Boucle sur les variables : forvalues et foreach
I forvalues et foreachpermettent d’e¤ectuer des procédures communes sur des variablesdes boucles
I Ex. on dispose de trois variables de PIB, gdp1, gdp2 et gdp3.
La similarité des noms permet d’utiliser forvalues pour obtenir des statitiques ou pour transformer ces variables
lngdp4 400 7.886774 .5983831 5.665983 8.729272 Variable Obs Mean Std. Dev. Min Max lngdp3 400 7.987095 .537941 6.327221 8.736859 Variable Obs Mean Std. Dev. Min Max lngdp2 400 7.942132 .5828793 4.892062 8.760156 Variable Obs Mean Std. Dev. Min Max lngdp1 400 7.931661 .59451 5.794211 8.768936 Variable Obs Mean Std. Dev. Min Max 4. }
3. sum lngdp`i'
2. generate double lngdp`i'=log(gdp`i') . forvalues i=1/4 {
. use gdp4cty.dta, clear
Boucle sur les variables : forvalues et foreach
I Dans l’exemple précédent 1/4est une liste numérique (numlist)successive et ordonnée, une autre liste est 10(5)50, i.e. de 10 à 50 par incrément de 5.
I En place d’une liste numérique on peut disposer d’une liste de caractères UKgdp, USgdp, DEgdp et FRgdp. Dans ce cas on invoqueforeach pour e¤ectuer la boucle :
lngdpFR 100 5.691897 1.118468 1.145947 6.906053 Variable Obs Mean Std. Dev. Min Max (300 missing values generated)
lngdpDE 100 5.794153 1.22636 .8643616 6.907202 Variable Obs Mean Std. Dev. Min Max (300 missing values generated)
lngdpUK 100 5.831589 .9965726 1.349706 6.90541 Variable Obs Mean Std. Dev. Min Max (300 missing values generated)
lngdpUS 100 6.126449 .7663774 1.685587 6.9001 Variable Obs Mean Std. Dev. Min Max (300 missing values generated)
4. }
3. summarize lngdp`var'
2. gen double lngdp`var'=log(`var'gdp) . foreach var in US UK DE FR {