Está en la página 1de 86

Curso Nivelacin STATA

Magster en Polticas Pblicas


Javiera E. Vsquez N.1

Investigadora, Centro de Microdatos, Departamento de Economa, Universidad de Chile


(jvasquez@econ.uchile.cl). Cualquier error es responsabilidad exclusiva del autor. Se agradece a J.
Eguiguren los comentarios y cooperacin en la elaboracin de este apunte.
1

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

TABLA DE CONTENIDOS
INTRODUCCIN

I.

UNA PEQUEA INTRODUCCIN AL PROGRAMA

II.

COMO ORGANIZAR EL TRABAJO EN STATA

III.

CMO CARGAR UNA BASE DE DATOS?

LEYENDO LOS DATOS

IV.

15

IV.1. DESCRIBE
IV.2. CODEBOOK
IV.3. EDIT
IV.4. IST; INSPECT; DUPLICATES; COUNT; ORDER
IV.5. SUM
IV.6. TABULATE

16
17
20
22
25
28

V.

MODIFICACIN DE UNA BASE DE DATOS.

38

V.1. MODIFICACIN DE VARIABLES DE UNA BASE DE DATOS


V.2. UNIR BASES DE DATOS: MERGE Y APPEND
V.3. CONDENSAR UNA BASE DE DATOS: COLLAPSE
V.4. CAMBIAR LA ESTRUCTURA DE LA BASE DE DATOS: RESHAPE
V.5. ELIMINAR VARIABLES: KEEP Y DROP
V.6. CREAR VARIABLES: GENERATE Y EGEN

38
42
47
48
51
52

VI.

56

APLICANDO LO APRENDIDO

VI.1. UN EJEMPLO APLICADO


VI.2. ARCHIVOS LOG
VI.3. ARCHIVOS DO: PARA TRABAJAR EN FORMA PROGRAMADA EN STATA

56
60
61

VII.

69

CREAR MATRICES PARA GUARDAR LOS DATOS

VIII.

CICLOS RECURSIVOS

71

IX.

GRFICOS

72

X.

AYUDA: HELP

83
2

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Introduccin
Este documento pretende los introducir el uso del programa STATA, mediante la
entrega de conceptos y comandos bsicos para el inicio en este software. En una
primera parte haremos una pequea introduccin al programa, luego veremos
brevemente como se carga una base de datos, y en una tercera parte se ver cual es
la manera ms adecuada de trabajar con ella. Adicionalmente, en una cuarta parte se
vern los comandos que comnmente se utilizan para inspeccionar una base de datos
y obtener estadsticas descriptivas de sus variables, especficamente veremos
comandos como sum, el cual nos entrega un set de estadsticas bsicas de la variable,
describe, y varios otros. En una quinta parte se enseara como se pueden modificar
las bases de datos, especialmente, cambiando el nombre de las variables, unir bases
de datos, eliminar y agregar variables, cambiar la estructura de ellas y crear nuevas
variables a partir de las variables existentes.
En una sexta parte se aplicar lo aprendido y a partir de ese ejercicio se introducir la
utilidad de los archivos log y do. En la sptima parte se mostrar cmo podemos
plasmar la informacin que nos interesa de los datos en diferentes tipos de grficos.
Finalmente en la octava y ltima parte se ensear la utilidad del comando help, el
cual nos ser de gran utilidad para poder avanzar y utilizar stata cuando no tenemos
muy claro cual es el comando a utilizar.
Es importante aclarar que gran parte de los comandos de stata se puede hacer
mediante la utilizacin directa del comando, o mediante la utilizacin de ventanas.
Durante este curso veremos ambas formas.
Un concepto importante de entender antes de comenzar a utilizar este software
estadstico, es el de Base de Datos, el primer paso para poder trabajar con STATA es
cargar la base de datos. Una base de datos en un conjunto (matriz) de informacin,
tenemos filas y columnas, las que en su conjunto forman la base de datos.
Generalmente se organiza de forma tal que las variables se representan por columnas
y las observaciones por filas. Por ejemplo, si estamos estudiando las variables
escolaridad e ingreso para las mujeres. Nuestra base de datos tendr dos columnas,
donde cada una de ellas representa la escolaridad e ingreso, y cada fila representa una
mujer.
escolaridad
10
12
13
4
5
8
17
21
2

Ingreso
80.000
120.000
110.000
85.000
70.000
65.000
450.000
1.200.000
60.000
3

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

I. Una pequea introduccin al programa


STATA es una aplicacin completa e integrada, basada en comandos, que tiene todos
los elementos necesarios para realizar anlisis estadstico, manejo de datos
estadsticos y grficos. Las versiones mas nuevas de STATA (a partir de la versin 8.0)
posee una forma ms fcil de utilizar, que consiste simplemente en hacer clic en
ventanas con las opciones de anlisis y procesamiento de datos, adems tiene la
opcin antigua mediante los comandos. El programa posee una ayuda en lnea, es un
programa fcil y rpido de utilizar.
Cmo se ve STATA?
Cuando abrimos el programa, inmediatamente podemos distinguir 4 ventanas:
Review: en esta ventana aparecen los comandos que han sido utilizados
durante la seccin en turno.
Results: muestra los resultados de la aplicacin de los comandos, slo los
resultados ms recientes son visibles en esta ventana
Variables: en esta venta se presenta el listado de variables que se encuentran
en la base de datos que se este trabajando
Commands: corresponde a la ventana donde introducen los comandos para
obtener el resultado deseado. Sirve para utilizar STATA en forma interactiva.

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Los conos de la parte superior tienen los siguientes usos:


Abrir una base de datos
Guardar una base de datos, una vez que ha sido modificada en el programa
Imprimir los resultados de la ventana de resultados (STATA Results)
Comenzar o abrir un archivo log. Estos archivos tienen un formato de texto y
permiten ir guardando todos los resultados.
Abrir el editor de do-file. Los archivos do son archivos con esta extensin que nos
permiten en forma ordenada escribir todo lo que queremos hacer en nuestra base de
datos: cambiar la base de datos, sacar estadsticas, etc, y luego presionando
correr dicho do y obtener los resultados.2
Permite ver y editar la Base de Datos.
Es igual al EDITOR, pero no permite eliminar variables ni observaciones.
Es para detener la ejecucin de un comando.

Lo ideal es combinar la utilizacin de un do y un log; el primero permite tener en forma ordenada todos
los comandos que se estn utilizando y todas las instrucciones que se quieren ejecutar, mientras que el
segundo guarda en un archivo de texto todos los resultados que surgen de este archivo do.
5

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

II. Como organizar el trabajo en STATA


Cuando se abre STATA es importante saber donde se esta trabajando, es decir, en que
carpeta se estn guardando los resultados o desde que carpeta vamos a llamar la base
de datos, etc. Si no se sabe la carpeta o directorio donde STATA esta ubicado podemos
averiguarlo escribiendo el comando pwd:

pwd
C:\data Este resultado nos indica que estamos ubicados en el disco C del
computador en la carpeta data
Para cambiar el directorio o carpeta se debe realizar lo siguiente:

cd C:\Nivelacion_Stata

Utilizo el comando cd y entrego la nueva ruta. En este caso le estoy indicando al


programa que se ubique en la carpeta Nivelacion_Stata que se encuentra en el disco
C del computador.
La ventaja de indicar desde un comienzo en que carpeta del computador se esta
trabajando, es que evita indicar la ruta completa de los archivos cada vez que
queramos abrir o guardar una base de datos, o abrir o guardar un log. Obviamente
esto tiene sentido cuando para un trabajo especfico tenemos todos los archivos
necesarios en la misma carpeta.
Por ejemplo, si estamos trabajando con informacin de tres bases de datos distintas, y
queremos dejar la informacin relevante para el estudio en una sola base datos (ms
adelante veremos como hacer esto), lo ideal es trabajar en una sola carpeta,
Nivelacion_Stata, y no tener las tres bases de datos repartidas en carpetas distintas.
Si no estn en la misma carpeta no es til indicarle el directorio al comienzo, ya que
igual cuando llamemos a cada una de las bases de datos, al estar en carpetas
distintas, tendremos que cambiar la ruta.
Importante: los sistemas operativos ms nuevos permiten que las carpetas tengan
nombres con espacio en blanco, por ejemplo, Nivelacion Stata. Sin embargo, STATA
no va a reconocer una carpeta que tenga espacios en blanco en el nombre, a no ser
que se indique la ubicacin de esta carpeta entre comillas. Por este motivo, se debe
evitar llamar a una carpeta con la que van a trabajar en STATA con nombres que
contengan espacios en blanco.3
3

Esto problema es comn cuando trabajan en el Escritorio del computador, ya que la carpeta en este caso
es C:\Documents and Settings\...., tiene espacios en blanco.
6

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Supongamos que la carpeta en que vamos a tratar se llama Nivelacion Stata, en la


primera lnea del siguiente cuadro podemos apreciar que al entregar la ubicacin de la
carpeta utilizando el comando cd, el programa nos entrega un error invalid syntax,
esto se debe a que el nombre de la carpeta tiene espacios en blanco. Si agregamos
comillas a la ruta no se produce el error.

Nota: si al introducir un comando no aparece


un punto blanco despus de ejecutado el
comando, significa que no se termino o no se
ha terminado de ejecutar. Adems, siempre
que aparezcan letras rojas significa que hay
un error, la ayuda para el error la pueden
encontrar pinchando r(198).

En resumen, para trabajar ordenadamente en STATA es conveniente crear una carpeta


para cada trabajo independiente, esta carpeta debe tener una ruta que no contenga
espacios en blanco en los nombres.

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

III.

Cmo cargar una base de datos?

Las bases de datos en formato Stata tienen extensin .dta. Las versiones antiguas del
software no se pueden abrir bases de datos que han sido trabajadas y guardas en una
versin ms moderna, cuando intentemos hacer esto el programa entregar un error
indicando que la base no tiene formato Stata.
Antes de abrir una base de datos se tienen que cumplir dos condiciones:
1- El programa debe estar limpio, sin ninguna base de datos ya cargada.
Para limpiar el programa de otras bases de datos se debe utilizar el
comando clear. Si he estado trabajando una base de datos previamente la
cual se ha modificado y no he guardado estas modificaciones, al intentar
abrir una nueva base de datos sin limpiar antes arrojar el siguiente error:

no; data in memory would be lost

2- El programa debe tener suficiente memoria. Para entregarle memoria a


Stata se debe utilizar el comando set mem. Por ejemplo, si la base de datos
que deseamos cargar pesa 100 MB, en la ventana Stata Command
debemos tipear:

set mem 100m

Si Ud. no agrega memoria y los 10 MB que vienen asignados al abrir el


programa no son suficientes, el programa arrojar el siguiente error:

no room to add more observations

Esto tambin puede suceder cuando se ha trabajado en la base de datos y


se han creado muchas variables: en un momento el programa se puede
quedar sin memoria. En este caso se debe limpiar el programa (borrar la
base de datos) utilizando el comando clear; entregarle ms memoria al
programa utilizando set mem; abrir la base de datos y realizar todo
nuevamente. Por esta razn es fundamental que Ud., cuando comience a
trabajar, asigne la memoria necesaria para todas las variables que espera
generar.
8

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El comando general para entregar memoria a Stata es:

set mem #[b|k|m|g] [, permanently]

con la opcin permanently la cantidad de memoria ingresada se


mantendr cada vez que se inicie nuevamente el programa.
Existen distintas formas de cargar una base de datos:
1- Utilizando una base ya grabada con la extensin de STATA, es decir,
disponer de la base de datos como nombre.dta En este caso podemos
y buscar la ubicacin de la base de datos. Tambin
apretar el icono
podemos hacerlo dirigindonos a File/Open
2- Otra forma es tipear en Stata Command use [disco en que la
guardaremos] \ [ruta de acceso] \ [nombre de archivo.dta], clear. Por
ejemplo:

use "C:\Nivelacion_Stata\ingreso.dta", clear


o simplemente
use ingreso.dta, clear

si ya le hemos indicado previamente a Stata que vamos a trabajar en la


carpeta Nivelacion_Stata del disco C.
Notar que en ambos casos el comando incorpora la opcion , clear, esto nos
garantiza que la base de datos sea abra si es que ya existe otra base de
datos previa en el programa, esta opcin ahorra el paso previo de ejecutar
el comando clear antes de abrir la base de datos.
Recuerde que si la carpeta en la que esta trabajando tiene espacios en
blanco, debo poner comillas al llamar la base de datos, de lo contrario
aparecer el siguiente error:

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Esto porque Stata cree que el nombre de la carpeta es simplemente


Nivelacion. Si utilizamos comillas no se produce el error.
Ahora si el nombre de la carpeta o el nombre de la base esta mal ingresado
en el comando se produce el siguiente error:

3- Traspasar los datos de un archivo Excel o similar copiando la


informacin de este archivo al EDITOR de STATA.
Esto se hace copiando en el archivo Excel las columnas (variables) que
queremos traspasar como base de datos a STATA (Ctr+C). Luego nos
y pegamos la informacin
dirigimos a STATA abrimos el EDITOR
(Ctr+V). Obviamente antes de hacer esto se debe haber limpiado Stata con
el comando clear.
Algunos aspectos relevantes antes de copiar los datos de Excel a Stata:

Para Stata, como para cualquier otro software norteamericano, el


separador de miles es la coma (,), y el separador de decimales es el punto
(.); Si el computador en el que esta trabajando no esta configurado de esta
forma, debe dirigirse a inicio Panel de Control Opciones regionales, de
idioma, y de fecha y hora Configuracin regional y de idioma Opciones
regionales, pichar personalizar, aqu se puede cambiar la configuracin
numrica indicando que el smbolo decimal es . Y el smbolo de separacin
de miles ,.

Todas las variables que son numricas, deben estar en formato


numrico antes de ser exportadas.
El siguiente cuadro muestra lo que resulta de pasar la base de datos
base.xls a Stata:

10

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El color rojo indica que la variable no es numrica.


Generalmente las bases de datos muy grandes no vienen en excel, ya que
este programa es limitado en cuanto al nmero de filas (observaciones) y
nmero de columnas (variables). El nmero mximo de filas es de 65.536, y
el nmero mximo de columnas es de 256.
4- Otra forma de cargar bases de datos es mediante el comando insheet,
este comando permite cargar bases de datos en formato ASCII (texto)
mediante el siguiente comando:
insheet using C:\Nivelacion_Stata\junio05.txt

o alternativamente:

11

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

12

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Cuando las bases de datos vienen el texto y son muy grandes no se pueden
ver utilizando un block de notas, en estos casos se recomienda utilizar el
programa
TextPad
que
puede
ser
descargado
gratuitamente
(www.textpad.com). Siempre es recomendable inspeccionar la base de
datos en texto antes de ser traspasada a Stata.
5- Si la base de datos tiene otro formato, por ejemplo, SPSS (.sav), dbase
(.dbf), Access (.mbd), etc; existe un software llamado Stat Transfer, que
permite transformar base de datos desde y a diversos formatos.
Luego para guardar la base de datos utilizamos el comando save:

1- Si quiere reescribir la base de datos antigua:

save C:\Nivelacion_Stata\ingresos.dta, replace

Es importante escribir replace, sino el programa les enviara un error


diciendo que la base de datos ya existe.
13

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

2- Si quiere guardar la base de datos con un nuevo nombre no es


necesario tipear replace:

save C:\Nivelacion_Stata\ingresos_new.dta
Una vez que los datos han sido cargados, se puede optimizar el espacio que
estos ocupan utilizando el comando compress, este comando comprime la
base de datos. Es muy til cuando trabajamos con bases de datos grandes.
Hasta ahora hemos aprendido como cargar una base de datos en Stata, en lo que
sigue se vern los comandos bsicos para analizar una base de datos.
Entonces, con los comandos recin estudiados, comencemos por abrir la base de
datos:

cd C:\Nivelacion_Stata
set mem 100m
use ingreso.dta, clear

14

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IV. Leyendo los datos


Existen varios comandos que nos permiten obtener informacin preliminar acerca de
de los datos y estadsticas acerca de ellos. Veremos bsicamente los comandos
describe, codebook, edit, sum, tab, inspect, count y duplicate.
Antes de ver detallamente cada uno de estos comandos descriptivos es necesario
aclarar que cada uno de ellos puede ser utilizado para ver el comportamiento de
grupos de observaciones mediante las opciones by e if. Por ejemplo: by sexo:
codebook, el cual nos mostrara la aplicacin del comando codebook separado para
cada sexo o codebook if sexo==1, el cual nos mostrar la aplicacin del comando
codebook para el sexo que este codificado con el nmero 1.
Tambin podemos leer los datos usando las ventanas correspondientes, tal como lo
observamos en la siguiente figura:

Como podemos ver, si vamos a la opcin Data y luego seguimos la opcin Describe
data, veremos una serie de opciones que veremos a continuacin, tal como el
comando describe o el codebook. Tambin mediante la opcin Data podemos
directamente ver el editor de stata.

15

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IV.1. Describe
El comando describe entrega informacin de todas las variables que se encuentran en
la base de datos. Esta informacin incluye el tipo de almacenamiento (byte, int, long,
float, double, string)4, el formato de los datos, la variable que contiene el label
(etiqueta), y la descripcin de la variable. Adems entrega informacin de nmero de
observaciones, nmero de variables y tamao de la base de datos.
. describe
Contains data from C:\Nivelacin_I\ingreso.dta
obs:
252,748
vars:
5
19 Mar 2006 12:01
size:
5,307,708 (49.4% of memory free)
--------------------------------------------------------------------------storage display
value
variable name
type
format
label
variable label
--------------------------------------------------------------------------esc
byte
%8.0g
escolaridad (aos)
expr
float %9.0g
experiencia laboral
dhombre
float %9.0g
genero (1 hombre 0 mujer)
ingreso
float %9.0g
ingreso laboral
folio
long
%8.0g
---------------------------------------------------------------------------

Cuando la base de datos es muy grande y slo se quiere obtener informacin de


algunas de las variables contenidas en ella, despus de describe (o simplemente d) se
ingresa la lista de variables de las cuales Ud. desea una descripcin.
Otras formas de utilizar el comando describe:

Ver Anexo A sobre el tipo de almacenamiento de datos


16

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Para usar el comando mediante el uso de ventanas basta con seguir el mismo
esquema recin mostrado y hacer doble clic sobre Describe variables in memory.

Luego se escribe el nombre de la variable de la cual quiero la descripcin y si quisiese,


por ejemplo, una descripcin especifica, puedo aplicar alguna de las opciones que se
observan en la ventana anterior.
IV.2. Codebook
Existen otras formas de obtener una descripcin de las variables en la base de datos,
una de las mejores es usar el comando codebook. Al igual que con el comando
describe, al tipear simplemente codebook se va a describir cada variable. El siguiente
cuadro muestra la diferencia entre ambos comandos:

17

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Claramente el comando codebook es ms completo, presenta la etiqueta de la


variable, el formato, el rango de los datos, si esta codificada en nmeros enteros
(units: 1), cuantas observaciones no tienen dato de esta variable, el promedio, la
desviacin estndar, y los percentiles.
Tanto el comando describe como el comando codebook nos permite distinguir dos
tipos de variables, las numricas y las no numricas. Slo se pueden obtener
estadsticas de los datos cuando las variables son numricas, aunque muchas veces es
ms fcil visualizar la base de datos cuando las variables tienen nombres en vez de
nmeros o cdigos. Por ejemplo, en la variable dhombre de la base de datos vemos
slo unos y ceros, siempre tenemos que tener en mente que uno significa hombre y
cero mujer.
Tambin podemos aplicar el comando va la utilizacin de ventanas, lo que es similar al
caso de describe, con la salvedad de que el doble click se hace sobre Describe data
contents (codebook). Ah se pone el nombre de la variable que queremos
inspeccionar:

18

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Otra funcin que podemos aplicar sobre la misma ventana es condicionarla a algo,
como, por ejemplo, que la inspeccin sea slo para lo hombres:

19

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IV.3. Edit
Otra forma de conocer o tener una visin ms amplia de la base de datos es mediante
el comando edit; el que nos mostrar una planilla donde podremos ver la base de
datos completa; sus variables y todas sus observaciones. Tambin lo podemos hacer
va ventanas mediante la opcin Data y luego Data editor

20

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Al igual que en los casos anteriores tambin se puede realizar la misma operacin va
el comando edit y tambin podemos editar una matriz mas pequea especificando las
variables que queramos incluir utilizando la encuesta casen 2003, por ejemplo edit
sexo ecivil edad esc

21

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IV.4. ist; inspect; duplicates; count; order


Un comando bastante til, similar al edit; es el list; el cal despliega los datos en la
ventana de resultados (Stata Results); en vez de enviarnos al editor.

22

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Otro comando; el cual asegura que una variable es una codificacin nica dentro de
una base de datos, es el comando duplicates report. Este comando se usa
generalmente para chequear que no existan observaciones duplicadas (folios
duplicados) dentro de una base de datos. Si tenemos la siguiente base de datos:

23

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El resultado que entrega aplicar este comando a la variable id es el siguiente:

Finalmente, existen otros dos comandos interesantes para inspeccionar la base de


datos: inspect y count.
El comando inspect muestra la distribucin de la variable, la cantidad de
observaciones con valor cero, con valores mayores a cero y sin dato, as como la
cantidad de nmero enteros y no enteros en la variable. Por ejemplo:

24

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El comando count, lo que hace es contar tal como lo dice su nombre. Por ejemplo:

Un comando adicional; que si bien no sirve para inspeccionar la base de datos, si no


ayuda a inspeccionarla; ya que nos permite ordenar las variables de la manera que
ms nos acomode. Este comando es order el cual se utiliza de la siguiente manera:

order folio edad esc ingreso dhombre sexo


y nos entregar la base de datos de tal forma que al aplicar el comando edit la primera
variable que veremos ser folio, luego edad, luego aos de escolaridad, etc.
IV.5. Sum
El comando sum entrega estadsticas bsicas: nmero de observaciones, promedio,
desviacin estndar, mnimo y mximo, de las variables que se especifiquen. Si slo se
escribe sum en Stata Command, se muestran las estadsticas de todas las variables en
la base de datos.

25

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

. sum
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
180914
8.319069
4.286882
0
21
expr |
252748
59.3625
101.0047
0
5045
dhombre |
252748
.4987854
.4999995
0
1
ingreso |
76993
195579.2
361822
1002
2.19e+07
folio |
252748
126374.5
72962.21
1
252748

Si nos interesan las estadsticas de una sola variable, por ejemplo, escolaridad:

. sum esc
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
180914
8.319069
4.286882
0
21

Si requerimos las estadsticas de escolaridad, pero separado para hombres y mujeres,


primero se debe ordenar la base de datos por gnero (sort dhombre) y luego hacer un
sum utilizando el comando by:

. sort dhombre
.

by dhombre: sum esc

---------------------------------------------------------------------------> dhombre = 0
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
91557
8.29598
4.30015
0
21
---------------------------------------------------------------------------> dhombre = 1
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
89357
8.342726
4.273139
0
21

26

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Esto mismo se podra hacer alternativamente utilizando if :

. sum esc if dhombre==0


Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
91557
8.29598
4.30015
0
21
. sum esc if dhombre==1
Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
89357
8.342726
4.273139
0
21

Si al comando sum le agregamos detail despus de una ,; STATA entrega una


cantidad ms amplia de estadsticas sobre la variables. Adems de las ya descritas
entrega los percentiles, la varianza, la asimetra y la kurtosis.

. sum esc, detail


escolaridad (aos)
------------------------------------------------------------Percentiles
Smallest
1%
0
0
5%
0
0
10%
2
0
Obs
180914
25%
5
0
Sum of Wgt.
180914
50%
75%
90%
95%
99%

8
12
13
15
17

Largest
21
21
21
21

Mean
Std. Dev.

8.319069
4.286882

Variance
Skewness
Kurtosis

18.37735
-.1286632
2.403091

Todo lo anterior se puede hacer tambin mediante ventanas, especificaremos slo un


caso, donde se pide un sum de la variable esc y se pide una descripcin detallada, lo
que se obtiene mediante la opcin Display additional statistics

27

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IV.6. Tabulate
El comando tabulate (o tab) permite hacer tablas con las variables de inters. La
tabla ms sencilla se realiza de la siguiente forma:
. tab

dhombre

genero (1 |
hombre 0 |
mujer) |
Freq.
Percent
Cum.
------------+----------------------------------0 |
126,681
50.12
50.12
1 |
126,067
49.88
100.00
------------+----------------------------------Total |
252,748
100.00

Esta tabla indica el nmero de observaciones total y de cada una de las categoras de
la variable, el porcentaje que cada uno representa sobre el total y el porcentaje
acumulado.

28

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El comando tab1
simultneamente:
. tab1

permite

hacer

esto

mismo

pero

para

varias

variables

dhombre esc

-> tabulation of dhombre


genero (1 |
hombre 0 |
mujer) |
Freq.
Percent
Cum.
------------+----------------------------------0 |
126,681
50.12
50.12
1 |
126,067
49.88
100.00
------------+----------------------------------Total |
252,748
100.00

-> tabulation of esc


escolaridad |
(aos) |
Freq.
Percent
Cum.
------------+----------------------------------0 |
10,833
5.99
5.99
1 |
2,481
1.37
7.36
2 |
5,434
3.00
10.36
3 |
9,193
5.08
15.44
4 |
10,303
5.69
21.14
5 |
7,512
4.15
25.29
6 |
19,165
10.59
35.89
7 |
7,004
3.87
39.76
8 |
20,503
11.33
51.09
9 |
10,582
5.85
56.94
10 |
12,984
7.18
64.12
11 |
9,384
5.19
69.30
12 |
35,263
19.49
88.79
13 |
4,820
2.66
91.46
14 |
3,965
2.19
93.65
15 |
3,156
1.74
95.39
16 |
3,177
1.76
97.15
17 |
3,853
2.13
99.28
18 |
881
0.49
99.77
19 |
292
0.16
99.93
20 |
122
0.07
100.00
21 |
7
0.00
100.00
------------+----------------------------------Total |
180,914
100.00

Adems, con este comando, se pueden realizar cruces entre variables, por ejemplo:

29

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tab esc dhombre

| genero (1 hombre 0
escolarida |
mujer)
d (aos) |
0
1 |
Total
-----------+----------------------+---------0 |
5,842
4,991 |
10,833
1 |
1,198
1,283 |
2,481
2 |
2,709
2,725 |
5,434
3 |
4,571
4,622 |
9,193
4 |
5,284
5,019 |
10,303
5 |
3,818
3,694 |
7,512
6 |
9,915
9,250 |
19,165
7 |
3,501
3,503 |
7,004
8 |
9,791
10,712 |
20,503
9 |
5,173
5,409 |
10,582
10 |
6,435
6,549 |
12,984
11 |
4,707
4,677 |
9,384
12 |
18,245
17,018 |
35,263
13 |
2,672
2,148 |
4,820
14 |
2,180
1,785 |
3,965
15 |
1,523
1,633 |
3,156
16 |
1,596
1,581 |
3,177
17 |
1,929
1,924 |
3,853
18 |
326
555 |
881
19 |
92
200 |
292
20 |
45
77 |
122
21 |
5
2 |
7
-----------+----------------------+---------Total |
91,557
89,357 |
180,914

Si en vez de las frecuencias uno quiere ver el porcentaje, que sume 100% en forma
horizontal (filas), se debe agregar a lo anterior una coma y la palabra row y poner
adems nofreq (para que no se muestre las frecuencias):

30

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tab esc dhombre, row nofreq

| genero (1 hombre 0
escolarida |
mujer)
d (aos) |
0
1 |
Total
-----------+----------------------+---------0 |
53.93
46.07 |
100.00
1 |
48.29
51.71 |
100.00
2 |
49.85
50.15 |
100.00
3 |
49.72
50.28 |
100.00
4 |
51.29
48.71 |
100.00
5 |
50.83
49.17 |
100.00
6 |
51.73
48.27 |
100.00
7 |
49.99
50.01 |
100.00
8 |
47.75
52.25 |
100.00
9 |
48.88
51.12 |
100.00
10 |
49.56
50.44 |
100.00
11 |
50.16
49.84 |
100.00
12 |
51.74
48.26 |
100.00
13 |
55.44
44.56 |
100.00
14 |
54.98
45.02 |
100.00
15 |
48.26
51.74 |
100.00
16 |
50.24
49.76 |
100.00
17 |
50.06
49.94 |
100.00
18 |
37.00
63.00 |
100.00
19 |
31.51
68.49 |
100.00
20 |
36.89
63.11 |
100.00
21 |
71.43
28.57 |
100.00
-----------+----------------------+---------Total |
50.61
49.39 |
100.00

31

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Si se quiere que los porcentajes sumen 100% en forma vertical (columnas) debemos
hacer lo siguiente:
.

tab esc dhombre, col nofreq

| genero (1 hombre 0
escolarida |
mujer)
d (aos) |
0
1 |
Total
-----------+----------------------+---------0 |
6.38
5.59 |
5.99
1 |
1.31
1.44 |
1.37
2 |
2.96
3.05 |
3.00
3 |
4.99
5.17 |
5.08
4 |
5.77
5.62 |
5.69
5 |
4.17
4.13 |
4.15
6 |
10.83
10.35 |
10.59
7 |
3.82
3.92 |
3.87
8 |
10.69
11.99 |
11.33
9 |
5.65
6.05 |
5.85
10 |
7.03
7.33 |
7.18
11 |
5.14
5.23 |
5.19
12 |
19.93
19.04 |
19.49
13 |
2.92
2.40 |
2.66
14 |
2.38
2.00 |
2.19
15 |
1.66
1.83 |
1.74
16 |
1.74
1.77 |
1.76
17 |
2.11
2.15 |
2.13
18 |
0.36
0.62 |
0.49
19 |
0.10
0.22 |
0.16
20 |
0.05
0.09 |
0.07
21 |
0.01
0.00 |
0.00
-----------+----------------------+---------Total |
100.00
100.00 |
100.00

Si deseamos que se muestren ambos porcentajes:

tab esc dhombre, col row nofreq


Tambin se pueden hacer tablas utilizando el comando by, primero ordenando de
acuerdo a la variable que voy a realizar las tablas, por ejemplo:
sort dhombre
by dhombre: tab esc

Este cdigo entrega dos tablas de la variable escolaridad, una para los hombres y otra
para las mujeres. Lo mismo es posible de ser realizado utilizando el condicional if:
32

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tab esc if dhombre==0


tab esc if dhombre==1
Tambin se puede utilizar el comando tabulate para generar variables dicotmicas.
Por ejemplo, si se quiere generar variables dicotmicas para cada ao de escolaridad:

1 si tiene 0 aos de educacin


esc1 =
0 si no
1 si tiene 1 aos de educacin
esc 2 =
0 si no
M
Se puede hacer de la siguiente forma:

tab esc, generate(esc)

Si los aos de educacin toman valores que van desde 0 a 21, se generarn 22
variables dicotmicas.
Supngase ahora que se requiere hacer un cuadro con los aos de escolaridad, pero en
vez de entregar la frecuencia o porcentaje de observaciones en cada categora, se
requiere que muestre una estadstica de otra variable, por ejemplo, el promedio de
ingreso. Para realizar este tipo de tablas se debe usar el comando tab agregndole
despus de una coma la palabra summarize. Para el ejemplo citado debera utilizar el
siguiente cdigo:

33

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

. tab esc, summarize(ingreso) means


| Summary of
|
ingreso
escolaridad |
laboral
(aos) |
Mean
------------+-----------0 |
96996.235
1 |
104083.11
2 |
108236.24
3 |
112638.81
4 |
119092.96
5 |
119745.97
6 |
136860.84
7 |
121445.45
8 |
131005.63
9 |
147939.41
10 |
169646.75
11 |
171547.61
12 |
196789.47
13 |
234377.27
14 |
267368.38
15 |
337808.95
16 |
394113.77
17 |
599325.8
18 |
865582.61
19 |
918467.2
20 |
1127102.9
21 |
744900.67
------------+-----------Total |
195714.26

Por ltimo, el comando tabstat permite realizar tablas con las siguientes estadsticas:

34

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

-------------------------------------------------mean
promedio
count
cuenta el nmero de observaciones que tiene valor
n
igual que count
sum
suma
max
mximo
min
mnimo
range
rango=max-min
sd
desviacin estndar
var
varianza
cv
coeficiente de variacion (sd/mean)
semean
error estndar de la media = sd/sqrt(n)
skewness
asimetra
kurtosis
kurtosis
median
mediana (lo mismo que p50)
p1
1st percentile
p5
5th percentile
p10
10th percentile
p25
25th percentile
p50
50th percentile (igual que la mediana)
p75
75th percentile
p90
90th percentile
p95
95th percentile
p99
99th percentile
iqr
rango interquantil = p75 - p25
q
equivalente a especificar "p25 p50 p75"
--------------------------------------------------

Al poner by(nombre) especifica que las estadsticas


separadamente para cada valor de la variable nombre.

deben

ser

entregadas

Por ejemplo, si se quiere obtener el promedio, la mediana, el mximo y el mnimo de


ingreso por gnero, se puede realizar de la siguiente forma:

. tabstat ingreso, statistics(mean p50 max min) by(dhombre)


Summary for variables: ingreso
by categories of: dhombre (genero (1 hombre 0 mujer))
dhombre |
mean
p50
max
min
---------+---------------------------------------0 | 162629.1
104000
9130004
1002
1 | 210198.5
120000 2.19e+07
1500
---------+---------------------------------------Total | 195579.2
120000 2.19e+07
1002
--------------------------------------------------

Como hemos visto en los casos anteriores tambin podemos tabular usando las
ventanas:

35

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Si quisiramos graficar escolaridad contra sexo hacemos doble click sobre Table of
summary statistics observamos el dibujo que viene y ponemos esc en Row
variable y sexo sobre Column variable.

36

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

37

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

V. Modificacin de una base de datos.


En esta seccin veremos como se pueden modificar las bases de datos, desde los
nombres de sus variables y la generacin de nuevas variables hasta la forma se como
se pueden unir dos bases de datos
V.1. Modificacin de Variables de una base de datos
Para lograr que una base de datos sea ms amigable y sea entendida por cualquier
usuario, es recomendable incorporar etiquetas a los nmeros o cdigos de las
variables. Esto se hace mediante la utilizacin de variables secundarias llamadas value
labels. Si una variable tiene una variable secundaria que entregue etiqueta a los
cdigos que contiene, debera aparecer en el resultado del comando describe.
Por ejemplo, la variable dhombre:

No tiene asociada una variable secundaria que nos indique que significa el nmero 1 y
el nmero 0 en esta variable.
Entonces para etiquetar los cdigos de una variable se deben realizar dos pasos:
1- Crear la variable secundaria (value label) que realice el nexo entre los cdigos y
sus etiquetas:
label define generolbl 1 Hombre 0 Mujer

2- Indicar que la relacin entre la variable y su variable secundaria con las


etiquetas:
label values dhombre generolbl

Al hacer un describe de la variable dhombre, este indica que existe una variable que
contiene la etiqueta de los nmeros o cdigos de esta variable:

38

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Si es que la base de datos que uno tiene ya viene con las variables secundarias de
etiquetas (value labels), y queremos saber que cdigo esta relacionado a que etiqueta,
se debe utilizar el comando label list:

Por otro lado si queremos en ese instante darle nombre a las variables y su respectiva
descripcin, hacemos doble click sobre la variable y nos aparecer el siguiente cuadro:

39

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

En Name escribimos el nombre de la variable y en Label su descripcin.


Adicionalmente existen otros dos tipos de etiquetas: para las variables y para la base
de datos.
Para etiqueta una variable (variable label) se utiliza el comando label var:

label var folio identificador individual


Para etiquetar la base de datos se utiliza el comando label data:
label data Base de Ingresos Completa

40

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Para ver la base de datos en la pantalla se puede tipear en Stata Command la palabra
edit o

, o alternativamente puedo tipear list

Cuando una variable est en formato string (no numrico) no se pueden obtener, la
diferencia es que el primero de los comandos despliega la hoja de clculo y el segundo
despliega los datos en la ventana de resultados (Stata Results). Tambin en el editor
se puede introducir las etiquetas a las variables y a los cdigos de cada variable.
Cuando una variable est en formato string (no numrico) no se pueden obtener
estadsticas de ella. Los comandos encode y decode cambian el formato de una
variable string a numrico y viceversa:

encode variable, generate(nueva_variable)

41

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Mediante este cdigo generamos una nueva variable que le asigna un cdigo a cada
palabra distinta en la variable y deja como etiqueta la palabra.
Ahora cuando la variable que no tiene formato numrico, pero en realidad es un
nmero slo que al traspasarlo a la base de datos quedo en formato string, lo
recomendable es utilizar el siguiente comando:

generate nueva_variable=real(variable)

V.2. Unir bases de datos: merge y append


Muchas veces es necesario combinar dos o ms bases de datos para formar una sola.
Para ello se pueden utilizar los comandos merge y append. El primero une dos bases de
datos utilizando una variable en comn (generalmente es un folio o cdigo que
identifica las observaciones en la base de datos). Las dos bases de datos deben estar
guardadas en formato .dta y deben estar ordenadas de acuerdo a la variable que se va
a pegar. El objetivo del comando merge es agregar variables (columnas) no
observaciones (filas). Supongamos que tenemos dos bases de datos, la primera
llamada uno.dta contiene la siguiente informacin:
id esc
1
2
3
4
5
6
7
8
9

8
9
11
13
15
2
0
10
9

sexo

edad

1
2
2
2
1
2
1
1
1

20
55
45
47
32
31
28
26
35

Y supongamos que tenemos otra base de datos (dos.dta) con la siguiente informacin:
id

ingreso

1
3
4
6
8
9
10
11

80000
99000
110000
130000
150000
200000
115000
98000

42

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Entonces si queremos pegar (match-merge) la informacin de ambas bases de datos,


para formar una slo base de datos que contenga las variables: id, esc, sexo, edad e
ingreso, debemos realizar el siguiente procedimiento:
1- Ordenar la base de datos dos.dta (using data set) de acuerdo a las variables
que vamos a hacer el pegado (id) y guardar esta base de datos:

sort id
save dos.dta, replace

2- Abrir la base de datos uno.dta (master data set), ordenarla de acuerdo a id y


pegar la informacin de la base dos.dta:

use uno.dta
sort id
merge id using dos.dta
La base de datos que resulta de esto es de la siguiente forma:
id

esc

sexo

edad

1
2
3
4
5
6
7
8
9
10
11

8
9
11
13
15
2
0
10
9

1
2
2
2
1
2
1
1
1

20
55
45
47
32
31
28
26
35

ingreso _merge
80000

99000
110000

130000

150000
200000
115000
98000

3
1
3
3
1
3
1
3
3
2
2

Al realizar este pegue de datos, el programa generar una variable, si Ud. no le asigna
un nombre se crear con el nombre _merge, pero Ud. puede darle el nombre que
desee de la siguiente forma:

merge id using dos.dta, _merge(nombre)

43

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Esta variable puede tomar tres valores:


_merge=1 cuando la observacin esta slo en Master Dataset
_merge=2 cuando la observacin esta slo en Using Dataset
merge=3 cuando las observaciones estn en ambas bases de datos
Ahora supongamos que no se dispone de la base ingreso.dta tal como fue presentada
anteriormente, sino que dispongo de dos bases de datos:
9
9

Ingreso1.dta: que tiene la variable folio, esc, dhombre e ingreso


Ingreso2.dta: que tiene la variable folio y expr.

Si quiero construir entonces una sola base de datos que contenga todas estas variables
en forma conjunta, debera realizar los siguientes pasos:

use ingreso2.dta (using dataset)


sort folio
save ingreso2.dta, replace
use ingreso1.dta (master dataset)
sort folio
merge folio using ingreso2.dta

Lo que este pequeo cdigo nos indica es que carguemos la base de datos
ingreso2.dta, la ordenemos (utilizando el comando sort) de acuerdo al identificador
folio, y guardemos los cambios realizados (esta base de datos se denomina using
dataset). Luego abrimos la base de datos a la cual le vamos a pegar variables (master
dataset), ingreso1.dta, la ordenamos de acuerdo al identificador folio, y finalmente le
pegamos la informacin que esta en la base ingreso2.dta utilizando el comando merge.
Si alguna de las bases de datos no esta ordenada les arrojara un mensaje de error:

using data not sorted


master data not sorted

Por otro lado, el comando append, anexa observaciones para el mismo conjunto de
variables, es decir, agrega filas a la base de datos. Supongamos que adems de
uno.dta tenemos otra base de datos (tres.dta) que contiene las mismas variables que
la primera pero para otros 10 individuos distintos:

44

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

id esc
10
11
12
13
14
15
16
17
18
19

8
9
11
13
15
2
0
10
9
4

sexo

edad

1
2
2
2
1
2
1
1
1
2

20
55
45
47
32
31
28
26
35
20

Entonces podemos juntar estas 19 observaciones en una sola base de datos mediante
el comando append, de la siguiente forma:

use dos.dta
append using tres.dta
El resultado es el siguiente:

id esc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

8
9
11
13
15
2
0
10
9
8
9
11
13
15
2
0
10
9
4

sexo

edad

1
2
2
2
1
2
1
1
1
1
2
2
2
1
2
1
1
1
2

20
55
45
47
32
31
28
26
35
20
55
45
47
32
31
28
26
35
20

45

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Supongamos ahora que no contamos con la base ingreso.dta, sino que tenemos dos
bases de datos. La primera (ingreso3.dta) tiene las primeras 126.374 observaciones, y
la segunda (ingreso4.dta) tiene las siguientes 126.374 observaciones. En total si
juntamos ambas bases completamos las 252.748 observaciones de la base original
(ingreso.dta).
Podemos juntar la informacin de ambas bases en una sola de la siguiente forma:

use ingreso3.dta
append using ingreso4.dta

Podemos juntar bases de datos usando las ventanas tambin; en la opcin Data
existe la opcin Combine datasets luego se hace doble clic en Merge o Append y
nos sale una ventana que nos permite juntar dos o mltiples bases de datos:

Luego, para el caso de merge, buscamos la base que le queremos aadir a la base que
estamos usando y ponemos su direccin donde sale Filnename of dataset on disk,
luego en Key variables ponemos el nombre de la variable mediante el cual queremos
unir las dos bases de datos.

46

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

V.3. Condensar una base de datos: collapse


En algunas ocasiones las bases de datos disponen de ms de una observacin por
individuo, pas, empresa, etc. Si nos interesa trabajar slo con una observacin por
individuo podemos condesar la base de datos mediante el comando collapse.
Suponga que tiene una base de datos de hogares y que cada hogar tiene una
observacin para cada miembro del hogar que lo integra. Si cada hogar dispone de un
identificador nico, entonces se puede formar una base de datos alternativa que
contenga una sola observacin por hogar (en lugar de una observacin por individuo)
para cada una de las variables deseadas. Esta observacin puede contener la media,
desviacin estndar, suma, u otro estadstico por hogar (sino se especifica calcula la
media). Por ejemplo:

collapse (mean) edad (max) educacion (p50) ingreso, by(hogar)

El cdigo anterior crea una base de datos con cuatro variables (hogar, edad, educacin
e ingreso) con una observacin por hogar, la cual contiene el promedio de la edad por
hogar, el mximo de la educacin por hogar y la mediana del ingreso por hogar.
47

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

V.4. Cambiar la estructura de la base de datos: reshape


Para explicar como se utiliza este comando primero vamos a definir dos
representaciones de las bases de datos: wide form (forma horizontal) y long form
(forma vertical).
Long form:

Wide form:

En la base de datos en forma vertical (long form) podemos ver que existe una variable
que es constante al interior de un grupo, en este caso, al interior de una empresa,
48

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tenemos una variable que vara al interior de este grupo, el precio, y una variable que
me sirve para identificar las distintas observaciones al interior de un grupo, que es la
variable ao.
En la base de datos en forma horizontal (wide form), tengo una sola observacin por
empresa pero tengo ms de una variable precio, una para cada ao.
El comando reshape me permite intercambiar las bases de datos entre estos dos tipos
de formatos, de la siguiente forma:
reshape long precio, i(Empresa) j(ao) (Wide Long)
reshape wide precio, i(Empresa) j(ao) (Long Wide)

Long Wide

49

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Wide Long

50

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

V.5. Eliminar variables: keep y drop


Ahora, si se tiene una base de datos que contiene muchas variables y slo se va a
trabajar con algunas de ellas, se puede utilizar el comando keep para mantener en la
base de datos slo las variables que interesan. Por ejemplo:

keep esc ingreso

Tambin podramos requerir mantener todas las variables pero slo un subconjunto de
las observaciones, como por ejemplo, las de los hombres:

keep if dhombre==1

o las de las personas con menos de 12 aos de escolaridad

keep if esc<=12

o las de las personas con 200.000 pesos o ms de ingreso

keep if ingreso>=200000

El comando drop cumple el mismo rol que el comando keep, sin embargo, ste borra
observaciones o variables, en vez de mantenerlas. Para realizar lo mismo que hicimos
con el comando keep pero utilizando drop, se debera hacer lo siguiente:

drop
drop
drop
drop

expr dhombre folio


if dhombre==0
if esc>12
if ingreso<200000

Usando ventanas tambin podemos aplicar el comando keep y drop:

51

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

V.6. Crear variables: generate y egen


Uno de los comandos ms relevantes en STATA es generate (gen o g). Este
comando genera una nueva variable definida en base a una expresin numrica, la
cual puede contener otras variables.
El siguiente cuadro resume las expresiones ms utilizadas:
+
*
/
= =

suma
resta
multiplicaci
n
divisin
igual

>=
>
<=

Mayor o igual
Mayor estricto que
Menor o igual que

&
y
|
o
exp() exponencial

<
!=

Menor estricto que


Distinto que

log() logartmo
sum() suma

52

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Ejemplos:

generate age2 = age*age (genera variable edad al cuadrado)


gen unitpr = cost/quantity
gen xlag = x[_n-1]
Otro ejemplo. En la base ingreso.dta se tienen los aos de escolaridad (esc); a partir
de esta variable se podra generar una nueva (tesc) con el nivel de educacin
alcanzado por cada individuo (Bsica Incompleta, Bsica Completa, Media Incompleta,
etc..). Esto se hace con el siguiente cdigo:

g tesc=.
replace tesc=1
replace tesc=2
replace tesc=3
replace tesc=4
replace tesc=5

if
if
if
if
if

esc<8
esc==8
esc>8 & esc<12
esc==12
esc>12

El comando replace, reemplaza observaciones que cumplen con cierta condicin con
el valor que uno especifica.
Otro comando til, similar a generate, es el comando egen. Este contiene una gran
cantidad de funciones pre-establecidas con las que se pueden generar nuevas
variables. La diferencia con el comando generate es que en este uno define como
quiere generar la variable (sumando, restando, multiplicando, etc.), sin embargo, el
comando egen tiene funciones ya establecidas, por ejemplo, el promedio, la desviacin
estndar, etc
Algunos ejemplos de estas funciones son:

count(x): crea una variable que contiene el numero de


observaciones (distintas de ) en x.
concat(x y z): concatena las variables entre parntesis,
genera una variable con formato string (no numrico)
group(x y z): genera una variable que tomas los valores
1,2, para los grupos formados por las variables entre
parntesis. El orden de los grupos va a depender de cmo estn
ordenadas las variables entre parntesis.
max(x): genera una variable que contiene el mximo valor de x
mean(x): genera una variable que contiene el promedio de x
median(x): genera una variable que contiene la mediana de x
min(x): genera una variable que contiene el mnimo valor de x
53

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

rmax(x y z): entrega el mximo valor entre x, y, , z para


cada observacin (fila)
rmean(x y z): entrega el promedio de x, y, , z para cada
observacin (fila)
rmin(x y z): entrega el mnimo valor entre x, y, , z para
cada observacin (fila)
rmiss(x y z): entrega el nmero de missing values (sin
observacin) en x, y, , z para cada observacin (fila)
rsum(x y z): entrega la suma de x, y, , z para cada
observacin (fila)
seq(), from(a) to(b) block(c): genera una secuencia de nmeros
de a hasta b en bloques de c.
sum(x): genera una variable que contiene la suma de x.

La mayora de estas funciones pueden ser combinadas con el comando by, el que
permite generar variables por diversas categoras. Por ejemplo, si se quiere crear el
promedio de la experiencia laboral para cada ao de educacin, se debe realizar lo
siguiente:
egen promexpr=mean(expr), by(esc)
by esc: egen promexpr=mean(expr)

La segunda forma requiere que la base de datos est ordenada de acuerdo a la


variable utilizada en by, en este caso, debemos tipear antes:
sort esc
En esta parte veremos de manera ms aplicada los comandos utilizados en las clases
anteriores; para ello ser necesario ensear a usar los archivos do y los archivos log,
que como veremos sern de gran utilidad, ya que nos permitirn ir guardando
informacin. Finalmente veremos el comando help; el cual es un comando auxiliar que
nos permite encontrar los comandos necesarios para realizar un gama de funciones en
stata.
Como con casi todos los comandos tambin se pueden obtener los mismos resultados,
mediante el uso de ventanas:

54

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Luego de apretar doble clic sobre Create new variable podemos ver que es trivial la
forma de generar otra variable.

55

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

VI. Aplicando lo aprendido


En esta seccin veremos de manera aplicada lo que hemos aprendido hasta ahora y en
los dos siguiente mostraremos a partir de est seccin la utilidad de los archivos do y
log. El archivo log es el archivo donde se va guardando todo lo que aparece en la
ventana de resultados, mientras que el do es un archivo que nos permite programar
todo el trabajo que queremos realizar en stata.
VI.1. Un ejemplo aplicado
Supongamos que, utilizando la encuesta casen 2003, queremos obtener la tasa de
pobreza y la tasa de indigencia; adems el nmero de personas que caen en sta
categora.
El primer paso es establecer memoria (si no esta preestablecida en el programa) y
luego abrir la base de datos:

set mem 700m


use C:\Nivelacin_Stata\Casen2003.dta
tambin la apertura de la base de datos, se puede hacer de la manera alternativa que
vimos en la primera parte.

set mem 700m


cd C:\Nivelacin_Stata\
use Casen2003.dta
Luego debemos empezar a generar las variables necesarias para encontrar las tasas de
pobreza e indigencia correspondiente. Como la encuesta CASEN se realiza a hogares y
nosotros estamos interesados en el porcentaje de individuos pobres e indigentes y no
en el porcentaje de hogares pobres e indigentes; lo que necesitamos es tener algn
indicador per capita.
Como vimos en la clase anterior al aplicar el comando egen group(x) estamos
creando una variable que toma los valores 1,2, para todos los valores que puede
tomar x o la variable entre parntesis. El orden de los grupos va a depender de cmo
estn ordenadas las variables entre parntesis. Por ejemplo; si la variable x fuese ao
de nacimiento del individuo y est tomar los valores 1980, 1981 y 1982; la variable
que se genera a travs de este comando es una variable que toma el valor de 1 para
todos aquellos que nacieron en 1980; el valor de 2 para todos lo que nacieron en 1981
y el valor de 3 para los que nacieron en 1982.
56

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Lo que generaremos a continuacin es una variable que generar un identificador que


ser el mismo para los individuos que pertenecen a un mismo hogar y luego mediante
el comando tab podemos ver el nmero de personas que existen por hogar y realizar
una pequea inspeccin de la variable:
egen id=group(segmento folio)
edit id np

57

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

En la tabla anterior podemos ver que hay hogares (68.153) e individuos (257.077);
adems podemos ver que el nmero de individuos por hogar vara. La variable id tiene
asignado un cdigo por hogar y vemos que el hogar 13 tiene asociados 3 individuos, a
su vez el hogar nmero 7 tiene asociados 2 individuos y en el hogar numero 4 son 5
individuos.
Ahora, sabiendo el nmero de personas que viven en el hogar, generaremos el ingreso
per capita del hogar para lo cual tenemos que dividir el ingreso total del hogar por el
nmero de personas que viven en l. Veamos los diferentes tipos de personas que
viven en el hogar:
tab pco1
parentesco con el |
jefe(a) hogar |
Freq.
Percent
Cum.
-----------------------+----------------------------------jefe(a) de hogar |
68,153
26.51
26.51
cnyuge o pareja |
47,864
18.62
45.13
hijo(a), hijastro(a) |
104,375
40.60
85.73
padre o madre |
1,776
0.69
86.42
suegro(a) |
1,166
0.45
86.87
yerno o nuera |
3,749
1.46
88.33
nieto(a) |
19,044
7.41
95.74
hermano(a) |
2,828
1.10
96.84
cuado(a) |
942
0.37
97.21
otro familiar |
4,875
1.90
99.10
no familiar |
1,675
0.65
99.75
s. domstico p.adentro |
630
0.25
100.00
-----------------------+----------------------------------Total |
257,077
100.00
Como vemos en algunas casas ocurre que hay personas que prestan servicios
domsticos puertas adentro y generalmente para calcular el ingreso per capita del
hogar debemos excluir a esas personas. Para ello generaremos una variable llamada s;
la cual tomar el valor 1 si la personas pertenece al hogar y no presta servicios dentro
de l; y toma el valor de 0 si la personas presta servicios dentro del hogar. Despus
generaremos el nmero de personas que pertenecen al hogar y no prestan servicios
dentro de l. Finalmente botamos la variable s, ya que la creamos slo como una
variable momentnea para excluir a las personas que prestan servicios domsticos
puertas adentro y ya tenemos la variable np, que es la que nos seala el nmero de
personas que realmente son parte del hogar.
g s=1
replace s=0 if pco1==12
egen np=sum(s), by(id)
drop s
58

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Ahora, que tenemos el nmero de personas que pertenecen al hogar, estamos listos
para crear la variable que nos indica el nivel de ingreso individual de los habitantes del
pas y poder separarlo de acuerdo al nivel de pobreza.
g ing=ytothaj/np
Una persona es pobre si est recibe ingresos menores a $43.712 y vive en zona
urbana y $29.473 y est vive en zona rural. Una persona ser indigente si recibe
ingresos menores a $21.856 y vive en zona urbana; y $16.842 si esta vive en zona
rural. Como se est pidiendo el nmero y le porcentaje de pobres e indigentes,
necesitamos clasificar a los individuos en alguna de las tres categoras posible; no
pobres; pobres no indigentes e indigentes.
g pobre=1 if ing<21856 & z==1
replace pobre=1 if ing<16842 & z==2
replace pobre=2 if ing>=21856 & ing<43712 & z==1
replace pobre=2 if ing>=16842 & ing<29473 & z==2
replace pobre=3 if pobre==.
replace pobre=. if pco1==12
label variable pobre "Situacion de pobreza"
label define pobrelbl 1 "Indigente" 2 "Pobre no indigente" 3 "No pobre"
label values pobre pobrelbl
Finalmente debemos realizar la tabulacin de tal forma de captar no slo el nmero de
personas pobres e indigentes, sino que tambin su porcentaje. Es importante notar
que hay que usar factor de expansin; ya que ello nos entregar el valor poblacional
de los nmeros que buscamos:
tab pobre z [w=expr], col
Situacion de |
zona
pobreza |
urbana
rural |
Total
-------------------+----------------------+---------Indigente |
599,008
129,055 |
728,063
|
4.47
6.19 |
4.70
-------------------+----------------------+---------Pobre no indigente | 1,890,085
289,568 | 2,179,653
|
14.11
13.88 |
14.08
-------------------+----------------------+---------No pobre |10,905,022 1,667,008 |12,572,030
|
81.42
79.93 |
81.22
-------------------+----------------------+---------Total |13,394,115 2,085,631 |15,479,746
|
100.00
100.00 |
100.00

59

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

VI.2. Archivos log


Existen dos formas de trabajar en Stata: interactiva y programada. Cuando se trabaja
en forma programada se escribe en un archivo do todos los comandos que se quieren
ejecutar y luego se corre el programa de una vez para obtener los resultados, esto
ser visto en la otra seccin. Cuando se trabaja en forma interactiva, se ejecutan los
comandos directamente en la ventana Command, viendo los resultados en la ventana
Results. Cuando se trabaja de esta forma es importante ir registrando todos los pasos
realizados, en caso que se quiera repetir algo en una siguiente ocasin o simplemente
para tener un respaldo de todo lo realizado. Para esto se utilizan los archivos log,
estos no son ms que un archivo de texto que contiene todo los comandos ejecutados
y sus respectivos resultados.
El archivo log del ejercicio visto anteriormente:

60

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Siempre es recomendable abrir un archivo log al inicio de cualquier trabajo:

log using clase1.log


Si el archivo log que estamos tratando de abrir ya exista, el programa nos entregar
el siguiente error:

file C:\Nivelacion_Stata\clase1.log already exists

Frente a esto tenemos dos opciones, cual de ellas se tome depende de los objetivos:
reemplazar el archivo ya existente, o seguir escribiendo en el archivo existente a
continuacin de lo ltimo ingresado.
Para reemplazar el archivo existente:

log using clase1.log, replace

Para seguir a continuacin del archivo existente:

log using clase1.log, append

VI.3. Archivos do: para trabajar en forma programada en STATA


Como se ha mencionado en clases anteriores, existen dos formas de trabajar en
STATA, en forma interactiva y en forma programada. La primera forma consiste en ir
ejecutando los comandos directamente en la ventana de comando, los resultados se
obtienen inmediatamente en la ventana de resultados. Al trabajar de esta forma, la
nica manera de ir registrando todo lo realizado es mediante los archivos log. Sin
embargo, esta forma de trabajar tiene la desventaja de que una vez que uno ha
realizado varias modificaciones a la base de datos y uno quiere volver atrs, se pierde
todo lo realizado y hay que volver a reconstruir todo con ayuda del log.
La manera ms ordenada de trabajar en STATA cuando se requiere hacer varias
modificaciones a la base de datos y obtener varias estadsticas de ella, es programar
todos los comandos en un archivo do.
61

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

El archivo do no es mas que un archivo de texto que permite escribir las instrucciones
para la ejecucin de comandos en Stata.
Para abrir el archivo do debemos pinchar el icono

, y se abrir la siguiente ventana:

Este icono es para


correr el do.

Por ejemplo, la forma tpica de comenzar un do sera la siguiente:

62

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Al poner * antes de cualquier


frase,
no
se
lee
como
comando.
Sirve
para
ir
haciendo anotaciones

Con esto ya he abierto la base de datos. A continuacin puedo empezar a escribir los
comandos para transformar la base de datos, para obtener estadsticas, etc.
Exactamente de la misma forma que lo hara en la ventana de comandos pero ahora
en forma ms ordenada.
Es importante constantemente ir corriendo el do para detectar los errores que se estn
cometiendo.
En el cuadro siguiente observamos el archivo do file correspondiente al ejemplo visto
en la seccin 1;

63

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

A continuacin reportaremos las tasas de indigencia y pobreza para diferentes


categoras:
a. Por sexo del jefe de hogar
En primer lugar ser necesario crear una variable llamada sexojh, el cual tomar el
valor de 1 si ste es hombre y 2 si ste es mujer. Luego se etiquetar la variable
dndole el nombre de hombre cuando la variable sexojh tome el valor 1 y mujer
cuando sexojh tome el valor 2.

64

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

g sexojh=sexo if pco1==1
label define sexolbl 1 "Hombre" 2 "Mujer"
label values sexojh sexolbl
Ahora se generar una variable que tomar el valor de 1 para todos los miembros del
hogar cuando est es hombre y 2 para todos los miembros del hogar cuando este es
mujer.
Esto
se
hace
generando
una
variable
con
el
comando
egen sexojhm=max(sexojh), by (id) el cual genera una variable que toma el
nmero mayor asociado a la variable sexojh- por hogar; y como en los hogares
donde el jefe de hogar es hombre el nmero mayor de la variable sexojh es 1 lo
otros son missings- y en los hogares donde el jefe es mujer ese nmero es 2.
egen sexojhm=max(sexojh), by(id)
drop sexojh
rename sexojhm sexojh
label values sexojh sexo
edit id sexo sexojh sexojhm

65

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

66

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tab pobre sexojh [w=expr], col nofreq

Situacion de |
sexojh
pobreza |
hombre
mujer |
Total
-------------------+----------------------+---------Indigente |
4.24
6.30 |
4.70
Pobre no indigente |
13.82
15.00 |
14.08
No pobre |
81.94
78.70 |
81.22
-------------------+----------------------+---------Total |
100.00
100.00 |
100.00
Podemos decir que las personas que viven en hogares con jefes de hogar hombres
tienen una tasa de indigencia es un 4.24%, y un porcentaje de pobres no indigentes
igual a 13.82%, con lo cual la tasa de pobreza es un 18.06%. Por su parte las
personas que viven en hogares con jefes de hogar mujer tienen una tasa de indigencia
de 6.3%, y un porcentaje de pobres no indigentes un 15%, de esta forma la tasa de
pobreza es 21.3%.
b. Nmero de personas del hogar
Se generar una variable llamada categ_np la cual divide a los hogares en 8
diferentes categoras, la cuales dependen del nmero de personas que tenga el hogar.
La categoras 1, son los hogares que tienen un solo miembro, la segunda categoras
son los hogares que tienen dos miembros, y as hasta la octava categora que incluye
a los hogares que tienen 8 o ms miembros.
g categ_np=np
replace categ_np=8 if np>=8
tab categ_np pobre [w=expr], row nofreq
|
Situacion de pobreza
categ_np | Indigente Pobre no
No pobre |
Total
-----------+---------------------------------+---------1 |
1.96
2.89
95.15 |
100.00
2 |
1.95
4.25
93.81 |
100.00
3 |
3.15
9.24
87.60 |
100.00
4 |
3.76
12.65
83.58 |
100.00
5 |
4.74
16.29
78.97 |
100.00
6 |
7.08
18.98
73.94 |
100.00
7 |
7.41
22.18
70.41 |
100.00
8 |
9.73
24.45
65.82 |
100.00
-----------+---------------------------------+---------Total |
4.70
14.08
81.22 |
100.00
En esta tabla se puede apreciar como las tasas de pobreza e indigencia aumentan a medida
que aumenta el tamao del hogar. En hogares de una persona el porcentaje de indigentes
es 1.96%, y el porcentaje de pobres no indigentes es 2.89%. Por el contrario, en hogares
67

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

con 8 personas o ms, el porcentaje de indigentes de 9.73% y de pobres no indigentes


24.45, con lo cual la tasa de pobreza en estos hogares alcanza un 34.2%.

c. Por educacin del Jefe de hogar


En primer lugar ser necesario crear una variable que determine el nivel de educacin
(aos de educacin) de las personas encuestadas y luego etiquetar aquellas variables.
El nivel de educacin viene determinado en la base de datos, sin embargo por ejercicio
aqu se vuelve a generar una variable que determine el nivel educativo que la persona
a alcanzado:
g leduc=0 if e7t==1 | e7t==4 | e7t==16
replace leduc=1 if e7t==2 & e7c<6
replace leduc=2 if e7t==2 & e7c==6
replace leduc=1 if e7t==3 & e7c<8
replace leduc=2 if e7t==3 & e7c==8
replace leduc=3 if e7t==5 & e7c<6
replace leduc=4 if e7t==5 & e7c==6
replace leduc=3 if e7t==6 & e7c<4
replace leduc=4 if e7t==6 & e7c==4
replace leduc=3 if e7t==7 & e7c<6
replace leduc=4 if e7t==7 & e7c==6
replace leduc=3 if e7t==8 & e7c<4
replace leduc=4 if e7t==8 & e7c==4
replace leduc=4 if e7t==8 & e7c==5
replace leduc=5 if e7t==9
replace leduc=5 if e7t==10
replace leduc=5 if e7t==11
replace leduc=5 if e7t==12
replace leduc=6 if e7t==13
replace leduc=7 if e7t==14
replace leduc=7 if e7t==15
replace leduc=. if e7t==99
label define leduclbl 0 "Sin Educacion" 1 "Basica Incompleta" 2 "Basica
Completa" 3 "Media Incompleta" 4 "Media Completa" 5 "Tecnica Superior
(completa o incompleta)" 6"Superior Incompleta" 7 "Superior Completa"
label values leduc leduclbl
Luego de separar el nivel educativo de las personas en 7 niveles, se generar una
variable que determinar el nivel de educacin del jefe de hogar solamente y luego
bajo el mismo proceso utilizado en la parte a se buscar el nivel de pobreza e
indigencia por nivel educativo del jefe de hogar.
g leducjh=leduc if pco1==1
label values leducjh leduclbl
egen leducjhm=max(leducjh), by(id)
drop leducjh
rename leducjhm leducjh
68

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

tab leducjh pobre [w=expr], row nofreq


|
Situacion de pobreza
leducjh | Indigente Pobre no
No pobre |
Total
-----------+---------------------------------+---------0 |
7.49
18.53
73.98 |
100.00
1 |
7.93
20.58
71.48 |
100.00
2 |
5.68
18.99
75.34 |
100.00
3 |
5.13
17.09
77.78 |
100.00
4 |
3.49
11.19
85.33 |
100.00
5 |
0.93
5.27
93.81 |
100.00
6 |
1.33
3.59
95.08 |
100.00
7 |
0.54
0.51
98.95 |
100.00
-----------+---------------------------------+---------Total |
4.70
14.08
81.22 |
100.00
En la tabla anterior se puede apreciar claramente como la tasa de pobreza e indigencia
disminuyen con el nivel educacional.

VII.

Crear matrices para guardar los datos

Una forma prctica de guardar la informacin proveniente de la aplicacin del comando


sum es a travs de matrices. Cuando se hace un sum de una variable, en la memoria
temporal del programa quedan guardadas las estadsticas; el nombre con el que cada
una de stas se guarda se puede saber al tipear return list despus de hacer un sum.
. sum

esc

Variable |
Obs
Mean
Std. Dev.
Min
Max
-------------+-------------------------------------------------------esc |
180914
8.319069
4.286882
0
21
. return list
scalars:
r(N)
r(sum_w)
r(mean)
r(Var)
r(sd)
r(min)
r(max)
r(sum)

=
=
=
=
=
=
=
=

180914
180914
8.319068728788263
18.37735307412638
4.28688150922397
0
21
1505036

Lo mismo se puede hacer despus de un sum, detail:


. sum

esc, detail
escolaridad (aos)
69

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

------------------------------------------------------------Percentiles
Smallest
1%
0
0
5%
0
0
10%
2
0
Obs
180914
25%
5
0
Sum of Wgt.
180914
50%

75%
90%
95%
99%

Largest
21
21
21
21

12
13
15
17

Mean
Std. Dev.

8.319069
4.286882

Variance
Skewness
Kurtosis

18.37735
-.1286632
2.403091

. return list
scalars:
r(N)
r(sum_w)
r(mean)
r(Var)
r(sd)
r(skewness)
r(kurtosis)
r(sum)
r(min)
r(max)
r(p1)
r(p5)
r(p10)
r(p25)
r(p50)
r(p75)
r(p90)
r(p95)
r(p99)

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

180914
180914
8.319068728788263
18.37735307412638
4.28688150922397
-.1286631597722507
2.403091261120855
1505036
0
21
0
0
2
5
8
12
13
15
17

Supngase que se requiere hacer la siguiente tabla de datos:


Genero

Ingreso
promedio

Escolaridad
promedio

Experiencia
laboral
promedio.

Hombre
Mujer
Esto puede hacerse generando una matriz de dos filas y tres columnas, para
posteriormente completar sus elementos con las estadsticas correspondientes. Para
esto primero se debe generar la matriz, llammosla A.
matrix A=J(2,3,0)
70

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Luego se hace el primer sum, de la variable ingreso para los hombres, y guardo este
resultado en la posicin [1,1] de la matriz:
sum ingreso if dhombre==1
matrix A[1,1]=r(mean)
Y as sucesivamente hasta completar toda la matriz:
sum ingreso if dhombre==0
matrix A[2,1]=r(mean)
sum esc if dhombre==1
matrix A[1,2]=r(mean)
sum esc if dhombre==0
matrix A[2,2]=r(mean)
sum expr if dhombre==1
matrix A[1,3]=r(mean)
sum expr if dhombre==0
matrix A[2,3]=r(mean)
Con esto se completa la matriz. Luego para que se vea, en Stata Results se tipea el
comando matriz list:
. matrix list A
A[2,3]
r1
r2

c1
210198.54
162629.12

c2
8.3427264
8.2959796

c3
58.336718
60.383309

Esta matriz se puede copiar, seleccionando la matriz en la ventana de resultados


apretando el botn derecho y pinchando copy table; luego se puede llevar a un
archivo Excel para su edicin.
VIII. Ciclos recursivos
El comando while permite ejecutar una funcin en forma recursiva mientras cierta
condicin se cumpla. Por ejemplo:
local i
while `i<22 {
tab dhombre if esc==`i
local i=`i+1
}
Este cdigo har 21 tablas, una para cada ao de escolaridad, de la variable que
identifica gnero.

71

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

IX. Grficos
En STATA se pueden realizar grficos de todos los tipos. Esto, al igual que otras
funciones preestablecidas, no requiere del conocimiento de todos los comandos, ya que
pinchando Graphics aparecen todas las opciones y en cada una de ellas un cuadro de
opciones bastante completo:

72

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Por ejemplo, si queremos realizar un histograma nos aparece el siguiente cuadro:

Donde se nos presentan varias opciones, como hacer el grfico por cierta categora
(por ejemplo gnero) a travs del comando by, condicionar el grfico a cierto grupo a
travs del comando if, introducir factores de expansin, ajustar una densidad normal,
ajustar una densidad estimada en forma no paramtrica (kernel), y poner ttulos,
etiquetas, etc

73

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Veamos algunos ejemplos.


1. Utilizando la base de datos ingreso.dta realicemos un histograma de la
variable escolaridad. Esto se hace mediante el siguiente comando:
histogram leduc

Pero hagmoslo un poco ms elaborada:


histogram
esc,
ytitle(Densidad)
xtitle(Nivel
de
title(Distribucin del nivel de escolaridad, color(green))

Educacin)

74

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

En el grfico observamos que el nmero de personas con educacin va cayendo a


medida que aumenta el nivel educativo. Sin embargo observamos que se observa un
gran nmero de personas sobre el nmero 1, lo que equivale a educacin bsica
incompleta, y luego observamos otro peca en el nmero 4, lo que equivale a educacin
media completa.
Ahora hagamos este mismo grfico pero separando a los hombres de las mujeres:
histogram leduc, ytitle(Densidad) xtitle(Nivel de Educacin) by(sexo ,
title(Ditribucin del nivel de escolaridad, color(green)))

75

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

76

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

2.

Ahora realicemos un grfico de dispersin entre aos escolaridad e ingreso:


twoway (scatter ing esc) if esc<1000000, ytitle(Ingreso) xtitle(Aos de
Educacion) title(Relacin entre educacin e ingresos)

Ahora mostraremos el mismo grafico slo que con la lnea de regresin que minimiza la
distancia entre los puntos:
twoway (scatter ing esc) (lfit ing esc ), ytitle(Ingreso) xtitle(Aos de
Educacion) title(Relacin entre educacin e ingresos)

77

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Pero; qu ocurre con ambos grficos?, ocurre que no se observa una correlacin entre
el nivel de ingresos y el nivel de escolaridad, debido a que los ingresos muy altos
distorsionan la distribucin. A continuacin mostraremos un grafico de puntos junto a
su lnea de regresin, pero que slo toma en cuenta a los individuos que tienen
ingresos menores a un milln de pesos.
twoway (scatter ing esc) (lfit ing esc )
if ing <1000000,
ytitle(Ingreso) xtitle(Aos de Educacion) title(Relacin entre educacin
e ingresos)

78

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

3.

Hagamos un grfico de barras con el ingreso promedio por sexo y situacin de


pobreza:

graph bar (mean) ing, over(sexo, label(labsize(small))) over(pobre,


label(labsize(small))) ytitle(Ingreso promedio) title(Ingreso promedio
por gnero y situacin de pobreza)

79

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Este grfico nos muestra que para los indigentes y los pobres no indigentes el nivel de
ingreso entre hombres y mujeres es similar, sin embargo para los individuos no pobres
el ingreso de los hombres supera al ingreso de las mujeres.

80

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Un grfico til son los box plots, estos entregan informacin sobre el centro,
dispersin, simetra y observaciones extremas, en un solo grfico. Por ejemplo
observamos en el siguiente box-plot del ingreso per cpita. La lnea horizontal dentro de
la caja muestra la mediana. La caja muestra el rango intercuartil y, correspondiente a
la diferencia entre el ingreso del percentil 75 y del percentil 25. La lnea superior
horizontal se establece en un valor igual al percentil 75 ms 1,5 veces el rango
intercuartil. La lnea inferior horizontal, por su parte, se fija en un valor igual al
percentil 25 menos 1,5 veces el rango intercuartil. Todos los valores superiores o
inferiores a estas lneas representan valores extremos (outliers) de la distribucin.
Podemos ver que los nmeros o coinciden realizando un sum detail, el que se muestra
a continuacin del box-plot.

81

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

82

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

X. Ayuda: Help
La ayuda que trae este programa es bastante amigable y fcil de utilizar. Si Ud. Se
dirige a Help se despliega un cuadro con diferentes opciones, puede buscar ayuda
por contenidos, por comandos, etc, en Whats new encontrar todas las novedades
del programa, que nuevos comandos hay y podr descargarlos haciendo un update.

Por ejemplo, supongamos se quiere saber como calcular correlacin entre variables.
Entonces se debe buscar en Search:

83

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Dependiendo que este buscando pincha el comando (en azul), y se abrir una ventana
con una completa ayuda sobre el comando.

84

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Para que el Help de STATA le sea realmente til es fundamental que Ud. aprenda a leer
la sintaxis de cada comando. Por ejemplo, en este caso la sintaxis del comando
correlate es la siguiente:
correlate [varlist] [if] [in] [weight] [, correlate_options]
85

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE

Esta sintaxis nos indica que el commando correlate puede ser utilizado entregando el
listado de variables, sino se entrega el default es considerar todas las variables en la
base de datos. Se puede utilizar la opcin if, in y weight todas ellas antes de la coma,
la que es utilizada tambin en forma opcional para poner algunas opciones del
comando. Entonces siempre lo que aparece en parntesis cuadrados son alternativas
opcionales del comando. Ms adelante de la sintaxis, se indican cuales son estas
correlate_options, tambin se presenta una descripcin general del comando y sus
opciones.
A continuacin se muestra otro ejemplo de sintaxis, para el comando table:
table rowvar [colvar [supercolvar]] [if] [in] [weight] [, options]

Recordemos que todo lo que esta entre parntesis cuadrado son opciones voluntarias
de comando. En este caso rowvar no esta entre parntesis cuadrado, significa que
debemos obligadamente sealar la variable fila en la tabulacin, es voluntario indicar
la variable de columna, si no se indica la tabulacin resultante es una distribucin de la
variable sola, si se indica colvar la tabla ser un cruce entre rowvar y colvar. Este
ejemplo nos permite notar la diferencia en aquellos insumos del comando que son
obligatorios de los que son voluntarios.
Puede ser que algunos de los comandos que aparezcan Ud. no los tenga cargados, en
este caso si se encuentra conectado a Internet los podr bajar online. Aparecer algo
de la siguiente forma:

Donde pinchando la palabra en azul se puede descargar el comando, as como su


ayuda.
Una forma ms completa de buscar ayuda es a travs de los manuales, estos adems
de traer una ayuda sobre los comandos generalmente contiene toda una descripcin
terica de ellos. Por ejemplo, en el caso de un modelo de regresin lineal, explica lo
que es una modelo de este tipo.
Adems el manual de grficos es muy til, ya que trae mltiples ejemplos que se
pueden adecuar a los que uno anda buscando.
En esta parte veremos un ejemplo como el visto en la parte 3 y luego con la misma
base de datos realizaremos varios tipos o formas de grficos.

86

DEP ARTAME NTO DE EC ONOM A UNIVERSIDAD DE C HILE