Subido por KARINA CASTILLA TTITO

stata-bc3a1sico-intermedio (2)

Anuncio
Stata
Básico Intermedio
Aplicado a la Investigación Económica
Juan Carlos Abanto Orihuela
5 de febrero de 2009
UdecomBooks
2
Stata Básico Intermedio
Aplicado a la Investigación Económica
www.iddeasac.com
[email protected]
Índice general
Índice general
3
1. Introducción al Stata
1.1. Iniciando Stata . . . . . . . . . . .
1.2. Tipos de Archivos en Stata . . . . .
1.3. Estructura Básica de Stata . . . . .
1.4. Principales Comandos de Trabajo y
1.4.1. Las Bitácoras . . . . . . . .
1.4.2. La Base de Datos . . . . . .
1.4.3. Append, Merge, Collapse . .
. . . . .
. . . . .
. . . . .
Análisis
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
6
7
7
7
9
2. Manejo de Datos
2.1. Cargando los Datos en Stata . . . .
2.2. Etiquetas . . . . . . . . . . . . . .
2.3. Comando IF . . . . . . . . . . . . .
2.4. Comando SUMMARIZE . . . . . .
2.5. Comando SPLIT . . . . . . . . . .
2.6. Creando Variables . . . . . . . . . .
2.7. KEEP y DROP . . . . . . . . . . .
2.8. Reestructurando los Datos . . . . .
2.9. Muestreos Probabilı́sticos . . . . . .
2.10. Generación de Números Aleatorios
2.11. Percentiles, Cuartiles, Deciles . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
15
17
18
18
19
22
24
26
26
27
.
.
.
.
.
.
.
.
31
31
33
38
40
40
40
43
47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Análisis Grafico con Stata
3.1. Visualizando Algunos Comandos . . . . . . . . .
3.2. TWOWAY . . . . . . . . . . . . . . . . . . . . . .
3.3. TWOWAY y SCATTERPLOT . . . . . . . . . .
3.4. Combinando TWOWAY Y SCATTERPLOT . . .
3.4.1. Filtro de Gráficos . . . . . . . . . . . . . .
3.4.2. Unión de Gráficos . . . . . . . . . . . . . .
3.5. Opciones para Edición de Gráficos . . . . . . . . .
3.6. Trabajando con Esquemas y Gráficos Adicionales
3
UdecomBooks
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
ÍNDICE GENERAL
3.6.1.
3.6.2.
3.6.3.
3.6.4.
3.6.5.
Esquemas . . . . . . . . . . . .
Gráficos de Barras Verticales . .
Gráficos de Barras Horizontales
Gráficos de Cajas . . . . . . . .
Gráficos de Pastel . . . . . . . .
4. Análisis de Regresión Lineal
4.1. Regresión Lineal . . . . . . .
4.2. Diagnostico de los Resultados
4.2.1. Efecto Influencia . . .
4.3. Normalidad del Residuo . . .
4.4. Homocedasticidad del Residuo
4.5. Multicolinealidad . . . . . . .
4.6. Linealidad . . . . . . . . . . .
4.7. Especificación del modelo . .
4.8. Independencia . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Variables Categóricas
5.1. Estimación con Variables Categóricas
5.2. El Comando Xi . . . . . . . . . . . .
5.3. Pruebas de Hipótesis . . . . . . . . .
5.4. Creación de Variables Dummys . . .
5.5. Bucles y Programas . . . . . . . . . .
Bibliografı́a
Stata Básico Intermedio
Aplicado a la Investigación Económica
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
49
49
50
51
.
.
.
.
.
.
.
.
.
55
55
59
59
62
63
64
64
65
66
.
.
.
.
.
69
69
70
72
75
75
81
www.iddeasac.com
[email protected]
Sesión 1
Introducción al Stata
1.1.
Iniciando Stata
Stata es una poderosa herramienta en aplicaciones económicas. Puede ayudarnos 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ı́sticos.
En esta sesión introduciremos las nociones básicas del software, para posteriormente 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
UdecomBooks
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)
1.4. Principales Comandos de Trabajo y Análisis
7
Figura 1.3: Estructura Básica
1.4.Principales Comandos de Trabajo y Análisis
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 ventana 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
UdecomBooks
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
summarize
summarize
summarize
summarize
mpg weight
mpg weight if foreign
price if mpg<21.3
price if mpg>=21.3
price, detail
tabulate mpg
table
table
table
table
mpg
rep78, contents(n mpg)
rep78, contents(n mpg mean mpg sd mpg median mpg)
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
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ándolas en una sola. Append, pegara hacia abajo o verticalmente y Merge,
pegara hacia el costado o de forma horizontal.
clear
use base1,
list
use base2,
list
use base3,
list
use base4,
list
clear
clear
clear
clear
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
UdecomBooks
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 debemos 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
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
El comando collapse sirve para convertir una base de datos que contiene
variables para diversas unidades de estudio, en una base de datos que contiene
estadı́sticos de dichas variables (medias, medianas, sumas etc). Permite obtener 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.6)
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.
UdecomBooks
12
1. Introducción al Stata
Figura 1.6: Estructura del comando “split”
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)
1.4. Principales Comandos de Trabajo y Análisis
13
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 emitidos por región, para el año 2002. Genere también una base con la población
mundial a lo largo del tiempo.
UdecomBooks
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 diciembre 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).
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
UdecomBooks
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
label
label
label
label
define
define
define
define
values
getareow 0 "prematuro"
getareow 1 "rec.nac.", add
getareow 2 "lactante", add
getareow 3 "escolares", add
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"
2.3. Comando IF
label
label
label
label
define
define
define
values
17
tipodaow 1 "nta", add
tipodaow 2 "nti", add
tipodaow 3 "nefro tox", add
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 explicativas 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)
summarize
summarize
summarize
summarize
summarize
price
price
price
price
price
if
if
if
if
if
&
!missing(rep78)
(rep78
(rep78
(rep78
(rep78
(rep78
==
<=
==
>=
>=
1) | (rep78 == 2)
2)
3) | (rep78 == 4) | (rep78 == 5)
3)
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”.
UdecomBooks
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
summarize
summarize
summarize
price mpg
mpg price if (foreign == 1)
mpg price if (foreign == 1) & (mpg <30)
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 extranjeros 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.
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
UdecomBooks
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
replace
replace
replace
tabulate
mpg3
=
mpg3
=
mpg3
=
mpg3
=
mpg mpg3
.
1 if (mpg <= 18)
2 if (mpg >= 19) & (mpg <=23)
3 if (mpg >= 24) & (mpg <.)
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?
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 permitirá 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 clasificación:
Figura 2.5: Datos Tipo Numéricos
. Datos cadena de texto, dentro de estos podemos encontrar la siguiente clasificación:
Figura 2.6: Datos Tipo Cadena
UdecomBooks
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
generate int
describe Z P
Z="am"
P=real(Z)
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
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
UdecomBooks
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.
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
UdecomBooks
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 proceso 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 proporciona 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 identificar 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)
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 correspondientes 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.
UdecomBooks
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)
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 descentralizado. 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 deberá 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ı́sticas 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, para 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 dominio 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.
UdecomBooks
30
2. Manejo de Datos
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
UdecomBooks
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
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ómica, 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 proporció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
UdecomBooks
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”
3.2. TWOWAY
35
Figura 3.9: Opciones del “twoway”
UdecomBooks
36
3. Análisis Grafico con Stata
Usemos una nueva base de datos:
clear
use highschool.dta
describe
Figura 3.10: Base Highschool
graph
graph
graph
graph
twoway
twoway
twoway
twoway
histogram read
kdensity read
(histogram read) (kdensity read)
function y=normden(x), range(-4 4)
Figura 3.11: Histograma y Kernel
3.2. TWOWAY
37
Figura 3.12: Más opciones del “twoway”
UdecomBooks
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)
3.3. TWOWAY y SCATTERPLOT
Figura 3.13: Connect
Figura 3.14: Connect sort cmissing
UdecomBooks
39
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)
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)
UdecomBooks
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"))
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
UdecomBooks
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) ///
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
UdecomBooks
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
3.6. Trabajando con Esquemas y Gráficos Adicionales
tw (rarea
high low date) (spike
volmil date)
tw (rarea
high low date) (spike
volmil date, yaxis(2))
tw (rarea high low date) (spike
yscale(range(500 1400) axis(1))
volmil date, yaxis(2)), ///
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 Adicionales
3.6.1.Esquemas
use encuesta.dta
scatter propval100 rent700 ownhome, scheme(vg_blue)
UdecomBooks
47
48
3. Análisis Grafico con Stata
Figura 3.24: Scatter y esquema vg blue
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)
UdecomBooks
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,
graph box wage,
graph box wage,
graph box wage,
over(grade4)
over(grade4) nooutsides
over(grade4) nooutsides over(union)
over(grade4) nooutsides over(union) ///
3.6. Trabajando con Esquemas y Gráficos Adicionales
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)
UdecomBooks
51
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
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 personas, 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.
UdecomBooks
54
3. Análisis Grafico con Stata
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 vamos 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 relacionado con un tamaño de clase pequeño, pocos estudiantes recibiendo comida
55
UdecomBooks
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 regresió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 negativos insertados de manera incorrecta y proporciones introducidos como porcentajes.
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 numero 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émico con nuestro modelo y guardemos dichos valores en la variable fv
predict fv
Veamos los valores estimados y los reales:
UdecomBooks
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 predicció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
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 normal.
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).
UdecomBooks
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
scatter
scatter
crimenes pcturb, mlabel(estado)
crimenes pobreza, mlabel(estado)
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
4.2. Diagnostico de los Resultados
list r
61
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=="ms"
estado=="dc" |
///
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)
UdecomBooks
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 nosotros
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 requiere 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
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
UdecomBooks
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 usaremos 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
predict
scatter
scatter
api00 meals some_col
r, resid
r meals
r some_col
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ámetros 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 que sean significativas. El comando crea 2 variables nuevas, una variable
UdecomBooks
66
4. Análisis de Regresión Lineal
estimada, 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 estimado,
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
linktest
ovtest
acs_k3 full meals
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 datos
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 autocorrelació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?
4.8. Independencia
67
RETO 4
. Trabajar con el archivo “gobusa5089.dta” y contestar las siguientes preguntas:
¿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 estados 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 demográficos (ingreso, población, grupos de edad) son los principales determinantes de los impuestos.
Entre las teorı́as polı́ticas, algunos dicen que los factores polı́ticos partidistas (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 coeficientes, 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ócrata en el congreso local cobran más impuestos que los gobiernos sin
mayorı́a demócrata.
UdecomBooks
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.
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
codebook api00
codebook some_col
codebook yr_rnd
codebook mealcat
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
UdecomBooks
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 mealcat 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
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
UdecomBooks
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 aptitudes 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
¿Si el SAT score aumenta 100 puntos, que tan probable es que el GPA
aumente 0.25 puntos?
Afortunadamente, Stata hace pruebas de hipótesis de manera muy “intuitiva”
¿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
5.3. Pruebas de Hipótesis
73
¿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
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
UdecomBooks
74
5. Variables Categóricas
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
¿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
5.4. Creación de Variables Dummys
75
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 comando “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 programas implementan una plataforma orientada al usuario en lugar de a un
programador.
input famid
1 3281 3413
2 4042 3084
3 6015 6123
end
inc1-inc12
3114 2500 2700 3500 3114 3319 3514 1282 2434 2818
3108 3150 3800 3100 1531 2914 3819 4124 4274 4471
6113 6100 6100 6200 6186 6132 3123 4231 6039 6215
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:
UdecomBooks
76
5. Variables Categóricas
generate
generate
generate
generate
generate
generate
generate
generate
generate
generate
generate
generate
taxinc1 =
taxinc2 =
taxinc3 =
taxinc4 =
taxinc5 =
taxinc6 =
taxinc7 =
taxinc8 =
taxinc9 =
taxinc10=
taxinc11=
taxinc12=
inc1 * .10
inc2 * .10
inc3 * .10
inc4 * .10
inc5 * .10
inc6 * .10
inc7 * .10
inc8 * .10
inc9 * .10
inc10 * .10
inc11 * .10
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
generate
generate
generate
incqtr1
incqtr2
incqtr3
incqtr4
=
=
=
=
inc1 +
inc4 +
inc7 +
inc10+
inc2 +
inc5 +
inc8 +
inc11+
inc3
inc6
inc9
inc12
list incqtr1 - incqtr4
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
5.5. Bucles y Programas
77
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 WHILE:
Ejemplo:
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
UdecomBooks
78
5. Variables Categóricas
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.
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
UdecomBooks
Descargar