Upload
alejandro-alvarez
View
276
Download
13
Embed Size (px)
Citation preview
8/20/2019 Curso Nivelación Stata
1/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
1
Curso Nivelación STATAMagí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]). Cualquier error es responsabilidad exclusiva del autor. Se agradece a J.Eguiguren los comentarios y cooperación en la elaboración de este apunte.
8/20/2019 Curso Nivelación Stata
2/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
2
TABLA DE CONTENIDOS
INTRODUCCIÓN 3
I. UNA PEQUEÑA INTRODUCCIÓN AL PROGRAMA 4
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 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. MODIFICACIÓN DE UNA BASE DE DATOS. 38
V.1. MODIFICACIÓN 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. GRÁFICOS 72
X. AYUDA: HELP 83
8/20/2019 Curso Nivelación Stata
3/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
3
Introducción
Este documento pretende los introducir el uso del programa STATA, mediante laentrega de conceptos y comandos básicos para el inicio en este software. En unaprimera parte haremos una pequeña introducción al programa, luego veremosbrevemente como se carga una base de datos, y en una tercera parte se verá cual esla manera más adecuada de trabajar con ella. Adicionalmente, en una cuarta parte severán los comandos que comúnmente se utilizan para inspeccionar una base de datosy obtener estadísticas descriptivas de sus variables, específicamente veremoscomandos como sum, 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 modificarlas bases de datos, especialmente, cambiando el nombre de las variables, unir basesde datos, eliminar y agregar variables, cambiar la estructura de ellas y crear nuevasvariables a partir de las variables existentes.
En una sexta parte se aplicará lo aprendido y a partir de ese ejercicio se introducirá lautilidad de los archivos log y do. En la séptima parte se mostrará cómo podemosplasmar 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, elcual nos será de gran utilidad para poder avanzar y utilizar stata cuando no tenemosmuy claro cual es el comando a utilizar.
Es importante aclarar que gran parte de los comandos de stata se puede hacermediante 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 softwareestadístico, es el de Base de Datos, el primer paso para poder trabajar con STATA escargar 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 columnasy las observaciones por filas. Por ejemplo, si estamos estudiando las variablesescolaridad 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 unamujer.
escolaridad Ingreso10 80.00012 120.00013 110.0004 85.0005 70.0008 65.00017 450.00021 1.200.0002 60.000
8/20/2019 Curso Nivelación Stata
4/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
4
I. Una pequeña introducción al programaSTATA es una aplicación completa e integrada, basada en comandos, que tiene todoslos elementos necesarios para realizar análisis estadístico, manejo de datosestadí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 enventanas con las opciones de análisis y procesamiento de datos, además tiene laopción “antigua” mediante los comandos. El programa posee una ayuda en línea, es unprograma 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 utilizadosdurante la sección en turno. Results: muestra los resultados de la aplicación de los comandos, sólo losresultados más recientes son visibles en esta ventana Variables: en esta venta se presenta el listado de variables que se encuentranen la base de datos que se este trabajando Commands: corresponde a la ventana donde introducen los comandos paraobtener el resultado deseado. Sirve para utilizar STATA en forma interactiva.
8/20/2019 Curso Nivelación Stata
5/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
5
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 ypermiten ir guardando todos los resultados.
Abrir el editor de do-file. Los archivos d o son archivos con esta extensión que nospermiten 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 todoslos comandos que se están utilizando y todas las instrucciones que se quieren ejecutar, mientras que elsegundo guarda en un archivo de texto todos los resultados que surgen de este archivo do.
8/20/2019 Curso Nivelación Stata
6/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
6
II. Como organizar el trabajo en STATACuando se abre STATA es importante saber donde se esta trabajando, es decir, en quecarpeta se están guardando los resultados o desde que carpeta vamos a llamar la basede datos, etc. Si no se sabe la carpeta o directorio donde STATA esta ubicado podemosaveriguarlo escribiendo el comando pwd :
pwd
C: \ dat a → Este resultado nos indica que estamos ubicados en el disco C delcomputador en la carpeta data
Para cambiar el directorio o carpeta se debe realizar lo siguiente:
cd C: \ Ni vel aci on_St at a
Utilizo el comando cd y entrego la nueva ruta. En este caso le estoy indicando alprograma que se ubique en la carpeta “Nivelacion_Stata” que se encuentra en el discoC del computador.
La ventaja de indicar desde un comienzo en que carpeta del computador se estatrabajando, 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. Obviamenteesto tiene sentido cuando para un trabajo específico tenemos todos los archivosnecesarios en la misma carpeta.
Por ejemplo, si estamos trabajando con información de tres bases de datos distintas, yqueremos dejar la información relevante para el estudio en una sola base datos (másadelante 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 queigual cuando llamemos a cada una de las bases de datos, al estar en carpetasdistintas, tendremos que cambiar la ruta.
Importante: los sistemas operativos más nuevos permiten que las carpetas tengan
nombres con espacio en blanco, por ejemplo, “Nivelacion Stata”. Sin embargo, STATAno va a reconocer una carpeta que tenga espacios en blanco en el nombre, a no serque se indique la ubicación de esta carpeta entre comillas. Por este motivo, se debeevitar llamar a una carpeta con la que van a trabajar en STATA con nombres quecontengan espacios en blanco.3
3 Esto problema es común cuando trabajan en el Escritorio del computador, ya que la carpeta en este casoes C:\Documents and Settings\...., tiene espacios en blanco.
8/20/2019 Curso Nivelación Stata
7/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
7
Supongamos que la carpeta en que vamos a tratar se llama “Nivelacion Stata”, en laprimera línea del siguiente cuadro podemos apreciar que al entregar la ubicación de lacarpeta 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 agregamoscomillas a la ruta no se produce el error.
Nota: si al introducir un comando no apareceun punto blanco después de ejecutado elcomando, significa que no se termino o no seha terminado de ejecutar. Además, siempreque aparezcan letras rojas significa que hayun error, la ayuda para el error la puedenencontrar 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 contengaespacios en blanco en los nombres.
8/20/2019 Curso Nivelación Stata
8/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
8
III. ¿Cómo cargar una base de datos?Las bases de datos en formato Stata tienen extensión .dta. Las versiones antiguas delsoftware no se pueden abrir bases de datos que han sido trabajadas y guardas en unaversión más moderna, cuando intentemos hacer esto el programa entregará un errorindicando 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 elcomando clear. Si he estado trabajando una base de datos previamente lacual 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; dat a i n memory woul d be l ost
2- El programa debe tener suficiente memoria. Para entregarle memoria aStata se debe utilizar el comando set mem . Por ejemplo, si la base de datosque deseamos cargar pesa 100 MB, en la ventana S t a t a Co m m a n d debemos tipear:
set mem 100m
Si Ud. no agrega memoria y los 10 MB que vienen asignados al abrir elprograma no son suficientes, el programa arrojará el siguiente error:
no r oomt o add more obser vat i ons
Esto también puede suceder cuando se ha trabajado en la base de datos yse han creado muchas variables: en un momento el programa se puede
quedar sin memoria. En este caso se debe limpiar el programa (borrar labase de datos) utilizando el comando clear; entregarle más memoria alprograma utilizando set mem ; abrir la base de datos y realizar todonuevamente. Por esta razón es fundamental que Ud., cuando comience atrabajar, asigne la memoria necesaria para todas las variables que esperagenerar.
8/20/2019 Curso Nivelación Stata
9/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
9
El comando general para entregar memoria a Stata es:
set mem #[ b| k| m| g] [ , per manent l y]
con la opción “permanently” la cantidad de memoria ingresada semantendrá 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énpodemos hacerlo dirigiéndonos a File/Open…
2- Otra forma es tipear en S t a t a Co m m a n d use “[disco en que laguardaremos] \ [ruta de acceso] \ [nombre de archivo.dta]”, clear. Porejemplo:
use "C: \ Ni vel aci on_St at a\ i ngr eso. dt a", cl ear
o simplemente
use i ngr eso. dt a, cl ear
si ya le hemos indicado previamente a Stata que vamos a trabajar en lacarpeta Nivelacion_Stata del disco C.
Notar que en ambos casos el comando incorpora la opcion “, clear”, esto nosgarantiza que la base de datos sea abra si es que ya existe otra base dedatos previa en el programa, esta opción ahorra el paso previo de ejecutarel comando clear antes de abrir la base de datos.
Recuerde que si la carpeta en la que esta trabajando tiene espacios enblanco, debo poner comillas al llamar la base de datos, de lo contrarioaparecerá el siguiente error:
8/20/2019 Curso Nivelación Stata
10/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
10
Esto porque Stata cree que el nombre de la carpeta es simplementeNivelacion. Si utilizamos comillas no se produce el error.
Ahora si el nombre de la carpeta o el nombre de la base esta mal ingresadoen el comando se produce el siguiente error:
3- Traspasar los datos de un archivo Excel o similar copiando lainformación de este archivo al EDITOR de STATA.
Esto se hace copiando en el archivo Excel las columnas (variables) quequeremos 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 conel comando clear.
Algunos aspectos relevantes antes de copiar los datos de Excel a Stata:
Para Stata, como para cualquier otro software norteamericano, elseparador 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 estaforma, debe dirigirse a inicio → Panel de Control → Opciones regionales, deidioma, y de fecha y hora → Configuración regional y de idioma → Opcionesregionales, pichar personalizar, aquí se puede cambiar la configuraciónnumérica indicando que el símbolo decimal es “.” Y el símbolo de separaciónde miles “,”. Todas las variables que son numéricas, deben estar en formatonumérico antes de ser exportadas.
El siguiente cuadro muestra lo que resulta de pasar la base de datosbase.xls a Stata:
8/20/2019 Curso Nivelación Stata
11/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
11
El color rojo indica que la variable no es numérica.
Generalmente las bases de datos muy grandes no vienen en excel, ya queeste programa es limitado en cuanto al número de filas (observaciones) ynúmero de columnas (variables). El número máximo de filas es de 65.536, yel 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 nsheet usi ng C: \ Ni vel aci on_St at a\ j uni o05. t xt
o al t er nat i vament e:
8/20/2019 Curso Nivelación Stata
12/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
12
8/20/2019 Curso Nivelación Stata
13/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
13
Cuando las bases de datos vienen el texto y son muy grandes no se puedenver utilizando un block de notas, en estos casos se recomienda utilizar elprograma TextPad que puede ser descargado gratuitamente
(www.textpad.com). Siempre es recomendable inspeccionar la base dedatos 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, quepermite 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: \ Ni vel aci on_St at a\ i ngr esos. dt a, r epl ace
Es importante escribir replace, sino el programa les enviara un errordiciendo que la base de datos ya existe.
8/20/2019 Curso Nivelación Stata
14/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
14
2- Si quiere guardar la base de datos con un nuevo nombre no esnecesario tipear replace:
save C: \ Ni vel aci on_Stat a\ i ngr esos_new. dt a
Una vez que los datos han sido cargados, se puede optimizar el espacio queestos ocupan utilizando el comando c o m p r e ss , este comando comprime labase 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 quesigue 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 dedatos:
cd C: \ Ni vel aci on_St at aset mem 100muse i ngr eso. dt a, cl ear
8/20/2019 Curso Nivelación Stata
15/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
15
IV. Leyendo los datos
Existen varios comandos que nos permiten obtener información preliminar acerca dede los datos y estadísticas acerca de ellos. Veremos básicamente los comandosdescr i be, codebook, edi t , sum, t ab, i nspect , count y dupl i cat e.
Antes de ver detallamente cada uno de estos comandos descriptivos es necesarioaclarar que cada uno de ellos puede ser utilizado para ver el comportamiento degrupos 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 paracada sexo o codebook i f sexo==1, el cual nos mostrará la aplicación del comandocodebook para el sexo que este codificado con el número 1.
También podemos leer los datos usando las ventanas correspondientes, tal como loobservamos en la siguiente figura:
Como podemos ver, si vamos a la opción Data y luego seguimos la opción Describedata, veremos una serie de opciones que veremos a continuación, tal como elcomando describe o el codebook. También mediante la opción Data podemosdirectamente ver el editor de stata.
8/20/2019 Curso Nivelación Stata
16/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
16
IV.1. Describe
El comando describe entrega información de todas las variables que se encuentran enla 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 deobservaciones, 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 aci ón_I \ i ngr eso. dt aobs: 252, 748
var s: 5 19 Mar 2006 12: 01si ze: 5, 307, 708 ( 49. 4% of memory f r ee)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
st or age di spl ay val uevar i abl e name t ype f ormat l abel var i abl e l abel- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -esc byt e %8. 0g escol ari dad ( años)expr f l oat %9. 0g exper i enci a l abor aldhombre f l oat %9. 0g genero ( 1 hombre 0 muj er )i ngr eso f l oat %9. 0g i ngr eso l abor alf ol i o l ong %8. 0g- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cuando la base de datos es muy grande y sólo se quiere obtener información dealgunas de las variables contenidas en ella, después de describe (o simplemente d ) seingresa 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
8/20/2019 Curso Nivelación Stata
17/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
17
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 seobservan 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 comandodescribe, al tipear simplemente codebook se va a describir cada variable. El siguientecuadro muestra la diferencia entre ambos comandos:
8/20/2019 Curso Nivelación Stata
18/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
18
Claramente el comando codebook es más completo, presenta la etiqueta de lavariable, 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, ladesviación estándar, y los percentiles.
Tanto el comando describe como el comando codebook nos permite distinguir dostipos de variables, las numéricas y las no numéricas. Sólo se pueden obtenerestadísticas de los datos cuando las variables son numéricas, aunque muchas veces esmás fácil visualizar la base de datos cuando las variables tienen nombres en vez denúmeros o códigos. Por ejemplo, en la variable dhombre de la base de datos vemossólo unos y ceros, siempre tenemos que tener en mente que uno significa hombre ycero 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 datacontents (codebook)”. Ahí se pone el nombre de la variable que queremosinspeccionar:
8/20/2019 Curso Nivelación Stata
19/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
19
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:
8/20/2019 Curso Nivelación Stata
20/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
20
IV.3. Edit
Otra forma de conocer o tener una visión más amplia de la base de datos es medianteel 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 hacervía ventanas mediante la opción “Data” y luego “Data editor”
8/20/2019 Curso Nivelación Stata
21/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
21
Al igual que en los casos anteriores también se puede realizar la misma operación víael comando edit y también podemos editar una matriz mas pequeña especificando lasvariables que queramos incluir utilizando la encuesta casen 2003, por ejemplo “edi tsexo eci vi l edad esc”
8/20/2019 Curso Nivelación Stata
22/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
22
IV.4. ist; inspect; duplicates; count; order
Un comando bastante útil, similar al edit; es el list; el cúal despliega los datos en laventana de resultados (Stata Results); en vez de enviarnos al editor.
8/20/2019 Curso Nivelación Stata
23/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
23
Otro comando; el cual asegura que una variable es una codificación única dentro deuna base de datos, es el comando duplicates report. Este comando se usageneralmente para chequear que no existan observaciones duplicadas (foliosduplicados) dentro de una base de datos. Si tenemos la siguiente base de datos:
8/20/2019 Curso Nivelación Stata
24/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
24
El resultado que entrega aplicar este comando a la variable “id” es el siguiente:
Finalmente, existen otros dos comandos interesantes para inspeccionar la base dedatos: inspect y count.
El comando inspect muestra la distribución de la variable, la cantidad deobservaciones con valor cero, con valores mayores a cero y sin dato, así como lacantidad de número enteros y no enteros en la variable. Por ejemplo:
8/20/2019 Curso Nivelación Stata
25/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
25
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 noayuda a inspeccionarla; ya que nos permite ordenar las variables de la manera quemás nos acomode. Este comando es order el cual se utiliza de la siguiente manera:
order f ol i o edad esc i ngr eso dhombr e sexo
y nos entregará la base de datos de tal forma que al aplicar el comando edit la primeravariable 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 seescribe sum en Stata Command, se muestran las estadísticas de todas las variables enla base de datos.
8/20/2019 Curso Nivelación Stata
26/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
26
. sum Var i abl e | Obs Mean Std. Dev. Mi n Max
- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -esc | 180914 8. 319069 4. 286882 0 21
expr | 252748 59. 3625 101. 0047 0 5045dhombre | 252748 . 4987854 . 4999995 0 1i ngreso | 76993 195579. 2 361822 1002 2. 19e+07
f ol i o | 252748 126374. 5 72962. 21 1 252748
Si nos interesan las estadísticas de una sola variable, por ejemplo, escolaridad:
. sum esc
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 180914 8. 319069 4. 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 unsum utilizando el comando by:
. sor t dhombre
. by dhombre: sum esc
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- > dhombr e = 0
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 91557 8. 29598 4. 30015 0 21
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- > dhombr e = 1
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 89357 8. 342726 4. 273139 0 21
8/20/2019 Curso Nivelación Stata
27/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
27
Esto mismo se podría hacer alternativamente utilizando if :
. sum esc i f dhombre==0
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 91557 8. 29598 4. 30015 0 21
. sum esc i f dhombre==1
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 89357 8. 342726 4. 273139 0 21
Si al comando sum le agregamos detail después de una “,”; STATA entrega unacantidad más amplia de estadísticas sobre la variables. Además de las ya descritasentrega los percentiles, la varianza, la asimetría y la kurtosis.
. sum esc, det ai l
escol ar i dad (años)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Per cent i l es Smal l est1% 0 05% 0 0
10% 2 0 Obs 18091425% 5 0 Sum of Wgt . 180914
50% 8 Mean 8. 319069Largest Std. Dev. 4. 286882
75% 12 2190% 13 21 Var i ance 18. 3773595% 15 21 Skewness - . 128663299% 17 21 Kurt osi s 2. 403091
Todo lo anterior se puede hacer también mediante ventanas, especificaremos sólo uncaso, donde se pide un sum de la variable esc y se pide una descripción detallada, loque se obtiene mediante la opción “Display additional statistics”
8/20/2019 Curso Nivelación Stata
28/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
28
IV.6. Tabulate
El comando tabulate (o tab) permite hacer tablas con las variables de interés. Latabla más sencilla se realiza de la siguiente forma:
. t ab dhombre
genero ( 1 |hombr e 0 |
muj er) | Fr eq. Per cent Cum.- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 | 126, 681 50. 12 50. 121 | 126, 067 49. 88 100. 00
- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 252, 748 100. 00
Esta tabla indica el número de observaciones total y de cada una de las categorías dela variable, el porcentaje que cada uno representa sobre el total y el porcentajeacumulado.
8/20/2019 Curso Nivelación Stata
29/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
29
El comando tab1 permite hacer esto mismo pero para varias variables
simultáneamente:. t ab1 dhombre esc
- > t abul at i on of dhombre
genero ( 1 |hombr e 0 |
muj er) | Fr eq. Per cent Cum.- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 | 126, 681 50. 12 50. 121 | 126, 067 49. 88 100. 00
- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 252, 748 100. 00
- > t abul at i on of esc
escol ar i dad |( años) | Fr eq. Per cent Cum.
- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 | 10, 833 5. 99 5. 991 | 2, 481 1. 37 7. 362 | 5, 434 3. 00 10. 363 | 9, 193 5. 08 15. 444 | 10, 303 5. 69 21. 145 | 7, 512 4. 15 25. 296 | 19, 165 10. 59 35. 897 | 7, 004 3. 87 39. 768 | 20, 503 11. 33 51. 09
9 | 10, 582 5. 85 56. 9410 | 12, 984 7. 18 64. 1211 | 9, 384 5. 19 69. 3012 | 35, 263 19. 49 88. 7913 | 4, 820 2. 66 91. 4614 | 3, 965 2. 19 93. 6515 | 3, 156 1. 74 95. 3916 | 3, 177 1. 76 97. 1517 | 3, 853 2. 13 99. 2818 | 881 0. 49 99. 7719 | 292 0. 16 99. 9320 | 122 0. 07 100. 0021 | 7 0. 00 100. 00
- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tot al | 180, 914 100. 00
Además, con este comando, se pueden realizar cruces entre variables, por ejemplo:
8/20/2019 Curso Nivelación Stata
30/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
30
. t ab esc dhombre
| genero ( 1 hombre 0escol ar i da | muj er )
d ( años) | 0 1 | Tot al- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
0 | 5, 842 4, 991 | 10, 8331 | 1, 198 1, 283 | 2, 4812 | 2, 709 2, 725 | 5, 4343 | 4, 571 4, 622 | 9, 1934 | 5, 284 5, 019 | 10, 3035 | 3, 818 3, 694 | 7, 5126 | 9, 915 9, 250 | 19, 1657 | 3, 501 3, 503 | 7, 004
8 | 9, 791 10, 712 | 20, 5039 | 5, 173 5, 409 | 10, 58210 | 6, 435 6, 549 | 12, 98411 | 4, 707 4, 677 | 9, 38412 | 18, 245 17, 018 | 35, 26313 | 2, 672 2, 148 | 4, 82014 | 2, 180 1, 785 | 3, 96515 | 1, 523 1, 633 | 3, 15616 | 1, 596 1, 581 | 3, 17717 | 1, 929 1, 924 | 3, 85318 | 326 555 | 88119 | 92 200 | 29220 | 45 77 | 12221 | 5 2 | 7
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
Tot al | 91, 557 89, 357 | 180, 914
Si en vez de las frecuencias uno quiere ver el porcentaje, que sume 100% en formahorizontal (filas), se debe agregar a lo anterior una coma y la palabra row y ponerademás nofreq (para que no se muestre las frecuencias):
8/20/2019 Curso Nivelación Stata
31/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
31
. t ab esc dhombre, r ow nof r eq
| genero ( 1 hombre 0escol ar i da | muj er )
d ( años) | 0 1 | Tot al- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
0 | 53. 93 46. 07 | 100. 001 | 48. 29 51. 71 | 100. 002 | 49. 85 50. 15 | 100. 003 | 49. 72 50. 28 | 100. 004 | 51. 29 48. 71 | 100. 005 | 50. 83 49. 17 | 100. 006 | 51. 73 48. 27 | 100. 007 | 49. 99 50. 01 | 100. 008 | 47. 75 52. 25 | 100. 009 | 48. 88 51. 12 | 100. 00
10 | 49. 56 50. 44 | 100. 0011 | 50. 16 49. 84 | 100. 0012 | 51. 74 48. 26 | 100. 0013 | 55. 44 44. 56 | 100. 0014 | 54. 98 45. 02 | 100. 0015 | 48. 26 51. 74 | 100. 0016 | 50. 24 49. 76 | 100. 0017 | 50. 06 49. 94 | 100. 0018 | 37. 00 63. 00 | 100. 0019 | 31. 51 68. 49 | 100. 0020 | 36. 89 63. 11 | 100. 0021 | 71. 43 28. 57 | 100. 00
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - Tot al | 50. 61 49. 39 | 100. 00
8/20/2019 Curso Nivelación Stata
32/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
32
Si se quiere que los porcentajes sumen 100% en forma vertical (columnas) debemos
hacer lo siguiente:. t ab esc dhombre, col nof r eq
| genero ( 1 hombre 0escol ar i da | muj er )
d ( años) | 0 1 | Tot al- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
0 | 6. 38 5. 59 | 5. 991 | 1. 31 1. 44 | 1. 372 | 2. 96 3. 05 | 3. 003 | 4. 99 5. 17 | 5. 084 | 5. 77 5. 62 | 5. 695 | 4. 17 4. 13 | 4. 156 | 10. 83 10. 35 | 10. 59
7 | 3. 82 3. 92 | 3. 878 | 10. 69 11. 99 | 11. 339 | 5. 65 6. 05 | 5. 85
10 | 7. 03 7. 33 | 7. 1811 | 5. 14 5. 23 | 5. 1912 | 19. 93 19. 04 | 19. 4913 | 2. 92 2. 40 | 2. 6614 | 2. 38 2. 00 | 2. 1915 | 1. 66 1. 83 | 1. 7416 | 1. 74 1. 77 | 1. 7617 | 2. 11 2. 15 | 2. 1318 | 0. 36 0. 62 | 0. 4919 | 0. 10 0. 22 | 0. 1620 | 0. 05 0. 09 | 0. 0721 | 0. 01 0. 00 | 0. 00
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - Tot al | 100. 00 100. 00 | 100. 00
Si deseamos que se muestren ambos porcentajes:
t ab esc dhombre, col r ow nof r eq
También se pueden hacer tablas utilizando el comando by, primero ordenando deacuerdo a la variable que voy a realizar las tablas, por ejemplo:
sor t dhombreby dhombre: t ab esc
Este código entrega dos tablas de la variable escolaridad, una para los hombres y otrapara las mujeres. Lo mismo es posible de ser realizado utilizando el condicional if:
8/20/2019 Curso Nivelación Stata
33/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
33
t ab esc i f dhombre==0t ab esc i f dhombre==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:
M⎩
⎨⎧
=
⎩⎨⎧
=
nosi
educacióndeañostienesiesc
nosi
educacióndeañostienesiesc
0
112
0
011
Se puede hacer de la siguiente forma:
t ab esc, gener ate( esc)
Si los años de educación toman valores que van desde 0 a 21, se generarán 22variables dicotómicas.
Supóngase ahora que se requiere hacer un cuadro con los años de escolaridad, pero envez de entregar la frecuencia o porcentaje de observaciones en cada categoría, serequiere que muestre una estadística de otra variable, por ejemplo, el promedio deingreso. Para realizar este tipo de tablas se debe usar el comando tab agregándoledespués de una coma la palabra summarize. Para el ejemplo citado debería utilizar elsiguiente código:
8/20/2019 Curso Nivelación Stata
34/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
34
. t ab esc, summar i ze( i ngr eso) means| Summar y of| i ngr eso
escol ar i dad | l abor al( años) | Mean
- - - - - - - - - - - - +- - - - - - - - - - - -0 | 96996. 2351 | 104083. 112 | 108236. 243 | 112638. 814 | 119092. 965 | 119745. 976 | 136860. 847 | 121445. 45
8 | 131005. 639 | 147939. 4110 | 169646. 7511 | 171547. 6112 | 196789. 4713 | 234377. 2714 | 267368. 3815 | 337808. 9516 | 394113. 7717 | 599325. 818 | 865582. 6119 | 918467. 220 | 1127102. 921 | 744900. 67
- - - - - - - - - - - - +- - - - - - - - - - - -
Tot al | 195714. 26
Por último, el comando tabstat permite realizar tablas con las siguientes estadísticas:
8/20/2019 Curso Nivelación Stata
35/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
35
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -mean pr omedi ocount cuenta el número de obser vaci ones que t i ene val orn i gual que countsum sumamax máxi momi n mí ni mor ange r ango=max- mi nsd desvi aci ón estándarvar var i anzacv coef i ci ent e de var i aci on ( sd/ mean)semean err or est ándar de l a medi a = sd/ sqrt ( n)skewness asi met r í akurt osi s kur t osi smedi an medi ana ( l o mi smo que p50)p1 1st per cent i l ep5 5t h per cent i l ep10 10t h percent i l ep25 25t h percent i l ep50 50t h percent i l e ( i gual que l a medi ana)p75 75t h percent i l ep90 90t h percent i l ep95 95t h percent i l ep99 99t h percent i l ei qr r ango i nt er quant i l = p75 - p25q equi val ent e a especi f i car "p25 p50 p75"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Al poner by(nombre) especifica que las estadísticas deben ser entregadasseparadamente para cada valor de la variable “nombre”.
Por ejemplo, si se quiere obtener el promedio, la mediana, el máximo y el mínimo deingreso por género, se puede realizar de la siguiente forma:
. t abst at i ngr eso, st at i st i cs( mean p50 max mi n) by(dhombre)
Summary f or vari abl es: i ngr esoby cat egor i es of : dhombre (gener o (1 hombre 0 muj er ) )
dhombr e | mean p50 max mi n- - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 | 162629. 1 104000 9130004 10021 | 210198. 5 120000 2. 19e+07 1500
- - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tot al | 195579. 2 120000 2. 19e+07 1002- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Como hemos visto en los casos anteriores también podemos tabular usando lasventanas:
8/20/2019 Curso Nivelación Stata
36/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
36
Si quisiéramos graficar escolaridad contra sexo hacemos doble click sobre “Table ofsummary statistics” observamos el dibujo que viene y ponemos “esc” en “Rowvariable” y “sexo” sobre “Column variable”.
8/20/2019 Curso Nivelación Stata
37/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
37
8/20/2019 Curso Nivelación Stata
38/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
38
V. Modificación de una base de datos.
En esta sección veremos como se pueden modificar las bases de datos, desde losnombres de sus variables y la generación de nuevas variables hasta la forma se comose 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 cualquierusuario, es recomendable incorporar etiquetas a los números o códigos de lasvariables. Esto se hace mediante la utilización de variables secundarias llamadas valuelabels. Si una variable tiene una variable secundaria que entregue etiqueta a loscó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 yel 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 ysus etiquetas:
l abel def i ne generol bl 1 “Hombr e” 0 “Muj er”
2- Indicar que la relación entre la variable y su variable secundaria con lasetiquetas:
l abel val ues dhombr e generol bl
Al hacer un describe de la variable “dhombre”, este indica que existe una variable quecontiene la etiqueta de los números o códigos de esta variable:
8/20/2019 Curso Nivelación Stata
39/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
39
Si es que la base de datos que uno tiene ya viene con las variables secundarias deetiquetas (value labels), y queremos saber que código 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 respectivadescripción, hacemos doble click sobre la variable y nos aparecerá el siguiente cuadro:
8/20/2019 Curso Nivelación Stata
40/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
40
En N a m e escribimos el nombre de la variable y en L a b e l 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 cador i ndi vi dual ”
Para etiquetar la base de datos se utiliza el comando label data:
l abel dat a “Base de I ngr esos Compl eta”
8/20/2019 Curso Nivelación Stata
41/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
41
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, ladiferencia es que el primero de los comandos despliega la hoja de cálculo y el segundodespliega los datos en la ventana de resultados (Stata Results). También en el editorse 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 unavariable string a numérico y viceversa:
encode var i abl e, gener ate( nueva_vari abl e)
8/20/2019 Curso Nivelación Stata
42/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
42
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 unnúmero sólo que al traspasarlo a la base de datos quedo en formato string, lorecomendable es utilizar el siguiente comando:
gener at e nueva_var i abl e=r eal ( 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 queidentifica las observaciones en la base de datos). Las dos bases de datos deben estarguardadas en formato .dta y deben estar ordenadas de acuerdo a la variable que se vaa pegar. El objetivo del comando merge es agregar variables (columnas) noobservaciones (filas). Supongamos que tenemos dos bases de datos, la primerallamada uno.dta contiene la siguiente información:
i d esc
sexo edad
123456789
8911131520109
122212111
205545473231282635
Y supongamos que tenemos otra base de datos (dos.dta) con la siguiente información:
i d i ngr eso
134
6891011
8000099000110000
13000015000020000011500098000
8/20/2019 Curso Nivelación Stata
43/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
43
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 eingreso, debemos realizar el siguiente procedimiento:
1- Ordenar la base de datos dos.dta (using data set) de acuerdo a las variablesque vamos a hacer el pegado (id) y guardar esta base de datos:
sor t i d save dos. dt a, r epl ace
2- Abrir la base de datos uno.dta (master data set), ordenarla de acuerdo a id ypegar la información de la base dos.dta:
use uno. dtasort i dmer ge id usi ng dos. dt a
La base de datos que resulta de esto es de la siguiente forma:
i d esc
sexo edad i ngr eso _mer ge
12
34567891011
89
11131520109··
12
2212111··
2055
45473231282635··
80000·
99000110000
·130000
·15000020000011500098000
31
331313322
Al realizar este pegue de datos, el programa generará una variable, si Ud. no le asignaun nombre se creará con el nombre _merge, pero Ud. puede darle el nombre quedesee de la siguiente forma:
merge i d usi ng dos. dta, _merge( nombre)
8/20/2019 Curso Nivelación Stata
44/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
44
Esta variable puede tomar tres valores:
Ahora supongamos que no se dispone de la base ingreso.dta tal como fue presentadaanteriormente, 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 variablesen forma conjunta, debería realizar los siguientes pasos:
use i ngr eso2. dt a (usi ng dat aset )sor t f ol i osave i ngr eso2. dt a, r epl aceuse i ngr eso1. dt a ( mast er dataset )sor t f ol i omer ge f ol i o usi ng i ngr eso2. dt a
Lo que este pequeño código nos indica es que carguemos la base de datosingreso2.dta, la ordenemos (utilizando el comando sort) de acuerdo al identificador “folio”, y guardemos los cambios realizados (esta base de datos se denomina usingdataset). Luego abrimos la base de datos a la cual le vamos a pegar variables (masterdataset), ingreso1.dta, la ordenamos de acuerdo al identificador folio, y finalmente lepegamos 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 data not sor t edmast er data not sor t ed
Por otro lado, el comando append , anexa observaciones para el mismo conjunto devariables, es decir, agrega filas a la base de datos. Supongamos que además deuno.dta tenemos otra base de datos (tres.dta) que contiene las mismas variables quela primera pero para otros 10 individuos distintos:
_merge=1 cuando la observación esta sólo en Master Dataset _merge=2 cuando la observación esta sólo en Using Dataset
mer e=3 cuando las observaciones están en ambas bases de datos
8/20/2019 Curso Nivelación Stata
45/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
45
i d esc
sexo edad
10111213141516171819
89111315201094
1222121112
20554547323128263520
Entonces podemos juntar estas 19 observaciones en una sola base de datos medianteel comando append , de la siguiente forma:
use dos. dt aappend usi ng t r es. dt a
El resultado es el siguiente:
i d esc
sexo edad
1234567891011121314
1516171819
891113152010989111315
201094
12221211112221
21112
2055454732312826352055454732
3128263520
8/20/2019 Curso Nivelación Stata
46/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
46
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, yla 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. dt aappend usi ng i ngreso4. 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” ynos 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 queestamos 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 queremosunir las dos bases de datos.
8/20/2019 Curso Nivelación Stata
47/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
47
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 porindividuo podemos condesar la base de datos mediante el comando collapse.
Suponga que tiene una base de datos de hogares y que cada hogar tiene unaobservación para cada miembro del hogar que lo integra. Si cada hogar dispone de unidentificador único, entonces se puede formar una base de datos alternativa quecontenga una sola observación por hogar (en lugar de una observación por individuo)para cada una de las variables deseadas. Esta observación puede contener la media,desviación estándar, suma, u otro estadístico por hogar (sino se especifica calcula lamedia). Por ejemplo:
col l apse ( mean) edad ( max) educaci on ( p50) i ngr eso, by( hogar )
El código anterior crea una base de datos con cuatro variables (hogar, edad, educacióne ingreso) con una observación por hogar, la cual contiene el promedio de la edad porhogar, el máximo de la educación por hogar y la mediana del ingreso por hogar.
8/20/2019 Curso Nivelación Stata
48/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
48
V.4. Cambiar la estructura de la base de datos: reshapePara explicar como se utiliza este comando primero vamos a definir dosrepresentaciones 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 variableque es constante al interior de un “grupo”, en este caso, al interior de una empresa,
8/20/2019 Curso Nivelación Stata
49/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
49
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 lavariable “año”.En la base de datos en forma horizontal (wide form), tengo una sola observación porempresa 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 tiposde formatos, de la siguiente forma:
Long Wide
r eshape l ong pr eci o, i ( Empr esa) j ( año) ( Wi de →Long)
r eshape wi de pr eci o, i ( Empr esa) j ( año) ( Long →Wi de)
8/20/2019 Curso Nivelación Stata
50/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
50
Wide Long
8/20/2019 Curso Nivelación Stata
51/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
51
V.5. Eliminar variables: keep y drop
Ahora, si se tiene una base de datos que contiene muchas variables y sólo se va atrabajar con algunas de ellas, se puede utilizar el comando keep para mantener en labase de datos sólo las variables que interesan. Por ejemplo:
keep esc i ngr eso
También podríamos requerir mantener todas las variables pero sólo un subconjunto delas 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=200000
El comando drop cumple el mismo rol que el comando keep, sin embargo, éste borraobservaciones o variables, en vez de mantenerlas. Para realizar lo mismo que hicimoscon el comando keep pero utilizando drop, se debería hacer lo siguiente:
dr op expr dhombr e f ol i odrop i f dhombr e==0
dr op i f esc>12drop i f i ngr eso
8/20/2019 Curso Nivelación Stata
52/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
52
V.6. Crear variables: generate y egen
Uno de los comandos más relevantes en STATA es generate (“gen” o “g”). Estecomando genera una nueva variable definida en base a una expresión numérica, lacual puede contener otras variables.
El siguiente cuadro resume las expresiones más utilizadas:
+ suma >= Mayor o i gual & y- r est a > Mayor estr i ct o que | o* mul t i pl i caci ó
n
8/20/2019 Curso Nivelación Stata
53/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
53
Ejemplos:
gener at e age2 = age*age ( gener a var i abl e edad al cuadrado)gen uni t pr = cost / quant i t ygen xl ag = x[ _n- 1]
Otro ejemplo. En la base ingreso.dta se tienen los años de escolaridad (esc); a partirde esta variable se podría generar una nueva (tesc) con el nivel de educaciónalcanzado 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 ace t esc=1 i f esc8 & esc12
El comando replace, reemplaza observaciones que cumplen con cierta condición conel valor que uno especifica.
Otro comando útil, similar a generate, es el comando egen. Este contiene una grancantidad de funciones pre-establecidas con las que se pueden generar nuevas
variables. La diferencia con el comando generate es que en este uno define comoquiere generar la variable (sumando, restando, multiplicando, etc.), sin embargo, elcomando egen tiene funciones ya establecidas, por ejemplo, el promedio, la desviaciónestándar, etc…
Algunos ejemplos de estas funciones son:
count ( x) : cr ea una var i abl e que cont i ene el numero deobser vaci ones ( di st i nt as de · ) en x.
concat ( x y · · · z) : concat ena l as var i abl es ent r e par ént esi s,genera una var i abl e con f ormat o st r i ng ( no numéri co)
gr oup( x y · · · z) : gener a una var i abl e que t omas l os val ores1, 2, … par a l os gr upos f or mados por l as var i abl es ent r epar ént esi s. El orden de l os grupos va a depender de cómo est énordenadas l as var i abl es ent r e par ént esi s.
max(x) : gener a una var i abl e que cont i ene el máxi mo val or de x mean(x) : gener a una vari abl e que cont i ene el promedi o de x medi an( x) : gener a una var i abl e que cont i ene l a medi ana de x mi n( x) : genera una var i abl e que cont i ene el mí ni mo val or de x
8/20/2019 Curso Nivelación Stata
54/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
54
r max( x y · · · z) : ent r ega el máxi mo val or ent r e x, y, …, z para
cada obser vaci ón ( f i l a) r mean( x y · · · z) : ent r ega el pr omedi o de x, y, …, z par a cadaobservaci ón (f i l a)
r mi n( x y · · · z) : ent r ega el mí ni mo val or ent r e x, y, …, z paracada obser vaci ón ( f i l a)
r mi ss( x y · · · z) : ent r ega el númer o de mi ssi ng val ues ( si nobser vaci ón) en x, y, …, z par a cada obser vaci ón ( f i l a)
r sum( x y · · · z) : ent r ega l a suma de x, y, …, z par a cadaobservaci ón (f i l a)
seq( ) , f r om( a) t o(b) bl ock( c) : gener a una secuenci a de númer osde a hast a b en bl oques de c.
sum( x) : gener a una var i abl e que cont i ene l a suma de x.
La mayoría de estas funciones pueden ser combinadas con el comando by, el quepermite generar variables por diversas categorías. Por ejemplo, si se quiere crear elpromedio de la experiencia laboral para cada año de educación, se debe realizar losiguiente:
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 lavariable 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 clasesanteriores; 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 guardandoinformación. Finalmente veremos el comando hel p; el cual es un comando auxiliar quenos permite encontrar los comandos necesarios para realizar un gama de funciones enstata.
Como con casi todos los comandos también se pueden obtener los mismos resultados,mediante el uso de ventanas:
8/20/2019 Curso Nivelación Stata
55/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
55
Luego de apretar doble clic sobre “Create new variable” podemos ver que es trivial laforma de generar otra variable.
8/20/2019 Curso Nivelación Stata
56/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
56
VI. Aplicando lo aprendidoEn esta sección veremos de manera aplicada lo que hemos aprendido hasta ahora y enlos dos siguiente mostraremos a partir de está sección la utilidad de los archivos do ylog. El archivo log es el archivo donde se va guardando todo lo que aparece en laventana de resultados, mientras que el do es un archivo que nos permite programartodo el trabajo que queremos realizar en stata.
VI.1. Un ejemplo aplicado
Supongamos que, utilizando la encuesta casen 2003, queremos obtener la tasa depobreza y la tasa de indigencia; además el número de personas que caen en éstacategoría.
El primer paso es establecer memoria (si no esta preestablecida en el programa) yluego abrir la base de datos:
set mem 700muse C: \ Ni vel aci ón_St ata\ Casen2003. dt a
también la apertura de la base de datos, se puede hacer de la manera alternativa quevimos en la primera parte.
set mem 700mcd C: \ Ni vel aci ón_St at a\use Casen2003. dta
Luego debemos empezar a generar las variables necesarias para encontrar las tasas depobreza e indigencia correspondiente. Como la encuesta CASEN se realiza a hogares ynosotros estamos interesados en el porcentaje de individuos pobres e indigentes y noen el porcentaje de hogares pobres e indigentes; lo que necesitamos es tener algúnindicador per capita.
Como vimos en la clase anterior al aplicar el comando egen group(x) estamoscreando una variable que toma los valores 1,2,… para todos los valores que puedetomar x o la variable entre paréntesis. El orden de los grupos va a depender de cómoestén ordenadas las variables entre paréntesis. Por ejemplo; si la variable x fuese añode nacimiento del individuo y está tomará los valores 1980, 1981 y 1982; la variableque se genera a través de este comando es una variable que toma el valor de 1 paratodos aquellos que nacieron en 1980; el valor de 2 para todos lo que nacieron en 1981y el valor de 3 para los que nacieron en 1982.
8/20/2019 Curso Nivelación Stata
57/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
57
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 medianteel comando tab podemos ver el número de personas que existen por hogar y realizaruna pequeña inspección de la variable:
egen i d=gr oup( segment o f ol i o)edi t i d np
8/20/2019 Curso Nivelación Stata
58/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
58
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 tieneasignado un código por hogar y vemos que el hogar 13 tiene asociados 3 individuos, asu vez el hogar número 7 tiene asociados 2 individuos y en el hogar numero 4 son 5individuos.
Ahora, sabiendo el número de personas que viven en el hogar, generaremos el ingresoper capita del hogar para lo cual tenemos que dividir el ingreso total del hogar por elnúmero de personas que viven en él. Veamos los diferentes tipos de personas queviven en el hogar:
t ab pco1
parent esco con el | j ef e( a) hogar | Fr eq. Percent Cum.
- - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - j ef e( a) de hogar | 68, 153 26. 51 26. 51cónyuge o par ej a | 47, 864 18. 62 45. 13
hi j o( a) , hi j ast r o( a) | 104, 375 40. 60 85. 73padr e o madre | 1, 776 0. 69 86. 42
suegr o(a) | 1, 166 0. 45 86. 87yerno o nuera | 3, 749 1. 46 88. 33
ni et o( a) | 19, 044 7. 41 95. 74her mano( a) | 2, 828 1. 10 96. 84cuñado( 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. 75s. domést i co p. adent r o | 630 0. 25 100. 00- - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tot al | 257, 077 100. 00
Como vemos en algunas casas ocurre que hay personas que prestan serviciosdomésticos puertas adentro y generalmente para calcular el ingreso per capita delhogar 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 dentrode él; y toma el valor de 0 si la personas presta servicios dentro del hogar. Despuésgeneraremos el número de personas que pertenecen al hogar y no prestan serviciosdentro de él. Finalmente botamos la variable s, ya que la creamos sólo como unavariable 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 depersonas que realmente son parte del hogar.
g s=1r epl ace s=0 i f pco1==12egen np=sum( s) , by( i d)drop s
8/20/2019 Curso Nivelación Stata
59/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
59
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 delpaís y poder separarlo de acuerdo al nivel de pobreza.
g i ng=ytothaj / np
Una persona es pobre si está recibe ingresos menores a $43.712 y vive en zonaurbana y $29.473 y está vive en zona rural. Una persona será indigente si recibeingresos menores a $21.856 y vive en zona urbana; y $16.842 si esta vive en zonarural. 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; nopobres; pobres no indigentes e indigentes.
g pobre=1 i f i ng
8/20/2019 Curso Nivelación Stata
60/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
60
VI.2. Archivos log
Existen dos formas de trabajar en Stata: interactiva y programada. Cuando se trabajaen forma programada se escribe en un archivo d o todos los comandos que se quierenejecutar y luego se corre el programa de una vez para obtener los resultados, estoserá visto en la otra sección. Cuando se trabaja en forma interactiva, se ejecutan loscomandos directamente en la ventana Command, viendo los resultados en la ventanaResults. Cuando se trabaja de esta forma es importante ir registrando todos los pasosrealizados, en caso que se quiera repetir algo en una siguiente ocasión o simplementepara 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 ejecutadosy sus respectivos resultados.
El archivo log del ejercicio visto anteriormente:
8/20/2019 Curso Nivelación Stata
61/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
61
Siempre es recomendable abrir un archivo log al inicio de cualquier trabajo:
l og usi ng cl ase1. 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_St at a\ cl ase1. 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 acontinuación de lo último ingresado.
Para reemplazar el archivo existente:
l og usi ng cl ase1. l og, r epl ace
Para seguir a continuación del archivo existente:
l og usi ng cl ase1. 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 enSTATA, en forma interactiva y en forma programada. La primera forma consiste en irejecutando los comandos directamente en la ventana de comando, los resultados seobtienen 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 harealizado varias modificaciones a la base de datos y uno quiere volver atrás, se pierdetodo 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 variasmodificaciones a la base de datos y obtener varias estadísticas de ella, es programartodos los comandos en un archivo do.
8/20/2019 Curso Nivelación Stata
62/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
62
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 debemos pinchar el icono , y se abrirá la siguiente ventana:
Por ejemplo, la forma típica de comenzar un do sería la siguiente:
Este icono es para
correr el do.
8/20/2019 Curso Nivelación Stata
63/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
63
Con esto ya he abierto la base de datos. A continuación puedo empezar a escribir loscomandos 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 ahoraen forma más ordenada.
Es importante constantemente ir corriendo el do para detectar los errores que se estáncometiendo.
En el cuadro siguiente observamos el archivo do file correspondiente al ejemplo vistoen la sección 1;
Al poner * antes de cualquierfrase, no se lee comocomando. Sirve para irhaciendo anotaciones
8/20/2019 Curso Nivelación Stata
64/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
64
A continuación reportaremos las tasas de indigencia y pobreza para diferentescategorías:
a. Por sexo del jefe de hogar
En primer lugar será necesario crear una variable llamada sexoj h, el cual tomará elvalor de 1 si éste es hombre y 2 si éste es mujer. Luego se etiquetará la variabledándole el nombre de hombre cuando la variable sexoj h tome el valor 1 y mujercuando sexoj h tome el valor 2.
8/20/2019 Curso Nivelación Stata
65/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
65
g sexoj h=sexo i f pco1==1
l abel def i ne sexol bl 1 "Hombr e" 2 "Muj er"l abel val ues sexoj h sexol bl
Ahora se generará una variable que tomará el valor de 1 para todos los miembros delhogar cuando esté es hombre y 2 para todos los miembros del hogar cuando este esmujer. Esto se hace generando una variable con el comandoegen sexoj hm=max(sexoj h) , by ( i d) el cual genera una variable que toma elnúmero mayor –asociado a la variable sexoj h- por hogar; y como en los hogaresdonde el jefe de hogar es hombre el número mayor de la variable sexoj h es 1 –lootros son missings- y en los hogares donde el jefe es mujer ese número es 2.
egen sexoj hm=max(sexoj h) , by( i d)drop sexoj h
r ename sexoj hmsexoj hl abel val ues sexoj h sexo
edi t i d sexo sexoj h sexoj hm
8/20/2019 Curso Nivelación Stata
66/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
66
8/20/2019 Curso Nivelación Stata
67/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
67
t ab pobr e sexoj h [w=expr ] , col nof r eq
Si t uaci on de | sexoj hpobr eza | hombr e muj er | Tot al
- - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -I ndi gent e | 4. 24 6. 30 | 4. 70
Pobr e no i ndi gent e | 13. 82 15. 00 | 14. 08No pobre | 81. 94 78. 70 | 81. 22
- - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - Tot al | 100. 00 100. 00 | 100. 00
Podemos decir que las personas que viven en hogares con jefes de hogar hombrestienen una tasa de indigencia es un 4.24%, y un porcentaje de pobres no indigentesigual a 13.82%, con lo cual la tasa de pobreza es un 18.06%. Por su parte laspersonas que viven en hogares con jefes de hogar mujer tienen una tasa de indigenciade 6.3%, y un porcentaje de pobres no indigentes un 15%, de esta forma la tasa depobreza es 21.3%.
b. Número de personas del hogar
Se generará una variable llamada cat eg_np la cual divide a los hogares en 8diferentes 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íasson los hogares que tienen dos miembros, y así hasta la octava categoría que incluyea los hogares que tienen 8 o más miembros.
g cat eg_np=npr epl ace cat eg_np=8 i f np>=8t ab cat eg_np pobre [w=expr] , r ow nof r eq
| Si t uaci on de pobr ezacat eg_np | I ndi gent e Pobr e no No pobr e | Tot al
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -1 | 1. 96 2. 89 95. 15 | 100. 002 | 1. 95 4. 25 93. 81 | 100. 003 | 3. 15 9. 24 87. 60 | 100. 004 | 3. 76 12. 65 83. 58 | 100. 005 | 4. 74 16. 29 78. 97 | 100. 006 | 7. 08 18. 98 73. 94 | 100. 007 | 7. 41 22. 18 70. 41 | 100. 008 | 9. 73 24. 45 65. 82 | 100. 00
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - Tot al | 4. 70 14. 08 81. 22 | 100. 00
En esta tabla se puede apreciar como las tasas de pobreza e indigencia aumentan a medidaque aumenta el tamaño del hogar. En hogares de una persona el porcentaje de indigenteses 1.96%, y el porcentaje de pobres no indigentes es 2.89%. Por el contrario, en hogares
8/20/2019 Curso Nivelación Stata
68/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
68
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 ejercicioaquí se vuelve a generar una variable que determine el nivel educativo que la personaa alcanzado:
g l educ=0 i f e7t==1 | e7t==4 | e7t==16r epl ace l educ=1 i f e7t==2 & e7c
8/20/2019 Curso Nivelación Stata
69/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
69
t ab l educj h pobr e [w=expr ] , r ow nof r eq| Si t uaci on de pobr eza
l educj h | I ndi gent e Pobr e no No pobr e | Tot al- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
0 | 7. 49 18. 53 73. 98 | 100. 001 | 7. 93 20. 58 71. 48 | 100. 002 | 5. 68 18. 99 75. 34 | 100. 003 | 5. 13 17. 09 77. 78 | 100. 004 | 3. 49 11. 19 85. 33 | 100. 005 | 0. 93 5. 27 93. 81 | 100. 006 | 1. 33 3. 59 95. 08 | 100. 007 | 0. 54 0. 51 98. 95 | 100. 00
- - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - -
Tot al | 4. 70 14. 08 81. 22 | 100. 00
En la tabla anterior se puede apreciar claramente como la tasa de pobreza e indigenciadisminuyen 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 comandos u m es a través de matrices. Cuando se hace un su m de una variable, en la memoriatemporal del programa quedan guardadas las estadísticas; el nombre con el que cadauna de éstas se guarda se puede saber al tipear r e t u r n l i s t después de hacer un sum.
. sum esc
Var i abl e | Obs Mean Std. Dev. Mi n Max- - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
esc | 180914 8. 319069 4. 286882 0 21
. return l i s t
scal ars :r ( N) = 180914
r ( sum_w) = 180914r ( mean) = 8. 319068728788263r ( Var ) = 18. 37735307412638r ( sd) = 4. 28688150922397
r ( mi n) = 0
r ( max) = 21r ( sum) = 1505036
Lo mismo se puede hacer después de un s u m , d e t a i l :
. sum esc, deta i l
escol ar i dad (años)
8/20/2019 Curso Nivelación Stata
70/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
70
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Per cent i l es Smal l est
1% 0 05% 0 0
10% 2 0 Obs 18091425% 5 0 Sum of Wgt . 180914
50% 8 Mean 8. 319069Largest Std. Dev. 4. 286882
75% 12 2190% 13 21 Var i ance 18. 3773595% 15 21 Skewness - . 128663299% 17 21 Kurt osi s 2. 403091
. return l i s t
scal ars :r ( N) = 180914
r ( sum_w) = 180914r ( mean) = 8. 319068728788263r ( Var ) = 18. 37735307412638r ( sd) = 4. 28688150922397
r ( skewness) = - . 1286631597722507r ( kurt osi s) = 2. 403091261120855
r ( sum) = 1505036r ( mi n) = 0r ( max) = 21r ( p1) = 0r ( p5) = 0
r ( p10) = 2r ( p25) = 5r ( p50) = 8r ( p75) = 12r ( p90) = 13r ( p95) = 15r ( p99) = 17
Supóngase que se requiere hacer la siguiente tabla de datos:
Genero Ingresopromedio
Escolaridadpromedio
Experiencialaboral
promedio.Hombre
Mujer
Esto puede hacerse generando una matriz de dos filas y tres columnas, paraposteriormente completar sus elementos con las estadísticas correspondientes. Paraesto primero se debe generar la matriz, llamémosla A.
mat r i x A=J ( 2, 3, 0)
8/20/2019 Curso Nivelación Stata
71/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
71
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 eso i f dhombre==1mat r i x A[ 1, 1] =r ( mean)
Y así sucesivamente hasta completar toda la matriz:
sum i ngr eso i f dhombre==0mat r i x A[ 2, 1] =r ( mean)sum esc i f dhombre==1mat r i x A[ 1, 2] =r ( mean)sum esc i f dhombre==0mat r i x A[ 2, 2] =r ( mean)
sum expr i f dhombre==1mat r i x A[ 1, 3] =r ( mean)sum expr i f dhombre==0mat r i x A[ 2, 3] =r ( mean)
Con esto se completa la matriz. Luego para que se vea, en Stata Results se tipea elcomando m a t r i z l is t :
. matr i x l i s t A
A[ 2, 3]c1 c2 c3
r 1 210198. 54 8. 3427264 58. 336718r 2 162629. 12 8. 2959796 60. 383309
Esta matriz se puede copiar, seleccionando la matriz en la ventana de resultadosapretando el botón derecho y pinchando “copy table”; luego se puede llevar a unarchivo Excel para su edición.
VIII. Ciclos recursivos
El comando w h i le permite ejecutar una función en forma recursiva mientras ciertacondición se cumpla. Por ejemplo:
l ocal iwhi l e `i ’
8/20/2019 Curso Nivelación Stata
72/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
72
IX. Gráficos
En STATA se pueden realizar gráficos de todos los tipos. Esto, al igual que otrasfunciones preestablecidas, no requiere del conocimiento de todos los comandos, ya quepinchando “Graphics” aparecen todas las opciones y en cada una de ellas un cuadro deopciones bastante completo:
8/20/2019 Curso Nivelación Stata
73/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
73
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 atravé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…
8/20/2019 Curso Nivelación Stata
74/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
74
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 stogram esc, yt i t l e( Densi dad) xt i t l e( Ni vel de Educaci ón)t i t l e( Di str i buci ón del ni vel de escol ar i dad, col or( gr een) )
8/20/2019 Curso Nivelación Stata
75/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
75
En el gráfico observamos que el número de personas con educación va cayendo amedida que aumenta el nivel educativo. Sin embargo observamos que se observa ungran número de personas sobre el número 1, lo que equivale a educación básicaincompleta, y luego observamos otro peca en el número 4, lo que equivale a educaciónmedia 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 ón) by( sexo ,t i t l e( Di t r i buci ón del ni vel de escol ar i dad, col or ( green) ) )
8/20/2019 Curso Nivelación Stata
76/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
76
8/20/2019 Curso Nivelación Stata
77/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
77
2. Ahora realicemos un gráfico de dispersión entre años escolaridad e ingreso:
t woway ( scat t er i ng esc) i f esc
8/20/2019 Curso Nivelación Stata
78/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
78
Pero; ¿qué ocurre con ambos gráficos?, ocurre que no se observa una correlación entreel nivel de ingresos y el nivel de escolaridad, debido a que los ingresos muy altosdistorsionan la distribución. A continuación mostraremos un grafico de puntos junto asu línea de regresión, pero que sólo toma en cuenta a los individuos que tieneningresos menores a un millón de pesos.
t woway ( scat t er i ng esc) ( l f i t i ng esc ) i f i ng
8/20/2019 Curso Nivelación Stata
79/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
79
3. Hagamos un gráfico de barras con el ingreso promedio por sexo y situación depobreza:
gr aph bar ( mean) i ng, over ( sexo, l abel ( l absi ze( smal l ) ) ) over ( pobr e,l abel ( l absi ze( smal l ) ) ) yt i t l e( I ngr eso pr omedi o) t i t l e( I ngr eso pr omedi opor género y si t uaci ón de pobr eza)
8/20/2019 Curso Nivelación Stata
80/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
80
Este gráfico nos muestra que para los indigentes y los pobres no indigentes el nivel deingreso entre hombres y mujeres es similar, sin embargo para los individuos no pobres
el ingreso de los hombres supera al ingreso de las mujeres.
8/20/2019 Curso Nivelación Stata
81/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
81
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 ejemploobservamos en el siguiente box-plot del ingreso per cápita. La línea horizontal dentro dela caja muestra la mediana. La caja muestra el rango intercuartil y, correspondiente ala diferencia entre el ingreso del percentil 75 y del percentil 25. La línea superiorhorizontal se establece en un valor igual al percentil 75 más 1,5 veces el rangointercuartil. La línea inferior horizontal, por su parte, se fija en un valor igual alpercentil 25 menos 1,5 veces el rango intercuartil. Todos los valores superiores oinferiores 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 muestraa continuación del box-plot.
8/20/2019 Curso Nivelación Stata
82/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
82
8/20/2019 Curso Nivelación Stata
83/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
83
X. Ayuda: Help
La ayuda que trae este programa es bastante amigable y fácil de utilizar. Si Ud. Sedirige a “Help” se despliega un cuadro con diferentes opciones, puede buscar ayudapor contenidos, por comandos, etc…, en “What’s new” encontrará todas las novedadesdel 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”:
8/20/2019 Curso Nivelación Stata
84/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
84
Dependiendo que este buscando pincha el comando (en azul), y se abrirá una ventanacon una completa ayuda sobre el comando.
8/20/2019 Curso Nivelación Stata
85/86
DEPARTAMENTO DE ECONOMÍA – UNIVERSIDAD DE CHILE
85
Para que el Help de STATA le sea realmente útil es fundamental que Ud. aprenda a leerla sintaxis de cada comando. Por ejemplo, en este caso la sintaxis del comandocorr el at e es la siguiente:
cor r el at e [ var l i st ] [ i f ] [ i n] [ wei ght ] [ , cor r el at e_opt i ons]
8/20/2019 Curso Nivelación Stata
86/86
Esta sintaxis nos indica que el commando correlate puede ser utilizado entregando ellistado de variables, sino se entrega el default es considerar todas las variables en labase 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 delcomando. Entonces siempre lo que aparece en paréntesis cuadrados son alternativasopcionales 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 susopciones.
A continuación se muestra otro ejemplo de sintaxis, para el comando t abl e:
t abl e rowvar [ col var [ supercol var] ] [ i f ] [ i n] [ wei ght ] [ , opt i ons]
Recordemos que todo lo que esta entre paréntesis cuadrado son opciones voluntariasde comando. En este caso rowvar no esta entre paréntesis cuadrado, significa quedebemos obligadamente señalar la variable fila en la tabulación, es voluntario indicarla variable de columna, si no se indica la tabulación resultante es una distribución de lavariable sola, si se indica colvar la tabla será un cruce entre rowvar y colvar. Esteejemplo nos permite notar la diferencia en aquellos insumos del comando que sonobligatorios de los que son voluntarios.
Puede ser que algunos de los comandos que aparezcan Ud. no los tenga cargados, eneste caso si se encuentra conectado a Internet los podrá bajar online. Aparecerá algode la siguiente forma:
Donde pinchando la palabra en azul se puede descargar el comando, así como suayuda.
Una forma más completa de buscar ayuda es a través de los manuales, estos ademásde traer una ayuda sobre los comandos generalmente contiene toda una descripciónt ó i d ll P j l l d d l d ió li l li l