En italique, commandes associées à un chapitre ultérieur
4.1Affectation du répertoire de travail
La commande cd (Current Directory), permet d’indiquer le chemin d’accès du répertoire où se trouve la base à ouvrir ou à enregistrer. Si aucun chemin d’accès n’est spécifié, Stata ira chercher la base dans le répertoire par défaut (normalement C: ou D:).
Syntaxe:
cd "path"
Remarque
Avec cette commande, un seul repertoire de travail est actif. On peut élargir les possibilités en affectant des répertoires avec des macros variables locales ou globales
4.2Ouverture et sauvegarde d’une base
4.2.1 Ouverture
Commandeuse
Syntaxe sans chargement d’un répertoire:
use "path/nom_base.dta" [,clear]
L’option clear permet d’effacer une base en cours d’utilisation. Il est conseillé de mettre cette option systématiquement. On peut également utiliser clear comme instruction avant d’ouvrir une base. on ne supprime pas la base du répertoire (commande erase), elle est juste écrasée dans la session.
Syntaxe avec affectation d’un répertoire:
cd "path"use "nom_base.dta", clear
ou
cd "path"clearuse "nom_base.dta"
Remarque: pour les bases d’exemples préinstallées, on utilise la commande sysuse. Dans les fichiers d’aide, des exemples font également appels a des bases localisées sur des serveurs qui s’ouvrent avec la commande webuse.
sysuse auto, clear
Note
Ouverture d’une base stockée sur un git [github, gitlab …]
Dans un premier temps, comme pour cd il faut charger le répertoire où se trouve localisé la base, avec la commande webuse set. Par exemple sur mon dépôt git, une base d’exemple (logement.dta) pour une commande se trouve à cette adresse: https://github.com/mthevenin/stata_graphiques/tree/main/programmation/gjoint
Pour charger ce répertoire à distance:
webuse set "https://raw.githubusercontent.com//mthevenin/stata_graphiques/master/ressources/gjoint"
On remarque que le chemin n’est pas identique au simple lien (spécificité des dépôt de type git).
Il suffit ensuite de charger la base avec webuse
webuse logement.dta, clear
On revient au dépôt officiel de stata avec webuse set
(prefix now "https://raw.githubusercontent.com//mthevenin/stata_graphiques/mast
> er/ressources/gjoint")
(prefix now "https://www.stata-press.com/data/r18")
4.2.2 Sauvegarde
Commandessave ou saveold
save "path/nom_base.dta" [, replace]
L’option replace permet d’écraser une version antérieure de la base. Obligatoire à partir de la 2ème sauvegarde, mais on peut l’utiliser dès la première sauvegarde (un message d’avertissement s’affiche).
sysuse auto, clearsave auto, replace
(1978 automobile data)
file auto.dta saved
saveold permettra d’ouvrir une bases avec une version ancienne de Stata non compatibles avec la version courante. Cela commence à devenir moins critique, mais avec save il ne sera plus possible d’ouvrir une base avec une version inférieure à la 13 ou inférieur à la 13 (passage à l’encodage Utf8 avec la version 14).
saveold "path/nom_base.dta", [replace] [version(#)] // # = numéro de la version de Stata:
Remarque:
Ecrire l’extension .dta n’est pas obligatoire
Les doubles quotes ne sont obligatoires que s’il y a un espace dans le chemin d’accès et/ou dans le nom de la base
use "ma base", clear use ma_base, clear
4.2.3 Autres formats
4.2.3.1 Importation/Exportation
Excel et fichiers textes (.txt, .csv)
Le plus simple est passer par le menu: files + [Import ou Export] qui dispose d’une fenêtre de prévisualisation.
Pour excel les commandes sont import excel et export excel
Pour des fichiers textes type csv (R), les commandes sont import delimited et export delimited
Depuis la version 16 de Stata il est possible d’importer directement des formats sas7bdat. Pas d’exportation possible.
Pour les versions antérieure, la solution installée via sasxport n’est pas satisfaisante. Il est alors conseillé d’utiliser le package externe savasas
Sas => Stata [importation]: commande usesas
Stata => Sas [exportation] : commande savasas
Si le chemin d’accès à l’exécutable de SAS Windows n’est pas reconnu, il faut récupérer et éditer le fichier sasexe.do (à partir de la ligne 169), dont l’accès est donné dans le fichier d’aide.
Pour l’exportation, on peut générer un catalogue de format,en dur, avec l’option format.
SPSS
Depuis la dernière version de Stata (16), il est possible d’importer directement des bases de ce format.
Pas de possibilité d’exportation directe.
4.3 Création d’une base de donnée, ajout d’observations
On peut créer une base de donnée, “vide”, avec la commande set obs n_obs
clear set obs 100
A une base existante, on peut ajouter des observations (en valeurs manquante) avec la commande insobs nbre_observation. Par défaut ces observations s’ajouteront après la dernière ligne (option before/after(position) pour renseigner la position de la première observation ajoutée.
insobs 10 // ajout de 10 observations à la base
5Décrire le contenu d’une base
5.0.1 Commande describe
Permet, sous forme de tableau, d’avoir des renseignement sur une base de donnée: taille en mémoire, nombre d’observations, descriptif des variables (nom, format, labels). La commande est régulièrement tronquée jusqu’à des
Base courante (ouverte)
Syntaxe:
describe [varlist , short]
sysuse auto.dta, cleardes
(1978 automobile data)
Contains data from C:\Program Files\Stata18/ado\base/a/auto.dta
Observations: 74 1978 automobile data
Variables: 12 13 Apr 2022 17:45
(_dta has notes)
-------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-------------------------------------------------------------------------------
make str18 %-18s Make and model
price int %8.0gc Price
mpg int %8.0g Mileage (mpg)
rep78 int %8.0g Repair record 1978
headroom float %6.1f Headroom (in.)
trunk int %8.0g Trunk space (cu. ft.)
weight int %8.0gc Weight (lbs.)
length int %8.0g Length (in.)
turn int %8.0g Turn circle (ft.)
displacement int %8.0g Displacement (cu. in.)
gear_ratio float %6.2f Gear ratio
foreign byte %8.0g origin Car origin
-------------------------------------------------------------------------------
Sorted by: foreign
Base stockée (non ouverte)
On peut également décrire le contenu d’une base en format .dta en mémoire et non ouverte avec l’argument using "path/nombase"
Contains data 1980 Census data by state
Observations: 50 2 Dec 2020 09:21
Variables: 15
-------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-------------------------------------------------------------------------------
state str13 %-13s State
state2 str2 %-2s Two-letter state abbreviation
region byte %-8.0g cenreg Census region
pop long %12.0gc Population
poplt5 long %12.0gc Pop, < 5 year
pop5_17 long %12.0gc Pop, 5 to 17 years
pop18p long %12.0gc Pop, 18 and older
pop65p long %12.0gc Pop, 65 and older
popurban long %12.0gc Urban population
medage float %9.2f Median age
death long %12.0gc Number of deaths
marriage long %12.0gc Number of marriages
divorce long %12.0gc Number of divorces
drate int %9.0g Deathrate
age byte %9.0g Age
-------------------------------------------------------------------------------
Sorted by:
Sauf exceptions, comme la petite base d’exemple utilisée ici, penser à bien filtrer les informations souhaitées en termes de variables et d’observations.
Information sur les labels affectés aux variables
Commande labelbook et label list
labelbook: affiche les informations sur les labels affectés aux modalités des variables.
labelbook [nom_label]
labelbook origin
-------------------------------------------------------------------------------
Value label origin
-------------------------------------------------------------------------------
Values Labels
Range: [0,1] String length: [7,8]
N: 2 Unique at full length: yes
Gaps: no Unique at length 12: yes
Missing .*: 0 Null string: no
Leading/trailing blanks: no
Numeric -> numeric: no
Definition
0 Domestic
1 Foreign
Variables: foreign
label list [nom_label] donne seulement l’affectation des labels aux valeurs.
labellist origin
origin:
0 Domestic
1 Foreign
5.1Tri, doublon, position des variables
5.1.1 Tri d’une base
Commande sort
sort varlist
La commande sort n’effectue que des tris croissants. Pour faire un tri décroissant, on peut utiliser la commande gsort. Tris croissants et décroissant peuvent se succéder dans une logique de cluster.
sort varlist => tri croissant
gsort + var1 => croissant var1
gsort - var1 => décroissant var1
gsort + var1 - var2 => croissant var1 et décroissant var2 dans chaque strate de var1
Le tri d’une peut/doit être réalisé lorsqu’on veut répéter une instruction avec le préfixe bysort: bysort varlist: instruction. Il est imposé lorsqu’on souhaite apparier des bases [voir chapitre 6]
* tri croissant sur la variable pricesort price* tri décroissant sur la variable prix pour chaque niveau de la variable foreigngsort + foreign - price
5.1.2 Repérage et suppression des doublons
Repérage et suppression des doublons
Commande duplicates list/tag/drop [varlist]
Permet de lister, repérer (avec gen(varname) ) ou supprimer des observations répliquées. Si la liste de variables n’est pas renseignée, elles toutes sont utilisées.
Syntaxe:
duplicates list [varlist]duplicates tag [varlist], gen(var)duplicates drop [varlist]
5.1.3 Modifier la place des variables dans la base
Commande order
Syntaxe:
order varlist, [first/last] [after/before(varname)]
order foreign, firstorder rep78, after(foreign)des
Contains data from C:\Program Files\Stata18/ado\base/a/auto.dta
Observations: 74 1978 automobile data
Variables: 12 13 Apr 2022 17:45
(_dta has notes)
-------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-------------------------------------------------------------------------------
foreign byte %8.0g origin Car origin
rep78 int %8.0g Repair record 1978
make str18 %-18s Make and model
price int %8.0gc Price
mpg int %8.0g Mileage (mpg)
headroom float %6.1f Headroom (in.)
trunk int %8.0g Trunk space (cu. ft.)
weight int %8.0gc Weight (lbs.)
length int %8.0g Length (in.)
turn int %8.0g Turn circle (ft.)
displacement int %8.0g Displacement (cu. in.)
gear_ratio float %6.2f Gear ratio
-------------------------------------------------------------------------------
Sorted by: foreign
Cette opération est particulièrement pour organiser sa base de données après la création de nouvelles variables.
5.2Description statistique des variables
Dans les menus de l’interface principale: Statistics => Summaries, tables & tests
5.2.1 Variables quantitatives
5.2.1.1 Tableaux d’indicateurs
Note
Les commandes qui sont rapidement décrites afficheront des indicateurs communs, typiquement la moyenne. Elles se distinguent par la forme de leur output facilitant plus ou moins les comparaisons, les possibilités offertes en termes de pondération, et sur la récupération des résultats (macro).
Commande summarize
Comme son l’indique, la commande summarize, avec l’option detail (d) donne un résumé complet de la distribution d’une variable quantitative: moyenne, variance, quantiles, symétrie, applatissement ..nom l’indique l.)
Syntaxe:
summarize varlist [, detail]
Si on indique pas le nom d’au moins une variable, toutes les variables de la base seront sélectionnées.
La commande peut-être tronquée jusqu’à sum [Warning: il existe également une fonction sum pour générer des cumuls lors d’une création de variable - voir chapitre 5].
N’affiche que la moyenne et ses statistiques associées. L’option over permet de comparer les valeurs moyennes des modalités d’une variable catégorielle (over(varname)) ou un croisement des modalités de plusieurs variables (over(varlist))
Mean estimation Number of obs = 74
-----------------------------------------------------------------
| Mean Std. err. [95% conf. interval]
----------------+------------------------------------------------
c.price@foreign |
Domestic |
Avantage: output synthétique si la moyenne de plusieurs groupes comparées
Inconvénients: récupération des résultats via une matrice (on oublie)
tabstat
Permet de sélectionner les indicateurs avec l’option stat() (par défaut la moyenne). L’option by() permet de comparer le ou les indicateurs pour chaque niveau d’une variable catégorielle. Dans ce cas tabstat affiche également les résultats sur l’ensemble des observations (sinon ajouter l’option nototal).
tabstat price tabstat price, by(foreign)
Variable | Mean
-------------+----------
price | 6165.257
------------------------
Summary for variables: price
Group variable: foreign (Car origin)
foreign | Mean
---------+----------
Domestic | 6072.423
Foreign | 6384.682
---------+----------
Total | 6165.257
--------------------
Extrait de l’aide tabstat (help tabstat)
mean mean count count of nonmissing observations n same as count sum sum max maximum min minimum range range = max - min sd standard deviation variance variance cv coefficient of variation (sd/mean) semean standard error of mean (sd/sqrt(n)) skewness skewness kurtosis kurtosis p1 1st percentile p5 5th percentile p10 10th percentile p25 25th percentile median median (same as p50) p50 50th percentile (same as median) p75 75th percentile p90 90th percentile p95 95th percentile p99 99th percentile iqr interquartile range = p75 - p25 q equivalent to specifying p25 p50 p75
Si on souhaite ajouter la médiane
tabstat mpg, by(foreign) stat(meanmedian)
Summary for variables: mpg
Group variable: foreign (Car origin)
foreign | Mean p50
---------+--------------------
Domestic | 19.82692 19
Foreign | 24.77273 24.5
---------+--------------------
Total | 21.2973 20
------------------------------
5.2.1.2 Graphiques
[MAJ EN COURS: bcp de nouveautés]
Juste une rapide présentation de quelques visualisations permettant d’explorer des distributions.
Une seule distribution: graph box/hbox , histogram, violinplot (externe)
Plusieurs distributions: violinplot (externe) Deux distribution croisée: hexplot (externe), gjoint (externe)
Dans le langage de Stata, ce type de graphique est appelé oneway.
L’altération de son aspect avec les options n’est pas très flexible, surtout au niveau des couleurs.
Pour les histogrammes, il y a une version twoway qui permet d’empilé plusieurs histogrammes dans un même graphique, mais généralement la visualisation n’est pas optimale. Préférer en ce cas là une approche par les densités (voir violinplot - comparaison III).
Conseil de sémiologie graphique: garder l’axe quantitatif/continu sur les abcisses .
Violinplot (Ben Jann)
Toujours beaucoup d’options dans les commandes de magik B.Jann. Se reporter à son tutoriel sur github pour l’installation (nécessite l’installation de dépendances) Lien
violinplot mpg, fillviolinplot mpg, nobox over(foreign) left overlay nomedian dscale(.) violinplot mpg, fill over(foreign)violinplot mpg, fill split(foreign) horizontal
Deux variables quantitatives
Une nuage de point pêche rapidement lorsque le nombre d’observations augmente, par exemple audelà de 200.
Solutions:
Courbes de niveaux
Heatplot/hexplot: l’idée est de visualiser un histogramme “vu du dessuss”, la hauteurs des barres étant données par un différentiel de couleur issues d’une palette séquentielle (du clair au foncé par exemple).
ssc install heatplot, replace
Il peut-être intéressant d’ajouté les distributions marginales des deux variables. J’ai programmé une petite commande (encore en version très alpha): gjoint. Tout le mérite revient à B.Jann pour la commande hexplot (j’ai juste combiné hexplot avec des histogrammes).
net install gjoint, from("https://raw.githubusercontent.com/mthevenin/stata_graphiques/master/ressources/gjoint/") replace
La principale commande est tabulate (tab). On peut l’utiliser avec des variables de type string.
Syntaxe (tableau croisé):
tab var1 var2 [, mis nofreq row col sort ......]
Par défaut, l’ordre d’affichage suis la valeur de la modalité si la variable est de type numérique et l’ordre alphabétique pour une variable de type caractère. On peut utiliser l’option sort pour afficher par ordre croissant des effectifs observés [ou utiliser la commande externe tabsort qui offre plus de possibilités]
Autres commandes (externe): fre [B.Jann], tabm [NJ.Cox], tabsort [NJ.Cox]
Les frames permettent de travailler en parallèle sur plusieurs bases, sans switcher avec des opérations successives d’enregistrement/ouverture (save/use).
Sur l’interface principale, le contenu d’une frame (base de données) est affiché de manière traditionnelle. On peut faire des opérations sur les autres frames déclarées simultanément.
La première base ouverte lors de l’ouverture d’une session est déclarée comme frame par défaut.
Les frames peuvent être liées entre elles avec une clé d’identification commune.
Importations partielles de variables ou d’observations d’une frame à l’autre.
Permet de générer une variable dans une frame en utilisant des variables d’une ou plusieurs autres frames. Il n’est donc pas nécessaire d’apparier les bases entre elles en amont.
On ne verra ici que quelques manipulations de bases, la liaison de frames sera traitée dans le chapitre 6.
frame dir ou frame mist
frame dirframe list
default 74 x 12; 1978 automobile data
default 74 x 12; 1978 automobile data
sysuse auto, clearframe dir
(1978 automobile data)
default 74 x 12; 1978 automobile data
frame rename
On renomme une frame avec ancien nomnouveau nom
frame reset// voir plus loin - commande ici seulement nécessaire pour compatibilité avec Quartosysuse auto, clearframe renamedefault autoframe dir
(1978 automobile data)
auto 74 x 12; 1978 automobile data
Note
Autre façon de procéder (et surement meilleure):
frame create autoframe auto: sysuse auto, clear
frame nom_frame: ou frame nom_frame {}
On peut exécuter une commande en la préfixant par frame nom_frame:
Pour une série de commandes, il suffit d’enchasser cette série dans des crochets
Permet de copier à l’idendique une frame frame copy nom_frame nouveau_nom.
Dans l’exemple qui suit on va une frame à partir de la base auto, frame prix, en conservant avec seulement les variables foreign et price.
frame copy auto prixframe dir
auto 74 x 12; 1978 automobile data
prix 74 x 12; 1978 automobile data
Comme indiqué précédemment, on est pas obligé de charger une base déclarée en frame pour effectuer des opérations dessus. On peut donc conserver les deux seules variables foreign et price tout en gardant la base auto chargée.
frame prix: keep foreign priceframe dir
auto 74 x 12; 1978 automobile data
* prix 74 x 2; 1978 automobile data
Note: Frames marked with * contain unsaved data.
La frame prix ne comporte donc plus que deux variables.
On va supprimer la variable make de la base/frame auto
drop make
frame change
Permet de switcher d’une frame à une autre. Ici ce sont les informations de la frame prix qui seront chargée dans l’interface de Stata
Du côté de la frame auto, base chargée initialement, on note que la suppression de la variable make a bien été enregistrée malgré le change de frame.
frame auto: des
Contains data from C:\Program Files\Stata18/ado\base/a/auto.dta
Observations: 74 1978 automobile data
Variables: 11 13 Apr 2022 17:45
(_dta has notes)
-------------------------------------------------------------------------------
Variable Storage Display Value
name type format label Variable label
-------------------------------------------------------------------------------
price int %8.0gc Price
mpg int %8.0g Mileage (mpg)
rep78 int %8.0g Repair record 1978
headroom float %6.1f Headroom (in.)
trunk int %8.0g Trunk space (cu. ft.)
weight int %8.0gc Weight (lbs.)
length int %8.0g Length (in.)
turn int %8.0g Turn circle (ft.)
displacement int %8.0g Displacement (cu. in.)
gear_ratio float %6.2f Gear ratio
foreign byte %8.0g origin Car origin
-------------------------------------------------------------------------------
Sorted by: foreign
Note: Dataset has changed since last saved.
frame drop et frame reset
Permettent de supprimer une ou la totalité des frames
frame drop nom_frame, permet de supprimer une frame, à l’exception de celle chargée dans l’interface.
frame change autoframe drop prixframe dir
* auto 74 x 11; 1978 automobile data
Note: Frames marked with * contain unsaved data.
On a chargé dans l’interface la frame auto, puis on a supprimé la frame prix. Par contre il n’est pas possible de supprimer la frame active dans l’interface.
Stata 18
Avec la nouvelle version, il est possible de supprimer plusieurs frames avec frame drop, mais toujours à l’exception de celle qui est active.
frame reset
On peut supprimer toutes les frames, dont celle chargée dans l’interface avec frame reset. Dans ce cas il n’y a plus de base chargée dans la session.
frame resetsysuse auto, clearframe renamedefault auto
(1978 automobile data)
frame resetdes
Contains data
Observations: 0
Variables: 0
Sorted by: