Está en la página 1de 25

Stata

Básico Intermedio
Aplicado a la Investigación Económica

Juan Carlos Abanto Orihuela

16 de enero de 2010
2

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
Índice general

Índice general 3

1. Introducción al Stata 5
1.1. Iniciando Stata . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Tipos de Archivos en Stata . . . . . . . . . . . . . . . . . . . . . 6
1.3. Estructura Básica de Stata . . . . . . . . . . . . . . . . . . . . . 6
1.4. Principales Comandos de Trabajo y Análisis . . . . . . . . . . . 7
1.4.1. Las Bitácoras . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2. La Base de Datos . . . . . . . . . . . . . . . . . . . . . . 7
1.4.3. Append, Merge, Collapse . . . . . . . . . . . . . . . . . . 9

2. Manejo de Datos 15
2.1. Cargando los Datos en Stata . . . . . . . . . . . . . . . . . . . . 15
2.2. Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Comando IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4. Comando SUMMARIZE . . . . . . . . . . . . . . . . . . . . . . 18
2.5. Comando SPLIT . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6. Creando Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7. KEEP y DROP . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8. Reestructurando los Datos . . . . . . . . . . . . . . . . . . . . . 24
2.9. Muestreos Probabilı́sticos . . . . . . . . . . . . . . . . . . . . . . 26
2.10. Generación de Números Aleatorios . . . . . . . . . . . . . . . . 26
2.11. Percentiles, Cuartiles, Deciles . . . . . . . . . . . . . . . . . . . 27

3. Análisis Grafico con Stata 31


3.1. Visualizando Algunos Comandos . . . . . . . . . . . . . . . . . 31
3.2. TWOWAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3. TWOWAY y SCATTERPLOT . . . . . . . . . . . . . . . . . . 38
3.4. Combinando TWOWAY Y SCATTERPLOT . . . . . . . . . . . 40
3.4.1. Filtro de Gráficos . . . . . . . . . . . . . . . . . . . . . . 40
3.4.2. Unión de Gráficos . . . . . . . . . . . . . . . . . . . . . . 40
3.5. Opciones para Edición de Gráficos . . . . . . . . . . . . . . . . . 43
3.6. Trabajando con Esquemas y Gráficos Adicionales . . . . . . . . 47

3
4 ÍNDICE GENERAL

3.6.1. Esquemas . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.6.2. Gráficos de Barras Verticales . . . . . . . . . . . . . . . . 49
3.6.3. Gráficos de Barras Horizontales . . . . . . . . . . . . . . 49
3.6.4. Gráficos de Cajas . . . . . . . . . . . . . . . . . . . . . . 50
3.6.5. Gráficos de Pastel . . . . . . . . . . . . . . . . . . . . . . 51

4. Análisis de Regresión Lineal 55


4.1. Regresión Lineal . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2. Diagnostico de los Resultados . . . . . . . . . . . . . . . . . . . 59
4.2.1. Efecto Influencia . . . . . . . . . . . . . . . . . . . . . . 59
4.3. Normalidad del Residuo . . . . . . . . . . . . . . . . . . . . . . 62
4.4. Homocedasticidad del Residuo . . . . . . . . . . . . . . . . . . . 63
4.5. Multicolinealidad . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6. Linealidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.7. Especificación del modelo . . . . . . . . . . . . . . . . . . . . . 65
4.8. Independencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5. Variables Categóricas 69
5.1. Estimación con Variables Categóricas . . . . . . . . . . . . . . . 69
5.2. El Comando Xi . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3. Pruebas de Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4. Creación de Variables Dummys . . . . . . . . . . . . . . . . . . 75
5.5. Bucles y Programas . . . . . . . . . . . . . . . . . . . . . . . . . 75

Bibliografı́a 79

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
Sesión 1
Introducción al Stata

1.1. Iniciando Stata


Stata es una poderosa herramienta en aplicaciones económicas. Puede ayu-
darnos a analizar fácil y eficientemente, series de tiempo, paneles, y data de
sección cruzada. Nos dará las herramientas que necesitamos para organizar y
manejar un gran tamaño de data, obteniendo resultados de análisis estadı́sti-
cos.
En esta sesión introduciremos las nociones básicas del software, para pos-
teriormente realizar un análisis estadı́stico y familiarizarnos con el manejo y
modificación de la base de datos.
Veamos como se presenta Stata al iniciarse. (ver Figura 1.1)

Figura 1.1: Pantalla de Inicio

5
6 1. Introducción al Stata

Los comandos de stata están implementados en el menú el cual esta organizado


por tópicos. Ası́ nosotros podemos trabajar interactivamente y de manera muy
simple, sin embargo sigue siendo útil el uso de comandos para realizar el análisis
dado que da pie al manejo de programas, o estructuras de programación. (ver
Figura 1.2)

Figura 1.2: Barra de Comandos

1.2. Tipos de Archivos en Stata

En STATA, distinguimos 3 tipos de archivos importantes:


Archivo de extensión dta, para la generación de base de datos, en ella se
almacenara información de las variables con su respectiva extensión.
Archivo de extensión log, smcl, para la generación de bitácoras, en ella se
guardaran los resultados de manera ordenada, sin tener que pasarlos a ningún
tipo de archivo de texto.
Archivo de extensión do, que es un archivo de ejecución, donde se elabora
el programa.
Archivo de extensión gph, para la generación de gráficos almacenados en
la carpeta de trabajo

1.3. Estructura Básica de Stata

Siempre que trabajemos en STATA, es recomendable que mantengamos


cierta estructura. (ver Figura 1.3)

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
1.4. Principales Comandos de Trabajo y Análisis 7

Figura 1.3: Estructura Básica

1.4. Principales Comandos de Trabajo y Análi-


sis
Ahora veamos los principales comandos de trabajo, los cuales harán que
los futuros análisis econométricos sean simples de realizar.

1.4.1. Las Bitácoras


En estos objetos se guardara la información tal y cual aparecen en la ven-
tana Result, aunque también podrı́amos indicarle al programa que deseamos
solo guardar los comandos y no los resultados.

log using clase1.log


o también
cmdlog using clase1.log

1.4.2. La Base de Datos


El uso de la base de datos es vital para nuestro análisis, a continuación
presentamos los comandos que nos enseñara a trabajar con esta.

use auto.dta

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
8 1. Introducción al Stata

use auto.dta if foreign==1


use auto.dta in 1/10
use make mpg using auto.dta
save auto01.dta

Repasemos lo que hemos aprendido:


Ya sabemos como limpiar la memoria de Stata, también sabemos como ampliar
esta memoria para trabajar con data de gran capacidad. Sabemos como fijar
el path de trabajo, como crear una rutina y como cargar la base de datos a
nuestro espacio de trabajo. Ahora vamos a trabajar con la base de datos para
empezar nuestro análisis.

use auto01.dta

browse

replace mpg=20 if mpg==19


save, replace

list make
list make price

describe

codebook

summarize mpg weight


summarize mpg weight if foreign
summarize price if mpg<21.3
summarize price if mpg>=21.3
summarize price, detail

tabulate mpg

table mpg
table rep78, contents(n mpg)
table rep78, contents(n mpg mean mpg sd mpg median mpg)
table rep78, c(n mpg mean mpg sd mpg median mpg) format(%9.2f)

sort mpg
gsort mpg
gsort -mpg
sort foreign
by foreign: summarize price

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
1.4. Principales Comandos de Trabajo y Análisis 9

count
count if foreign==0
count if foreign==1
by foreign: count

generate orden=_n
rename orden num_obs
by foreign: egen prom_mill=mean(mpg)
drop num_obs
keep make price mpg prom_mill

1.4.3. Append, Merge, Collapse


El comando append y merge nos ayudara a unir bases de datos inte-
grándolas en una sola. Append, pegara hacia abajo o verticalmente y Merge,
pegara hacia el costado o de forma horizontal.

clear
use base1, clear
list
use base2, clear
list
use base3, clear
list
use base4, clear
list

Vamos a empezar observando cada una de las bases de datos que tenemos,
veamos la figura1.4 Empecemos nuestra tarea en Stata, podemos observar que

Figura 1.4: Bases de Datos

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
10 1. Introducción al Stata

la base de datos Base1 tiene los mismos campos (columnas) que la base de
datos Base2, pero diferentes filas, seria útil, unir ambas bases.
Abramos entonces, la base de datos Base1 y peguemosla con la base de
datos Base2, una unión vertical.
use base1.dta, clear
list
append using base2
list
save base12.dta, replace
list
Hagamos lo mismo con las bases de datos Base3 y Base4 y observemos los
resultados:
use base3.dta, clear
list
append using base4
list
save base34.dta, replace
list
¿Por qué la variable la variable sexo se añadió 2 veces como columna?¿por
qué no se unió en una sola columna?
use base3.dta, clear
list
rename Sexo sexo
list
save base03.dta, replace
use base03.dta, clear
list
append using base4
list
save base034.dta, replace
Ahora si resulto bien la unión vertical. Veamos la base12 que tenı́amos
antes.
Ahora mi interés es fusionar ambas bases de datos, para ello, primero debe-
mos ordenar ambas bases según la variable con la que vamos a fusionar (la
variable común).
use base034.dta, clear
list
sort nombre
list

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
1.4. Principales Comandos de Trabajo y Análisis 11

save base034s.dta, replace

use base12.dta, clear


list
sort nombre
list
save base12s.dta, replace

Ya tenemos las 2 bases de datos ordenadas, ahora vamos a fusionarlas

clear
use base12s.dta, clear
list
merge nombre using base034s.dta
list
save basetotal.dta, replace

La figura1.5 nos muestra la base de datos total.

Figura 1.5: Base Total

Podemos tabular la variable merge para ver si se pegaron correctamente las


bases de datos, o también observar la columna final merge en caso de bases
chicas como esta.

tab _merge

Analicemos los resultados. Hay tres posibles valores que puede tomar esta
variable según lo muestra la figura1.6. Si toma el valor de 1 nos indicara que
es una observación que solo se encuentra en la base matriz, si toma el valor
de 2 nos indicara que es una observación que proviene de la base esclava, y si
toma el valor de 3, nos indicara que la observación proviene de ambas bases.

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
12 1. Introducción al Stata

Figura 1.6: tab merge

El comando collapse sirve para convertir una base de datos que contiene vari-
ables para diversas unidades de estudio, en una base de datos que contiene
estadı́sticos de dichas variables (medias, medianas, sumas etc). Permite obte-
ner estadı́sticos para unidades más grandes (en un sentido jerárquico), como
por ejemplo, pasar de datos por individuo a datos por hogar, de datos por
distritos a datos por provincia (agregación)
En el comando se especifican aquellas variables que se ”colapsan” y las
condiciones que se imponen para dicha transformación. Algunas variables pueden
ser colapsadas según su suma, otras según su media, etc. (ver figura1.7)
Aquellas variables que no se especifican desaparecen automáticamente de
la base de datos. Este comando crea una nueva base de datos y cierra la base
de partida. Si deseamos quedarnos con esta base debemos grabarla.

Figura 1.7: Estructura del comando “split”

Basado en los WDI, genere una base de datos con los totales de CO2 emi-
tidos por región, para el año 2002. Genere también una base con la población
mundial a lo largo del tiempo.

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
1.4. Principales Comandos de Trabajo y Análisis 13

use kids, clear


list

collapse age
list

use kids, clear


collapse age, by(famid)
list

use kids, clear


collapse(mean) avgage=age, by(famid)
list

use kids, clear


collapse (mean) avgage=age avgwt=wt, by(famid)
list

use kids, clear


collapse (mean) avgage=age avgwt=wt (count) numkids=birth, by(famid)
list

use kids, clear


tabulate sex, generate(sexdum)
list famid sex sexdum1 sexdum2
collapse (count) numkids=birth (sum) girls=sexdum1 boys=sexdum2, by(famid)
list famid boys girls numkids

Basado en los WDI, genere una base de datos con los totales de CO2 emi-
tidos por región, para el año 2002. Genere también una base con la población
mundial a lo largo del tiempo.

use wdi,clear
collapse (sum) co2 if year==2002, by(region)
graph hbar (asis) co2, over(region)

use wdi, clear


collapse (sum) pop, by(year)

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
14 1. Introducción al Stata

RETO 1

. La base “enaho01-2004-300-oct-nov.dta” contiene datos del módulo 300 de


la ENAHO recopilados entre octubre y noviembre de 2004, mientras que
“enaho01-2004-300-dic.dta” contiene los datos del mismo módulo para di-
ciembre de ese mismo año. Ambas bases están a nivel de individuos. Se pide
juntar estos datos en un solo archivo que debe ser grabado con el nombre:
“Personas.dta”.

. A la base “Personas.dta” añada las siguientes variables:

Las 5 variables de Necesidades Básicas Insatisfechas (nbi1 al nbi5) desde


la base de datos “enaho01-2004-100.dta”. Recuerde que esta base fue
recopilada a nivel de hogares en el mismo periodo.
La variable sobre tipo de vivienda (p101).

. Usando el archivo “enaho01-2004-300-oct-nov.dta” (módulo de educación a


nivel de individuos) realice las siguiente tarea:

Obtenga una nueva base (colapsada) que contenga para cada hogar:
el promedio de edad de sus miembros (ver p208a), el porcentaje de
hombres en el hogar (ver p207), el máximo nivel educativo aprobado
por algún miembro del hogar (ver p301a).

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
Sesión 2
Manejo de Datos

2.1. Cargando los Datos en Stata


Ahora vamos a empezar el tratamiento de los datos pero antes, hagamos
un pequeño ejercicio con la base de datos auto.dta

use auto.dta
describe
summarize
generate price2=2*price
describe
save auto2.dta
generate price3=3*price
save auto2.dta
save auto2.dta, replace
generate price4=4*price
use auto.dta
use auto.dta, clear
clear

2.2. Etiquetas
Aprendamos a etiquetar a nuestras bases de datos o variables para poder
identificarlas en un futuro y ası́ poder trabajar de forma mas ordenada.

use auto.dta
describe
label data "Este archivo contiene datos de autos para el a~
no 1978"
describe
label variable rep78 "Record de reparación en 1978"
label variable price "Precio del carro en 1958"
label variable mpg "Millas por galon para el carro"

15
16 2. Manejo de Datos

label variable foreign "Origen del carro, extranjero o domestico"


describe

label define foreignl 0 "domestico" 1 "extranjero"


label values foreign foreignl
describe
table foreign

ttest mpg, by(foreign)


save auto3.dta

Hagamos un ejercicio similar con la base de datos iraninos.dta

clear
use iraninos.dta
set more off
label define sexow 0 "mujer"
label define sexow 1 "hombre", add
describe
browse
label values sexo sexow
describe
browse
label drop sexow

label define getareow 0 "prematuro"


label define getareow 1 "rec.nac.", add
label define getareow 2 "lactante", add
label define getareow 3 "escolares", add
label values getareo getareow

label define oliguriaw 0 "no oliguria"


label define oliguriaw 1 "oliguria", add
label values oliguria oliguriaw

label define congenitow 0 "no congenito"


label define congenitow 1 "congenito", add
label values congenito congenitow

label define sepsisw 0 "no sepsis"


label define sepsisw 1 "sepsis", add
label values sepsis sepsisw

label define tipodaow 0 "asfixia neonat"

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
2.3. Comando IF 17

label define tipodaow 1 "nta", add


label define tipodaow 2 "nti", add
label define tipodaow 3 "nefro tox", add
label values tipodao tipodaow

label define finalw 0 "vivo"


label define finalw 1 "muerto", add
label values final finalw
Observemos que la variable dependiente en esta base de datos es final,
muerte de una persona debido a una falla renal aguda. Las variables explicati-
vas serian sepsis y tipodaño, mientras que las de control serian sexo, getareo.
Probablemente oliguria y congenito sean variables que me indiquen el nivel
especifico de la enfermedad (serian variables no tan claras en este ejemplo).

2.3. Comando IF
La estructura del comando IF es fácil de recordar, la figura2.1 nos muestra
el esquema base.

Figura 2.1: Estructura del comando “if”

clear
use auto.dta
keep make rep78 foreign mpg price
tabulate rep78 foreign
tabulate rep78 foreign if (rep78 >=4)
tabulate rep78 foreign if (rep78 >=4), column nofreq

list if (rep78 >= 4)


list if (rep78 >= 4) & !missing(rep78)

summarize price if (rep78 == 1) | (rep78 == 2)


summarize price if (rep78 <= 2)
summarize price if (rep78 == 3) | (rep78 == 4) | (rep78 == 5)
summarize price if (rep78 >= 3)
summarize price if (rep78 >= 3) & !missing(rep78)
Cabe resaltar que luego de la sentencia “if” usamos “ & ” para decir “y”,
usamos “ == ” para decir “igual a”, y usamos “ ! ” para negar algo o decir
“no”.

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
18 2. Manejo de Datos

2.4. Comando SUMMARIZE


Esta estructura es mas compleja y más difı́cil de recordar, sin embargo la
siguiente forma general (ver figura2.2), nos ayudara a recordarla y usarla de
manera más apropiada.

Figura 2.2: Estructura del comando “summarize”

use auto
summarize
summarize price mpg
summarize mpg price if (foreign == 1)
summarize mpg price if (foreign == 1) & (mpg <30)
summarize mpg price if (foreign == 1) & (mpg <30) , detail

Si queremos trabajar con observaciones del 1 al 10

summarize in 1/10

También podrı́a estar interesado en el resumen estadı́stico para carros ex-


tranjeros y domésticos, por separado, para ello usamos el comando by:

by foreign: summarize

2.5. Comando SPLIT


El comando split separa el contenido de una variable tipo string en dos o
más partes, usando un carácter que indica separación, de modo que se generan
nuevas variables tipo string. (ver figura2.3)
Es útil para separar palabras, códigos u otras partes de una variable tipo
string de información múltiple. Por ejemplo, en el siguiente caso (ver figura2.4),
queremos separar el tipo de documento del número, en dos variables.
Aquı́, el objetivo es que la variable string “documento” se parta en dos
variables string, una que contenga el tipo de documento y otra el número de
este documento.

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
2.6. Creando Variables 19

Figura 2.3: Estructura del comando “split”

Figura 2.4: Base Documentos

use "split y destring", clear


split documento, parse("-") destring

use "split y destring", clear


split documento, parse("-")
destring documento2, replace

Si deseáramos concatenar dos variables cualquiera sean estas, y generar


una variable tipo string, el comando a usar deberá ser:

egen docum=concat(documento1 documento2), punct("/")

Donde la opción punct permite especificar el separador entre las distintas


partes al conformar una única variable. Por ejemplo, espacio será punct(“ ”),
o coma , punct(,) o guión , punct(-).

2.6. Creando Variables


Trabajemos con la base de datos auto, y con la variable length (longitud
del auto en pulgadas)

use auto, clear


summarize length
generate length_feet = length / 12

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
20 2. Manejo de Datos

generate length_feet = length / 12


replace length_feet = length / 12
summarize length lenght_feet
generate length2 = length^2
summarize length2
generate loglen = log(length)
summarize loglen
summarize length
generate zlength = (length - 187.93) / 22.27
summarize zlength

Observemos la variable mpg (millaje por galón)

tabulate mpg

No nos es muy fácil el análisis de esta variable, podrı́amos mejorar su


presentación si la clasificáramos por rangos.

generate mpg3 = .
replace mpg3 = 1 if (mpg <= 18)
replace mpg3 = 2 if (mpg >= 19) & (mpg <=23)
replace mpg3 = 3 if (mpg >= 24) & (mpg <.)
tabulate mpg mpg3

Ahora podemos hacer un cruce de tablas entre la variable mpg3 y la variable


foreign y observar el millaje de los carros domésticos y extranjeros.
¿Qué es lo que se observa?
Mediante una remodificación de los datos, podemos hacer lo mismo en unas
cuantas lı́neas, mediante el uso de rangos y el comando recode.

generate mpg3a = mpg


recode mpg3a min/18=1 19/23=2 24/max=3
tabulate mpg mpg3a

Veamos un ejemplo con categorı́as, ahora deseamos crear una variable que
nos muestre el millaje de los carros respecto a su origen, esta tomara el valor
de “0” para valores por debajo de la media de mpg en el grupo domestico y
extranjero y “1” para valores por encima de la media de mpg en los grupos
domestico y extranjero.

sort foreign
by foreign: summarize mpg, detail

¿Qué observamos?

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
2.6. Creando Variables 21

generate mpgfd = mpg


recode mpgfd min/18=0 19/max=1 if foreign==0
recode mpgfd min/24=0 25/max=1 if foreign==1
by foreign: tabulate mpg mpgfd
El comando recode cambia los valores de una variable de acuerdo a las
reglas especificadas.
recode opiniongob (1=4 nada) (2=3 poco) (3=2 "mas o menos") ///
(4=1 bastante) (.=0 "no opina"), gen(opina)
También podemos usar una extensión del commando generate, egen me per-
mitirá crear expresiones mas complejas aun, tales como medias, desviaciones
estándar, máximos, mı́nimos, etc.
egen minimo_p=min(price)
egen median_p=median(price)
egen std_p=std(price), mean(0) std(1)
Nota1: Tipo de Datos

En Stata existen dos clases de datos a usar:


. Datos numéricos, dentro de estos podemos encontrar la siguiente clasifi-
cación:

Figura 2.5: Datos Tipo Numéricos

. Datos cadena de texto, dentro de estos podemos encontrar la siguiente clasi-


ficación:

Figura 2.6: Datos Tipo Cadena

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
22 2. Manejo de Datos

Lógicamente debemos considerar que un uso de datos con mayor poder


de almacenaje se traducirá en mayor tamaño de bytes usados, lo cual restara
espacio a nuestro disco de almacenaje.
Generemos algunas variables como ejemplo:

generate double x=2


generate str2 y="maria"
list y

¿Qué notamos?, ¿Cómo saber rápidamente si una variable es de cierto


tipo? Si deseáramos convertir una variable string a una variable numérica o
una variable numérica a una string, podrı́amos usar los comandos encode y
decode, veamos esto:

clear
use auto.dta

encode make, generate(A)


label list A
describe make A

decode A, generate(B)
describe make A B

O también podrı́amos usar la siguiente sentencia:

generate str2 Z="am"


generate int P=real(Z)
describe Z P

2.7. KEEP y DROP


A veces no desearemos tener todas las variables en el espacio de trabajo,
muchas veces desearemos trabajar solo con algunas variables de nuestra base
de datos.

use auto
describe
keep make mpg price
describe
use auto, clear
drop displacement gear_ratio
describe

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
2.7. KEEP y DROP 23

use auto , clear


tabulate rep78 , missing
drop if missing(rep78)
tabulate rep78 , missing

use auto , clear


keep if (rep78 <= 3)
tabulate rep78, missing
clear

Ya hemos visto como el uso de keep, drop, keep if y drop if, puede sernos
útil si queremos eliminar variables innecesarias y ası́ tener mas memoria de
trabajo. Ahora veamos en la figura2.7 la estructura del comando use y los
criterios de selección.

Figura 2.7: Estructura del comando “use”

use make price mpg using auto.dta


describe
clear

use auto.dta if (rep78 <= 3)


tabulate rep78, missing
clear

use auto.dta if (rep78 >= 4) & (rep78 <.)


tabulate rep78, missing
clear

use make mpg price rep78 if (rep78 <= 3) using auto.dta


describe
tabulate rep78

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
24 2. Manejo de Datos

clear

use make mpg price rep78 using auto.dta if (rep78 <= 3)


describe
tabulate rep78
clear

use make mpg if (rep78 <= 3) using auto

¿Qué sucedió con esta sentencia?

2.8. Reestructurando los Datos


A veces nos será útil reestructurar la forma como los datos son presentados,
especialmente para trabajar con datos panel, para ello nos será de utilidad
aprender los comandos con anticipación.

clear
use ingfam.dta
list

Figura 2.8: Base “ingfam”

La forma como se presenta la data, es la forma ancha o “wide”, a nosotros


nos podrı́a interesar, sin embargo, trabajar con la forma larga o “long” de la
data, para ello debemos modificar la estructura de esta base de datos de la
siguiente manera:

reshape long ingfam, i(codfam) j(a~


no)
list

“Long” le dice al comando reshape, si se desea ir de una forma long a


una wide o viceversa, “ingfam” le dice a Stata que la raı́z de la variable a ser
convertida a la forma long es ingfam, “i” le dice a stata que la variable codfam
será considerada como identificador de los individuos, “j” indica a Stata que
la parte variable de ingfam será considerada e incorporada como una variable
año.

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com
2.8. Reestructurando los Datos 25

reshape wide
list
reshape long
list
Veamos una base de datos que nos brinda información sobre los las alturas
de un conjunto de niños de 1 y 2 años de edad
use ni~
noaltpes, clear
list codfam nacimiento alt1 alt2

Figura 2.9: Base “niñoaltpes”

Veamos como podemos transformar esta base de datos a una forma “long”.
¿Cuál es la raı́z de la variable que será convertida de la forma wide a la forma
long? ¿Qué variables identifican a los individuos en la estructura wide? ¿Cómo
llamaremos a la variable que contendrá a los sufijos de la variable raı́z?
reshape long alt, i( codfam nacimiento) j(edad)
list codfam nacimiento edad alt

use ni~
noaltpes,clear
list codfam nacimiento alt1 alt2 pes1 pes2

reshape long alt pes, i( codfam nacimiento) j(edad)


list codfam nacimiento edad alt pes

use ingpadmad.dta, clear


list
A nosotros nos podrı́a interesar que la variable “nombre” y la variable “ing”
se estructuren de una forma long, pero los sufijos “p” y “m” son del tipo cadena
o string, ya no son números. ¿Cómo podemos estructurar nuestro comando en
este caso?
reshape long nombre ing, i(codfam) j(padmad) string
list

Stata Básico Intermedio www.iddeasac.com


Aplicado a la Investigación Económica capacitacion@iddeasac.com