Commandes STATA pour microsimulations

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

GEF 435 Principes des systèmes d’exploitation
La boucle for : init7.c et init71.c
Portée des variables VBA & Excel
Les Structures. Introduction : Imaginons que lon veuille afficher les notes dune classe délèves par ordre croissant avec les noms et prénoms de chaque.
Atelier sur lanalyse approfondie des migrations à partir des données de recensement: Ouagadougou novembre 2011 Bonayi Hubert DABIRE, UO/ISSP
C.
PHP S ÉANCE 2 PHP avancé 03:32:44 PWB L3 Mioage 1.
Les virus informatiques
La fonction Style Permet de créer des types de texte, par exemple
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
12 novembre 2012 Grégory Petit
Copyright © 2004, SAS Institute Inc. All rights reserved. Processus Stockés SAS une perspective analytique Sylvain Tremblay SAS Canada 25 avril 2006.
Firebug Dévermineur Debugger.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Démarche de résolution de problèmes
Algorithmique et Programmation
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Algorithmique et Programmation
REPRISE DES DONNEES DE BASE
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Sections sélectionnées du Chapitre 11
CYCLE 1 : Saisir – Afficher – Données Déclarer des Constantes dans un programme 1- Rôle de la déclaration de constante 2- Syntaxe de la déclaration de.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Module 2 : Préparation de l'analyse des performances du serveur
ECP – Option SA Henri Fallon
Procédures et fonctions
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Les Types de données complexes
B.Shishedjiev -Débogueur1 Déboguer? Comment trouver et corriger les erreurs?
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
Sommaire AFFICHER L’ONGLET DEVELOPPEUR AJUSTER LA SECURITE MACRO COPIER ET COLLER LA MACRO L’ENREGISTREMENT AVEC MACRO CREATION DU RESUME ENVOI SANS MACRO.
Programmation événementielle
Créer des packages.
Les virus informatiques
Introduction à Visual Studio C++ (VC++)
JLMVPC Suivre une campagne. Stats Statistiques campagnes Démarrer la stat Etat de la stat / Récap Etat de la stat / Détail Planning mensuel.
 Requêtes MySQL en PHP Introduction
Introduction au langage C Fonctions et Procédures
Les types composés Les enregistrements.
1 Deuxième journée La programmation procédurale. 2 Unité de programmation : la procédure ou fonction Très semblable au math Un programme est un ensemble.
 Formulaires HTML : traiter les entrées utilisateur
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Patricia Renault UPMC 2005/2006
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
Résolution du Problème
Scripts et fonctions Instructions de contrôle
QCM VBA.
Premiers exercices d’écriture
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Seconde 8 Module 7 M. FELT 03/11/ Module 7: Algorithmique #2  Objectifs:  AlgoBox.  Définition d’un algorithme.  Affectation de variable. 
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Philippe Gandy – 13 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Présentation de la Fiche Pratique : Manipuler, Stocker et Evacuer vos produits chimiques.
A.Aarabi ´. ´ Objectifs Faciliter la prise en main du logiciel MATLAB Présenter les fonctionnalités utiles au travail scientifique.
ECHANTILLONAGE ET ESTIMATION
Ce logiciel vous permettra de générer les relevés 24 que vous avez à émettre. Ce logiciel permet l’entrée, la validation des données, l’impression des.
Utilisation du logiciel EduStat © Analyse classique d’items Compilations.
FACTORY systemes Module 5 Page 5-1 Les outils clients Wonderware FORMATION InSQL 7.0.
Utilisation du logiciel EduStat © Analyse de sondages Les compilations.
O UTILS DE P ROGRAMMATION P OUR LES M ATHÉMATIQUES Mr. BENDIB. I MAA, LAMIS Laboratory, Université Larbi Tébessi - Tébessa.
Transcription de la présentation:

Commandes STATA pour microsimulations Anda David

Les Macros locales Une macro est une sorte de « boîte » dans laquelle on stocke des informations que l’on pourra utiliser ultérieurement. Les macros peuvent être locales ou globales selon leur champ d’application, définissant ainsi où leur nom sera reconnu. Les macros locales sont créées dans un ficher « .do » ou « .ado » et cessent d’exister une fois qu’on arrête l’exécution du fichier.

Les Macros locales Il ne s’agit pas de variables : au moment où on les « invoque », STATA ne fait que remplacer leur nom par le texte qu’elles contiennent avant d’exécuter la commande. On peut ainsi écrire du code permettant d’exécuter différentes choses selon la valeur prise par les macros au moment où le code est exécuté. Syntaxe : local name targetname local name = targetname (dans le cas de scalaires)

Les Macros locales Exemples : . local pays France Italie Allemagne Brésil . local ctycode 111 112 136 134 . display “`pays’” France Italie Allemagne Brésil . display “`ctycode’” 111 112 136 134 . local list=“age weight sex” . regress outcome `list’ . regress outcome age weight sex

L’utilité des macros Exécution de commandes sur des sous-échantillons dont la définition est complexe: summarize … if (hours>0|hours>=.) & weeks>0 & earn>0 & earn/weeks>100 tabulate … if (hours>0|hours>=.) & weeks>0 & earn>0 & earn/weeks>100 regress … if (hours>0|hours>=.) & weeks>0 & earn>0 & earn/weeks>100 Avec des macros: local if = “if (hours>0|hours>=.) & weeks>0 & earn>0 & earn/weeks>100” summarize … `if’ tabulate … `if’ regress … `if’

Les erreurs à ne pas commettre . local a = -4.57213 . local b = 2.12394 . local c = 0.72195 . di (-`b' + sqrt(`b')^2-4*`a'*`c')/(2*`a') -1.4439 Pourquoi (`b’)^2 et pas `b’^2?

Un petit exemple Calculer le 1er et le dernier quintile d’une distribution , puis calculer des statistiques descriptives pour chacun de ces quantiles et faire des régressions. (sysuse nlsw88) Solution qui ne marche pas: summarize wage, detail summarize varlist if r(p5)<wage & wage>r(p95), detail regress … if r(p5)<wage & wage>r(p95) Solution qui marche: local lo = r(p5) local hi = r(p95) summarize varlist if `lo’<wage & wage<`hi’, detail regress … `lo’<wage & wage<`hi’

Les macros locales Afficher le contenu d’une macro : quelques erreurs à ne pas commettre local x=1 display `x‘ Remarques : Noter la distinction entre les deux quotes Il n’est pas toujours indispensable d’utiliser le signe « = » pour définir des macros locales local x = 1 est identique à local x 1

Quand utiliser le signe “=“ Pour comprendre dans quelles situations le signe « = » est nécessaire, il suffit de voir la différence entre les deux programmes suivantes : A votre avis, que donnera : local x 2+2 di `x’ di “`x’” local x = 2+2 di `x’ di “`x’” local x -2 di `x’^2

Quand utiliser le signe “=“ .local i 10 .local j 10+`i’ .display “`j’” 10+10 .local j = 10 + `i’ 20

Exemple de macros locales

Exemple de macros locales

Exemple de macros locales

Exemple de macros locales

Exemple de macros globales

Exemple de macros globales

Les boucles Il est possible d’intégrer des boucles à un .do. Les boucles possibles: while foreach forvalues. La commande while oblige le logiciel à répéter la commande entre accolades jusqu‘à ce que la condition précisée par while ne soit plus vraie. Il faut d'abord lancer un compteur par le biais d'une macro locale, puis préciser la condition de la boucle. Les commandes foreach permettent d’effectuer des tâches répétitives comme appliquer à plusieurs variables les mêmes commandes. Quelques conseils : N’oubliez jamais de sauvegarder le .do avant de tester une boucle. L’oubli de l’incrémentation du compteur ferait boucler à l’infini Stata...

La boucle FOREACH : syntaxe foreach nom_de_la_macro in/of [list type] list { code involving `macroname'... } Remarques: In ou of selon le type de liste Toutes les commandes situées entre les parenthèses seront exécutées pour chacun des items de la liste. Exemple : foreach color in red blue green { 1. di "`color'" 2. } Permet d’obtenir à l’écran : red blue green Remarque : l’écriture d’une boucle en mode itératif conduit Stata à numéroter les lignes. Vous n’avez pas à le faire en mode éditeur de texte.

La boucle FOREACH : exemple simple Il est plus simple de faire figurer au préalable la liste dans une macro : local colors red blue green foreach color in `colors' { 1. di "`color'" 2. } C’est d’ailleurs tellement courant que Stata prévoit un code spécial pour ces situations : foreach color of local colors { 1. di "`color’” Remarques : On a remplacé in par of parce que la macro locale décrit une liste type. Le nom de la macro locale n’a pas besoin d’être entre quotes.

La boucle FOREACH : les types de liste Il existe plusieurs types de liste : varlist, newlist, et numlist. Illustration à partir de la base auto installée avec Stata (sysuse auto) foreach var in price mpg rep78 { 1. di "`var'« 2. sum `var‘ 3. } foreach var of varlist price-rep78 { foreach var in price-rep78 { Dans l’ex1 la liste est une suite de 3 mots qui sont ensuite considérés comme des noms de variables dans les commandes qui suivent. Dans l’ex2 Stata interprète price-rep78 comme une liste de plusieurs noms. Dans l’ex3 Stata interprète price-rep78 comme un seul mot et la commande ne sera donc exécutée qu’une seule fois.

La boucle FOREACH : les types de liste On utilise newlist pour une liste nouvelle de variables qui seront créées à l’intérieur de la boucle. foreach var of newlist x1 x2 x3 x4 x5 { 1. gen `var'=0 2. } C’est bien sûr gen qui génère les nouvelles variables On utilise numlist pour une liste de nombres : foreach i of numlist 1/5 { 1. gen y`i'=0 Il faut noter que la macro `i‘ joue le rôle d’un indice accolé à la variable y

Exemples de boucle FOREACH (1) foreach v of varlist price mpg rep78{ 2. summarize `v', detail 3. } local ctycode 111 112 136 134 local i 0 foreach c of local ctycode { 2. local ++i 3. local rc "`rc' (`i'=`c')" 4. } display "`rc'« (1=111) (2=112) (3=136) (4=134)

La boucle FORVALUES Avec la boucle forvalues on peut faire une boucle sur une liste de nombres. Au lieu d’utiliser foreach i of numlist on peut utiliser forvalues. forvalues i = 1/5 { 1. gen z`i’=0 2. } Remarque : On peut compter autrement que de 1 en 1. forvalues i = 1 (3) 30 { 2. gen z_`i'=`i' 3. }

FORVALUES: Exemple On suppose qu’on a 4 variables, gdp1, gdp2, gdp3 and gdp4 avec les valeurs du PIB pour 4 pays. On peut utiliser les similarités des noms des variables pour créer une boucle pour les commandes generate et summarize. forvalues i=1/4{ 2.generate double lngdp`i’=log(gdp`i’) 3. summarize lngdp`i’ 4.}

FORVALUES: Exemple Si les variables sont plutôt indexées par le nom du pays alors on utilisera foreach (UKgdp, USgdp, DEgdp and FRgdp) foreach c in US UK DE FR { 2.generate double lngdp`c’=log(gdp`c’) 3. summarize lngdp`c’ 4.} ou .local country US UK DE FR .foreach c of local country {…

La boucle WHILE local i = 1 while `i’<=10 { display `i’ local i = `i’+1 } Définition d’un compteur Critère d’arrêt ( ne pas oublier le « } ») Toutes les commandes entre { et } seront exécutées via la boucle Incrémentation du compteur (le pas de la variation dépend du cas étudié)

WHILE: Exemple Si on veut répéter la même analyse sur deux bases de donnée set95.dta et set96.dta : local i=95 while `i’<=96 { use set`i’ reg prob gender local i = `i’+1 }

Manipuler des scalaires scalar define : définit des variables scalaires; scalar def nom_scalaire = expression Exemple: scalar def quatre = 4 scalar dir / list : liste le contenu des scalaires; scalar dir scalar list _all scalar list nom_scalaire scalar drop : supprime les scalaires. scalar drop nom_scalaire

Commandes matricielles Créer des matrices : mkmat: permet des convertir des variables en matrices; mkmat varlist [if] [in] [, options] Exemple: sysuse auto mkmat price mpg turn matrix dir matrix list price matrix: crée des matrices à partir des vecteurs ou d’autres matrices; matrix nom_matrice = vecteur ou matrice matrix X = (2 , 3 \ 2 , 1 \ 1 , 1) matrix Y = (1 \ 0 \ -1) matrix beta = inv(X’*X)*X’*Y

Commandes matricielles (2) Lister des matrices: matrix dir : liste les noms des matrices existantes; matrix list nom_matrice : liste le contenu d’une matrice; Exemple: matrix list beta Renommer des matrices: matrix rename nom_matrice1 nom_matrice2 Supprimer une matrice: matrix drop nom_matrice Matrix drop _all

Commandes matricielles (3) Nommer des colonnes et des lignes : matrix coln / rown matrice=nom_col / nom_ligne Exemple: matrix coln X = X1 X2 Calcul des données à partir des vecteurs: matrix score nouvelle_var = nom_vecteur

Indicateurs de pauvreté et inégalité Indices Foster, Greer and Thorbecke. povdeco nom_var [if] [poids], [bygroup] varpl(ligne de pauvrete) Exemple: povdeco depenset1 if sim==1 [w=weightpop], by(urbrur) varpl(z) Coefficient de Gini ineqdeco nom_var [if] [poids], [bygroup] ineqdeco depenset1 if sim==3 [fw=weightpop]