You are on page 1of 79

Stata

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

Juan Carlos Abanto Orihuela

2 de marzo de 2016
2

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 integrándo-
las 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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 de-
bemos 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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


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

Figura 1.6: tab merge

El comando collapse sirve para convertir una base de datos que contiene va-
riables 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 con-
diciones 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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


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

RETO 1

. La base “enaho01a-2014-500” contiene datos del módulo 500 de la ENAHO


recopilados en el 2014, mientras que “enaho01a-20114-300” contiene los da-
tos del módulo 300 para ese mismo año. Ambas bases están a nivel de indi-
viduos. Se pide importar las variables p301a (nivel de estudio alcanzado) y
p301b (último año de estudio cursado) del módulo 300 a la base del módulo
500. Guarde la base de datos con el nombre de “ingresos2014”. Finalmente
importe las variables p101, p102, p103, p103a, del módulo 100 que se en-
cuentra a nivel de hogar a la base de datos anterior y guarde la base de datos
con el mismo nombre.

. A la base “ingresos2014.dta”, usted generará las siguientes variables:

La variable superior, que tome el valor de 1 siempre y cuando el indi-


viduo tenga algún estudio superior (ver p301a), y 0 en caso contrario.
La variable casa, que tome el valor de 1 siempre y cuando el individuo
habite en una casa independiente o en un departamento en un edificio
(ver p101), y 0 en caso contrario.
La variable pared, que tome el valor de 1 siempre y cuando el individuo
habite en una casa con ladrillo o bloque de cemento como material
predominante en la pared (ver p102), y 0 en caso contrario.
La variable piso, que tome el valor de 1 siempre y cuando el individuo
habite en una casa con parquet, laminas asfálticas,losetas, madera, o
cemento como material predominante en el piso (ver p103), y 0 en caso
contrario.
La variable techo, que tome el valor de 1 siempre y cuando el individuo
habite en una casa con concreto armado, madera, tejas o planchas de
calamina o fibra de cemento, como material predominante en el piso
(ver p103a), y 0 en caso contrario.

. Usando el archivo con las nuevas variables creadas se le solicita:

Obtener una variable “departamento” que indique el código del depar-


tamento (ver ubigeo).
Colapsar la base de datos por departamento y obtener el porcentaje
de personas con estudios superiores, el porcentaje de personas que ha-
bitan en casas con pared de ladrillo, al menos pisos de cemento o al
menos techo de calamina. Además se desea saber el promedio de edad
(ver p208a), y el porcentaje de mujeres (ver p207) en los respectivos
departamentos.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 clasifica-
ción:

Figura 2.5: Datos Tipo Numéricos

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


sificación:

Figura 2.6: Datos Tipo Cadena

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.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 www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
26 2. Manejo de Datos

Figura 2.10: Base “ingpadmad”

2.9. Muestreos Probabilı́sticos


En las encuestas, las observaciones son escogidas a partir de un proce-
so aleatorio. Ası́, las probabilidades de selección para distintas observaciones
pueden diferir en función a la forma como se lleve a cabo dicho proceso de
selección aleatorio.
Las ponderaciones de muestreo son iguales (o proporcionales) al inverso de
la probabilidad de selección. En otras palabras, los ponderadores (o factores
de expansión) pueden ser interpretados como el número de elementos de la
población que el elemento muestreado representa. En consecuencia, no tener
en cuenta los ponderadores de la muestra en los procedimientos estadı́sticos
genera estimaciones sesgadas al valor verdadero de la población. Ası́ mismo,
su omisión altera las desviaciones estándar de nuestras estimaciones.
Los factores de expansión nos permiten pasar de la muestra al conjunto de
la población. Ellos son necesarios también para tener en cuenta las diferentes
tasas de muestreo según dominios geográficos, etc.
La mayorı́a de comandos de stata pueden ponderar datos. Stata proporcio-
na cuatro tipos de ponderaciones, la que más se emplea es la asociada a los
factores de expansión, que se indica con la opción pweight que permite identi-
ficar los pesos que indican la inversa de la probabilidad de que la observación
sea incluida debido al diseño del muestreo.
table x1 x2 [pweight=pesopob]
table x1 x2 [pw=pesopob]

2.10. Generación de Números Aleatorios


Crearemos un archivo vacı́o para 100 observaciones:
set obs 100
Generamos números aleatorios con distribución uniformes U(0,1)
gen x = uniform()
Luego generamos números aleatorios con distribución normal N(0,1)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
2.11. Percentiles, Cuartiles, Deciles 27

gen y = invnorm(uniform())
Para generar una variable con distribución uniforme U(a,b)
generate y = a + (b-a) * uniform()
Para generar una variable con distribución normal N(u,ô)
generate z = u + o
^ * invnorm(uniform())
Generemos una variable notas, igual a U(0,20) + N(0,1)
gen notas = 20*uniform() + invnorm(uniform())
Trunquemosla en el rango de 0 a 20
replace notas = clip(notas, 0, 20)
format notas %3.1f
Generemos una variable sexo que sea 1 si es hombre y 0 si es mujer
gen sexo = uniform() > 0.5
Generemos una variable ingreso que valla del 2000 al 2007
gen ingreso = 2000 + floor(8*uniform())

2.11. Percentiles, Cuartiles, Deciles


Las medidas de posición son muy importantes en el análisis estadı́stico,
probabilı́stica y regresional.
Los cuartiles son medidas estadı́sticas de posición que tienen la propiedad
de dividir la serie estadı́stica en cuatro grupos de números iguales de términos.
De manera similar los deciles dividen a la serie en diez partes iguales y los
percentiles dividen a los términos de la serie en cien grupos iguales. Ası́ como
la mediana divide la serie o distribución en dos partes iguales, existen tres
cuartiles, nueve deciles y noventa y nueve percentiles que dividen en cuatro,
diez y cien partes iguales a la distribución.
De estas tres últimas medidas de posición los cuartiles son las de mayor
aplicación.
Se emplean generalmente en la determinación de estratos o grupos corres-
pondientes a fenómenos socio-económicos, monetarios o teóricos.

XTILE

El comando xtile genera una variable categórica (eg: 1, 2, 3) según el cuantil


en que se encuentra cada observación.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
28 2. Manejo de Datos

xtile nuevavar = variable , nquantiles(#)


xtile tercio = notas, n(3)

PCTILE

El comando pctile genera una variable con los puntos de corte entre cada
cuantil.

pctile nuevavar = variable , nquantiles(#)


pctile cortes = notas, n(3)

Por ejemplo, generemos una variable décimo que sea 1 si es décimo superior,
y 0 caso contrario. Hágalo de 2 formas distintas

xtile es_decimo = notas, n(10)


replace es_decimo= (es_decimo==10)

summarize notas, detail


gen es_decimo = notas > r(p90)

pctile corte_dec = notas, n(10)


gen es_decimo = notas > corte_dec[9]

Muestre en las notas, el promedio, el máximo, el mı́nimo, por sexo. Muestre


la probabilidad de ser décimo superior, por año de ingreso

tab es_decimo tercio


tabstat notas, by(es_decimo)
tabstat notas, by(sexo) stat(mean max min)
tabstat es_decimo, by(ingreso) format(%3.2f)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
2.11. Percentiles, Cuartiles, Deciles 29

RETO 2

El sostenido crecimiento de la economı́a peruana en los últimos años ha


provocado que en la actualidad observemos un boom de inversiones a nivel des-
centralizado. Ası́, diversas actividades económicas que antes se desarrollaban
solo en Lima han empezado a mirar el interior del paı́s como plazas alternativas
para expandir sus negocios. Con este fin, la recientemente fundada empresa de
consultorı́a Grupo IDDEA S.A.C. le ha pedido su colaboración para desarrollar
las siguientes tareas en Stata.

. En el módulo “sumarias” (que contiene variables calculadas de ingreso y


gasto) se le pide identificar cada hogar con el nombre de la localidad que
representa según la variable “ubigeo” (distrito). Además, en este módulo de-
berá crear una nueva variable que indique el departamento al que pertenece
cada hogar (esta variable debe tener un value map con los nombres de los
24 departamentos y el Callao). Para esta tarea usted cuenta con la base de
datos ubigeo.dta.

. Con una sola instrucción (un solo comando) muestre las siguientes estadı́sti-
cas descriptivas para el gasto per capita en todos los departamentos del paı́s
(percentil 99, media, desviación estándar, rango).

. El INEI calcula las estadı́sticas de pobreza bajo el método del gasto, pa-
ra lo cual utilizará la variable “gasto total” y la dividirá entre el total de
personas en el hogar para calcular el gasto per capita. Luego generará una
variable que valga uno en caso el hogar supere la lı́nea de pobreza per capita
(linea06) y cero en caso contrario. Finalmente, se le pide estimar para cada
departamento cual es el nivel de pobreza considerando que un individuo es
pobre si pertenece a un hogar pobre.

. Con el módulo de educación construya una tabla que muestre para cada do-
minio geográfico el porcentaje de personas según nivel educativo alcanzado,
para lo cual considerará solo tres niveles: 1, al menos primaria incompleta,
2, Al menos secundaria completa y 3, superior.

. Al módulo educación añada la variable gasto per cápita, calculado en la base


sumaria como el cociente entre gasto total y total de miembros del hogar.
Luego, cree una variable que contenga los cuartiles (1,2,3,4) del gasto per
capita y construya una tabla cruzada entre el nivel educativo y la nueva
variable que ha creado para todas aquellas personas que no residen en Lima
Metropolitana.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
30 2. Manejo de Datos

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
Sesión 3
Análisis Grafico con Stata

Ahora vamos a trabajar con los principales gráficos en Stata. Muchos de


estos gráficos son de bastante utilidad para observar los problemas inherentes
al análisis de regresión que observaremos en la próxima sección.

3.1. Visualizando Algunos Comandos


clear
use auto.dta
histogram mpg

Figura 3.1: Histograma

graph box mpg


graph box mpg, by(foreign)

31
32 3. Análisis Grafico con Stata

Figura 3.2: Grafico de Cajas

Figura 3.3: Scatter y Ajuste Lineal

Figura 3.4: Grafico Matricial

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.2. TWOWAY 33

3.2. TWOWAY
El S&P 500 es el ı́ndice más seguido para tener una idea del desempeño
general de las acciones estadounidenses. Este ı́ndice consiste de las acciones de
500 empresas que fueron seleccionadas por su tamaño, liquidez (qué tan fácil
es comprar o vender sus tı́tulos) y representatividad por actividad económi-
ca, incluyendo 400 industriales, 20 del sector transporte, 40 de servicios y 40
financieras. Sólo se toman en cuenta empresas estadounidenses. Vale la pena
destacar que el peso de cada acción dentro del ı́ndice corresponde a la propor-
ción que representa el valor de mercado de la empresa dentro del total de las
500 empresas que conforman el ı́ndice. El valor de mercado del capital es igual
al precio por acción multiplicado por el número total de acciones.
Usemos la base de datos S&P 500.(ver figura3.5

clear
use s&p.dta
describe

Figura 3.5: Índice S&P

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
34 3. Análisis Grafico con Stata

Figura 3.6: Opciones del “twoway”

Figura 3.7: Opciones del “twoway”

Figura 3.8: Opciones del “twoway”

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.2. TWOWAY 35

Figura 3.9: Opciones del “twoway”

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
36 3. Análisis Grafico con Stata

Usemos una nueva base de datos:

clear
use highschool.dta
describe

Figura 3.10: Base Highschool

graph twoway histogram read


graph twoway kdensity read
graph twoway (histogram read) (kdensity read)
graph twoway function y=normden(x), range(-4 4)

Figura 3.11: Histograma y Kernel

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.2. TWOWAY 37

Figura 3.12: Más opciones del “twoway”

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
38 3. Análisis Grafico con Stata

3.3. TWOWAY y SCATTERPLOT

twoway scatter read write , scheme(economist)


twoway scatter write read, msymbol(square) msize(small) mcolor(black)
twoway scatter write read, mfcolor(red) mlcolor(black) mlwidth(medthick)

twoway scatter read write if id <=10, mlabel(id) mlabposition(2) ///


mlabsize(large) mlabcolor(green)
twoway scatter read write if id <=10,mlabel(ses) mlabangle(90) ///
mlabposition(2) mlabgap(3)

egen mread = mean(read), by(write)


label variable mread "Nota prom lectura x grupo de escritura"
twoway scatter mread write, connect(l) sort
twoway scatter mread write, connect(l)
twoway scatter mread write, connect(l) clwidth(thick) clcolor(red) ///
clpattern(shortdash) sort

egen sdread = sd(read), by(write)


label variable sdread "SD prom nota de lectura x grupo de escritura"
twoway scatter sdread write, connect(l) sort cmissing(n)
twoway scatter sdread write, connect(l) sort cmissing(y)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.3. TWOWAY y SCATTERPLOT 39

Figura 3.13: Connect

Figura 3.14: Connect sort cmissing

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
40 3. Análisis Grafico con Stata

3.4. Combinando TWOWAY Y SCATTERPLOT


3.4.1. Filtro de Gráficos

twoway scatter read write, by(female)


twoway scatter read write, by(female ses)
twoway scatter read write, by(ses female, cols(2))

Figura 3.15: Opción “by”

3.4.2. Unión de Gráficos

twoway (scatter read write) (lfit read write) , ytitle(Nota ///


de lectura)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.4. Combinando TWOWAY Y SCATTERPLOT 41

Figura 3.16: Opción “ytitle” de un grafico

twoway (scatter read write) (lfit read write), name(scatter)

twoway (scatter read write, mlabel(id)) (lfit read write, ///


range(30 70)), by(ses female) ytitle(Nota de lectura)

Figura 3.17: Nombre a un grafico

twoway (scatter read write) (scatter math write)

twoway (scatter read write) (scatter math write) (lfit read ///
write) (lfit math write)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
42 3. Análisis Grafico con Stata

twoway (scatter read write) (scatter math write) (lfit read ///
write) (lfit math write), legend(label(3 "Ajuste Lineal") ///
label(4 "Ajuste Lineal")) legend(order(1 3 2 4))

twoway (scatter read write) (scatter math write) (lfit read ///
write, pstyle(p1) range(25 80) ) (lfit math write, ///
pstyle(p2) range(25 80) ), legend(label(3 "Ajuste Lineal") ///
label(4 "Ajuste Lineal")) legend(order(1 3 2 4))

Figura 3.18: Editando la legenda de un grafico

separate write, by(female)

graph twoway (scatter write0 read) (scatter write1 read), ///


ytitle(Nota de Escritura) legend(order(1 "Hombres" 2 "Mujeres"))

graph twoway (scatter write0 read) (scatter write1 read) ///


(lfit write0 read) (lfit write1 read), ytitle(Nota de ///
Escritura) legend(order(1 "Hombres" 2 "Mujeres" 3 "Aj. ///
Lineal Hombres" 4 " Aj. Lineal Mujeres"))

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.5. Opciones para Edición de Gráficos 43

Figura 3.19: Ordenando la legenda de un grafico

3.5. Opciones para Edición de Gráficos


El esquema siguiente nos ayudara a entender los principales comandos de
edición de gráficos. Podemos guiarnos de estos para poder tener una mejor
presentación en nuestros gráficos.

graph twoway scatter read write, title("Grafica de Dispersión ///


entre Lectura y Escritura")

Figura 3.20: Antes de la edición

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
44 3. Análisis Grafico con Stata

graph twoway scatter read write, ///


ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura)

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura ", ///
size(large) color(red) position(12) ring(1)) ///
ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura)

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura ", ///
size(large) color(red) position(12) ring(1) box bcolor(white) ///
blcolor(red) bmargin(medium)) ///
ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura)

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura " ///
"Muestra de 200 Estudiantes", linegap(3) size(large) color(red) ///
position(12) ring(1) box bcolor(white) blcolor(red) ///
bmargin(medium)) ///
ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura)

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura ", ///
size(large) color(red) position(12) ring(9) box bcolor(white) ///
blcolor(red) bmargin(medium)) ///
ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura) ///
subtitle("Muestra de 200 Estudiantes") ///
note(Datos de Escuela Secundaria y Superior) ///
caption(Grupo IDDEA.SAC)

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura ", ///
size(large) color(red) position(12) ring(9) box bcolor(white) ///
blcolor(red) bmargin(medium)) ///
ytitle(Nota del Examen de Escritura) ///
xtitle(Nota del Examen de Lectura) ///
subtitle("Muestra de 200 Estudiantes") ///
note(Datos de Escuela Secundaria y Superior, size(medium) ///

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.5. Opciones para Edición de Gráficos 45

position(5))
caption(Grupo IDDEA.SAC, size(vsmall) position(5))

graph twoway scatter read write, ///


title("Grafica de Dispersión entre Lectura y Escritura ", ///
size(large) color(red) position(12) ring(9) box bcolor(white) ///
blcolor(red) bmargin(medium)) ///
ytitle(Nota del Examen de Escritura, color(white)) ///
xtitle(Nota del Examen de Lectura, color(white)) ///
subtitle("Muestra de 200 Estudiantes", color(white)) ///
note(Datos de Escuela Secundaria y Superior, color(white) ///
size(medium) position(5)) ///
caption(Grupo IDDEA.SAC,color(green) size(small) position(5)) ///
graphregion( color(navy) ) ///
plotregion( fcolor(teal) )

Figura 3.21: Después de la edición

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
46 3. Análisis Grafico con Stata

use encuesta.dta

graph hbar commute, over(division)

graph hbar commute, over(division) asyvar

graph bar propval100, over(nsw) over(division) nofill asyvars ///


ylabel(0(10)80)

twoway scatter ownhome propval100, xlabel(#10) ylabel(#5)

twoway scatter ownhome propval100, xscale(alt)

twoway scatter propval100 rent700 ownhome, ylabel(0(10)100) ///


yscale(alt)

twoway (scatter propval100 ownhome) (scatter rent700 ownhome, ///


yaxis(2))

twoway scatter ownhome propval100 [aweight=rent700], msize(small) ///


scheme(vg_outm) yscale(alt) xscale(alt)

Figura 3.22: Grafico de burbujas

use s&p.dta

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.6. Trabajando con Esquemas y Gráficos Adicionales 47

tw (rarea high low date) (spike volmil date)

tw (rarea high low date) (spike volmil date, yaxis(2))

tw (rarea high low date) (spike volmil date, yaxis(2)), ///


yscale(range(500 1400) axis(1))

tw (rarea high low date) (spike volmil date, yaxis(2)), ///


yscale(range(500 1400) axis(1)) yscale(range(0 5) axis(2))

tw (rarea high low date) (spike volmil date, yaxis(2)), ///


yscale(range(500 1400) axis(1)) yscale(range(0 5) axis(2)) ///
scheme(vg_teal)

Figura 3.23: Diferentes escalas

3.6. Trabajando con Esquemas y Gráficos Adi-


cionales
3.6.1. Esquemas
use encuesta.dta
scatter propval100 rent700 ownhome, scheme(vg_blue)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
48 3. Análisis Grafico con Stata

Figura 3.24: Scatter y esquema vg blue

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.6. Trabajando con Esquemas y Gráficos Adicionales 49

3.6.2. Gráficos de Barras Verticales


use nlsw.dta
graph bar ttl_exp
graph bar prev_exp tenure ttl_exp
graph bar (median) prev_exp tenure ttl_exp
graph bar (median) prev_exp tenure (mean )ttl_exp
graph bar (mean) meanwage=wage (median ) medwage=wage
graph bar prev_exp tenure, over(occ5)
graph bar prev_exp tenure, over(occ5) percentages
graph bar prev_exp tenure, over(occ5) percentages stack

use highshool.dta

graph bar write, over( race) over( female) over( ses) ///
legend(rows(1) stack) blabel(bar, format(%4.1f) size(vsmall)) ///
bargap(10) percent scheme(vg_blue)

Figura 3.25: Bar y esquema vg green

3.6.3. Gráficos de Barras Horizontales


use nlsw.dta
graph hbar wage, over(occ5)
graph hbar wage, over(occ5) over(collgrad)
graph hbar wage,over(urban2) over(occ5) over(collgrad)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
50 3. Análisis Grafico con Stata

graph hbar wage,over(urban3) over(union) missing


graph hbar wage,over(grade4) over(union)
graph hbar wage,over(grade4, gap(*.3)) over(union)
graph hbar wage,over(grade4, gap(*3)) over(union)
graph hbar wage,over(occ7)
graph hbar wage,over(occ7, sort(1))
graph hbar wage,over(occ7, sort(1) descending)
graph hbar wage hours,over(occ7)
graph hbar wage hours,over(occ7, sort(1))
graph hbar wage hours,over(occ7, sort(2))
graph hbar wage hours,over(occ7, sort(2)) over(married)
graph hbar wage hours,over(occ7, sort(2)) over(married, ///
descending) asyvars
graph hbar wage hours,over(occ7, sort(2)) over(married, ///
descending) asyvars stack
graph hbar wage,over(occ7, label(alternate)) over(collgrad)

Figura 3.26: Hbar y esquema vg rose

3.6.4. Gráficos de Cajas


use nlsw.dta
graph box wage, over(grade4)
graph box wage, over(grade4) nooutsides
graph box wage, over(grade4) nooutsides over(union)
graph box wage, over(grade4) nooutsides over(union) ///

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.6. Trabajando con Esquemas y Gráficos Adicionales 51

asyvars
graph box wage, over(grade4) nooutsides over(union) ///
asyvars over(urban2)
graph hbox tenure, nooutsides over(occ7)
graph hbox tenure, nooutsides over(occ7, sort(1))
graph hbox prev_exp tenure, nooutsides over(occ7, ///
sort(1))
graph hbox prev_exp tenure, nooutsides over(occ7, ///
sort(1)) over(collgrade)
graph hbox prev_exp tenure, nooutsides over(occ7, ///
sort(1)) over(collgrad)
graph hbox ttl_exp tenure, nooutsides over(urban2) ///
over(married) by(union)
graph hbox ttl_exp tenure, nooutsides over(urban2) ///
over(married) by(union, total)
graph hbox ttl_exp tenure, nooutsides over(urban2) ///
over(married) by(union, total row(1))
graph hbox ttl_exp tenure, nooutsides over(urban2) ///
over(married) by(union, total cols(1))

Figura 3.27: Hbox y esquema vg teal

3.6.5. Gráficos de Pastel


use nlsw.dta
graph pie, over(occ7)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
52 3. Análisis Grafico con Stata

graph pie, over(union)


graph pie, over(union) missing
graph pie, over(occ7)
graph pie, over(occ7) noclockwise
graph pie, over(occ7) noclockwise sort
graph pie, over(occ7) sort pie(3, explode)
graph pie, over(occ7) sort pie(3, explode color(cyan)) ///
pie(7, explode(5) color(gold))
graph pie, over(occ7)
graph pie, over(occ7) plabel(_all sum)
graph pie, over(occ7) plabel(_all sum) scheme(economist)
graph pie, over(occ7) plabel(_all percent) scheme(economist)
graph pie, over(occ7) plabel(_all name) scheme(economist)
graph pie, over(occ7) plabel(_all name, gap(-5)) ///
plabel(_all percent, gap(5) format("%2.0f")) scheme(economist)
graph pie, over(occ7) plabel(_all name, gap(-5)) ///
plabel(_all percent, gap(5) format("%2.0f")) ///
legend(title(Ocupación) position(9) cols(1) stack) ///
scheme(economist)

Figura 3.28: Pie y esquema economist

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
3.6. Trabajando con Esquemas y Gráficos Adicionales 53

RETO 3

CLASIFICACIÓN DE RIESGOS
La base de datos “deudores”, tiene información acerca de la edad, sexo,
distrito, ingresos, deuda, y calificación de la deuda, para 19,000 deudores.

. ¿Cuál es la edad promedio de la muestra? Analice la distribución de la edad,


con un histograma.

. ¿Qué AFP tiene más clientes? Realice una grafica sustentando su respuesta.

. Genere una dummy mal pagador, que sea 1 si el deudor está atrasado con
sus deudas

. ¿Que % de hombres y mujeres son mal pagadores? ¿Quienes ganan más, en


promedio?

. ¿A qué edad las personas se atrasan menos? Realice una grafica sustentando
su respuesta.

. Genere una nueva base de datos a nivel de distrito, con el número de perso-
nas, el salario promedio, y el % de deudores atrasados.

. Guarde solo los distritos con al menos 100 personas.

. ¿Qué distritos son los más ricos? ¿En cuáles la gente es peor pagadora?
Realice una grafica sustentando sus resultados.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
54 3. Análisis Grafico con Stata

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
Sesión 4
Análisis de Regresión Lineal

4.1. Regresión Lineal


Ahora vamos a trabajar con las herramientas que hemos aprendido y va-
mos a generar relaciones econométricas. Empecemos con evaluar una regresión
MCO.

use elemapi.dta
regress api00 acs_k3 meals full

Nuestras expectativas son que un mejor rendimiento académico, este rela-


cionado con un tamaño de clase pequeño, pocos estudiantes recibiendo comida

55
56 4. Análisis de Regresión Lineal

gratuita, y un alto porcentaje de profesores que tengan sus credenciales de


enseñanza completa.
regress api00 acs_k3 meals full
Ahora debemos observar los coeficientes de los resultados de nuestra regre-
sión, y su significancia. Estos coeficientes deben ser coherentes con nuestras
expectativas. ¿Qué es lo que observamos?
Antes de decir que esta regresión es correcta debemos hacer un conjunto
de pruebas.
describe

list in 1/5

list api00 acs_k3 meals full in 1/10

codebook api00 acs_k3 meals full yr_rnd

summarize api00 acs_k3 meals full

summarize acs_k3, detail

tabulate acs_k3

list snum dnum acs_k3 if acs_k3 < 0

list dnum snum api00 acs_k3 meals full if dnum == 140

histogram acs_k3

graph box acs_k3

stem acs_k3

stem full

tabulate full

tabulate dnum if full <= 1

count if dnum==401
Hemos encontrado 3 problemas en la data, valores perdidos, valores nega-
tivos insertados de manera incorrecta y proporciones introducidos como por-
centajes.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.1. Regresión Lineal 57

regress api00 acs_k3 meals full


Luego de corregir la data podemos volver a estimar la regression y observar:

use elemapi2.dta
regress api00 acs_k3 meals full
Digamos que estamos interesados en saber cual es la relación entre el nu-
mero de estudiantes y el rendimiento académico.
regress api00 enroll
Primero debemos fijarnos en el test F, y ver si es significativo, lo cual nos
mostrara la significancia del modelo. El R2 nos dirá que tanto de la varianza
de nuestra variable endógena, es explicado por los regresores. Luego debemos
observar la significancia de los parámetros, ver si sus signos son acorde con la
teorı́a. La constante es el valor predecido para cuando nuestra explicativa sea
cero.
Podemos observar también que Stata nos presenta la descomposición de la
varianza. La varianza total esta particionada en la varianza explicada por las
variables independientes (model) y la varianza que no es explicada por dichas
variables(residual). Sabemos que existe una suma de cuadrados asociada a las
tres partes de la varianza. Conceptualmente estas son:
X
SST = (y − ȳ)2
X
SSR = (y − ŷ)2
X
SSM = (ŷ − ȳ)2

Ası́ pues se puede comprobar que SST=SSM+SSR, además debemos recordar


también que R2=SSM/SST.
También podemos observar los grados de libertad, asociados con cada parte
de las varianzas. La varianza total tiene N-1 gl, los gl del modelo son K-1, los
gl del residuo simplemente es la diferencia entre el total menos el modelo.
Observamos también las medias cuadráticas, es decir la división de la suma de
cuadrados entre sus gl. Con estas nosotros podemos calcular el valor del test
F=MSM/MSR, lo cual nos da el ajuste del modelo.
El Root MSE es la desviación estandar del error (raı́z cuadrada de MSR).

Obtengamos los valores predichos o estimados para el rendimiento académi-


co con nuestro modelo y guardemos dichos valores en la variable fv

predict fv

Veamos los valores estimados y los reales:

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
58 4. Análisis de Regresión Lineal

list api00 fv in 1/10

scatter api00 enroll

twoway (scatter api00 enroll) (lfit api00 enroll)


Veamos los outliers
twoway (scatter api00 enroll, mlabel(snum)) (lfit api00 enroll)
Ahora obtengamos el residuo de la regresión
predict e, residual
Ups, problemas en los coeficientes y sus significado, entonces ¿Qué hacer?
regress api00 ell meals yr_rnd mobility acs_k3 acs_46 full ///
emer enroll, beta
De esta manera podemos comparar un coeficiente con otro, dado que todos
tienen la misma medida ahora.
Un nuevo comando, busquemos en la red.
findit listcoef
listcoef
Observación SD=desviación estándar observada, desviación estándar de la
variable Y
SD del Error= desviación estándar del error: MSE (error estándar de la pre-
dicción) bstdx=coeficientes de la regresión con las variables x(estandarizadas)
y la variable Y(en su unidad original)
bstdy=coeficientes de la regresión con las variables x(en su unidad original) y
la variable Y(estandarizada)
bstdxy=coeficientes de la regresión con las variables x(estandarizadas) y la
variable Y(estandarizada)

Veamos una prueba de hipótesis


test ell==0
test ell
Veamos una prueba de hipótesis conjunta
test acs_k3 acs_46
Veamos la correlación entre las variables
correlate api00 ell meals yr_rnd mobility acs_k3 acs_46 full ///
emer enroll

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.2. Diagnostico de los Resultados 59

Veamos otra opción para correlacionar variables

pwcorr api00 ell meals yr_rnd mobility acs_k3 acs_46 full ///
emer enroll, obs sig

La normalidad Solo el residuo necesita tener una distribución normal, no las


variables para que se validen los test. Los coeficientes estimados no requieren
una normalidad de residuos.
Seria bueno sin embargo poseer variables que posean una distribución nor-
mal.

histogram enroll
histogram enroll, normal bin(20)
histogram enroll, normal bin(20) xlabel(0(100)1600)
kdensity enroll, normal
graph box enroll
symplot enroll
qnorm enroll
pnorm enroll

Veamos todas las posibilidades

ladder enroll
gladder enroll

Ajustemos a nuestra mejor eleccion

generate lenroll = log(enroll)


hist lenroll, normal

4.2. Diagnostico de los Resultados


4.2.1. Efecto Influencia
Ahora vamos a centrarnos en el diagnostico de nuestros resultados. Vemos
los problemas que podrı́an presentarse. Para ello debemos considerar los efectos
de outliers (una observación con un amplio residuo, que indica una muestra
peculiar o un error en la data), leverage (medida de cuan lejos una variable
independiente esta desviada de su media, puede afectar los coeficientes de
la regresión) y el efecto influencia (observación que al removerla, cambia la
estimación de los coeficientes radicalmente. dicho problema se le atribuye a un
leverage o a un outlier)
Usemos para esto, la base de datos diseñada por Alan Agresti y Barbara
Finlay (Prentice Hall, 1997).

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
60 4. Análisis de Regresión Lineal

use crimen.dta
describe
sum crimenes asesinatos pcturb pctblanco pctnivedu pobreza soltero
graph matrix crimenes pcturb pobreza soltero

Figura 4.1: Crimenes, pcturb, pobreza y soltero

Observamos algunas irregularidades. Vemos en muchos gráficos puntos que


están apartados del resto ¿de que estados serán?
scatter crimenes pcturb, mlabel(estado)
scatter crimenes pobreza, mlabel(estado)
scatter crı́menes soltero, mlabel(estado)
¿Qué observamos?
regress crimenes pcturb pobreza soltero

predict r, rstudent
stem r

sort r
list estadoid estado r in 1/10
list estadoid estado r in -10/l

findit hilo
hilo r estado

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.2. Diagnostico de los Resultados 61

list r crimenes pcturb pobreza soltero if abs(r) > 2

predict lev, leverage


stem lev
hilo lev estado, show(5) high
Analizar aquellos puntos con leverage mayores a (2k+2)/n
display (2*3+2)/51
list crimenes pcturb pobreza soltero estado lev if lev >.156
Veamos el leverage y los residuos cuadrados
lvr2plot, mlabel( estado)
list estado crimenes pcturb pobreza soltero if estado=="dc" | ///
estado=="ms"
Veamos los Cook’s D
predict d, cooksd
list crimenes pcturb pobreza soltero estado d if d>4/51
Veamos la influencia
predict dfit, dfits
list crimenes pcturb pobreza soltero estado dfit if abs(dfit)> ///
2*sqrt(3/51)
Evaluemos que pasarı́a con los coeficientes si se borrara la información
en algunas variables, ¿estos cambiarı́an? Es decir, ¿nuestros coeficientes son
robustos o no?
dfbeta
list estado DFpcturb DFpobreza DFsoltero in 1/5
El valor de dfbeta para una observación, significara que de ser incluida en
el análisis (comparativamente a no ser incluida) incrementara el coeficiente de
beta, en dicho valor multiplicado por el error estándar del beta correspondiente.
Un dfbeta mayor a 2/sqrt(n) necesita ser investigado.
display 2/sqrt(51)
scatter DFpcturb DFpobreza DFsoltero estadoid, ylabel(-1(.5)3) ///
yline(.28 -.28)
scatter DFpcturb DFpobreza DFsoltero estadoid, ylabel(-1(.5)3) ///
yline(.28 -.28) mlabel(estado estado estado)
list DFsoltero estado crimenes pcturb pobreza soltero if ///
abs( DFsoltero) > 2/sqrt(51)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
62 4. Análisis de Regresión Lineal

Veamos el efecto influencia a través de regresiones parciales, de manera


grafica.

avplot soltero, mlabel( estado)


avplots

regress
regress crimenes pcturb pobreza soltero if estado !="dc"

Si bien podemos buscar outliers con variables pertenecientes al modelo,


también podemos hacerlo con variables que no están incluidas en el modelo.

regress crimenes pcturb pobreza soltero


avplot pctblanco
regress crimenes pcturb pobreza soltero pctblanco

4.3. Normalidad del Residuo


La normalidad del residuo es requerida por muchas investigaciones si no-
sotros deseamos validar las pruebas de hipótesis sobre t-value y F-value. Ojo,
la no normalidad del residuo no invalidad la regresión. Una regresión valida
requiere que el residuo sea idéntica e independientemente distribuida, no re-
quiere que las variables explicativas sean distribuidas de forma normal. Si no
como explicarı́amos el uso de variables dummys en nuestras regresiones.

use elemapi2,clear
regress api00 meals ell emer

predict r, resid

Análisis grafico de normalidad

kdensity r, normal
pnorm r
qnorm r

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.4. Homocedasticidad del Residuo 63

Test de Normalidad
Test de Lawrence C. Hamilton
findit iqr
iqr r
Test de Shapiro-Wilk W (Ho: Normalidad)
swilk r

4.4. Homocedasticidad del Residuo


Supuesto crucial en un modelo MCO, la varianza de sus residuos debe ser
constante. Si la varianza no es constante entonces hay heterocedasticidad que
bien podrı́a ser modelada a través de un modelo de volatilidad.
Detección
rvfplot, yline(0)

Figura 4.2: Homocedasticidad del residuo

Test de Heterocedasticidad (Ho: Varianza constante)

Test de White
estat imtest
Test de Breusch y Pagan

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
64 4. Análisis de Regresión Lineal

estat hettest

El análisis grafico no nos muestra un problema serio de heterocedasticidad.


Ası́ que no lo corregiremos por ahora.

4.5. Multicolinealidad
Cuando dos variables explicativas están altamente relacionadas, podemos
hablar de multicolinealidad. Para detectar la multicolinealidad nosotros usa-
remos el factor de inflación de varianza (VIF) Aquella variable cuyo vif sea
mayor a 10 deberá ser investigada.

regress api00 meals ell emer


vif

regress api00 acs_k3 avg_ed grad_sch col_grad some_col


vif

¿Qué podriamos decir de esta regresión?, ¿porqué presentaria problemas


de multicolinealidad?

regress api00 acs_k3 grad_sch col_grad some_col


vif

findit collin
collin acs_k3 avg_ed grad_sch col_grad some_col
collin acs_k3 grad_sch col_grad some_col

4.6. Linealidad
Uno de los supuestos del Modelo Lineal General es la linealidad de pará-
metros especificada en mi regresión. Si estamos frente a un ajuste no lineal,
entonces nosotros tendremos problemas dado que estamos forzando una lı́nea
como ajuste de nuestra relación no lineal.
Analicemos solo a una variable.

regress api00 enroll


twoway (scatter api00 enroll) (lfit api00 enroll) (lowess api00 enroll)

regress api00 meals some_col


predict r, resid
scatter r meals
scatter r some_col

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.7. Especificación del modelo 65

No se vio una clara no linealidad, entonces usemos algo mas efectivo

acprplot meals, lowess lsopts(bwidth(1))


acprplot some_col, lowess lsopts(bwidth(1))

Tampoco se ve un problema grave de no linealidad. Usemos una data mas


interesante.

use nations.dta
describe
regress birth gnpcap urban
acprplot gnpcap, lowess
acprplot urban, lowess
graph matrix birth gnpcap urban, half

kdensity gnpcap, normal

Transformemos un dato

generate lggnp=log(gnpcap)
label variable lggnp "log-10 of gnpcap"
kdensity lggnp, normal

Regresionemos con el dato transformado

regress birth lggnp urban


acprplot lggnp, lowess

4.7. Especificación del modelo


Un error en la especificación del modelo puede ocurrir cuando uno o mas
variables relevantes son omitidas del modelo o una o mas variables relevantes
son incluidas en el modelo. Una mala especificación puede afectar los paráme-
tros estimados.
Digamos que estamos corriendo una regresión entre el tamaño de la clase y
el rendimiento académico, un incremento en la primera influirá incrementando
la segunda, evaluaremos la especificación del modelo, para ello usaremos los
siguientes comandos

use elemapi2, clear


regress api00 acs_k3

Un par de métodos Linktest, esta basado en la idea de que si el modelo esta


bien especificado, entonces no deberı́amos encontrar variables independientes

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
66 4. Análisis de Regresión Lineal

que sean significativas. El comando crea 2 variables nuevas, una variable es-
timada, y el cuadrado de dicha estimación. Se evalúa el modelo con ambas
variables, la estimación y hat deberı́a ser significativa pues es el valor esti-
mado, pero su cuadrado no deberı́a serlo, pues de estar bien especificado el
modelo, la estimación al cuadrado no deberı́a tener mucho poder explicativo.

Linktest
Ovtest

regress api00 acs_k3 full


linktest
ovtest

regress api00 acs_k3 full meals


linktest
ovtest

4.8. Independencia
Los errores asociados a una observación no deberı́an estar asociados a los
errores de alguna otra observación. En nuestro caso, al haber recolectado da-
tos de 8 tipos de escuela es probable que estudiantes dentro de sus escuelas
tiendan a ser mas parecidos que estudiantes de otra escuela, esto producirı́a
errores no independientes. El problema de autocorrelacion es muy común en
series de tiempo, en la cual nosotros evaluamos el test DW para ver la auto-
correlación de primer orden. Si quisiéramos especificar este análisis en nuestra
data, podrı́amos considerar a la variable snum como el tiempo

use elemapi2, clear


tsset snum
regress api00 enroll
dwstat
predict r, resid
scatter r snum

¿Qué observamos?

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
4.8. Independencia 67

RETO 4

. Trabajar con el archivo “gobusa5089.dta” y contestar las siguientes pregun-


tas:

¿Identificar las variables y opinar respecto a cada variable, realizar


un análisis gráfico y estadı́stico para comprender la base de datos?.
¿Identificar las variables de polı́tica y las variables apolı́ticas?
¿Elaborar una tabla de correlaciones entre la variable tax y las variables
polı́ticas y comentar los resultados sobresalientes?.
Responder a lo siguiente: ¿Quiénes cobran más impuestos, los esta-
dos con gobiernos divididos o los estados con gobiernos unificados?,
¿qué tan seguro estás de su respuesta?.

Marco teórico mı́nimo. Existen varias teorı́as respecto del impacto de los
factores polı́ticos y económicos sobre la polı́tica tributaria en cada estado:

Las teorı́as apolı́ticas dicen que las variables socioeconómicas y de-


mográficos (ingreso, población, grupos de edad) son los principales de-
terminantes de los impuestos.
Entre las teorı́as polı́ticas, algunos dicen que los factores polı́ticos par-
tidistas (partido en el gobierno y/o congreso local, mayorı́a demócrata
en el congreso o no, etc.) también son importantes.
Mientras que otros dicen que son las variables polı́ticas no-partidistas
(gobierno dividido, margen de la primera fuerza en el congreso local,
etc.) las que afectan los impuestos, y no tanto la ideologı́a o identidad
del partido en el poder (demócrata vs. republicano).

Especifica al menos tres regresiones (con errores estándar robustos) para la


variable tax y compara sus resultados. Interpreta brevemente los coeficien-
tes, su bondad de ajuste, etc. y explica cuál de ellos es preferible a los otros.
(Tip: no incluyas la variable spend en tu regresión).

Pruebas de hipótesis

Controlando por otros factores, la relación entre población e impuestos


es no lineal.
Controlando por otros factores, los gobernadores demócratas cobran
más impuestos que los no demócratas.
Manteniendo otros factores constantes, los estados con mayorı́a demócra-
ta en el congreso local cobran más impuestos que los gobiernos sin
mayorı́a demócrata.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
68 4. Análisis de Regresión Lineal

Manteniendo otros factores constantes, los gobiernos divididos cobran


menos impuestos que los gobiernos no divididos.
El impacto del gobierno dividido cambia si sólo consideramos el perı́odo
1975-1989 en la regresión.
Manteniendo otros factores constantes, una vez que controlamos por
quién tiene la mayorı́a en el congreso (demmaj1), el margen de esta
mayorı́a (dem1) no tiene un impacto en los impuestos.

Interpretando regresiones:
¿Cuál es la bondad de ajuste de un modelo sin variables polı́ticas? ¿Cuánto
poder explicativo adicional se consigue al incluir las variables polı́ticas?
¿Qué variables polı́ticas importan más, las partidistas o las no partidistas?
(ojo, esta pregunta requiere cierta interpretación de la R2 ajustada de varios
modelos, ası́ como la magnitud y significancia de tus coeficientes).

Predicciones:
¿Cuánto cambian los impuestos per cápita si el ingreso per cápita aumenta en
una desviación estándar? Calcula este cambio en dólares y como proporción
de los impuestos promedio de la muestra.
¿Cuánto cambian los impuestos cuando la mayorı́a demócrata en el congreso
local pasa de 10 a 30 %? Calcula este cambio en dólares y como proporción
de los impuestos promedio de la muestra.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
Sesión 5
Variables Categóricas

5.1. Estimación con Variables Categóricas


Habı́amos usado variables continuas anteriormente, sin embargo es posible
usar variables categóricas en un análisis de regresión pero requiere un trabajo
extra en la interpretación, el análisis y diagnostico de los resultados.

use elemapi2.dta, clear


describe api00 some_col yr_rnd mealcat
codebook api00
codebook some_col
codebook yr_rnd
codebook mealcat

Uso de variables dummy Regresionemos el rendimiento académico con la


variable que nos indica si el alumno esta en el programa year-round o no

regress api00 yr_rnd


twoway (scatter api00 yr_rnd) (lfit api00 yr_rnd)
tabulate yr_rnd, sum(api00)

Observamos un parámetro negativo en la regresión, para nuestra variable


dummy. Esto significa que si dicha variable toma el valor de cero la medida del
rendimiento de los alumnos será su media considerando solo a aquellos alumnos
que no están en el programa o sistema de enseñanza, mientras que si la variable
toma el valor de uno, la medida del rendimiento será la media considerando
solo a aquellos alumnos que si están bajo este sistema de enseñanza.

ttest api00, by(yr_rnd)


anova api00 yr_rnd
display 10.7815^2

codebook mealcat
regress api00 mealcat

69
70 5. Variables Categóricas

Pero esta variable mealcat es una variable intervalo, podrı́amos generar tres
variables a partir de esta, de tal forma que podamos definir a cada sub variable
como un valor cada vez que mealcat pertenezca a cierto intervalo.

tabulate mealcat, gen(mealcat)


list mealcat mealcat1 mealcat2 mealcat3 in 1/10, nolabel

regress api00 mealcat2 mealcat3

La constante es la media para el grupo1. El coeficiente de mealcat2 es la


media del grupo 2 menos la media del grupo1, y el coeficiente de mealcat3 es
la media del grupo3 menos la media del grupo1.
Los resultados nos dicen que los tres grupos difieren de sus medidas de
rendimientos.

test mealcat2 mealcat3


tabulate mealcat, summarize(api00)

5.2. El Comando Xi
Lo mismo podemos hacer con el comando “xi”,

xi : regress api00 i.mealcat


test _Imealcat_2 _Imealcat_3

Si deseáramos omitir el tercer grupo y no el primero, entonces deberı́amos


usar el siguiente comando:

char mealcat[omit] 3
xi : regress api00 i.mealcat

Nosotros podemos hacer el mismo análisis usando el comando “anova”

anova api00 mealcat


anova, regress

Aquı́ vemos que siempre la ultima categorı́a es borrada y reemplazada con


la constante.
Los beneficios del comando “anova” es que te da el efecto total de meal-
cat sin necesitar el uso del comando test como lo hacı́amos con el comando
“regress”.
Volvamos a nuestras regresiones:

regress api00 yr_rnd


xi : regress api00 i.mealcat

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
5.2. El Comando Xi 71

Y ahora vamos a estimar el rendimiento académico usando una variable


dicotomica mas:
xi : regress api00 i.mealcat yr_rnd
test _Imealcat_1 _Imealcat_2

anova api00 yr_rnd mealcat


anova, regress
Dado que este modelo solo tiene efectos principales, sin interacciones, la
interpretación del coeficiente de ”yr rnd”, es la diferencia entre escuelas con
sistema year round y escuelas sin ese sistema de enseñanza, el primer coeficiente
para la variable “mealcat” es la diferencia entre mealcat=1 y mealcat=3, el
segundo es la diferencia entre mealcat=2 y mealcat=3 (siendo mealcat=3 la
variable categórica de referencia y la cual es estimada por la variable)

Finalmente los resultados indican que las diferencias entre un sistema de


enseñanza year-round y un sistema de enseñanza sin year-round es significativo
y las diferencias entre los tres grupos mealcat también son significativos.
Veamos algunas interacciones con las variables categóricas:
xi : regress api00 i.mealcat*yr_rnd
Ahora incluiremos la interacción entre mealcat y yr rnd Y testeamos la
significancia:
test _ImeaXyr_rn_1 _ImeaXyr_rn_2
Si deseamos testear el efecto de yr rnd para mealcat=1:
test _b[yr_rnd] +_b[_ImeaXyr_rn_1] ==0
Puedo ver un testeo sobre todos los efectos principales e iteraciones sin la
necesidad de recurrir al comando test:
anova api00 yr_rnd mealcat yr_rnd*mealcat

regress api00 yr_rnd some_col


predict yhat
scatter yhat some_col

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
72 5. Variables Categóricas

Para correr un Anova necesitamos indicarle que la variable a evaluar tiene


caracterı́sticas de continuidad:
anova api00 yr_rnd some_col, cont(some_col)
INTERACCIONES

regress api00 some_col if yr_rnd==0


predict yhat0 if yr_rnd==0
scatter yhat0 api00 some_col if yr_rnd==0, connect(l i)
msymbol(i o) sort
regress api00 some_col if yr_rnd==1
predict yhat1 if yr_rnd==1
scatter yhat1 api00 some_col if yr_rnd==1, connect(l i)
msymbol(i o) sort

5.3. Pruebas de Hipótesis


El GPA (Grade Point Average, o promedio de notas) es una medida de la
calidad de su trabajo académico a nivel universitario. Algunos patrones suelen
utilizar al GPA como un factor clave cuando les ofrezcan trabajo a egresados
de la universidad. Es por eso que resulta de suma importancia mantener un
buen GPA durante toda su carrera universitaria.
El examen de aptitud SAT (Scholastic Aptitude Test - Examen de apti-
tudes escolares) es un examen estandarizado para admisión a universidades
en EEUU. El rango de este, varia entre los 600 y 2400 puntos, consta de 3
secciones, matemática, lectura critica, y escritura.
use GPA.dta, clear
desc
sum

reg colgpa sat verbmath tothrs hsperc hsize, robust


reg colgpa sat verbmath tothrs hsperc hsize hsizesq, robust
display _b[hsize] / (2*_b[hsizesq])
¿Si el SAT score aumenta 100 puntos, que tan probable es que el GPA
aumente 0.25 puntos?
display (_b[sat] - .0025) / _se[sat]
display ttail(4130, 15.52)
display ttail(4130, 1.52)
display ttail(413, 1.52)
display ttail(41, 1.52)

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
5.3. Pruebas de Hipótesis 73

Afortunadamente, Stata hace pruebas de hipótesis de manera muy “intui-


tiva”

test sat = .0025


Otras pruebas:
test sat = .002
test sat = .0014
reg colgpa sat verbmath tothrs hsperc hsize hsizesq, robust

¿Qué pasa con la regresión si solo tomamos las primeras 2000 observaciones
de la muestra?

reg colgpa sat verbmath tothrs hsperc hsize hsizesq ///


if _n<2000, robust

¿Qué pasa si solo incluimos a las mujeres en la regresión?

reg colgpa sat verbmath tothrs hsperc hsize hsizesq ///


if female==1, robust

¿Qué pasa si incluimos sólo a las mujeres blancas?

reg colgpa sat verbmath tothrs hsperc hsize hsizesq ///


if female==1 & white==1, robust

¿Como les va a los hombres y mujeres en el SAT?

summ sat
summ sat if female ==1
summ sat if female ==1 & white==1

generate lhsize = log(hsize)


reg colgpa sat verbmath tothrs hsperc lhsize, robust
reg colgpa sat verbmath tothrs hsperc lhsize female ///
white black athlete, robust

generate mm = female * white * athlete


summ mm female white athlete
reg colgpa sat verbmath tothrs hsperc lhsize female ///
white black athlete mm, robust

Un modelo simple con variables interactivas:

xi: reg colgpa sat i.female*i.white

USEMOS LA BASE DE DATOS Salario2.dta

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
74 5. Variables Categóricas

use Salario2.dta, clear


describe
Esta es una base de datos para explicar los salarios mensuales (wage)
summ
summ IQ, detail
hist IQ
hist wage
summ wage, detail
sktest IQ wage
REGRESIONES ROBUSTAS PARA SALARIOS

reg wage educ exper IQ, robust


summ educ exper
corr IQ educ exper
predict yhat, xb
summ yhat wage
Introduciendo una variable mas: MARRIED
reg wage educ exper IQ married, robust
EFECTOS INTERACTIVOS ENTRE VARIABLES CONTINUAS

generate edex=educ*exper
generate edumarr= educ*married
summ educ exper marr edex edumarr
Modelo Base:
reg wage educ exper IQ married , robust
Modelo con EDEX:
reg wage educ exper IQ married edex, robust
Modelo con EDUC*MARRIED y EDUC*EXPER:
reg wage educ exper IQ married edex edumarr, robust
corr educ exper edex
Modelo sin interacción EDEX y dejando EDUMARR:
reg wage educ exper IQ married edumarr, robust
xi: reg wage educ exper i.black*i.married IQ, robust
reg wage educ exper IQ, robust

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
5.4. Creación de Variables Dummys 75

¿Que pasa si tienes 10 años de educación y 5 de experiencia?

lincom 10*educ + 5*exper


reg wage educ exper IQ married , robust
lincom 10*educ + 5*exper + married

HACIENDO PRUEBAS DE HIPOTESIS PARA UNA O MÁS VARIABLES:

Pruebas F

test educ
test educ = 70
test educ = 80

Una prueba F también prueba la significancia CONJUNTA de un GRUPO


de variables

reg wage educ exper IQ married tenure urban black meduc feduc, robust
test feduc meduc
test meduc
test tenure meduc
test tenure meduc black

5.4. Creación de Variables Dummys


Existen tres formas de crear variables dicotomicas:

Si partimos de una variable cualitativa de múltiples categorı́as, entonces


con la especificación “XI” será posible la creación de variables dicotomicas,
reestructurando la variable categórica.
Una segunda forma de crear variables dicotomicas, es a través de un co-
mando “if” condicionando a una variable continua, la variable que se obtendrá,
será entonces, mi variable latente.
La última forma de creación es mediante el comando “input”, donde se
especificara el nombre de las variables y la introducción de datos es de manera
manual.

5.5. Bucles y Programas


El uso de bucles en Stata o Eviews, no es muy usual, dado que estos pro-
gramas implementan una plataforma orientada al usuario en lugar de a un
programador.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
76 5. Variables Categóricas

input famid inc1-inc12


1 3281 3413 3114 2500 2700 3500 3114 3319 3514 1282 2434 2818
2 4042 3084 3108 3150 3800 3100 1531 2914 3819 4124 4274 4471
3 6015 6123 6113 6100 6100 6200 6186 6132 3123 4231 6039 6215
end
Ahora vamos a visualizarlo con un listado.
list famid inc1-inc12, clean
Si deseamos calcular una cantidad de 10 % en impuestos pagados por cada
mes, una manera simple de hacer esto computo a las 12 variables es mediante
una multiplicación simple:
generate taxinc1 = inc1 * .10
generate taxinc2 = inc2 * .10
generate taxinc3 = inc3 * .10
generate taxinc4 = inc4 * .10
generate taxinc5 = inc5 * .10
generate taxinc6 = inc6 * .10
generate taxinc7 = inc7 * .10
generate taxinc8 = inc8 * .10
generate taxinc9 = inc9 * .10
generate taxinc10= inc10 * .10
generate taxinc11= inc11 * .10
generate taxinc12= inc12 * .10
Lo cual resulta algo tedioso, imagı́nense si tuvieran mas de 12 variables
dentro del computo. Ahora aplicaremos un criterio de programación simple,
estructurando un bucle que nos ayude a implementar el cálculo de manera
rápida y ordenada.
foreach var of varlist inc1-inc12 {
generate tax‘var’ = ‘var’ * .10
}
Ahora “var” es el contador, que cambiara de acuerdo al listado de variables,
desde inc1 hasta inc12; dentro del looping, se podra acceder a “var” mediante
comillas, tales como “ ‘var’ ”.
¿Que sucede si usamos un contador numérico?
generate incqtr1 = inc1 + inc2 + inc3
generate incqtr2 = inc4 + inc5 + inc6
generate incqtr3 = inc7 + inc8 + inc9
generate incqtr4 = inc10+ inc11+ inc12

list incqtr1 - incqtr4

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
5.5. Bucles y Programas 77

En forma más rápida.

foreach qtr of numlist 1/4 {


local m3 = ‘qtr’*3
local m2 = (‘qtr’*3)-1
local m1 = (‘qtr’*3)-2
generate incqtr‘qtr’ = inc‘m1’ + inc‘m2’ + inc‘m3’
}
list incqtr1 - incqtr4

¿Si comparamos ingresos?, digamos que deseamos generar dummys tales


que, indiquen “1” cuando el ingreso del mes actual sea menor que el ingreso
del mes anterior, y “0” cuando el ingreso del mes actual sea mayor o igual que
el ingreso del mes anterior.

foreach curmon of numlist 2/12 {


local lastmon = ‘curmon’ - 1
generate lowinc‘curmon’ = 1 if ( inc‘curmon’ < inc‘lastmon’ )
replace lowinc‘curmon’ = 0 if ( inc‘curmon’ >= inc‘lastmon’ )
}

Listamos para observar los resultados

list famid inc1-inc12, clean noobs


list famid lowinc2-lowinc12, clean noobs

Otra manera de hacer lo mismo:

forvalues curmon = 2/12 {


local lastmon = ‘curmon’ - 1
generate lowinc‘curmon’ = 1 if ( inc‘curmon’ < inc‘lastmon’ )
replace lowinc‘curmon’ = 0 if ( inc‘curmon’ >= inc‘lastmon’ )
}

Veamos ahora un comando también útil para programar, el comando WHI-


LE:

Ejemplo:

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
78 5. Variables Categóricas

local i=1
while ‘i’ <=10 {
display ‘i’
local i=‘i’+1
}

Stata provee de la especificación de programas que el usuario bien podria


crear. Crearemos un programa básico, “HOLA MUNDO”

program define Super


display "HOLA MUNDO"
end

Si deseamos crear otro programa con el mismo nombre, Stata nos mostrara
un mensaje de error diciéndonos que existe un programa con ese nombre por
lo que debemos eliminarlo primero:

program drop Super

y ahora si podemos correr el programa.

Stata Básico www.giddea.com


Aplicado a la Investigación Económica administracion@giddea.com
Bibliografı́a

[1] Moya, Rufino - Estadı́stica Descriptiva.

[2] Moya, Rufino; Saravia, Gregorio. -Probabilidad e Inferencia Estadı́stica.

[3] Wooldridge, Jeffrey M. - Introducción a la Econometrı́a.

[4] Gujarati, Damodar - Fundamentos de Econometrı́a

79

You might also like