Você está na página 1de 13

Taller Stata

Jeanette Fuentes1

Clase 1

En estas clases prácticas veremos cómo utilizar el programa Stata para el trabajo económico
empírico. Para esto trabajaremos con bases de datos que nos aporten información respecto a lo que
queramos estudiar.

Introducción a Stata

Al trabajar en stata ocuparemos principalmente los siguientes archivos:

name.dta Base de datos en stata


name.log Archivo en el que podemos guardar comandos y resultados, excepto
gráficos.
name.do Archivo con comandos, generalmente hecho en el editor de stata,
block de notas o word (pero guardado con formato sólo texto). Nos
permite hacer un programa para luego hacerlo correr en stata, lo
cual es más rápido que trabajar en forma interactiva.
name.ado Archivo que contiene un mini programa ya insertado a stata, el cual
nos permite hacer cálculos sin tener que programar en el momento
las instrucciones para hacer por ej. un índice, sino que simplemente
ocupamos un comando que nos hace funcionar el programa. Éste
está inserto en la librería de stata.

Base de datos

Antes de abrir una base de datos (y de comenzar a trabajar) es necesario colocar memoria al
programa, para ello hacemos:

. set mem 90m

Para abrir una base .dta debemos hacer:


→File→Open→abrir

o bien tipear directamente:

. use “ [disco en que lo guardaremos] \ [ruta de acceso] \ [nombre de archivo.dta]”, clear


por ejemplo:

. use "C:\Jeanette\Casen\Casen90\casen901.dta", clear

Luego, para guardar una base de datos, reescribiendo sobre la base antigua, hacemos:

1 Responsable de la elaboración. Jfuentes@econ.facea.uchile.cl

1
. save “ [disco en que lo guardaremos] \ [ruta de acceso] \ [nombre de archivo.dta]”, replace
Si queremos ver los datos de la base, podemos hacer click en el Data browse, y si queremos
modificar los datos debemos abrir el Data editor.

Archivo log:

Para guardar todo lo que hagamos podemos hacer un “log”, el cual puede ser abierto
después en un procesador de texto. Para ello hacemos:
→open log→open

o bien tipeamos directamente:


log using [disco en que lo guardaremos] \ [ruta de acceso] \ [nombre de archivo.log]
por ejemplo:

log using C:\Jeanette\clase1.log

Aquí agregamos ,replace para que cada vez que hagamos correr un programa .do los resultados se
reescriban sobre lo hecho antes.

log using C:\Jeanette\clase1.log, replace

Para terminar de usar el log debemos tipear:


. log close

Los archivos .do y .ado los veremos más adelante.

Principales comandos:

help (h) Este es un comando con el cual podemos obtener ayuda de stata. Si
hacemos help comando, obtendremos ayuda específica del comando. Ej:
. help graph

describe (d) Este comando nos despliega un resumen de los contenidos de la


base de datos que tenemos abierta.

summarize (sum) Computa estadísticas descriptivas


Ej:

. sum edad

Variable | Obs Mean Std. Dev. Min Max


---------+-----------------------------------------------------
edad | 26852 29.63779 20.83074 0 98

. sum edad yopraj


Variable | Obs Mean Std. Dev. Min Max
---------+-----------------------------------------------------
edad | 26852 29.63779 20.83074 0 98
yopraj | 9200 174504.9 336834.5 0 1.23e+07

2
tabulate (tab) Computa frecuencias
Ej:
. tab sexo

Sexo | Freq. Percent Cum.


------------+-----------------------------------
1 | 13235 49.29 49.29
2 | 13617 50.71 100.00
------------+-----------------------------------
Total | 26852 100.00

. tab pco1 sexo

Rel.con el |
Jefe de | Sexo
hogar | 1 2 | Total
-----------+----------------------+----------
1 | 5290 1418 | 6708
2 | 174 4762 | 4936
3 | 5928 5456 | 11384
4 | 34 148 | 182
5 | 28 85 | 113
6 | 209 186 | 395
7 | 1023 953 | 1976
8 | 143 143 | 286
9 | 52 62 | 114
10 | 251 242 | 493
11 | 98 89 | 187
12 | 5 73 | 78
-----------+----------------------+----------
Total | 13235 13617 | 26852

Creación de Variables

generate (gen) Este es un comando que nos permite crear variables, las cuales
pueden ser una combinación de otras o una variable totalmente nueva . Por ejemplo, para crear una
variable totalmente nueva puedo hacer:
. gen a=0
y en el editor de stata coloco el valor de la nueva variable.

Si quiero crear una variable a partir de otra puedo hacer:


. gen b=3 + esc

Expresiones lógicas y matemáticas más usadas

+ suma >= Mayor o igual & y


- resta > Mayor estricto que | o
* multiplicación <= Menor o igual que exp() exponencial
/ división < Menor estricto que log() logarítmo
== igual != Distinto que

3
Expresiones condicionales

if Utilizar if nos permite hacer una instrucción condicional, ya sea con un comando
descriptivo o de creación. Veremos más claramente esto mediante algunos ejemplos:
• . tab sexo if yopraj>800000 & yopraj<1000000

Sexo | Freq. Percent Cum.


------------+-----------------------------------
1 | 40 75.47 75.47
2 | 13 24.53 100.00
------------+-----------------------------------
Total | 53 100.00

• . gen g=0 if esc<=8


(10211 missing values generated)

. replace g=1 if esc>=9


(10211 real changes made)

• . drop if o8==4
(5415 observations deleted)

by() Este es un conectivo que también nos sirve tanto para comandos de estadística
descriptiva como para comandos de creación. Ejemplos:
• . sort sexo . by sexo: tab rama. egen h= sum(yopraj), by(comu). sum
hVariable
Obs Mean Std. Dev. Min Max---------
+-----------------------------------------------------
h | 26852 2.41e+08 2.40e+08 964621 5.74e+08

Algunos Comandos Adicionales

drop (drop) Borra la variable especificada


Ej:
. drop estciv

preserve, restore Con estos comando puedo borrar una variable temporalmente,
y luego recuperarlas.
Ej:
preserve
drop edad
restore

regress (regress) Con este comando puedo hacer regresiones por MCO. Se coloca
primero la variable explicada, y luego las exlicativas
Ej:
. regress yopraj sexo edad rama

La tabla que entrega, es la siguiente:


Source | SS df MS Number of obs = 9200
---------+------------------------------ F( 3, 9196) = 109.67
Model | 3.6051e+13 3 1.2017e+13 Prob > F = 0.0000

4
Residual | 1.0076e+15 9196 1.0957e+11 R-squared = 0.0345
---------+------------------------------ Adj R-squared = 0.0342
Total | 1.0437e+15 9199 1.1346e+11 Root MSE = 3.3e+05

------------------------------------------------------------------------------
yopraj | Coef. Std. Err. t P>|t| [95% Conf. Interval]
---------+--------------------------------------------------------------------
sexo | -84815.81 7860.058 -10.791 0.000 -100223.3 -69408.35
edad | 2917.966 263.1105 11.090 0.000 2402.21 3433.721
activi | 140.6518 11.84967 11.870 0.000 117.4238 163.8798
_cons | 101584.8 14811.16 6.859 0.000 72551.64 130617.9
------------------------------------------------------------------------------

De forma similar funciona el comando dprobit que nos permite estimar por probit.

replace (replace) Con este comando puedo reemplazar una variable por otra, o el
valor de la variable en un caso determinado por otro.
Ej:
. replace a=b

rename(rename) Con “rename” puedo cambiarle el nombre a una variable. Para ello puedo
hacer:
. rename nombre antiguo nombre nuevo

egen (egen) Este comando también nos permite crear variables, pero a partir de
la aplicación de una función conocida por stata sobre alguna variable en particular.
Ej:

. egen e = max(edad)

. sum e

Variable | Obs Mean Std. Dev. Min Max


---------+-----------------------------------------------------
e | 26852 98 0 98 98

sort (sort) Nos permite ordenar la variable especificada en orden ascendente.

graph (graph) Nos permite hacer gráficos. Para llevarlos a word sólo debemos
copiar y pegarlos, esto es:
→edit→copy
Para hacer un gráfico simple: (de ingresos de la ocupación principal por comunas)
. graph yopraj comu

Para hacer un gráfico de barras:


. sort pco1
. graph yopraj, bar by(pco1)

Un “truco” muy utilizado para que las tablas aparezcan ordenadas en word, es colocar todo en letra
tamaño 9.
Clase 2
En esta clase continuaremos viendo comandos básicos de stata, y aprendiendo a trabajar con nuestra
base de datos.

5
Base de Datos
Trabajaremos con una parte de la encuesta Casen 98. Es fundamental para ello saber
relacionar los resultados que buscamos con las respuestas del cuestionario.
Comenzaremos por hacer un breve análisis del cuestionario para familiarizarnos con éste.

Identificadores:
r: región
p: provincia
comu: comuna
z: zona (1:urbano; 2:rural)
seg: Segmento al cual pertenece la encuesta (subdivisión de las comunas)
f: Folio de la encuesta
o: Orden de la persona dentro de la encuesta

Hogar:
La encuesta Casen es dirigida al jefe de hogar, por lo que generalmente contesta él o su
cónyuge por todos los miembros de la familia. Por esto hay que tener cuidado con las conclusiones
que se saquen a partir de ciertas preguntas, porque como no es el afectado necesariamente quien las
responde, puede haber sesgo.
En cada encuesta hay sólo un hogar. Éste lo constituyen las personas que viven bajo el
mismo techo y comparten el presupuesto para comida. En un mismo hogar pueden haber más de un
núcleo, por lo que es necesario distinguir entre el jefe de hogar y el jefe de núcleo. Usualmente se
trabaja más con la variable “relación con el jefe de hogar” (pco1).
Se conoce por jefe de hogar al hombre que constituye el núcleo principal del hogar. Se dirá
que una mujer es jefe de hogar sólo en el caso en que no haya un “marido”. Esta variable nada tiene
que ver con el aporte de ingresos, ni toma de decisiones.

Educación
Para conocer el nivel de educación de cada miembro del hogar se le pregunta cuál es
el curso y tipo de estudio actual (para los que están estudiando) o último curso aprobado
(para los que no están estudiando). A partir de estas dos variables (e5 y e6) se construye la
variables “años de escolaridad” (en la base de clases: esc). Así, si por ejemplo:
Si una persona tiene como último curso probado 2° medio técnico profesional: e6=7 y
e5=2. En este caso esc= 8 + 2=10 (ya que como está en enseñanza media tiene 8 años
aprobados + los dos de enseñanza media)

Ingresos
Los ingresos de la persona se dividen en una serie de categorías, ya sea tomando en
cuenta el ingreso de la ocupación principal (yopraj) o agregándole otra serie de ingresos
(ing. de otros trabajos, subsidios, regalías, etc.) que junto al yopraj constituyen el ingreso
monetario total por persona (ymoneaj).
Para conseguir el ingreso total familiar debemos tomar otro ingreso más en cuenta: alquiler
imputado por la casa en que vive (si es que no paga arriendo por ella): yaimhaj
Luego, el ingreso total familiar será:
ytothaj = ∑ymoneaj + yaimhaj

6
Empleo

Para saber si una persona está con empleo se le pregunta si trabajó la semana pasada (o1), y luego
se corrobora su situación preguntándole (a los que contestaron que no antes) si es que tenían
empleo, pero estaban ausentes temporalmente (o2). A los que contestaron no, se les pregunta si
buscó trabajo remunerado en los últimos dos meses (o3). Con todo esto podemos hacer un índice de
desempleo.

Características del empleo.

En esta encuesta hay tres variables que nos indican características del empleo:
Oficio (viene de la pregunta V.6): oficio
Actividad de la empresa (viene de la pregunta V.7), con la cual podemos crear la variable sector
económico (agrupando por actividad): rama
Categoría ocupacional (viene de la pregunta V.8), nos permite separar entre asalariados y no
asalariados, y distinguir categorías particulares: o8

Factor de expansión:

En esta encuesta se utiliza un “factor de expansión” para hacer la muestra representativa. Así, cada
encuesta será ponderada por el factor que le corresponda [w=expr1]. Por esto, cada vez que
queramos hacer estadística descriptiva, debemos ocupar este factor de expansión, de lo contrario
nuestros resultados no serán representativos.
Ya habíamos visto la forma general de calcular estadísticas, pero como nuestra base utiliza factor
de expansión, entonces la forma de hacer estadísticos es, por ejemplo:

. tab sexo [w=expr1]


. tab pco1 [w=expr1] if yopraj !=.

Formando Hogares.

Muchos análisis de pobreza y distribución se hacen a nivel de hogares, por lo que es


fundamental que veamos la forma de agrupar cada hogar.
En primer lugar es necesario agrupar a todos los miembros de un hogar a través de una
clave (o número) que los identifique. Así creamos una “macro” que da a cada miembro de un
mismo hogar (misma encuesta) un mismo número, utilizando los identificadores antes vistos. Para
ello utilizamos la instrucción:

. g comux=10*comu+z
. macro define id “identificadores”

lo que en nuestro caso sería:


. macro define id "comux seg f"

Luego, si quisiéramos contar la cantidad de personas que constituyen cada hogar podemos hacer:
. egen nt= count(f) , by ($id)

Ej:
Construir ingreso per cápita:

7
. macro define id "comux seg f"
. egen nt= count(f) , by ($id)
. gen ytothaj= ymonehaj + yaimhaj
. gen ypc=ytothaj/nt

Análisis de pobreza y Distribución del Ingreso.

Se han desarrollado distintos mini programas instalados en la librería de stata (ado) que nos
permiten hacer análisis de distribución del ingreso y pobreza. Aquí veremos algunos:

Construir deciles: Uno de los más útiles es construir deciles, por ej: deciles de ingreso. Para ellos
utilizamos las instrucciones:
La forma general de hacer esto es:
xtile nombre partición = variable [factor de exoansión], nq(cantidad particiones)
Ej:
. xtile decil = yopraj [w=expr1], nq(10)
Con lo cual estamos construyendo los deciles, en este caso por ingreso de la ocupación principal

. table decil [w=expr1], c(n yopraj mean yopraj max yopraj min yopraj)
Aquí le pedimos que nos muestre una tabla con los estadísticos indicados por cada decil

Ej:
. xtile decil = ypc [w=expr1], nq(10)
. table decil [w=expr1], c(mean ypc max ypc min ypc n ypc)

. table decil [w=expr1], c(mean ypc max ypc min ypc n ypc)(frequency weights
assumed)----------+----------------------------------------------- |
quantiles |of ypc | mean(ypc) max(ypc) min(ypc) N(ypc)
----------+-----------------------------------------------
1 | 33516.14 50330 0 284,666
2 | 64387.64 78017 50338 284,314
3 | 91090.68 104720 78022 285,069
4 | 119275.6 135420 104725 283,920
5 | 155207.9 175833 135428 284,576
6 | 196287 219133 175855.7 284,430
7 | 251461.6 290380 219164 284,506
8 | 338696.5 398617.5 290400 284,490
9 | 499438.6 649460 398622.5 284,429
10 | 1420327 2.66e+07 649768 284,444
----------+-----------------------------------------------

ineqdeco: Este es un ado que nos entrega índices de distribución del ingreso.

Ej:

. ineqdeco ypc [w=expr1]


Percentile ratios for distribution of ypc: all valid
obs.------------------------------------------------------------p90/p10 p90/p50
p10/p50 p75/p25 p75/p50 p25/p50
------------------------------------------------------------

8
12.855 3.700 0.288 3.700 1.911 0.516

Generalized Entropy indices GE(a), where a = income difference


sensitivity parameter, and Gini coefficient

----------+-----------------------------------------------------------
All obs | GE(-1) GE(0) GE(1) GE(2) Gini
----------+-----------------------------------------------------------
| 1.10400 0.57759 0.65044 1.62925 0.56074
----------+-----------------------------------------------------------

Atkinson indices, A(e), where e > 0 is the inequality aversion parameter

----------+-----------------------------------
All obs | A(0.5) A(1) A(2)
----------+-----------------------------------
| 0.26254 0.43875 0.68828
----------+-----------------------------------

ineqrau4: Con este ado obtenemos indicadores de distribución y la tasa de pobreza.


Para ocuparlo primero debemos definir una línea de pobreza.
Ej:
. gen linea=37889
. ineqrau4 ypc [w=expr1], by (linea)

Medidas de desigualdad y pobreza de


ypc------------------------------------------------------------------------------
1.- Coeficiente de Gini .56139067
2.- Razon de Quintiles 19.612769
3.- Tasa de Pobreza .04496345
4.- Brecha de Pobreza .01598492
5.- Numero de pobres 127914
6.- Ingreso Medio quintil n°1 48942.343
7.- Ingreso Medio quintil n°2 105154.67
8.- Ingreso Medio quintil n°3 175742.18
9.- Ingreso Medio quintil n°4 295077.82
10.- Ingreso Medio quintil n°5 959894.88
------------------------------------------------------------------------------

Apéndice
En esta sección haremos un programa .do, con él podremos hacer un programa y hacerlo
correr en stata, lo cual es un método mucho más rápido que el interactivo. El do se puede hacer en
el editor de stata, en word (guardándolo como sólo texto) o en el block de notas. En estos ejemplos
trabajaremos en el block. Trate de entender cada una de las instrucciones que se presentan, cuándo
hay que modificarlas, y la pertinencia de cada una de ellas, ya que este no es un programa tan
estándar, y cada vez que usted quiera programar, deberá analizar bien qué es lo que buscar, y una
vez que tenga claro cómo se “haría a mano”, puede comenzar a programar.

9
Haremos un ejemplo en que buscamos analizar hogares:

Primero indicamos la base que usaremos y luego el log:


use x:\variables_clase.dta
log using x:\ejercicio1.log, replace

Para trabajar con estadísticas por hogares usualmente se excluye al servicio doméstico
puertas adentro, por lo que hacemos:
preserve
drop if o8 == 5

Luego anidamos hogares:

g comux=10*comu+z
macro define id "comux seg f"
egen nt= count(f) , by ($id)

Si queremos hacer indicaciones para guiarnos en el programa programa podemos escribir


cosas entre asteristos:
* excluye servicio dom adentro *

Generamos el ingreso per cápita por hogar:


**ingreso per cápita simple**
gen ytothaj= ymonehaj + yaimhaj
gen ypc=ytothaj/nt
restore

Forma paralela de calcular el ingreso per cápita:

*** Ingreso per cápita número 2, considera servicio domestico puertas adentro como hogar
independiente, corrige por servicio domes externo, que se había excluido de otros
procedimientos*************
re
egen nt2= count(f) if o8 !=4, by ($id)
sum nt2 [w=expr1]
replace ytothaj = yopraj if o8 == 4
gen ypc2=ytothaj/nt2
replace ypc2 = yopraj if o8 == 4

Tercera forma:
**genera ingreso per cápita corregido por escalas de equivalencia, según
ecuación del banco mundial**

egen n1 = count(f) if ((pco1 != 1 & edad >= 11) & o8!=4), by($id)
egen n2 = count(f) if ((pco1!=1 & edad >= 5 & edad < 11) & o8!=4),
by($id)
egen n3 = count(f) if ((pco1 != 1 & edad >= 0 & edad < 5) & o8!=4),
by($id)
egen n11 = max(n1), by($id)
egen n22 = max(n2), by($id)
egen n33 = max(n3), by($id)

10
replace n11 = 0 if n11 == .
replace n22 = 0 if n22 == .
replace n33 = 0 if n33 == .
g neq = (1.2 + 0.8*n11 + 0.4*n22 + 0.3*n33)
gen ypeq = ytothaj/neq
replace ypeq = yopraj/1.2 if o8 == 4

ineqdeco ypc [w=expr1]


ineqdeco ypc2 [w=expr1]
ineqdeco ypeq [w=expr1]

pregunta: ¿qué diferencia fundamental hay entre colocar la condición “if pcoh==1” y no
colocarla?
xtile decil = ypc if pco1 == 1 [w=expr1], nq(10)
table decil if pco1==1 [w=expr1], c(mean ypc max ypc min ypc n ypc)
xtile decil2 = ypc2 if pco1 == 1 [w=expr1], nq(10)
table decil2 if pco1==1 [w=expr1], c(mean ypc2 max ypc2 min ypc2 n ypc2)
xtile decil3 = ypeq if pco1 == 1 [w=expr1], nq(10)
table decil3 if pco1==1 [w=expr1], c(mean ypc max ypc min ypc n ypc)

clear

Al guardarlo, debemos guardarlo con un nombre *.do, y si trabajan en word, asegurarse que
escogen la alternativa “tipo de archivo: sólo texto”

Para hacer correr el programa debemos hacer:


do disco\ubicación del archivo

es decir:
do x:\clase3.do

Guía de Ejercicios

Ejercicios:

1) Sabiendo que sexo=1=hombre y sexo=2=mujer, haga una tabla de frecuencias de la relación


con el jefe de hogar por región para mujeres.

2) Encuentre el ingreso promedio (de la ocupación principal) de los hombres, entre 25 y 45 años
con 12 o más años de estudio (excluyendo a quienes no reciben ingresos) y compárelo con el
ingreso promedio de las mujeres del grupo similar.

11
3) Si dividimos a la población en cinco categorías:
1: Personas que tienen enseñanza básica incompleta
2: Personas con enseñanza básica completa
3: Personas con enseñanza media incompleta
4: Personas con enseñanza media completa
5: Personas con enseñanza superior completa o incompleta completa

Haga un gráfico de barras entre categorías (eje x) e ingresos (eje y)

4) Teniendo en cuenta lo siguiente:


a) Excluya servicio doméstico
b) La línea de la pobreza para la región metropolitana es de $28.093, pero tiene distintas
ponderaciones por región:
R=1 1.22
R=2 1.17
R=3 1.11
R=4 1.09
R=5 1.04
R=6 1.03
R=7 1.01
R=8 1.04
R=9 1.05
R=10 1.04
R=11 1.09
R=12 1.22
R=13 1

Realizar un perfil de pobreza de acuerdo a las siguientes características del jefe de hogar: género,
edad (tramos: 15 a 29; 30 a 45; 46 a 60; 61 a 99), educación (tramos: básica incompleta, básica
completa, media incompleta, media completa, superior (hasta tres años), superior (cuatro años y
más), región. Probar que headcount y la brecha de pobreza son aditivos separables (el total es igual
a los promedios ponderados)

5)Para las variables ingreso per cápita del hogar e ingreso por adulto equivalente calcule los
siguientes indicadores de desigualdad:
- Coeficientes: Gini, E(0), E(1), E(2), Atkinson (e=0.5, 1 y 2)
- Brechas: 90/10, 90/50, 10/50, 75/25
- Deciles: participación relativa e ingreso promedio por decil
Tome la siguiente escala de equivalencia:
neq = (1.2 + 0.8*n11 + 0.4*n22 + 0.3*n33)
Donde:
N11: Personas distintas al jefe de hogar que tengan 12 años o más
N22: Personas distintas al jefe de hogar que tengan entre 4 y 11 años
N33: Personas distintas al jefe de hogar que tengan entre 0 y 4 años

6) Haga un análisis de quiénes están en isapres y en fonasa, según quintiles de ingreso y factores
de riesgo (género/edad)

7) Estime por MCO una ecuación de Mincer, incluyendo dummies por zona rural-urbano y sexo

12
9) Estime un modelo probit sobre la probabilidad de obtener un subsidio. Modele como usted
estime conveniente

13

Você também pode gostar