Sesión 10 Algunos temas importantes de Stataeconreg.pbworks.com/f/Sesión10WEB.pdf · . count if...
Transcript of Sesión 10 Algunos temas importantes de Stataeconreg.pbworks.com/f/Sesión10WEB.pdf · . count if...
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
Sesión 10
Algunos temas importantes de Stata
Juan D. Barón [email protected]
Métodos Cuantitativos de Economía Regional y urbana
Universidad Autónoma de Occidente
26 de mayo de 2011
Versión : 1.1
Copyright © 2011: La reproducción total o parcial de este material está prohibida
Material provisional y sujeto a cambios
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
1. Sintaxis de comandos en Stata
(una vez más)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
3
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight], options
• Los comandos de Stata tienen esta sintaxis (con excepciones)
• Los paréntesis cuadrados me dicen que esas partes son opcionales
(calificadores y opciones)
• varlist es una lista de nombres de variables
• command es un comando de Stata (entre ellos los que hemos visto)
• exp es una expresión algebraica
• range es un rango de observaciones
• weight es una expresión de ponderadores
• options es una lista de opciones del comando
Ejemplos:
. sysuse auto, clear
. bysort foreign: summ price trunk if price >= 2000 , detail
. list _all in 1/20
. list trunk mpg if price>6000
. assert price>0
. regress price trunk if (price > 6000) & (foreign ==1)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
2. Operadores y expresiones
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
6
Ejemplos de expresiones:
. 2+2+8
. precio/trunk
. precio>20 & trunk >= 10
. precio>20 | foreign == 1
. edad == 25
. ln(precio)
. saldo*4/1000
Estas expresiones pueden ser usadas en donde aparezca exp
(piense en la ayuda de Stata). Ej.:
generate newvar = exp [if] [in]
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
7
Operadores
Stata tiene diferentes tipos de operadores que se pueden usar en las
expresiones
Aritméticos Lógicos Relacionales(numéricos y de texto)
+ suma & y > mayor que
- resta | o < menor que
* multiplicación ! no >= mayor o igual que
/ división ~ no <= menor o igual que
^ potencia == igual
- negación != no igual (diferente)
+ concatenar texto ~= no igual (diferente)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
8
Ejemplos
. sysuse auto
. generate weight2 = weight^2
. count if rep78 > 4
. count if rep78 > 4 & weight < 3000
. list make if rep78 == 5 | mpg > 25
. generate mujer = 1 if genero == 1
. replace mujer = 0 if genero == 0
Note que cuando se asigna (o se define) una variable, un scalar o unamacro, se usa un solo igual “=”. Cuando se requiere evaluar una
expresión se usan dos “==”.
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
3. Generación de variables
(comando generate)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
10
El comando generate nos permite crear nuevas variables. Este puede ser
combinado con las expresiones if e in
El comando replace me permite reemplazar los valores de una variable ya
creada. Este puede ser combinado con las expresiones if e in
Ejemplos:
. generate mivar01 = 2+2 if precio == 0
. generate mivar02 = ln(2+2) in 10/30
. generate mivar03 = mivar01 + mivar02 if (precio != 0) in 2/100
. generate nombres = “Juan David”
. replace nombres = reverse(nombres)
Notas:
• Las nombres de las variables es mejor limitarlos a 8 caracteres,
sin espacio, sin caracteres extraños y empezando con letra
• Para Stata, la variable Precio es diferente de la variable precio
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
4. Funciones
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
12
• La última diapositiva tenía algunos ejemplos de funciones. Las
funciones hacen la vida más fácil. En Stata, funcionan de la misma
manera que en otros programas
• Hay funciones matemáticas, de texto, de programación, de matrices,
de series de tiempo, de fechas y horas
• Para ver las funciones disponibles: . help functions
Ejemplos:
. display ln(20.3)
. display wordcount(“Este es un ejemplo”)
. generate lnsalario = ln(salario)
. generate aleatorio = uniform()
. generate ejemplo = int(100*aleatorio)
. generate srprice = sum(price)
. generate nombrel = wordcount(names)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
13
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
5. Generación de variables
(comando egen)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
15
El comando egen es una extensión del comando generate que provee
funciones de creación de variables a partir de nuevas funciones
Las funciones adicionales de egen se pueden ver con: . help egen
Ejemplos:
. sysuse auto, clear
. egen pricepr = mean(price)
. egen mvars = rowmean(price trunk weight)
. egen eje01 = total(foreign)
. egen rank = rank(mpg)
. egen racesex = group(race sex)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
6. Creación de variables dummy
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
17
• Una variable dummy, o ficticia, es una variable que toma dos valores,
en general 1 o 0 (también variable binaria o dicótoma)
• El nombre de la variable hace referencia al grupo que toma el valor 1.
Ej.: si la variable se llama mujer (dummy de mujer), se entiende que la
variable toma valor 1 si la persona es mujer y 0 en otro caso
• A menudo las vars. dummy se crean a partir de variable categóricas.
Use cualquiera de los comando vistos para saber los valores (ej. tab)
• Suponga que la variable genero toma únicamente dos valores:
1 para hombres y 2 para mujeres. Formas de crear vars. dummy:
. tabulate genero, gen(d_)
. generate mujer = (genero==1)
. generate hombre = (genero==2)
. generate mujer = 1 if (genero == 1)
. replace mujer = 0 if (genero == 2)
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
7. Missing values
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
19
• Un “missing value”, o valor faltante, se reconoce en la base de datos
por un punto “.” en las variables numéricas o por un espacio en
blanco “ ” en las variables de texto
. sysuse auto, clear
. list rep78 in 1/10
• Otros missing values “.a”, “.b”, “.c”, …., “.z”
• Cualquier número es menor que los missing value
. assert 5 < .
. assert 5 > .
• Al crear variables dummy tenga mucho cuidado si la variable
categórica tiene missing values. Si la categórica tiene valores
faltantes, las dummy creadas a partir de ella deben tenerlos también
• Antes de generar una dummy revise si la variable tiene valores faltantes: . codebook missing
. tab rep78, missing
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
20
• La forma correcta de crear variables dummy cuando hay missing
values es cualquiera de las siguientes. Suponga que la variable
genero tiene missing values:
. tabulate genero, gen(d_)
. generate mujer = (genero == 1) if !missing(genero)
. generate mujer = (genero == 1) if (genero !=.)
. generate mujer = 1 if (genero == 1)
. replace mujer = 0 if (genero == 2)
. replace mujer = . if (genero == .)
• Si la variable categórica es de texto, simplemente use “” alrededor de los valores (o texto) que toma la variable
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
8. Macros y escalares
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
22
• Un escalar, “scalar”, es una expresión que contiene un número o una
expresión de texto
• Una vez defino el escalar, puedo invocarlo por su nombre
• Puedo usar las funciones numéricas y de texto
• Para ver los contenidos de los escalares definidos: . scalar dir
• Para ver el contenido de un escalar: . dis ejemplo
Ejemplos
. scalar a = 1345
. scalar b = sqrt(2) + a
. scalar c = “Hola Mundo”
. scalar d = word(c,2)
. scalar dir
. scalar b
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
23
Macros
• En Stata una macro es una forma rápida de escribir “algo”: una cosa
que representa a otra
• Por ejemplo, . local misvars = “edad peso genero”
. regress outcome `misvars’
Es idéntico a:. regress outcome edad peso genero
• La forma de definir una macro es: . local macroname = exp
• Para obtener el contenido de una macro local (reemplazarlo donde se quiera) lo que tiene que hacer es escribir: `macroname’
(comilla izquierda: alt+96; comilla derecha: alt+39 )
. local ejemplo “Juan Pedro Camilo, Alejandro”
. display “`ejemplo’”
. display `ejemplo’
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
24
Las macros pueden contener cualquier cosa:
Ejemplos
. local myif “precio > 20 & trunk == 10”
. local nombres “genero edad años colegio matematicas”
. local COUNTER = 1
. local COUNTER “1”
. local x = 2
. local y = ln(`x’)
. local x 2
. global ejem01 “c:\juan\utbpublica\ejemplo”
. local ejem02 “d:\pedro”
. macro dir
. dis “`ejem01’”
. dis “$ejem01”
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
25
• Además de las macros locales también hay macros globales. global apellidos “Pérez Gómez Navarro Bernal Cepeda”
• Las globales tienen las mismas características de las macros locales
• La diferencia entre una macro global y una local es que la local
desaparece una vez el archivo do termina de correr mientras que la
global permanece hasta que sea redefinida o hasta que se cierre Stata
• Esa característica hace que sea mejor no usar globales
• Ver contenido de una macro local: . display “`macroname’”
• Ver contenido de una macro global: . display “$macroname”
• En general, es mejor NO usar igual para definir las macros
• Las macros pueden ser invocadas en cualquier momento, y en
cualquier comando o expresión
• Las macros tienen unas funciones (extendidas) adicionales MUY
convenientes:
. help macros
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
9. ¿Dónde quedan guardados los
resultados de los comandos de Stata?
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
28
• Cada vez que ejecuta un comando en Stata, usted ve unos resultados.
Esos resultados, y otros, son guardados en retornos e() y r()
(estos retornos son macros)
• Cada comando genera unas macros específicas
• Usted puede asignar estos retornos a macros, escalares o matrices
(según sea el caso) si necesita usarlos luego
• Una vez un comando nuevo se ejecuta, los retornos se reemplazan
por los del nuevo comando. Los comandos de estimación crean e()s.
• Para ver los retornos después de ejecutar un comando: . ereturn list y . return list
. sysdir auto, clear
. summ price
. return list
. ereturn list
. local medprecio = r(mean)
. display `medprecio’
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
10. Loops
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
30
• Hay muchas tareas que por sus características mecánicas y
repetitivas pueden ser programadas fácilmente para que el
computador las realice automática y eficientemente
• Para ello, se utilizan los “loops” denominados foreach y forvalues
• Para ver los detalles digite: . help foreach
• En las siguientes diapositivas se dan unos ejemplos
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
31
Ejemplo de forvalues
forvalues i= 1(1)10 {
display “Este es el número: `i’”
}
forvalues i= 1(2)100 {
forvalues j= 1(1)10 {
display “La combinación ij es |`i’ - `j’|”
}
}
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
32
Ejemplo de foreach
clear all
sysuse auto
foreach x of varlist mpg-gear_ratio {
twoway (scatter price `x’), name(g_`x’)
}
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
33
Ejemplo de foreach
clear all
sysuse auto
foreach x of varlist mpg-gear_ratio {
twoway (scatter price `x’), name(g_`x’)
generate `x’2 = `x’*`x’
twoway (scatter price `x’2), name(g_`x’2)
}
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
11. Gráficos en Stata:
archivos do y manejo interactivo
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
35
• Stata genera gráficos de muy buena calidad y de muchos tipos
• Generar un gráfico personalizado a partir de código (con colores y
formatos específicos) requiere el conocimiento de muchos pequeños
comando y opciones
(el gráfico por defecto es muy fácil de hacer, aunque feo)
• Cuando usted realiza un gráfico, o realiza otra actividad a través del
menú, Stata muestra el comando que lo generó en el output
• SOLUCÍÓN: genere el gráfico interactivamente y copie comando a su
archivo do. Luego se pueden ajustar pequeñas cosas de ser
necesario
• Puede hacer lo mismo con comandos que quiera usar pero que no
sepa. Use el menú interactivo, haga lo que quiera y cópielo a su
archivo do una vez obtiene lo deseado
La r
ep
rod
ucció
n t
ota
l o
parc
ial d
e e
ste
mate
rial está
pro
hib
ida.
Mate
rial p
rov
isio
nal y s
uje
to a
cam
bio
s
Resumen
• Es este sesión se han visto algunos temas importantes para el manejo
más efectivo de Stata
• Los temas se vieron rápidamente. Para más detalles vea la ayuda o los
recursos que se encuentran en la página del curso
36