Curso Nivelación STATA Magíster en Políticas Públicas Javiera E. Vásquez N.1
1
Investigadora, Centro de Microdatos, Departamento de Economía, Universidad de Chile (
[email protected] [email protected]). ). Cualquier error es responsabilidad exclusiva del autor. Se agradece a J. Eguiguren los comentarios y cooperación en la elaboración de este apunte. 1
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
TABLA DE CONTENIDOS INTRODUCCIÓN
3
I.
4
UNA PEQUEÑA INTRODUCCIÓN INTRODUCC IÓN AL PROGRAMA
II.
COMO ORGANIZAR EL TRABAJO EN STATA
6
III.
¿CÓMO CARGAR UNA BASE DE DATOS?
8
IV.
LEYENDO LOS DATOS
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.
MODIFICACIÓN DE UNA BASE DE DATOS.
38
V.1. MODIFICACIÓN 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.
GRÁFICOS
72
X.
AYUDA: HELP
83 2
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Introducción Este documento pretende los introducir el uso del programa STATA, mediante la entrega de conceptos y comandos básicos para el inicio en este software. En una primera parte haremos una pequeña introducción al programa, luego veremos brevemente como se carga una base de datos, y en una tercera parte se verá cual es la manera más adecuada de trabajar con ella. Adicionalmente, en una cuarta parte se verán los comandos que comúnmente se utilizan para inspeccionar una base de datos y obtener estadísticas descriptivas de sus variables, específicamente veremos comandos como s um, el cual nos entrega un set de estadísticas básicas de la variable, descr i be, y varios otros. En una quinta parte se enseñara 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 séptima parte se mostrará cómo podemos plasmar la información que nos interesa de los datos en diferentes tipos de gráficos. Finalmente en la octava y última parte se enseñará la utilidad del comando hel p, 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 utilización directa del comando, o mediante la utilización de ventanas. Durante este curso veremos ambas formas. Un concepto importante de entender antes de comenzar a utilizar este software estadístico, es el de Base de Datos, Datos, el primer paso para poder trabajar con STATA es cargar la base de datos. Una base de datos en un conjunto (matriz) de información, 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
I. Una pequeña introducción al programa STATA es una aplicación completa e integrada, basada en comandos, que tiene todos los elementos necesarios para realizar análisis estadístico, manejo de datos estadísticos y gráficos. Las versiones mas nuevas de STATA (a partir de la versión 8.0) posee una forma más fácil de utilizar, que consiste simplemente en hacer clic en ventanas con las opciones de análisis y procesamiento de datos, además tiene la opción “antigua” mediante los comandos. El programa posee una ayuda en línea, es un programa fácil y rápido de utilizar. ¿Cómo 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 sección en turno. Results: muestra los resultados de la aplicación de los comandos, sólo los resultados más 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.
4
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 l o g . Estos archivos tienen un formato de texto y permiten ir guardando todos los resultados. Abrir el editor de do-file. Los archivos d o son archivos con esta extensión que nos permiten en forma ordenada escribir todo lo que queremos hacer en nuestra base de datos: cambiar la base de datos, sacar estadísticas, 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 ejecución de un comando.
2
Lo ideal es combinar la utilización de un d o y un l o g ; el primero permite tener en forma ordenada todos los comandos que se están 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
II. Como organizar el trabajo en STATA Cuando se abre STATA es importante saber donde se esta trabajando, es decir, en que carpeta se están 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: \ dat a → 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: C: \ Ni vel aci on_St _St at a
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 específico tenemos todos los archivos necesarios en la misma carpeta. Por ejemplo, si estamos trabajando con información de tres bases de datos distintas, y queremos dejar la información relevante para el estudio en una sola base datos (más 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 están 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: Importante : los sistemas operativos más 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 blanco en el nombre, a no ser que se indique la ubicación de esta carpeta entre comillas. Por este motivo, se debe evitar 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 común cuando trabajan en el Escritorio del computador, ya que la carpeta en este caso es C:\Documents and Settings\...., tiene espacios en blanco. 6
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Supongamos que la carpeta en que vamos a tratar se llama “Nivelacion Stata”, en la primera línea del siguiente cuadro podemos apreciar que al entregar la ubicación 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 no aparece un punto blanco después de ejecutado el comando, significa que no se termino o no se ha terminado de ejecutar. Además, 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.
7
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
III.
¿Cómo cargar una base de datos?
Las bases de datos en formato Stata tienen extensión .dta. Las versiones antiguas del software no se pueden abrir bases de datos que han sido trabajadas y guardas en una versión más 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: 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;; da no datt a i n memor y wou oull d be be l ost
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 S t a t a C o m m a n d debemos tipear: set mem 100m 100m
Si Ud. no agrega memoria y los 10 MB que vienen asignados al abrir el programa no son suficientes, el programa arrojará arrojará el siguiente error: no r oom t o add add mor e ob obser ser vat i on ons s
Esto también 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 más memoria al programa utilizando set mem ; abrir la base de datos y realizar todo nuevamente. Por esta razón es fundamental que Ud., cuando comience a trabajar, asigne la memoria necesaria para todas las variables que espera generar. 8
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
El comando general para entregar memoria a Stata es:
set mem #[ b| k| m| g] [ , per mane anent l y]
con la opción “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 extensión de STATA, es decir, disponer de la base de datos como n o m b r e . d t a En este caso podemos apretar el icono y buscar la ubicación de la base de datos. También podemos hacerlo dirigiéndonos a File/Open… 2- Otra forma es tipear en S t a t a C o m m a n d use “[disco en que la guardaremos] \ [ruta de acceso] \ [nombre de archivo.dta]”, clear. Por ejemplo: use "C: "C: \ Ni vel aci on_St _St at a\ i ngr eso. so. dt a", cl ear
o simplemente use i ngr eso. so. dt a, cl ear
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 opción 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:
9
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 información 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 información (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 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 → Configuración regional y de idioma → Opciones regionales, pichar personalizar, aquí se puede cambiar la configuración numérica indicando que el símbolo decimal es “.” Y el símbolo de separación de miles “,”. Todas las variables que son numéricas, deben estar en formato numérico antes de ser exportadas.
El siguiente cuadro muestra lo que resulta de pasar la base de datos base.xls a Stata:
10
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
El color rojo indica que la variable no es numérica. Generalmente las bases de datos muy grandes no vienen en excel, ya que este programa es limitado en cuanto al número de filas (observaciones) y número de columnas (variables). El número máximo de filas es de 65.536, y el número máximo de columnas es de 256. 4- Otra forma de cargar bases de datos es mediante el comando i n s h e e t , este comando permite cargar bases de datos en formato ASCII (texto) mediante el siguiente comando: i nshe sheet usi usi ng C: \ Ni vel aci on_St _St at a\ j uni o05. t xt o al t er nat i vam vament e:
11
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
12
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 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, 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: sav save C: \ Ni vel vel aci on_St _St at a\ i ngr esos. sos. dt a, r epl ace
Es importante escribir replace, sino el programa les enviara un error diciendo que la base de datos ya existe. 13
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
2- Si quiere guardar la base de datos con un nuevo nombre no es necesario tipear replace: save save C: \ Ni vel vel aci on_Stat a\ i ngr esos_ne sos_new w. dt a
Una vez que los datos han sido cargados, se puede optimizar el espacio que estos ocupan utilizando el comando c o m p r e s s , este comando comprime la base de datos. Es muy útil cuando trabajamos trabajamos con bases de datos grandes. Hasta ahora hemos aprendido como cargar una base de datos en Stata, en lo que sigue se verán los comandos básicos para analizar una base de datos. Entonces, con los comandos recién estudiados, comencemos por abrir la base de datos: cd C: C: \ Ni vel aci on_St _St at a s et mem 100m 100m use i ngr eso. so. dt a, cl ear
14
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IV.Leyendo IV. Leyendo los datos Existen varios comandos que nos permiten obtener información preliminar acerca de de los datos y estadísticas acerca de ellos. Veremos básicamente los comandos descr i be, cod codebook, edi t , sum sum, t ab, i nspe spect , cou count y dupl i cat cat e. 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 sexo: grupos de observaciones mediante las opciones by e i f . Por ejemplo: by sexo: codebook, el cual nos mostrara la aplicación del comando codebook separado para codebook i f s exo==1, el cual nos mostrará la aplicación del comando cada sexo o codebook codebook para el sexo que este codificado con el número 1. También podemos leer los datos usando las ventanas correspondientes, tal como lo observamos en la siguiente figura:
Como podemos ver, si vamos a la opción Data y Data y luego seguimos la opción Describe data, data, veremos una serie de opciones que veremos a continuación, tal como el comando describe o el codebook. También mediante la opción Data podemos directamente ver el editor de stata.
15
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IV.1. Describe El comando describe entrega información de todas las variables que se encuentran en la base de datos. Esta información 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 descripción de la variable. Además entrega información de número de observaciones, número de variables y tamaño de la base de datos. . descr i be Cont ai ns dat a f r om C: \ Ni vel vel aci ón_I \ i ngr eso. so. dt a obs: obs: 252, 252, 748 748 var s: 5 19 Mar 2006 2006 12: 12: 01 si ze: 5, 307, 708 ( 49. 4% of memory f r ee) ee) --------------------------------------------------------------------------st or age di spl spl ay val val ue var var i abl e name t ype ype f ormat l abel abel var var i abl abl e l abel --------------------------------------------------------------------------esc byt byt e %8. 0g escol escol ari dad dad ( años) años) expr xpr f l oat %9. 0g expe xper i enci a l abor al dhom dhombr e f l oat %9. 0g gener gener o ( 1 hom hombr e 0 muj er ) i ngr eso f l oat %9. 0g i ngr eso l abor al f ol i o l ong %8. 0g ---------------------------------------------------------------------------
Cuando la base de datos es muy grande y sólo se quiere obtener información de algunas de las variables contenidas en ella, después de describe (o simplemente d ) se ingresa la lista de variables de las cuales Ud. desea una descripción. Otras formas de utilizar el comando describe:
4
Ver Anexo A sobre el tipo de almacenamiento de datos
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
16
Para usar el comando mediante el uso de ventanas basta con seguir el mismo esquema recién mostrado y hacer doble clic sobre Describe variables in memory.
Luego se escribe el nombre de la variable de la cual quiero la descripción y si quisiese, por ejemplo, una descripción especifica, puedo aplicar alguna de las opciones que se observan en la ventana anterior. IV.2. Codebook Existen otras formas de obtener una descripción 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Claramente el comando codebook es más completo, presenta la etiqueta de la variable, el formato, el rango de los datos, si esta codificada en números enteros (units: 1), cuantas observaciones no tienen dato de esta variable, el promedio, la desviación estándar, y los percentiles. Tanto el comando describe como el comando codebook nos permite distinguir dos tipos de variables, las numéricas y las no numéricas. Sólo se pueden obtener estadísticas de los datos cuando las variables son numéricas, aunque muchas veces es más fácil visualizar la base de datos cuando las variables tienen nombres en vez de números o códigos. Por ejemplo, en la variable dhombre de la base de datos vemos sólo unos y ceros, siempre tenemos que tener en mente que uno significa hombre y cero mujer. También podemos aplicar el comando vía la utilización 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Otra función que podemos aplicar sobre la misma ventana es condicionarla a algo, como, por ejemplo, que la inspección sea sólo para lo hombres:
19
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IV.3. Edit Otra forma de conocer o tener una visión más 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. También lo podemos hacer vía ventanas mediante la opción “Data” y luego “Data editor”
20
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Al igual que en los casos anteriores también se puede realizar la misma operación vía el comando edit y también podemos editar editar una matriz mas pequeña especificando las variables que queramos incluir utilizando la encuesta casen 2003, por ejemplo “edi t sexo sexo eci vi l edad esc”
21
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IV.4. ist; inspect; duplicates; count; order Un comando bastante útil, similar al edit; es el list; el cúal despliega los datos en la ventana de resultados (Stata Results); en vez de enviarnos al editor.
22
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Otro comando; el cual asegura que una variable es una codificación ú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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 distribución de la variable, la cantidad de observaciones con valor cero, con valores mayores a cero y sin dato, así como la cantidad de número enteros y no enteros en la variable. Por ejemplo:
24
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 más nos acomode. Este comando es order el cual se utiliza de la siguiente manera: or der f ol i o ed edad esc i ngr ngr eso dh dhombr e sexo 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 años de escolaridad, etc. IV.5. Sum El comando sum entrega estadísticas básicas: número de observaciones, promedio, desviación estándar, mínimo y máximo, de las variables que se especifiquen. Si sólo se escribe sum en en Stata Command, se muestran las estadísticas de todas las variables en la base de datos. 25
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
. s um um Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 180914 180914 8. 319069 319069 4. 286882 286882 0 21 expr | 252748 252748 59. 3625 3625 101. 101. 0047 0047 0 5045 5045 dhombr e | 252748 252748 . 498785 4987854 4 . 499999 4999995 5 0 1 i ngr eso | 76993 76993 195579 195579.. 2 361822 361822 1002 1002 2. 19e+ 19e+07 f ol i o | 2527 252748 48 1263 126374 74.. 5 7296 72962. 2. 21 1 2527 252748 48
Si nos interesan las estadísticas de una sola variable, por ejemplo, escolaridad: . sum sum esc Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 180914 180914 8. 319069 319069 4. 286882 286882 0 21
Si requerimos las estadísticas de escolaridad, pero separado para hombres y mujeres, primero se debe ordenar la base de datos por género (sort dhombre) y luego hacer un utilizando utilizando el comando by: sum . sor t dhom dhombr e .
by dhom dhombr e: sum esc
--------------------------------------------------------------------------- > dhom dhombr e = 0 Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 9155 91557 7 8. 2959 29598 8 4. 3001 30015 5 0 21 --------------------------------------------------------------------------- > dhom dhombr e = 1 Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 8935 89357 7 8. 342726 342726 4. 273139 273139 0 21
26
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Esto mismo se podría hacer alternativamente utilizando if : . sum esc i f dhom dhombr e==0 Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 9155 91557 7 8. 2959 29598 8 4. 3001 30015 5 0 21 . sum esc i f dhom dhombr e==1 Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 8935 89357 7 8. 342726 342726 4. 273139 273139 0 21
Si al comando sum le agregamos detail después de una “,”; STATA entrega una cantidad más amplia de estadísticas sobre la variables. Además de las ya descritas entrega los percentiles, la varianza, la asimetría y la kurtosis. . s um um es c, c, det ai l escol scol ar i dad (año (años) ------------------------------------------------------------Per Per cen cent i l es Smal l est 1% 0 0 5% 0 0 10% 2 0 Obs 180914 180914 25% 25% 5 0 Sum Sum of Wgt . 1809 180914 14 50% 75% 75% 90% 90% 95% 95% 99% 99%
8 12 13 15 17
Lar gest gest 21 21 21 21
Mean St d. Dev. ev.
8. 319069 319069 4. 2868 286882 82
Var i ance ance Skewness ness Kurt osi s
18. 18. 3773 37735 5 - . 1286 128663 632 2 2. 4030 403091 91
Todo lo anterior se puede hacer también mediante ventanas, especificaremos sólo un caso, donde se pide un sum de la variable esc y se pide una descripción detallada, lo que se obtiene mediante la opción “Display additional statistics”
27
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IV.6. Tabulate El comando tabulate (o tab) permite hacer tablas con las variables de interés. La tabla más sencilla se realiza de la siguiente forma: . t ab
dhom dhombr e
genero enero ( 1 | hombr e 0 | muj er) | Fr eq. eq. Per Per cent cent Cum. - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 | 126, 126, 681 681 50. 50. 12 50. 50. 12 1 | 126 126,, 067 067 49. 49. 88 100. 100. 00 - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 252, 252, 748 100. 100. 00
Esta tabla indica el número de observaciones total y de cada una de las categorías de la variable, el porcentaje que cada uno representa sobre el total y el porcentaje acumulado.
28
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
El comando tab1 permite hacer esto mismo pero para varias variables simultáneamente: . t ab1 ab1
dhom dhombr e esc
- > t abul abul at i on of dhom dhombre genero enero ( 1 | hombr e 0 | muj er) | Fr eq. eq. Per Per cent cent Cum. - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 | 126, 126, 681 681 50. 50. 12 50. 50. 12 1 | 126 126,, 067 067 49. 49. 88 100. 100. 00 - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 252, 252, 748 100. 100. 00 - > t abul at i on of esc escol scol ar i dad | ( años) años) | Fr eq. eq. Per Per cen cent Cum. - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 | 10, 10, 833 833 5. 99 5. 99 1 | 2, 481 481 1. 37 7. 36 2 | 5, 434 434 3. 00 10. 10. 36 3 | 9, 193 193 5. 08 15. 15. 44 4 | 10, 303 303 5. 69 21. 21. 14 5 | 7, 512 512 4. 15 25. 25. 29 6 | 19, 19, 165 165 10. 10. 59 35. 35. 89 7 | 7, 004 004 3. 87 39. 39. 76 8 | 20, 20, 503 503 11. 11. 33 51. 51. 09 9 | 10, 582 582 5. 85 56. 56. 94 10 | 12, 984 984 7. 18 64. 64. 12 11 | 9, 384 384 5. 19 69. 69. 30 12 | 35, 35, 263 263 19. 19. 49 88. 88. 79 13 | 4, 820 820 2. 66 91. 91. 46 14 | 3, 965 965 2. 19 93. 93. 65 15 | 3, 156 156 1. 74 95. 95. 39 16 | 3, 177 177 1. 76 97. 97. 15 17 | 3, 853 853 2. 13 99. 99. 28 18 | 881 881 0. 49 99. 99. 77 19 | 292 292 0. 16 99. 99. 93 20 | 122 122 0. 07 100. 100. 00 21 | 7 0. 00 100. 100. 00 - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 180, 180, 914 100. 100. 00
Además, con este comando, se pueden realizar cruces entre variables, por ejemplo:
29
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
.
t ab esc dhom dhombr e
escol scol ar i da d ( años) --- ---- ---0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 --- ---- --- Tot al
| gener gener o ( 1 hombr e 0 | muj er ) | 0 1 | Tot al +- - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - | 5, 842 842 4, 991 991 | 10, 10, 833 | 1, 198 198 1, 283 283 | 2, 481 | 2, 709 709 2, 725 725 | 5, 434 | 4, 571 571 4, 622 622 | 9, 193 | 5, 284 284 5, 019 019 | 10, 10, 303 | 3, 818 818 3, 694 694 | 7, 512 | 9, 915 915 9, 250 250 | 19, 19, 165 | 3, 501 501 3, 503 503 | 7, 004 | 9, 791 791 10, 10, 712 712 | 20, 20, 503 | 5, 173 173 5, 409 409 | 10, 10, 582 | 6, 435 435 6, 549 549 | 12, 12, 984 | 4, 707 707 4, 677 677 | 9, 384 | 18, 18, 245 245 17, 17, 018 018 | 35, 35, 263 263 | 2, 672 672 2, 148 148 | 4, 820 | 2, 180 180 1, 785 785 | 3, 965 | 1, 523 523 1, 633 633 | 3, 156 | 1, 596 596 1, 581 581 | 3, 177 | 1, 929 929 1, 924 924 | 3, 853 | 326 326 555 555 | 881 881 | 92 200 200 | 292 292 | 45 77 | 122 122 | 5 2 | 7 +- - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - | 91, 557 89, 357 | 180, 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 además nofreq (para (para que no se muestre las frecuencias):
30
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
.
t ab esc dhom dhombr e, r ow nof nof r eq
escol scol ar i da d ( años) --- ---- ---0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 --- ---- --- Tot al
| gener gener o ( 1 hombr e 0 | muj er ) | 0 1 | +- - - - - - - - - - - - - - - - - - - - - - ++- - - | 53. 53. 93 46. 07 | | 48. 48. 29 51. 71 | | 49. 49. 85 50. 15 | | 49. 49. 72 50. 28 | | 51. 51. 29 48. 71 | | 50. 50. 83 49. 17 | | 51. 51. 73 48. 27 | | 49. 49. 99 50. 01 | | 47. 47. 75 52. 25 | | 48. 48. 88 51. 12 | | 49. 49. 56 50. 44 | | 50. 50. 16 49. 84 | | 51. 51. 74 48. 26 | | 55. 55. 44 44. 56 | | 54. 54. 98 45. 02 | | 48. 48. 26 51. 74 | | 50. 50. 24 49. 76 | | 50. 50. 06 49. 94 | | 37. 37. 00 63. 00 | | 31. 31. 51 68. 49 | | 36. 36. 89 63. 11 | | 71. 71. 43 28. 57 | +- - - - - - - - - - - - - - - - - - - - - - ++- - - | 50. 61 49. 39 |
Tot al --- --100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 100. 100. 00 --- --100. 100. 00
31
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Si se quiere que los porcentajes sumen 100% en forma vertical (columnas) debemos hacer lo siguiente: .
t ab esc dhom dhombre, col nof r eq
escol scol ar i da d ( años) --- ---- ---0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 --- ---- --- Tot al
| gener gener o ( 1 hombr e 0 | muj er ) | 0 1 | +- - - - - - - - - - - - - - - - - - - - - - ++- - - | 6. 38 5. 59 | | 1. 31 1. 44 | | 2. 96 3. 05 | | 4. 99 5. 17 | | 5. 77 5. 62 | | 4. 17 4. 13 | | 10. 10. 83 10. 35 | | 3. 82 3. 92 | | 10. 10. 69 11. 99 | | 5. 65 6. 05 | | 7. 03 7. 33 | | 5. 14 5. 23 | | 19. 19. 93 19. 04 | | 2. 92 2. 40 | | 2. 38 2. 00 | | 1. 66 1. 83 | | 1. 74 1. 77 | | 2. 11 2. 15 | | 0. 36 0. 62 | | 0. 10 0. 22 | | 0. 05 0. 09 | | 0. 01 0. 00 | +- - - - - - - - - - - - - - - - - - - - - - ++- - - | 100. 100. 00 100. 100. 00 |
Tot al --- --5. 99 1. 37 3. 00 5. 08 5. 69 4. 15 10. 10. 59 3. 87 11. 11. 33 5. 85 7. 18 5. 19 19. 19. 49 2. 66 2. 19 1. 74 1. 76 2. 13 0. 49 0. 16 0. 07 0. 00 --- --100. 100. 00
Si deseamos que se muestren ambos porcentajes: t ab esc dhom dhombr e, col r ow nof nof r eq
También se pueden hacer tablas utilizando el comando by, primero ordenando de acuerdo a la variable que voy a realizar las tablas, por ejemplo: sor t dhom dhombr e by dhom dhombr e: t ab esc esc
Este código 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
t ab esc i f dhom dhombr e==0 t ab esc i f dhom dhombr e==1
También se puede utilizar el comando tabulate para generar variables dicotómicas. Por ejemplo, si se quiere generar variables dicotómicas para cada año de escolaridad: ⎧1 si tiene 0 años de educación ⎨ ⎩0 si no ⎧1 si tiene 1 años de educación esc 2 = ⎨ ⎩0 si no esc1 =
M
Se puede hacer de la siguiente forma: t ab esc, esc, gener ate( esc)
Si los años de educación toman valores que van desde 0 a 21, se generarán 22 variables dicotómicas. Supóngase ahora que se requiere hacer un cuadro con los años de escolaridad, pero en vez de entregar la frecuencia o porcentaje de observaciones en cada categoría, se requiere que muestre una estadística de otra variable, por ejemplo, el promedio de ingreso. Para realizar este tipo de tablas se debe usar el comando tab agregándole después de una coma la palabra summarize. Para el ejemplo citado debería utilizar el siguiente código:
33
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
. t ab esc, summar i ze( i ngr ngr eso) eso) means eans | Summar y of | i ngr eso es co col ar i dad | l abor al ( años) años) | Mean ean - - - - - - - - - - - - ++- - - - - - - - - - - 0 | 9699 96996. 6. 235 235 1 | 1040 104083 83.. 11 2 | 1082 108236 36.. 24 3 | 1126 112638 38.. 81 4 | 1190 119092 92.. 96 5 | 1197 119745 45.. 97 6 | 1368 136860 60.. 84 7 | 1214 121445 45.. 45 8 | 1310 131005 05.. 63 9 | 1479 147939 39.. 41 10 | 1696 169646 46.. 75 11 | 1715 171547 47.. 61 12 | 1967 196789 89.. 47 13 | 2343 234377 77.. 27 14 | 2673 267368 68.. 38 15 | 3378 337808 08.. 95 16 | 3941 394113 13.. 77 17 | 5993 599325 25.. 8 18 | 8655 865582 82.. 61 19 | 9184 918467 67.. 2 20 | 1127 112710 102. 2. 9 21 | 7449 744900 00.. 67 - - - - - - - - - - - - ++- - - - - - - - - - - Tot al | 195714 195714.. 26
Por último, el comando tabstat permite realizar tablas con las siguientes estadísticas:
34
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
-------------------------------------------------mean pr omedi o count count cuent cuent a el núm númer o de obser obser vaci ones ones que que t i ene ene val or n i gual gual que que count count s um s uma max máxi áx i mo mi n mí ni mo r ange r ango=max- mi n sd desvi esvi aci ón est ándar var var var var i anza anza cv coef coef i ci ent ent e de var var i aci on ( sd/ mean ean) semean ean err or est ánda ándarr de l a medi edi a = sd/ sqr t ( n) skewness ness asi asi met r í a kur t os i s ku kur t os i s medi an medi ana ( l o mi smo que p50) p50) p1 1st per cen cent i l e p5 5t h per cen cent i l e p10 10t h percent ercent i l e p25 25t h percent ercent i l e p50 50t h percent ercent i l e ( i gual que l a medi edi ana) ana) p75 75t h percent ercent i l e p90 90t h percent ercent i l e p95 95t h percent ercent i l e p99 99t h percent ercent i l e i qr r ang ango i nt er quant ant i l = p75 - p25 q equi equi val val ent ent e a especi especi f i car " p25 p25 p50 p50 p75" p75" --------------------------------------------------
Al poner by(nombre) especifica que las estadísticas deben ser entregadas separadamente para cada valor de la variable “nombre”. Por ejemplo, si se quiere obtener el promedio, la mediana, el máximo y el mínimo de ingreso por género, se puede realizar de la siguiente forma: . t abst abst at i ngr ngr eso, eso, st at i st i cs( mean ean p50 p50 max mi n) by( dhom hombre) Sum Summary f or vari abl abl es: i ngr ngr eso by cat egor egor i es of : dhom dhombr e ( gene generr o ( 1 hom hombr e 0 muj er ) ) dhombr e | mean p50 max mi n - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 | 162629. 162629. 1 104000 104000 9130004 9130004 1002 1 | 210198 210198.. 5 120000 120000 2. 19e+07 1500 1500 - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 195579 195579.. 2 120000 120000 2. 19e+07 1002 1002 --------------------------------------------------
Como hemos visto en los casos anteriores también podemos tabular usando las ventanas: 35
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Si quisiéramos 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
37
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
V. Modificación de una base de datos. En esta sección veremos como se pueden modificar las bases de datos, desde los nombres de sus variables y la generación de nuevas variables hasta la forma se como se pueden unir dos bases de datos V.1. Modificación de Variables de una base de datos Para lograr que una base de datos sea más amigable y sea entendida por cualquier usuario, es recomendable incorporar etiquetas a los números o códigos de las variables. Esto se hace mediante la utilización de variables secundarias llamadas value labels. labels. Si una variable tiene una variable secundaria que entregue etiqueta a los códigos que contiene, debería aparecer en el resultado del comando describe. Por ejemplo, la variable dhombre:
No tiene asociada una variable secundaria que nos indique que significa el número 1 y el número 0 en esta variable. Entonces para etiquetar los códigos de una variable se deben realizar dos pasos: 1- Crear la variable secundaria (value label) que realice el nexo entre los códigos y sus etiquetas: l abel abel def i ne gen gener er ol bl 1 “Hom “Hombr e” 0 “Muj er ”
2- Indicar que la relación entre la variable y su variable secundaria con las etiquetas: l abel abel val val ues dh dhombr e gener ener ol bl
Al hacer un describe de la variable “dhombre”, este indica que existe una variable que contiene la etiqueta de los números o códigos de esta variable:
38
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Si es que la base de datos que uno tiene ya viene con las variables secundarias de etiquetas (value labels), y queremos saber que código esta relacionado a que etiqueta, etiq ueta, se debe utilizar el comando label list:
Por otro lado si queremos en ese instante darle nombre a las variables y su respectiva descripción, hacemos doble click sobre la variable y nos aparecerá el siguiente cuadro:
39
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
En N a m e escribimos escribimos el nombre de la variable y en L a b e l su su descripción. 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:
l abel var f ol i o “ i dent i f i c ad ador i ndi vi dual ”
Para etiquetar la base de datos se utiliza el comando label
data:
l abel abel dat dat a “Base “Base de de I ngr esos esos Com Compl et a”
40
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 numérico) no se pueden obtener, la diferencia es que el primero de los comandos despliega la hoja de cálculo y el segundo despliega los datos en la ventana de resultados (Stata Results). También en el editor se puede introducir las etiquetas a las variables y a los códigos de cada variable. Cuando una variable está en formato string (no numérico) no se pueden obtener estadísticas de ella. Los comandos encode y decode cambian el formato de una variable string a numérico y viceversa:
encod code var var i abl abl e, gener at e( nueva_v eva_vari ari abl abl e) 41
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Mediante este código generamos una nueva variable que le asigna un código a cada palabra distinta en la variable y deja como etiqueta la palabra. Ahora cuando la variable que no tiene formato numérico, pero en realidad es un número sólo que al traspasarlo a la base de datos quedo en formato string, lo recomendable es utilizar el siguiente comando: gener at e nueva_va va_varr i abl e=r eal ( var var i abl e)
V.2. Unir bases de datos: merge y append Muchas veces es necesario combinar dos o más 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 común (generalmente es un folio o código 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 información: i d es c 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 información: id
i ngr eso
1 3 4 6 8 9 10 11
80000 99000 110000 130000 150000 200000 115000 98000
42
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Entonces si queremos pegar (match-merge) la información de ambas bases de datos, para formar una sólo 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: s or t i d save save dos. dos. dt a, r epl ace
2- Abrir la base de datos uno.dta (master data set), ordenarla de acuerdo a id y pegar la información de la base dos.dta: use uno. uno. dt a s or or t i d mer ge id usi usi ng dos. dt a
La base de datos que resulta de esto es de la siguiente forma: id
esc
sexo sexo
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 · ·
edad i ngr eso _mer ge 20 55 45 47 32 31 28 26 35 · ·
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: mer ge i d usi usi ng dos. dos. dt a, _mer ge( ge( nom nombr e)
43
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Esta variable puede tomar tres valores: _merge=1 cuando la observación observación esta sólo en sólo en Master Dataset _merge=2 cuando la observación observación esta sólo en sólo en Using Dataset mer e=3 cuando cuando las observ observacion aciones es están están en ambas bases 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:
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, debería realizar los siguientes pasos: use i ngr eso2 so2. dt a ( usi ng dat aset set ) s or t f ol i o save save i ngr eso2 so2. dt a, r epl ace use i ngr eso1. so1. dt a ( mast er dat aset aset ) s or t f ol i o mer ge f ol i o usi usi ng i ngr eso2 so2. dt a
Lo que este pequeño código 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 información 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: usi ng dat a not not sor t ed mast er dat a not not sor t ed
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 además 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
i d es c 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. dt a app append end usi usi ng t r es. dt a
El resultado es el siguiente: i d es c 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 información de ambas bases en una sola de la siguiente forma: use i ngr eso3. so3. dt a app append end usi usi ng i ngreso4. greso4. dt a
Podemos juntar bases de datos usando las ventanas también; en la opción “Data” existe la opción “Combine datasets” luego se hace doble clic en “Merge” o “Append” y nos sale una ventana que nos permite juntar dos o múltiples bases de datos:
Luego, para el caso de merge, buscamos la base que le queremos añadir a la base que estamos usando y ponemos su dirección 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
V.3. Condensar una base de datos: collapse En algunas ocasiones las bases de datos disponen de más de una observación por individuo, país, empresa, etc. Si nos interesa trabajar sólo con una observación 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 observación 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 observación por hogar (en lugar de una observación por individuo) para cada una de las variables deseadas. Esta observación observación puede contener la media, desviación estándar, suma, u otro estadístico por hogar (sino se especifica calcula la media). Por ejemplo:
col l apse apse ( mean ean) edad edad ( max) ax) edu educaci on ( p50) i ngr ngr eso, eso, by( hogar ogar )
El código anterior crea una base de datos con cuatro variables (hogar, edad, educación e ingreso) con una observación por hogar, la cual contiene el promedio de la edad por hogar, el máximo de la educación por hogar y la mediana del ingreso por hogar. 47
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
tenemos una variable que varía 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 “año”. En la base de datos en forma horizontal (wide form), tengo una sola observación por empresa pero tengo más de una variable precio, una para cada año. El comando reshape me permite intercambiar las bases de datos entre estos dos tipos de formatos, de la siguiente forma: r eshap shape e l ong ong pr eci o, i ( Empr esa) j ( año) año) ( Wi de →Long) Long) r eshap shape e wi de pr eci o, i ( Empr esa) j ( año) año) ( Lon Long →Wi de) de)
Long
Wide
49
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Wide
Long
50
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
V.5. Eliminar variables: keep y drop Ahora, si se tiene una base de datos que contiene muchas variables y sólo se va a trabajar con algunas de ellas, se puede utilizar el comando keep para mantener en la base de datos sólo las variables que interesan. Por ejemplo: keep keep esc i ngr ngr eso
También podríamos requerir mantener todas las variables pero sólo un subconjunto de las observaciones, como por ejemplo, las de los hombres:
keep i f dhombr e==1
o las de las personas con menos de 12 años de escolaridad keep i f esc< esc <=12
o las de las personas con 200.000 pesos o más de ingreso keep i f i ngr ngr eso>=2000 200000 00
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 debería hacer lo siguiente:
dr op dr op dr op dr op
expr expr dhombr e f ol i o i f dhombr e==0 i f esc>12 i f i ngr ngr eso<2000 200000 00
Usando ventanas también podemos aplicar el comando keep y drop:
51
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
V.6. Crear variables: generate y egen Uno de los comandos más relevantes en STATA es generate (“gen” o “g”). Este comando genera una nueva variable definida en base a una expresión numérica, la cual puede contener otras variables. El siguiente cuadro resume las expresiones más utilizadas: + * / ==
s uma >= r est a > mul t i pl i c ac aci ó <= n di vi s i ón < i gual !=
Mayor ay or o i gual & Mayo ayor estr i ct o que | Meno enor o i gual que exp exp( )
y o exp exponenci enci al
Menor es t r i c t o que l og( ) Di st i nt o que sum sum( )
l ogar í t mo suma
52
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Ejemplos: gene generr at e age2 age2 = age*ag age*age e ( gene generr a var i abl abl e edad edad al cuadr cuadr ado) ado) gen un uni t pr = cost cost / quant i t y gen xl ag = x[ _n- 1]
Otro ejemplo. En la base ingreso.dta se tienen los años de escolaridad (esc); a partir de esta variable se podría generar una nueva (tesc) con el nivel de educación alcanzado por cada individuo (Básica Incompleta, Básica Completa, Media Incompleta, etc..). Esto se hace con el siguiente código: g t esc=. r epl epl ace t esc=1 r epl epl ace t esc=2 r epl epl ace t esc=3 esc=3 r epl epl ace t esc=4 r epl epl ace t esc=5
if if if if if
esc<8 esc==8 esc>8 esc>8 & esc<12 esc<12 esc==12 esc>12
El comando replace, reemplaza observaciones que cumplen con cierta condición 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 desviación estándar, etc… Algunos ejemplos de estas funciones son:
coun count ( x) : cr ea una var var i abl abl e que que con cont i ene ene el el num numer o de de obser ser vaci vaci ones ( di st i nt as de de · ) en x. con concat cat ( x y · · · z) : con concat cat ena l as va var i abl es en ent r e par ént esi s, gen genera un una var var i abl abl e con f or mat o st r i ng ( no num numéri co) gr oup oup( x y · · · z) : gener a una var var i abl abl e que t omas l os val val ores 1, 2, … par a l os gr gr upos f or mados po por l as va var i abl es en ent r e par par ént ént esi s. El or den den de de l os gr upos upos va a depe depend nder er de cómo est est én orden ordenada adas l as var var i abl es en ent r e par ént esi s. max( x) : gene generr a una una var i abl abl e que que cont cont i ene ene el el máxi mo val val or de x mean( ean( x) : gene generr a una una var i abl abl e que que cont cont i ene ene el el pr omedi edi o de de x medi edi an( an( x) : gene generr a una una var i abl abl e que que cont cont i ene ene l a medi edi ana ana de de x mi n( x) : genera enera una una var var i abl abl e que que cont cont i ene ene el el mí ni mo val val or de x 53
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
r max( ax( x y · · · z) : ent r ega el el máxi áxi mo val val or ent ent r e x, y, …, z para para cad cada obser ser vaci ón ( f i l a) r mean( an( x y · · · z) : ent r ega el el pr omedi o de de x, x, y, …, z par par a cad cada obs er er v ac ac i ón ( f i l a) r mi n( x y · · · z) : ent r ega el el mí ni mo val val or ent r e x, y, …, z para para cad cada obser ser vaci ón ( f i l a) r mi ss( x y · · · z) : ent r ega el el númer o de de mi ssi ng val val ues ( si n obse obserr vaci vaci ón) ón) en x, y, …, z pa par a ca cada ob obser ser vaci vaci ón ( f i l a) r sum sum( x y · · · z) : ent r ega l a sum suma de de x, x, y, …, z par par a cad cada obs er er v ac ac i ón ( f i l a) seq( seq( ) , f r om( a) t o( b) bl ock( ock( c) : gene ener a un una secu secue enci a de de nú númer os de a hast hast a b en en bl bl oque oques s de c. sum( x) : gene generr a una una var i abl abl e que que cont cont i ene ene l a sum suma de de x.
La mayoría de estas funciones pueden ser combinadas con el comando by, el que permite generar variables por diversas categorías. Por ejemplo, si se quiere crear el promedio de la experiencia laboral para cada año de educación, se debe realizar lo siguiente: egen egen pr omexpr expr =mean( ean( expr expr ) , by( esc) by esc: esc : egen egen pr omexpr =mean( ean( 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 más aplicada los comandos utilizados en las clases anteriores; para ello será necesario enseñar a usar los archivos do y los archivos log, que como veremos serán de gran utilidad, ya que nos permitirán ir guardando información. Finalmente veremos el comando hel p; 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 también se pueden obtener los mismos resultados, mediante el uso de ventanas:
54
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Luego de apretar doble clic sobre “Create new variable” podemos ver que es trivial la forma de generar otra variable.
55
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
VI.Aplicando VI. Aplicando lo aprendido En esta sección veremos de manera aplicada lo que hemos aprendido hasta ahora y en los dos siguiente mostraremos a partir de está sección 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; además el número de personas que caen en ésta categoría. El primer paso es establecer memoria (si no esta preestablecida en el programa) y luego abrir la base de datos: set mem 700m 700m use C: \ Ni vel vel aci ón_St ón_St at a\ Casen asen2003. dt a
también la apertura de la base de datos, se puede hacer de la manera alternativa que vimos en la primera parte. set mem 700m 700m cd C: \ Ni vel vel aci ón_St _St at a\ use Casen2 Casen200 003. 3. dt a
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 algún indicador per capita. egen gr oup( oup( x) estamos Como vimos en la clase anterior al aplicar el comando egen creando una variable que toma los valores 1,2,… para todos los valores que puede tomar x o la variable entre paréntesis. El orden de los grupos va a depender de cómo estén ordenadas las variables entre paréntesis. Por ejemplo; si la variable x fuese año de nacimiento del individuo y está tomará los valores 1980, 1981 y 1982; la variable que se genera a través 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Lo que generaremos a continuación 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 número de personas que existen por hogar y realizar una pequeña inspección de la variable: egen egen i d=gr oup oup( segm segment ent o f ol i o) edi t i d np
57
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
En la tabla anterior podemos ver que hay hogares (68.153) e individuos (257.077); además podemos ver que el número de individuos por hogar varía. La variable i d tiene asignado un código por hogar y vemos que el hogar 13 tiene asociados 3 individuos, a su vez el hogar número 7 tiene asociados 2 individuos y en el hogar numero 4 son 5 individuos. Ahora, sabiendo el número 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 número de personas que viven en él. Veamos los diferentes tipos de personas que viven en el hogar: t ab pco1 parent arent esco con con el | j ef e( a) hogar hogar | Fr eq. Per cent Cum. - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - j ef e( a) de hogar hogar | 68, 68, 153 26. 51 26. 26. 51 cónyu cónyuge ge o par par ej a | 47, 47, 864 864 18. 18. 62 45. 45. 13 hi j o( a) , hi j ast r o( a) | 104, 375 40. 60 85. 73 padr padr e o madr e | 1, 776 776 0. 69 86. 86. 42 sueg suegr o( a) | 1, 166 0. 45 86. 87 yer no o nuer nuer a | 3, 749 749 1. 46 88. 88. 33 ni et o( a) | 19, 044 7. 41 95. 74 her her mano( ano( a) | 2, 828 828 1. 10 96. 96. 84 cuñad cuñado( o( a) | 942 0. 37 97. 21 otr o f ami l i ar | 4, 875 1. 90 99. 10 no f ami l i ar | 1, 675 0. 65 99. 75 s. domést i co p. aden adentt r o | 630 0. 25 100. 00 - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 257, 257, 077 100. 100. 00
Como vemos en algunas casas ocurre que hay personas que prestan servicios domésticos 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. Después generaremos el número de personas que pertenecen al hogar y no prestan servicios dentro de él. Finalmente botamos la variable s , ya que la creamos sólo como una variable momentánea para excluir a las personas que prestan servicios domésticos puertas adentro y ya tenemos la variable np, que es la que nos señala el número de personas que realmente son parte del hogar. g s=1 r epl epl ace s=0 s=0 i f pco1= pco1==12 egen egen np= np=sum( s) , by( by( i d) dr op s 58
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Ahora, que tenemos el número de personas que pertenecen al hogar, estamos listos para crear la variable que nos indica el nivel de ingreso individual de los habitantes del país y poder separarlo de acuerdo al nivel de pobreza. g i ng=yt ot haj / 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 número y le porcentaje de pobres e indigentes, necesitamos clasificar a los individuos en alguna de las tres categorías posible; no pobres; pobres no indigentes e indigentes. i ndigentes. g pobr e=1 i f i ng<21856 & z ==1 r epl ace pobr e=1 i f i ng< ng<16842 16842 & z== z==2 r epl ace pobr e=2 i f i ng>=21856 21856 & i ng<43712 43712 & z ==1 r epl ace pobr e=2 i f i ng>=16842 16842 & i ng<29473 29473 & z ==2 r epl epl ace pob pobrr e=3 i f pobr pobr e==. r epl epl ace pob pobrr e=. i f pco1= pco1==12 l abel var var i abl e po pobr e "Si "Si t uaci on de po pobr eza" za" l abe abel def i ne pobr obr el bl 1 " I ndi gent e" 2 " Pob Pobr e no i ndi gent e" 3 "No "No pobr obr e" l abel val val ues pob pobrr e pobr el bl
Finalmente debemos realizar la tabulación de tal forma de captar no sólo el número de personas pobres e indigentes, sino que también su porcentaje. Es importante notar que hay que usar factor de expansión; ya que ello nos entregará el valor poblacional de los números que buscamos: t ab pobr pobr e z [ w=expr expr ] , col Si t uaci aci on de | zona zona pobr eza | ur bana r ur al | Tot Tot al - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - I ndi gent ent e | 599, 99, 008 129, 055 055 | 728, 063 | 4. 47 6. 19 | 4. 70 - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - Pob Pobr e no i ndi gent ent e | 1, 1, 890, 90, 085 289, 568 568 | 2, 2, 179, 653 | 14. 11 13. 88 | 14. 08 - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - No pobr pobr e | 10, 10, 905, 905, 022 022 1, 667, 667, 008 008 | 12, 12, 572, 572, 030 030 | 81. 42 79. 93 | 81. 22 - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - Tot al | 13, 13, 394, 394, 115 2, 085, 085, 631 | 15, 479, 479, 746 746 | 100 100. 00 100. 00 | 100. 00. 00
59
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 d o 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 sección. Cuando se trabaja en forma interactiva, se ejecutan los comandos directamente en la ventana Command, Command, viendo los resultados en la ventana Results. 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 ocasión o simplemente para tener un respaldo de todo lo realizado. Para esto se utilizan los archivos l o g , estos no son más que un archivo de texto que contiene todo los comandos ejecutados y sus respectivos resultados. El archivo log del ejercicio visto anteriormente:
60
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Siempre es recomendable abrir un archivo log al inicio de cualquier trabajo: l og usi ng cl ase1 se1. l og
Si el archivo log que estamos tratando de abrir ya existía, el programa nos entregará el siguiente error: f i l e C: \ Ni vel aci on_S _Stt at a\ cl ase se1 1. l og al r eady exi st s
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 continuación de lo último ingresado. Para reemplazar el archivo existente: l og usi ng cl ase1 se1. l og, r epl ace
Para seguir a continuación del archivo existente: l og usi usi ng cl ase1 se1. l og, 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 atrás, se pierde todo lo realizado y hay que volver a reconstruir todo con ayuda del log. La manera más ordenada de trabajar en STATA cuando se requiere hacer varias modificaciones a la base de datos y obtener varias estadísticas de ella, es programar todos los comandos en un archivo do. 61
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
El archivo do no es mas que un archivo de texto que permite escribir las instrucciones para la ejecución de comandos en Stata. Para abrir el archivo do debem debemos os pin pinch char ar eell icon icono o
, y se se abri abrirá rá la la sigu siguie ient ntee vent ventan ana: a:
Este icono es para correr el do.
Por ejemplo, la forma típica de comenzar un do sería la siguiente:
62
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 continuación puedo empezar a escribir los comandos para transformar la base de datos, para obtener estadísticas, etc. Exactamente de la misma forma que lo haría en la ventana de comandos pero ahora en forma más ordenada. Es importante constantemente ir corriendo el do para detectar los errores que se están cometiendo. En el cuadro siguiente observamos el archivo do file correspondiente al ejemplo visto en la sección 1;
63
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
A continuación reportaremos las tasas de indigencia y pobreza para diferentes categorías: a. Por sexo del jefe de hogar sexojj h, el cual tomará el En primer lugar será necesario crear una variable llamada sexo valor de 1 si éste es hombre y 2 si éste es mujer. Luego se etiquetará la variable sexoj h tome el valor 1 y mujer dándole el nombre de hombre cuando la variable sexoj sexoj h tome el valor 2. cuando sexoj
64
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
g sexoj h=s exo i f pco1==1 l abe abel def i ne sexo sexoll bl 1 " Hombr e" 2 "Muj er" l abel val ues sex sexoj h se sexol bl
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 egen sexoj hm=max( sexoj sexoj h) , by ( i d) el cual genera una variable que toma el sexoj h- por hogar; y como en los hogares número mayor –asociado a la variable sexoj sexojj h es 1 –lo donde el jefe de hogar es hombre el número mayor de la variable sexo otros son missings- y en los hogares donde el jefe es mujer ese número es 2. egen egen sexoj sexoj hm=max( sexoj h) , by( by( i d) drop sexo sexojj h r enam ename sexoj hm sexoj sexoj h l abe abel val val ues sexoj sexoj h sexo sexo edi t i d sexo sexo sexo sexojj h sexo sexojj hm
65
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
66
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
t ab pobr obr e sexo sexojj h [ w=expr xpr ] , col nof r eq Si t uaci on de | sexo sexojj h pobr obr eza | hom hombr e muj er | Tot Tot al - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - I ndi gent e | 4. 24 6. 30 | 4. 70 Pob Pobr e no i ndi gent ent e | 13. 82 15. 00 | 14. 08 No pobr pobr e | 81. 81. 94 78. 78. 70 | 81. 81. 22 - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - Tot al | 100. 100. 00 100. 100. 00 | 100. 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. Número de personas del hogar eg_ np la cual divide a los hogares en 8 Se generará una variable llamada cat eg_ diferentes categorías, la cuales dependen del número de personas que tenga el hogar. La categorías 1, son los hogares que tienen un solo miembro, la segunda categorías son los hogares que que tienen dos miembros, y así así hasta la octava categoría que incluye incluye a los hogares que tienen 8 o más miembros. g cat eg_np=np r epl epl ace cat eg_ eg_ np= np=8 i f np> np>=8 t ab cat eg_ eg_ np pobr pobr e [ w=expr expr ] , r ow nof nof r eq | Si t uaci on de pobr obr eza cat eg_np eg_np | I ndi ndi gent ent e Pob Pobr e no No pobr obr e | Tot Tot al - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - 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. 12. 65 83. 58 | 100. 00 5 | 4. 74 16. 16. 29 78. 97 | 100. 00 6 | 7. 08 18. 18. 98 73. 94 | 100. 00 7 | 7. 41 22. 22. 18 70. 41 | 100. 00 8 | 9. 73 24. 24. 45 65. 82 | 100. 00 - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - Tot al | 4. 70 14. 08 81. 81. 22 | 100. 100. 00
En esta tabla se puede apreciar como las tasas de pobreza e indigencia aumentan a medida que aumenta el tamaño 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
con 8 personas o más, 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 educación del Jefe de hogar En primer lugar será necesario crear una variable que determine el nivel de educación (años de educación) de las personas encuestadas y luego etiquetar aquellas variables. El nivel de educación 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 l educ= educ=0 0 i f e7t ==1 | e7t ==4 | e7t ==16 r epl ace l educ= educ=1 1 i f e7t ==2 & e7c<6 r epl ace l educ= educ=2 2 i f e7t ==2 & e7c==6 r epl ace l educ= educ=1 1 i f e7t ==3 & e7c<8 r epl ace l educ= educ=2 2 i f e7t ==3 & e7c==8 r epl ace l educ= educ=3 3 i f e7t ==5 & e7c<6 r epl ace l educ= educ=4 4 i f e7t ==5 & e7c==6 r epl ace l educ= educ=3 3 i f e7t ==6 & e7c<4 r epl ace l educ= educ=4 4 i f e7t ==6 & e7c==4 r epl ace l educ= educ=3 3 i f e7t ==7 & e7c<6 r epl ace l educ= educ=4 4 i f e7t ==7 & e7c==6 r epl ace l educ= educ=3 3 i f e7t ==8 & e7c<4 r epl ace l educ= educ=4 4 i f e7t ==8 & e7c==4 r epl ace l educ= educ=4 4 i f e7t ==8 & e7c==5 r epl epl ace l educ= educ=5 i f e7t e7t ==9 r epl epl ace l educ= educ=5 i f e7t e7t ==10 r epl epl ace l educ= educ=5 i f e7t e7t ==11 r epl epl ace l educ= educ=5 i f e7t e7t ==12 r epl epl ace l educ= educ=6 i f e7t e7t ==13 r epl epl ace l educ= educ=7 i f e7t e7t ==14 r epl epl ace l educ= educ=7 i f e7t e7t ==15 r epl epl ace l edu educ=. i f e7t e7t ==99 l abel def i ne l educl bl 0 "Si n Ed Educaci caci on" 1 " Basi ca I ncom compl et a" 2 "Ba "Basi ca Compl et a" 3 " Medi edi a I ncom ncompl et a" 4 " Medi edi a Com Compl et a" 5 " Tecni Tecni ca Sup Super er i or ( compl et a o i ncompl et a) " 6"Sup 6"Superi or I ncompl et a" 7 " Superi uperi or Com Compl et a" l abel val ues l educ l educl bl
Luego de separar el nivel educativo de las personas en 7 niveles, se generará una variable que determinará el nivel de educación 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 l educj educj h=l educ educ i f pco1= pco1==1 l abel val ues l educj h l educl bl egen egen l edu educj hm=max( ax( l edu educj h) , by( by( i d) dr op l educj h r ename l educj hm l educj h 68
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
t ab l edu educj h pobr obr e [ w=exp expr ] , r ow nof r eq | Si t uaci on de pobr obr eza l edu educj h | I ndi gent e Pob Pobr e no No pobr obr e | Tot Tot al - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - 0 | 7. 49 18. 18. 53 73. 98 | 100. 00 1 | 7. 93 20. 20. 58 71. 48 | 100. 00 2 | 5. 68 18. 18. 99 75. 34 | 100. 00 3 | 5. 13 17. 17. 09 77. 78 | 100. 00 4 | 3. 49 11. 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 - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++- - - - - - - - - Tot al | 4. 70 14. 08 81. 81. 22 | 100. 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 práctica de guardar la información proveniente de la aplicación del comando s u m es a través de matrices. Cuando se hace un s u m de una variable, en la memoria temporal del programa quedan guardadas las estadísticas; el nombre con el que cada una de éstas se guarda se puede saber al tipear r e t u r n l i s t después después de hacer un sum. . sum sum esc Var i abl abl e | Obs Mean ean St d. Dev. Mi n Max - - - - - - - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esc | 180914 180914 8. 319069 319069 4. 286882 286882 0 21 . r et et ur ur n l i s t s ca cal ar s : r ( N) r ( s um_ w) r ( mean) r ( Var ) r ( sd) r ( mi n) r ( max) r ( s um)
= = = = = = = =
180914 180914 180914 8. 3190687287 319068728788263 88263 18. 18. 3773 377353 5307 0741 4126 2638 38 4. 2868 286881 8150 5092 9223 2397 97 0 21 1505036 1505036
Lo mismo se puede hacer después de un s u m ,
d e t a i l :
. s um um es c, c, det a i l escol scol ar i dad (año (años)
69
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
------------------------------------------------------------Per Per cen cent i l es Smal l est 1% 0 0 5% 0 0 10% 2 0 Obs 180914 180914 25% 25% 5 0 Sum Sum of Wgt . 1809 180914 14 50%
8
75% 75% 90% 90% 95% 95% 99% 99%
12 13 15 17
Lar gest gest 21 21 21 21
Mean St d. Dev. ev.
8. 319069 319069 4. 2868 286882 82
Var i ance ance Skewness ness Kurt osi s
18. 18. 3773 37735 5 - . 1286 128663 632 2 2. 4030 403091 91
. r et et ur ur n l i s t s ca cal ar s : r ( N) r ( s um_ w) r ( mean) r ( Var ) r ( sd) r ( skewness) skewness) r ( kurt osi s) r ( s um) r ( mi n) r ( max) r ( p1) r ( p5) r ( p10) p10) r ( p25) p25) r ( p50) p50) r ( p75) p75) r ( p90) p90) r ( p95) p95) r ( p99) p99)
= = = = = = = = = = = = = = = = = = =
180914 180914 180914 8. 3190687287 319068728788263 88263 18. 18. 3773 377353 5307 0741 4126 2638 38 4. 2868 286881 8150 5092 9223 2397 97 - . 1286 128663 6315 1597 9772 7225 2507 07 2. 4030 403091 9126 2611 1120 2085 855 5 1505036 1505036 0 21 0 0 2 5 8 12 13 15 17
Supóngase 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 estadísticas correspondientes. Para esto primero se debe generar la matriz, llamémosla A. mat r i x A=J ( 2, 3, 0) 70
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Luego se hace el primer s u m , de la variable ingreso para los hombres, y guardo este resultado en la posición [1,1] de la matriz: sum i ngr ngr eso i f dhom dhombr e==1 mat r i x A[ A[ 1, 1] =r ( mean) ean)
Y así sucesivamente hasta completar toda la matriz: sum i ngr ngr eso i f dhom dhombr e==0 mat r i x A[ A[ 2, 1] =r ( mean) ean) s um esc i f dhom dhombr e==1 mat r i x A[ A[ 1, 2] =r ( mean) ean) s um esc i f dhom dhombr e==0 mat r i x A[ A[ 2, 2] =r ( mean) ean) s um expr i f dhom dhombr e==1 mat r i x A[ A[ 1, 3] =r ( mean) ean) s um expr i f dhom dhombr e==0 mat r i x A[ A[ 2, 3] =r ( mean) ean)
Con esto se completa la matriz. Luego para que se vea, en Stata Results se tipea el comando m a t r i z l is is t : . mat r i x l i s t A A[ 2, 3] r1 r2
c1 210198 210198.. 54 162629 162629.. 12
c2 8. 342726 3427264 4 8. 295979 2959796 6
c3 58. 336718 336718 60. 383309 383309
Esta matriz se puede copiar, seleccionando la matriz en la ventana de resultados apretando el botón derecho y pinchando “copy table”; luego se puede llevar a un archivo Excel para su edición. VIII. Ciclos recursivos El comando w h i le l e permite ejecutar una función en forma recursiva mientras cierta condición se cumpla. Por ejemplo: l oc al i whi l e `i ’ <22 { t ab dhom hombr e i f esc==`i ’ l ocal cal i =`i ’ +1 }
Este código hará 21 tablas, una para cada año de escolaridad, de la variable que identifica género.
71
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
IX.Gráficos IX. Gráficos En STATA se pueden realizar gráficos 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Por ejemplo, si queremos realizar un histograma nos aparece el siguiente cuadro:
Donde se nos presentan varias opciones, como hacer el gráfico por cierta categoría (por ejemplo género) a través del comando by, condicionar el gráfico a cierto grupo a través del comando if, introducir factores de expansión, ajustar una densidad normal, ajustar una densidad estimada en forma no paramétrica (kernel), y poner títulos, etiquetas, etc…
73
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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: hi st ogr am l educ
Pero hagámoslo un poco más elaborada: hi s t og ogr am am es c, c, yt i t l e( Dens i dad) xt x t i t l e( Ni vel de t i t l e( Di s t r i buc i ón del ni vel de es es co col ar i dad, c ol ol or ( gr een) )
Educ ac i ón)
74
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
En el gráfico observamos que el número de personas con educación va cayendo a medida que aumenta el nivel educativo. Sin embargo observamos que se observa un gran número de personas sobre el número 1, lo que equivale a educación básica incompleta, y luego observamos otro peca en el número 4, lo que equivale a educación media completa. Ahora hagamos este mismo gráfico pero separando a los hombres de las mujeres: hi st ogr am l educ, yt i t l e( Densi dad) xt i t l e( Ni vel de Educaci caci ón) t i t l e( Di t r i buc i ón del ni vel de es co col ar i dad, c ol ol or ( gr e en en) ) )
by( sex sexo ,
75
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
76
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
2.
Ahora realicemos un gráfico de dispersión entre años escolaridad e ingreso: t woway ( scat scat t er i ng esc) i f esc<1000000, yti t l e( I ngr eso) so) xt i t l e( Años de Educaci caci on) t i t l e( Rel aci ón ent r e educaci caci ón e i ngr esos) sos)
Ahora mostraremos el mismo grafico sólo que con la línea de regresión que minimiza la distancia entre los puntos: t woway ( sca scat t er i ng esc) ( l f i t i ng esc ) , yt i t l e( I ngr eso) so) xt i t l e( Años de de Educaci caci on) t i t l e( Rel aci ón ent r e educaci caci ón e i ngr esos sos )
77
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Pero; ¿qué ocurre con ambos gráficos?, ocurre que no se observa una correlación entre el nivel de ingresos y el nivel de escolaridad, escolaridad, debido a que los ingresos muy altos altos distorsionan la distribución. A continuación mostraremos un grafico de puntos junto a su línea de regresión, pero que sólo toma en cuenta a los individuos que tienen ingresos menores a un millón de pesos. t woway ( scat scat t er i ng esc) (l f i t i ng esc ) if i ng <1000000, yti t l e( I ngr eso) so) xt i t l e( Años de de Educaci caci on) t i t l e( Rel aci ón ent r e educaci caci ón e i ngr esos) sos)
78
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
3.
Hagamos un gráfico de barras con el ingreso promedio por sexo y situación de pobreza: gr aph ba bar ( mean) i ng, over ( sex sexo, l abel ( l absi ze( ze( smal l ) ) ) over ( pobr e, l abel ( l absi ze( ze( smal l ) ) ) yt i t l e( I ngr eso pr omedi o) t i t l e( I ngr eso pr omedi o por por gén género y si t uaci ón de pobr obr eza) eza)
79
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Este gráfico 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
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Un gráfico útil son los “box plots”, estos entregan información sobre el centro, dispersión, simetría y observaciones extremas, en un solo gráfico. Por ejemplo observamos en el siguiente box-plot del ingreso per cápita. La línea 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 línea superior horizontal se establece en un valor igual al percentil 75 más 1,5 veces el rango intercuartil. La línea 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 líneas representan valores extremos (outliers) de la distribución. Podemos ver que los números o coinciden realizando un sum detail, el que se muestra a continuación del box-plot.
81
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
82
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
X. Ayuda: Help La ayuda que trae este programa es bastante amigable y fácil de utilizar. Si Ud. Se dirige a “Help” se despliega un cuadro con diferentes opciones, puede buscar ayuda por contenidos, por comandos, etc…, en “What’s 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 correlación entre variables. Entonces se debe buscar en “Search”:
83
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
Dependiendo que este buscando pincha el comando (en azul), y se abrirá una ventana con una completa ayuda sobre el comando.
84
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 c or or r el at e es la siguiente: cor cor r el at e [ var l i s t ] [ i f f ]] [ i n] [ wei gh ghtt ] [ , co corr r el at e_op _optt i ons ] 85
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
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 opción if, in y weight todas ellas antes de la coma, la que es utilizada también en forma opcional para poner algunas opciones del comando. Entonces siempre lo que aparece en paréntesis cuadrados son alternativas opcionales del comando. Más adelante de la sintaxis, se indican cuales son estas “correlate_options”, también se presenta una descripción general del comando y sus opciones. A continuación se muestra otro ejemplo de sintaxis, para el comando t abl e: t abl e r o wvar [ c ol ol var [ s up uper c ol ol var ] ] [ i f ] [ i n] [ wei ght ] [ , opt i ons ]
Recordemos que todo lo que esta entre paréntesis cuadrado son opciones voluntarias de comando. En este caso rowvar no esta entre paréntesis cuadrado, significa que debemos obligadamente señalar la variable fila en la tabulación, es voluntario indicar la variable de columna, si no se indica la tabulación resultante es una distribución 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 más completa de buscar ayuda es a través de los manuales, estos además de traer una ayuda sobre los comandos generalmente contiene toda una descripción teórica de ellos. Por ejemplo, en el caso de un modelo de regresión lineal, explica lo que es una modelo de este tipo. Además el manual de gráficos es muy útil, ya que trae múltiples 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 gráficos.
86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE