Está en la página 1de 86

Curso Nivelacin STATA

Magster en Polticas Pblicas

Javiera E. Vsquez N.1

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 3

I. UNA PEQUEA INTRODUCCIN AL PROGRAMA 4

II. COMO ORGANIZAR EL TRABAJO EN STATA 6

III. CMO CARGAR UNA BASE DE DATOS? 8

IV. LEYENDO LOS DATOS 15

IV.1. DESCRIBE 16
IV.2. CODEBOOK 17
IV.3. EDIT 20
IV.4. IST; INSPECT; DUPLICATES; COUNT; ORDER 22
IV.5. SUM 25
IV.6. TABULATE 28

V. MODIFICACIN DE UNA BASE DE DATOS. 38

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


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

VI. APLICANDO LO APRENDIDO 56

VI.1. UN EJEMPLO APLICADO 56


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

VII. CREAR MATRICES PARA GUARDAR LOS DATOS 69

VIII. CICLOS RECURSIVOS 71

IX. GRFICOS 72

X. AYUDA: HELP 83

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 Ingreso
10 80.000
12 120.000
13 110.000
4 85.000
5 70.000
8 65.000
17 450.000
21 1.200.000
2 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.

2
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.

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
apretar el icono y buscar la ubicacin de la base de datos. Tambin
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

dirigimos a STATA abrimos el EDITOR y pegamos la informacin


(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:

4
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% 8 Mean 8.319069


Largest Std. Dev. 4.286882
75% 12 21
90% 13 21 Variance 18.37735
95% 15 21 Skewness -.1286632
99% 17 21 Kurtosis 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 permite hacer esto mismo pero para varias variables
simultneamente:

. tab1 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 deben ser entregadas


separadamente para cada valor de la variable nombre.

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 sexo edad

1 8 1 20
2 9 2 55
3 11 2 45
4 13 2 47
5 15 1 32
6 2 2 31
7 0 1 28
8 10 1 26
9 9 1 35

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

id ingreso

1 80000
3 99000
4 110000
6 130000
8 150000
9 200000
10 115000
11 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 ingreso _merge

1 8 1 20 80000 3
2 9 2 55 1
3 11 2 45 99000 3
4 13 2 47 110000 3
5 15 1 32 1
6 2 2 31 130000 3
7 0 1 28 1
8 10 1 26 150000 3
9 9 1 35 200000 3
10 115000 2
11 98000 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 Ingreso1.dta: que tiene la variable folio, esc, dhombre e ingreso


9 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 sexo edad

10 8 1 20
11 9 2 55
12 11 2 45
13 13 2 47
14 15 1 32
15 2 2 31
16 0 1 28
17 10 1 26
18 9 1 35
19 4 2 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 sexo edad

1 8 1 20
2 9 2 55
3 11 2 45
4 13 2 47
5 15 1 32
6 2 2 31
7 0 1 28
8 10 1 26
9 9 1 35
10 8 1 20
11 9 2 55
12 11 2 45
13 13 2 47
14 15 1 32
15 2 2 31
16 0 1 28
17 10 1 26
18 9 1 35
19 4 2 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 expr dhombre folio


drop if dhombre==0
drop if esc>12
drop 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 >= Mayor o igual & y


- resta > Mayor estricto que | o
* multiplicaci <= Menor o igual que exp() exponencial
n
/ divisin < Menor estricto que log() logartmo
= = igual != Distinto que 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 if esc<8
replace tesc=2 if esc==8
replace tesc=3 if esc>8 & esc<12
replace tesc=4 if esc==12
replace tesc=5 if 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) = 180914
r(sum_w) = 180914
r(mean) = 8.319068728788263
r(Var) = 18.37735307412638
r(sd) = 4.28688150922397
r(min) = 0
r(max) = 21
r(sum) = 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% 8 Mean 8.319069


Largest Std. Dev. 4.286882
75% 12 21
90% 13 21 Variance 18.37735
95% 15 21 Skewness -.1286632
99% 17 21 Kurtosis 2.403091

. return list

scalars:
r(N) = 180914
r(sum_w) = 180914
r(mean) = 8.319068728788263
r(Var) = 18.37735307412638
r(sd) = 4.28688150922397
r(skewness) = -.1286631597722507
r(kurtosis) = 2.403091261120855
r(sum) = 1505036
r(min) = 0
r(max) = 21
r(p1) = 0
r(p5) = 0
r(p10) = 2
r(p25) = 5
r(p50) = 8
r(p75) = 12
r(p90) = 13
r(p95) = 15
r(p99) = 17

Supngase que se requiere hacer la siguiente tabla de datos:

Genero Ingreso Escolaridad Experiencia


promedio promedio 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]
c1 c2 c3
r1 210198.54 8.3427264 58.336718
r2 162629.12 8.2959796 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 Educacin)


title(Distribucin del nivel de escolaridad, color(green))

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

También podría gustarte