manual del curso stata_rpl
DESCRIPTION
curso de stataTRANSCRIPT
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
1
Universidad del Mar
Campus Huatulco
Curso-Taller
Introducción al manejo de
Stata
Dr. Ricardo de la Peña Leyva
Agosto de 2015.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
2
Contenido
Sesión previa. El entorno de Stata ....................................................................................................... 4
Results............................................................................................................................................... 4
Variables ........................................................................................................................................... 4
Review .............................................................................................................................................. 4
Command ......................................................................................................................................... 4
Properties ......................................................................................................................................... 5
Datos (.dta) ....................................................................................................................................... 6
Sintaxis (.do) ..................................................................................................................................... 6
Output (.log) ..................................................................................................................................... 6
Extensiones (.ado) ............................................................................................................................ 6
Sesion 1. Un ejemplo sencillo .............................................................................................................. 7
� Preguntas de repaso ................................................................................................................ 8
Respuestas a las preguntas de repaso .......................................................................................... 9
Tarea 1. ..................................................................................................................................... 10
Sesion 2. Utilizando archivos de datos .............................................................................................. 12
� Preguntas de repaso ............................................................................................................. 12
Respuestas a las preguntas de repaso ...................................................................................... 12
Sesion 3. Describiendo datos. Parte 1 ............................................................................................... 14
Sesión 3. Describiendo datos. Parte 2. .............................................................................................. 17
� Preguntas de repaso ............................................................................................................. 18
Respuestas a las preguntas de repaso ........................................................................................ 19
Tarea 2. ....................................................................................................................................... 21
Sesión 4. Grupos y suconjuntos de datos .......................................................................................... 22
Comparación y valores perdidos ................................................................................................. 22
� Preguntas de repaso ............................................................................................................. 23
Respuestas a las preguntas de repaso ...................................................................................... 23
Sesión 5. Cambiando valores a los datos........................................................................................... 26
� Preguntas de repaso ........................................................................................................... 27
Respuestas a las preguntas de repaso ...................................................................................... 28
Sesión 6. Creación de variables binarias o dummy ........................................................................... 32
Sesión 7. Limpiando datos ................................................................................................................. 35
� Preguntas de repaso ............................................................................................................. 37
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
3
Respuestas a las preguntas de repaso ...................................................................................... 38
Sesion 8. Los estudiantes: un repaso y graficos ................................................................................ 41
� Preguntas de repaso ............................................................................................................. 43
Respuestas a preguntas de repaso ............................................................................................ 43
Sesion 9. Estimación econométrica ................................................................................................... 45
Sesion 10. Un modelo econométrico para la economía estadounidense ........................................ 52
Tarea 3. ..................................................................................................................................... 55
El caso de un modelo econométrico cuadratico ............................................................................ 56
Sesion 11. El modelo de consumo para Mexico (Primera Parte) ...................................................... 58
Tarea 4. ..................................................................................................................................... 60
Sesion 11. El modelo de consumo para Mexico (Segunda Parte) ..................................................... 61
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
4
Sesión previa. El entorno de Stata
Stata se organiza en diversas ventanas que nos aportan información y nos permiten
realizar distintas operaciones. Las principales ventanas en Stata son Review, Results,
Command, Variables, Properties
Results En esta ventana encontramos el logo de Stata, la versión del programa que se está
usando y la memoria que tenemos disponible para cargar los datos y el número de
variables. En esta ventana de resultados, como su nombre lo indica, se tendrán todo tipo
de resultados sobre los comandos que se ejecuten; también aparecen mensajes de lo
que se está haciendo o lo que está ejecutando el programa, así como mensajes si
cometemos algún tipo de error. Los colores de las palabras nos indican si son resultados
de un comando, si es un comando o si es un error. Esta opción de los 4 colores está
predefinida pero se puede cambiar. Con clic derecho sobre la ventana podemos copiar,
imprimir el texto, o establecer las preferencias para esta ventana.
Variables Esta ventana, que aparece a un lado de la ventana de resultados, muestra las variables
que contiene el archivo que se abrió o del fichero que actualmente se tiene en memoria,
también nos muestra información de las etiquetas de cada una de las variables; así como
la información relevante de cada variable (Name, Label, Type y Format). Puede utilizarse
para introducir los nombres de las variables en la ventana de comandos haciendo click
sobre la variable. Igualmente, situándonos en la variable y haciendo click derecho se
puede introducir comentarios a esa variable. Para ver las notas de un fichero se puede
usar el comando .notes list.
Review La ventana de revisión, muestra una lista de los comandos que recientemente se han
ejecutado desde que se abrió algún tipo de archivo, sea de datos (*.dta), un do-file (*.do)
o un log (*.log). Desde esta ventana se pueden incluir comandos tecleados con
anterioridad en la ventana command, con hacer click una vez en el mismo. Y haciendo
click dos veces se copia y ejecuta.
Command Esta es la ventana donde se deben escribir los comandos que se desean ejecutar. Se
pueden recuperar comandos escritos anteriormente o posteriormente con la tecla ePág
o AvPág, hasta llegar al comando buscado, o también se pueden buscar en la ventana
Review y darle click. Otra ayuda importante en esta ventana es la opción de completar
automáticamente el nombre de una variable tecleada parcialmente con la tecla Tab.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
5
Properties En esta ventana se presentan las propiedades y características de las variables cargadas
en las bases de datos.
En general, Stata permite ser usado por medio de ventanas con la opción del menú
principal convencional. Una vez que se selecciona una opción del menú, se puede buscar
y seleccionar la opción de lo que se desea hacer (inmediatamente el programa abre otra
ventana, donde se define la tarea que deseamos que realice el programa). La otra opción
es por comandos o programación, que se debe hacer directamente en la ventana de
comandos o creando un do-file.
Muchos de los comandos de Stata se pueden abreviar a las primeras letras. Por ejemplo:
el comando describe se puede escribir des, teniendo el mismo resultado. Es
fundamental tener cuidado en el uso de los comandos porque este software es muy
sensible al uso de mayúsculas y minúsculas. Todos los comandos de Stata se escriben en
minúsculas, mientras que los nombres de las variables pueden ir en mayúsculas,
minúsculas o combinaciones.
Ejemplo: Stata puede trabajar como calculadora usando el comando display
display 2+2
Los comandos pueden ser abreviados:
di 2+2
La barra de herramientas contiene iconos que permiten abrir y guardar archivos,
imprimir y manipular ventanas, entre otros. Algunas herramientas muy importantes
son:
Log Begin/Close/Suspend/Resume,
New Do-File Editor,
Data Editor (Edit),
Data Editor (Browser).
Estos dos ultimos presentan los datos en forma de hoja de cálculo, sin importar qué tan
grande sea el conjunto de datos. El Do-File Editor, le permite construir un archivo de
comandos de Stata o .do-.le., para ser ejecutado en su totalidad o por partes. El Log
Begin/Close/Suspend/Resume permite abrir, cerrar, suspender o resumir archivos Log.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
6
Datos (.dta) Los datos que utilizaremos en stata los guardaremos en formato .dta, que es el formato
propio de Stata. De todos modos, Stata tiene la capacidad de importar datos en muy
diversos formatos (Excel, SPSS, ASCII, CSV, etc).
Sintaxis (.do) Los archivos de sintaxis se guardan en formato .do, y por eso los conocemos cómo do-
files. En realidad son archivos de texto que podemos editar en múltiples programas,
pero nos sirven para conservar la sintaxis de nuestro trabajo.
Output (.log) Si queremos conservar los resultados lo podemos hacer en un ‘log file’. Podemos elegir
dos tipos, aunque el más recomendable es .log, que no tiene formato y nos garantiza
compatibilidad con otros editores de textos.
Extensiones (.ado) Es uno de los puntos fuertes de Stata. Los usuarios pueden escribir funciones y
comandos nuevos y distribuirlos gratuitamente. De este modo, la potencia del programa
se multiplica, ya que allí donde la distribución oficial no llega, sí lo hacen los usuarios.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
7
Sesion 1. Un ejemplo sencillo
Cargando datos, generando una nueva variable, guardando una
base de datos y creando archivos log.
Comenzaremos dando doble clic al icono del programa ubicado en el escritorio de la
computadora. Escribiremos los siguientes comandos en la ventana command y al mismo
tiempo damos enter después de cada línea escrita:
clear
input a b c
1 5 10
0 8 7
1 4 6
end
generate d=c-b
list
browse
save myfile
Cuando se abre Stata es importante saber donde se esta trabajando, es decir, en que
carpeta se están guardando los resultados o desde que carpeta vamos a llamar la base
de datos, etc. Si no se sabe la carpeta o directorio donde Stata esta ubicado podemos
averiguarlo escribiendo el comando pwd. En mi caso, el directorio es
D:\Documents\Stata13
Al instalar Stata, varios archivos son creados para su uso posterior. El mas utilizado es el
archivo “Stata” cuya dirección esta indicada en la parte inferior izquierda de la pantalla;
es aquí donde se guardan los datos y resultados si no se especifica otra ruta, escriba la
palabra sysdir en la barra de comandos. La ruta de estos archivos puede ser modificada
utilizando el comando sysdir set nombre del archivo seguido por la nueva dirección. La
ruta del archivo “Stata” o directorio de trabajo también puede ser modificada
escribiendo el comando cd seguido por la nueva ruta. Para este caso escribiremos lo
siguiente (tambien puede realizarse a través de las ventanas).
cd "D:\Desktop\CURSO de STATA"
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
8
La ventaja de indicar desde un comienzo en que carpeta de la computadora se esta
trabajando, es que evita indicar la ruta completa de los archivos cada vez que queramos
abrir o guardar una base de datos. Obviamente esto tiene sentido cuando para un
trabajo específico tenemos todos los archivos necesarios en la misma carpeta. Por
ejemplo, si estamos trabajando con información de tres bases de datos distintas, y
queremos dejar la información relevante para el estudio en una sola base datos (más
adelante veremos como hacer esto), lo ideal es trabajar en una sola carpeta, y no tener
las tres bases de datos repartidas en carpetas distintas. Si no están en la misma carpeta
no es útil indicarle el directorio al comienzo, ya que igual cuando llamemos a cada una
de las bases de datos, al estar en carpetas distintas, tendremos que cambiar la ruta.
� Preguntas de repaso
o Data Security Plans
1. El comando input introduce datos a la memoria de Stata. ¿Cuál es el resultado
del comando input? En otras palabras, ¿donde se guardaron esos números?
2. ¿Qué es lo que hace el comando generate?
3. Los comandos list y browse muestran el contenido de la memoria de Stata.
¿Donde están los resultados de todos los comandos ejecutados? ¿Que
resultados nos da el comando log?
4. El comando save guarda un archivo permanente. ¿Dónde està el archivo creado
“myfile”?
5. ¿Qué es lo que contiene el archivo “myfile"?
6. ¿Que sucede si escribes el comando generate antes del comando input?:
generate d=c-b
input a b c
1 5 10
0 8 7
1 4 6
end
7. ¿Qué sucede si escribes la variable “C” en mayúsculas en el comando generate?
input a b c
1 5 10
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
9
0 8 7
1 4 6
end
generate d=C-b
8. ¿Cual es la diferencia entre el comando list y el comando edit?
Respuestas a las preguntas de repaso
1. Los numeros fueron almacenados en la memoria (RAM) de la computadora. Los
datos almacenados conceptualmente son tres renglones (observaciones) y tres
columnas (variables, asi como en una hoja de Excel.
2. Creó una nueva variable nombrada “d” con un valor en cada observación.
3. Todos los resultados de las acciones realizadas se presentan en la ventana de
resultados. Una excepción es browse, el cual abre una nueva ventana. El
comando log crea un archivo permanente con el contenido de la ventana de
resultados mientras escribes los comandos.
input a b c
1 5 10
0 8 7
1 4 6
end
generate d=c-b
log using mylog.log
list
log close
save myfile
Aquí el comando log crea un archivo llamado mylog.log que contiene los resultados de
la lista de los comandos utilizados y de alguno otro contenido de la ventana de
resultados. Tambien se puede crear el archivo log desde el principio: file>log>begin y
poner nombre al archivo. Despues al finalizar es necesario cerrar el archivo log.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
10
/* Para agregar mas resultados a un archivo log existente, se
escribe la opcion append */
log using mylog.log, append
/* Para reemplazar un archivo log, se escribe la opción replace
*/
log using mylog.log, replace
/* Noten que la opción replace borrará el contenido de la versión
previa del log */
4. El archivo guardado y el archivo log creado con los comandos pueden
encontrarse con el comando del present working directory (pwd). Se puede
cambiar con el comando cd y después escribir la ruta. Stata automáticamente
agrega el sufijo “.dta” a los archivos creados con el comando sabe
5. Contiene un archivo con extensión .dta el cual tiene tres observaciones de cuatro
variables.
6. El resultado seria un error: “c not found”, es decir, el programa no encuentra la
variable c.
7. El programa reporta el siguiente mensaje "C not found", porque Stata distingue
entre mayúsculas y minisculas.
8. Ambos comandos sirven para visualizar las observaciones en pantalla, se puede
utilizar edit o bien list seguido por el nombre de la variable o variables que se
desean visualizar. La diferencia entre edit y list es que el primero despliega toda
la hoja de cálculo mientras el segundo despliega en la ventana de resultados.
Tarea 1.
1. Introducir los siguientes datos a Stata a través del Data Editor. Luego escibir en
la ventana de comandos lo siguiente: list, des y su. Describa los resultados.
Guarde el archivo.
Nombre Edad Peso Genero
Maria 12 123 F
Pedro 65 215 M
Joel 31 187 M
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
11
Luisa 15 89 F
Antonia 43 150 F
Petra 8 58 F
Luis 76 126 M
Enrique 50 312 M
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
12
Sesion 2. Utilizando archivos de datos
Limpiando la memoria, utilizando un archivo de Stata, guardando
cambios en los archivos
En la Sesion 1 creamos un acrhivo permamente de Stata llamado myfile.dta. Este
ejercicio usará este archivo. Escribe estos comandos y observa los resultados (no se les
olvide cambiar de directorio de trabajo):
clear
use myfile
drop d
save myfile
save myfile,replace
Tambien existe otros comandos para abrir bases de datos como:
/* Bases de datos en la red */
webuse
/* Base de datos cargados en su directorio de Stata */
sysuse
� Preguntas de repaso
1. El comando clear command remueve datos de la memoria de Stata. ¿Por qué
necesitamos este comando antes de copiar el nuevo archivo de datos dentro de la
memoria de Stata?
2. ¿Para que se utilizan los comandos use y drop?
3. ¿Por qué se reporta el mensaje de error: file myfile.dta already exists cuando uno
escribe el comando sabe?
4. ¿Cuál es la utilidad del comando clear?
Respuestas a las preguntas de repaso
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
13
1. El Stata solo puede mantener un conjunto de datos en la memoria. En este
sentido, el programa protege los datos si accidentalmente se reescribe y
destruye los datos en la memoria. Stata requiere que la memoria sean limpiada
antes de iniciar el trabajo.
2. Este comando se utiliza para trabaja con el archivo que se esta requiriendo.
Asume que el archivo tiene la siguiente ruta:
“D:\Desktop\CURSO de STATA"\myfile.dta"
Por su parte el comando drop borra una o dos variables. En este ejemplo solo lo
utilizamos de manera simple y superficial. Se verá más a detalle en la siguiente sesión.
3. Stata notifica cuando se pretende reescribir un archivo que ya existe. Esto da la
oportunidad para reconsiderar si realmente se desea modificar el archivo
existente. La opción de reescribirlo se logra escribiendo:
save myfile,replace
4. El programa debe estar limpio, sin ninguna base de datos ya cargada. Para
limpiar el programa de otras bases de datos se debe utilizar el comando clear. Si
he estado trabajando una base de datos previamente la cual se ha modificado y
no he guardado estas modificaciones, al intentar abrir una nueva base de datos
sin limpiar antes arrojará el mensaje de error.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
14
Sesion 3. Describiendo datos. Parte 1
Describiendo las variables: media, distribución de frecuencias y
tipos de variables
Utilizaremos ahora una base de datos real. El archivo es Divorcios.dta. Los comandos de
principio son los siguientes:
log using "D:\Desktop\Divorcios.smcl"
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del
Curso\divorciosECU2010.dta", clear
Ahora haremos una pequeña descripción de los datos contenidos en la base de datos
con el comando:
des
Podemos hacer uso del comando Help para conocer el significado de los comandos, por
ejemplo,
help summarize
Luego podemos utilizar el comando summarize para visualizar lo siguiente:
provhabm byte %20.0g prov Provincia Habitual del Divorciado
instm byte %24.0g edu Nivel de Instrucción De La Divorciada
hijom byte %10.0g Número de Hijos de la Divorciada
edadm byte %10.0g edad Edad de la Divorciada
provhabh byte %20.0g prov Provincia Habitual del Divorciado
insth byte %24.0g edu Nivel de Instrucción del Divorciado
hijoh byte %10.0g Número de Hijos del Divorciado
edadh byte %10.0g edad Edad del Divorciado
duramat byte %10.0g Duración del Matrimonio
mesmat byte %10.0g mes Mes del Matrimonio
aniomat int %10.0g Año del Matrimonio
mesdiv byte %10.0g Mes de Divorcio
aniodiv int %10.0g Año del Divorcio
prov byte %20.0g prov Provincia de Inscripción
codmes byte %10.0g mes Mes de Inscripción
codanio int %10.0g Año de Inscripción
variable name type format label variable label
storage display value
size: 346,389
vars: 16 25 Jul 2011 09:08
obs: 18,231
Contains data from D:\Desktop\CURSO de STATA\Datos del Curso\divorciosECU2010.dta
. des
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
15
Se recomienda revisar ampliamente esta información valiosa para el análisis. Un
comando interesante es tabstat, pero antes revisemos este comando con la ayuda
de Stata.
help tabstat
/* Vamos a estimar la edad promedio en la que los hombres se
divorcian
tabstat edadh
/* Ahora quizás estemos interesados en un minimo, máximo,
desviación estándar y la media de la edad de los divorciados */
tabstat edadh, stat(mean sd min max)
/* Ahora quiero comparar la información anterior con la edad de
las mujeres */
tabstat edadh edadm, stat(mean sd min max) /* Una conclusión es
que las mujeres se divorcian mas jóvenes */
/* ¿Que tanto duran los matrimonios según la encuesta? */
tabstat duramat
/* Podríamos suponer que la duración del matrimonio varía de
acuerdo al mes de casamiento */
tabstat duramat, by( mesmat ) /* la gente que se casa en mayo dura
más, en promedio*/
/* Con mayor información */
provhabm 18231 13.54945 13.56756 1 88
instm 18231 3.883605 2.259265 0 9
hijom 18231 .8349515 .9957223 0 9
edadm 18022 37.59605 10.94813 16 91
provhabh 18231 14.41704 15.33311 1 90
insth 18231 3.823542 2.229623 0 9
hijoh 18231 .106083 .4683531 0 9
edadh 18164 40.63984 11.50872 17 95
duramat 18231 14.11376 10.1806 0 62
mesmat 18231 6.538808 3.493198 1 12
aniomat 18231 1995.42 10.18968 1947 2010
mesdiv 18231 6.404147 3.387501 1 12
aniodiv 18231 2009.64 1.138875 1963 2010
prov 18231 11.36087 5.656412 1 24
codmes 18231 6.421864 3.385818 1 12
codanio 18231 2010 0 2010 2010
Variable Obs Mean Std. Dev. Min Max
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
16
tabstat duramat, s(mean sd min max ) by(mesmat)
/* Podriamos pensar que las personas con mayor educación duran
mas en el matrimonio, ¿es asi? */
tabstat duramat, by( insth )
tabstat duramat, by( instm )
/* ¿Tendrá que ver la relación entre edades de las personas la
causa de su divorcio? */
/* Vamos a crear una nueva variable que sea 1 cuando el nivel de
instrucción de los divorciados sean diferentes y 0 cuando sea
iguales */
generate edu_dif=( insth != instm )
/* Ahora vamos a tabular la duración del matrimonio por la nueva
variable */
tabstat duramat, by( edu_dif )
/* Se observa que cuando los niveles educativos son diferentes
los matrimonios duran menos años */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
17
Sesión 3. Describiendo datos. Parte 2.
Describiendo las variables: media, distribución de frecuencias y
tipos de variables
Ahora utilizaremos otra base de datos. Se refiere a la Encuesta sobre servicios de salud
en Tanzania en 1999. Copie cada uno de los siguientes comandos y pégalos en la
ventana de comandos y presiona enter. Observe los resultados. Nota que las letras en
negritas son abreviaciones aceptables (No se olviden de comenzar un archivo log).
clear /* Limpia la memoria */
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del Curso\EXAMPFAC.DTA",
clear
describe
summarize
codebook
su pill-natural /* Tabula las variables pill hasta la natural */
su fphour* /* Tabula todas las variables fphour */
tab factype authorit
codebook urbrur facname
tabulate urbrur
tab urbrur, nolabel missing plot
/* nolabel muestra el valor numérico pero el valor de la etiqueta,
missing muestra cuantas observaciones tienen valores perdidos y
plot proporciona una comparación grafica de las frecuencias */
/* Tabula las variables cruzadas */
tab factype urbrur
/* Tabula las variables separadas */
tab1 factype urbrur
/* Tabula las variables cruzadas */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
18
tab2 factype urbrur
/* Estima porcentaje por fila, por columna y por celda */
tab2 factype urbrur, row col cell
� Preguntas de repaso
1. El comando describe detalla cada una de las variables. ¿A qué se refieren los
términos “double”, “str42”, “byte”, etc. de la segunda columna? ¿Los colores
indican algo?
2. ¿Cómo puedo especificar el tipo de datos que deseo utilizar?
3. El comando summarize reporta el número de observaciones, media, desviación
estándar, mínimo y máximo para cada variable. ¿Por qué es el número de
observaciones es diferente para algunas variables, incluso para facname es 0?
4. ¿Cómo puedo resumir un conjunto específico de variables?
5. ¿Cuándo es útil el comando codebook?
6. ¿Qué es lo que hacen las opciones nolabel, missing, y plot sobre el comando
tabulate?
7. ¿Cómo puedo obtener tablas cruzadas?
0.00 0.40 0.00 0.40
0.00 1.25 0.00 0.40
0.00 100.00 0.00 100.00
ConsultHosp 0 2 0 2
type Rural Urban Mixed Total
Facility 1=Rural 2=Urban 3=Mixed
.00404858
. display 2/494
.0125
. display 2/160
Total 236 160 98 494
Other 1 2 1 4
Clinic 5 24 4 33
Dispensary 153 74 48 275
HealthCentre 48 23 12 83
OtherHosp 7 7 4 18
RegHosp 3 13 0 16
DistHosp 19 15 29 63
ConsultHosp 0 2 0 2
type Rural Urban Mixed Total
Facility 1=Rural 2=Urban 3=Mixed
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
19
8. ¿Qué hace el comando lookfor?
Respuestas a las preguntas de repaso
1. Se refieren a los tipos de cada variable. La siguiente tabla describe cada uno de
las tipos de variables que se utiliza en Stata:
Type Min Max Precision Bytes Type
----------------------------------------------------------------
byte -2 digits 2 digits 2 digits 1 integer
int -4 digits 4 digits 4 digits 2 integer
long -9 digits 9 digits 9 digits 4 integer
float -10**38 10**36 10**-8 4 real
double -10**307 10**307 10**-16 8 real
str1 1 1 1 string
o Secure Data Facility
Stata trabaja con distintos tipos de variables, de momento vamos a fijarnos en las dos
grandes categorías de variables que podemos encontrar: numéricas y de texto o de
cadena. Para saber qué tipo de variable es cada una, podemos usar el comando describe,
o ver la ventana properties si la tenemos abierta.
Las variables numéricas se almacenan en Stata según uno de los siguientes tipos: byte,
int, long, float (por defecto) y double. Las variables de tipo byte son almacenadas en 1
byte, las de tipo int en 2 bytes, las de tipo long y float en 4 bytes y las de tipo double en
8 bytes.
Las variables alfanuméricas, es decir, las que contienen texto, son de tipo cadena
(string), que se denota por str#. En cuanto al formato de visualización, es decir, la forma
en que los datos son presentados, es el siguiente: para variables numéricas, viene
expresado como %w.d, seguido de uno de estos tres formatos: e, f, g. Con w denotamos
un número entero que especifica la anchura del formato, mientras que d indica el
número de dígitos que siguen al punto decimal. Para variables alfanúmericas, el formato
es %ws, donde s indica string y w es un número entero que indica la anchura dada a la
variable. Por defecto, el formato que asigna Stata a los distintos tipos de variable es:
byte %8.0g
int %8.0g
long %12.0g
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
20
float %9.0g
double %10.0g
str# %#s (ó %9s si la anchura es menor de 9)
Es posible cambiar el formato de visualización de las variables con el comando format.
Por ejemplo, si en nuestros datos la variable var1 es tipo float, formato %9.0g., y
queremos darle formato %10.2g la instrucción será:
format var1 %10.2g
Los colores señalan el tipo de variable. Por ejemplo en nuestra base de datos:
2. Se puede especificar el tipo de datos escribiendo el comando generate:
gen byte a=0
El formato de visualización no afecta a la precisión de almacenamiento de los datos. La
cantidad de memoria que consumen nuestros datos puede reducirse con el comando
compress. Este comando reduce el tamaño de los datos del siguiente modo: double pasa
a long, int o byte, float pasa a int o byte, long pasa a int o byte, int pasa a byte, y string
pasa a longitud de cadena más corta.
3. La columna de “Obs” muestra el número de observaciones para variables
numéricas. Para variables alfanuméricas, es decir, las que contienen texto, como
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
21
facname son de tipo cadena (string), que se denota por str#, las observaciones
son siempre 0.
4. Existen dos maneras para especificar un conjunto de datos, ambas son
mostradas en el ejemplo:
pill-natural (nos da la primera variable y la última variable)
fphour* (nos da todas las variables cuya base tengan fphour )
Estos dos métodos funcionan con todos los comandos de Stata. Para usar el primer
método, es necesario conocer la posición de cada variable en el archivo de datos de
Stata. Utilice el comando describir para ver esas posiciones, o buscarlos en la ventana
Variables.
5. El comando codebook informa sobre las variables: estadísticas descriptivas,
etiquetas, detalle de los valores missing, etc. Si no se especifican variables,
codebook despliega estas estadísticas para todas las variables de la base de
datos
6. Esas tres opciones proporcionan información extra acerca de la variable en
cuestión:
nolabel muestra el valor numérico pero el valor de la etiqueta
missing muestra cuantas observaciones tienen valores perdidos
plot proporciona una comparación grafica de las frecuencias
7. Las dos maneras de obtener frecuencias de dos variables son (comandos
equivalentes):
tab factype urbrur
tab2 factype urbrur
8. El comando lookfor sirve para encontrar variables en la base de datos, por
ejemplo, si queremos cual de las variables se refiere a factype. En cambio, el
comando summarize permite obtener la estadística descriptiva básica de las
variables:
lookfor factype
summarize
Tarea 2.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
22
1. Obtenga una base de datos de sus compañeros de clase (Edad, Sexo, Ciudad,
Preparatoria, Horas frente a internet, etc.), describa esos datos de acuerdo con
los comandos vistos hasta ahora en el curso.
Sesión 4. Grupos y suconjuntos de datos
Comparación y valores perdidos Continuaremos con los datos de la Encuesta sobre Servicios de Salud en Tanzania. Copia
y pega los siguientes comandos en la ventana de comandos, presiona enter y observa lo
que resulta (No es necesario copiar los comentarios (palabras dentro de los corchetes /* */))
clear
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del Curso\EXAMPFAC.DTA",
clear
/* Para obtener los hospitales propiedad del gobierno */
tab factype if authorit==1
/* Antigüedad de los hospitales menores o igual a 4 años */
su age if factype<=4
/* Disponibilidad de condones en otros hospitales, clínicas u
otros así como valores perdidos */
tab malecond if authorit==4 | (authorit>=7 & authorit<=9), missing
/* Ordena las variables por ubicación, luego reporta la edad
promedio del servicio por ubicación urbana o rural */
sort urbrur
by urbrur: su age
/* Antigüedad promedio de las instalaciones que ofrecen la
planificación familiar por ubicación urbano-rural */
by urbrur: su age if pill<.
/* Muestra las primeras 10 observaciones en la memoria */
list factype authorit urbrur in 1/10
/* También pude ser útil los siguientes comandos son iguales */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
23
tabstat age, by(urbrur) stats(mean n)
table urbrur, contents (mean age n age)
� Preguntas de repaso
1. Stata proporciona una forma condicional de implementar muchos de sus
comandos. La subcomando if restringe el comando a observaciones que
deseamos conocer cierta información. El if va al final del comando pero antes de
la coma que separa al comando de las opciones. En este caso, la calificación es
que la autoridad es 1 (gobierno). ¿Entonces cuál es la diferencia entre
authorit=1 vs. authorit==1
2. El signo == sign es llamado operador relacional. ¿Qué otros operadores están
disponibles en Stata?
3. El comando sort coloca las observaciones en la memora en forma ascedente de
acuerdo a los valores de una o mas variables. En este caso, la variable es
authority. By requiere que la base de datos esté ordenada por la(s) variables(s)
que usemos. A menudo esto no es así, y entonces tenemos dos opciones: o
ordenar previamente la base de datos usando la instrucción sort, o combinar
ambas instrucciones en un solo comando usando el comando bysort, que se usa
exactamente igual que by. ¿Qué hace el comando sort factype urbrur?
4. by sirve para segmentar la ejecución de la ordenación y hacerlo por los grupos
definidos por la variable que acompañe a by. El operador by es uno de los pocos
elementos en Stata que rompe con la estructura básica de la sintaxis, puesto que
se escribe delante del comando y no después como el resto. Así, escribiremos by
variable: comando. ¿Cuándo deberías usar by en lugar de tab2 para obtener
datos separados por grupos?
5. ¿Qué significa la frase pill<.?
6. ¿Qué son los valores perdidos?
7. ¿Cuál es otra manera de escribir utilizando _n, "en 1/10"?
Respuestas a las preguntas de repaso
1. Un simple igual (=) significa darle el valor a una variable, es decir, significa
asignación. Un doble signo igual (==) significa comparación. Recordemos:
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
24
= asigna un valor
== evalua una expresión con falso/verdadero
/* Por ejemplo */
replace income = 0 if income == -1
/* le estamos ordenando que reemplace el valor de income con = 0
donde el income sea -1 */
2. Aquí esta una lista de operadores en Stata
== igual a
> mayor que
>= mayor o igual que
< menos que
<= less than or equal to
~ not
! not
& y
| o
+ suma
- resta
* multiplicacion
/ division
^ potencia
3. Pone los datos en orden ascendente de factype, y dentro de cada valor de
factype ordena los datos en orden ascendente de urbrur. El comando gsort le
permite ordenar en orden descendente, así como orden ascendente.
4. El comando tab2 funciona mejor con datos categóricos. Mientras que la opción
by trabaja mejor con variables continúas. Por ejemplo, si a y b son variables
categóricas:
by a: tab b
/* Esto es del mismo modo */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
25
tab2 a b
5. Significa la variable menos que los valores perdidos
6. Prácticamente siempre nuestros datos serán incompletos. Es decir, tendremos
observaciones para las cuales no dispondremos de toda la información de todas
las variables. En esos casos hablamos de ‘casos perdidos’ o ‘valores perdidos’.
Con Stata podemos trabajar con ellos de diversos modos. Por defecto, cuando
le pedimos a Stata una tabla de frecuencias de una variable, omite los valores
perdidos. Esto, que en general resulta útil, a veces puede no interesarnos, puesto
que pueden contener información interesante. Así, cuando pidamos una tabla
de frecuencias con el comando tabulate, si añadimos al final del comando la
opción missing el programa considerará y nos mostrará también los casos
perdidos.
/* Este comando por ejemplo, incluye los valores perdidos de edad
*/
tab factype if age>=25
/* Si no se quieren es necesario excluir expresamente que */
tab factype if age>=25 & age<.
7. Se puede escribir:
list factype authorit urbrur if _n <= 10
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
26
Sesión 5. Cambiando valores a los datos
Reemplazando valores, recodificando variables, editando datos y
etiquetando datos
Continuaremos con la base de datos 1999 Tanzania Facility Survey. Aquí tenemos los
siguientes comandos:
clear
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del Curso\EXAMPFAC.DTA",
clear
/* Como precaucion, hacer una copia de la variable que se desea
recodificar */
gen factype2=factype
/* Cambiando 8 valores de factype2 dentro de 4 valores*/
replace factype2= 1 if factype2 >= 2 & factype2 <= 4
replace factype2= 2 if factype2 == 5
replace factype2= 3 if factype2 == 6
replace factype2= 4 if factype2 == 7 | factype2 == 9
/* El comando recode hace lo anterior de manera más eficiente */
recode factype2 2/4=1 5=2 6=3 7 9=4
/* Para cambiar el nombre de una variable */
rename factype2 tipo
/* Para etiquetar una variable */
label variable tipo "Tipo de servicio recodificado"
/* Para etiquetar para cada categoría en una variable es un proceso
de dos pasos */
/*Paso 1: necesitas crear la etiqueta usando label define, escribe
*/
label define fac 1 "Hospital" 2 "HealthCenter" 3 "Dispensary" 4
"Other"
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
27
/*Paso 2: Asignar esa etiqueta a la variable con esas categorías
usando label values: */
label values tipo fac
/* Ponerle etiqueta a la base de datos */
label data "1999 Tanzania Facility Survey"
/* Borra la variable original factype */
drop factype
/*Borra las observaciones de la variable antigüedad mayor a 40*/
drop if age>40
browse
edit
Podemos observar que para renombrar variables, se escribe:
rename [antiguo nombre] [nuevo nombre]
En nuestro ejemplo, renombramos de la siguiente manera:
rename factype2 tipo
De igual manera para agregar o modificar la etiqueta de una variable, escribimos:
label variable [var name] “Text”
label variable tipo "Tipo de servicio recodificado"
Con el comando labelbook el programa enlistara todas las etiquetas de la base de datos.
Toma en cuenta que definir etiquetas no es lo mismo que crear variables.
Es importante sugerir que nunca se trabaje con la variable original, es decir, siempre hay
que mantener la variable original.
El comando recode crea una nueva variable sin modificar la original. La sintaxis básica
de este comando es:
recode varname value = value value = value ...
� Preguntas de repaso
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
28
1. El comando replace modifica valores específicos de una variable existente. ¿Qué
sucede con los siguientes comandos? Pegue los resultados:
clear
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del Curso\EXAMPFAC.DTA",
clear
gen factype3=factype
replace factype3= 4 if factype3 == 7 | factype3 == 9
replace factype3= 3 if factype3 == 6
replace factype3= 2 if factype3 == 5
replace factype3= 1 if factype3 >= 2 & factype3 <= 4
2. ¿Qué sucede con los valores perdidos de factype2?
3. ¿A cuántas variables puedes cambiarle el nombre con un solo comando rename?
4. ¿Cómo puedo cambiar una variable existente y el valor de sus etiquetas?
5. ¿Cuál es la diferencia entre browse and edit?
6. ¿Qué hace el comando generate?
Respuestas a las preguntas de repaso
1. Todas las observaciones de la variable factype3 es igual con 1.
gen factype3=factype
(3 missing values generated)
replace factype3= 4 if factype3 == 7 | factype3 == 9
Total 500 100.00
9 4 0.80 100.00
7 35 7.00 99.20
6 275 55.00 92.20
5 84 16.80 37.20
4 18 3.60 20.40
3 16 3.20 16.80
2 65 13.00 13.60
1 3 0.60 0.60
factype3 Freq. Percent Cum.
. tab factype3
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
29
replace factype3= 3 if factype3 == 6
replace factype3= 2 if factype3 == 5
replace factype3= 1 if factype3 >= 2 & factype3 <= 4
Se sugiere siempre, por precaución, hacer una copia de la variable que se desea
recodificar:
/* Escriba y ejecute los siguientes comandos */
gen age2=age
tab age2
/* Luego escriba lo siguiente y observe lo que sucede */
Total 500 100.00
6 275 55.00 100.00
5 84 16.80 45.00
4 57 11.40 28.20
3 16 3.20 16.80
2 65 13.00 13.60
1 3 0.60 0.60
factype3 Freq. Percent Cum.
. tab factype3
(39 real changes made)
. replace factype3= 4 if factype3 == 7 | factype3 == 9
Total 500 100.00
5 84 16.80 100.00
4 57 11.40 83.20
3 291 58.20 71.80
2 65 13.00 13.60
1 3 0.60 0.60
factype3 Freq. Percent Cum.
. tab factype3
Total 500 100.00
4 57 11.40 100.00
3 291 58.20 88.60
2 149 29.80 30.40
1 3 0.60 0.60
factype3 Freq. Percent Cum.
. tab factype3
Total 500 100.00
1 500 100.00 100.00
factype3 Freq. Percent Cum.
. tab factype3
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
30
replace age2 = . if age2>20
tab age2, missing
2. No se cambiaron los valores perdidos en los ejemplos de replace o recode, ellos
se mantienen perdidos.
3. Solo a una.
4. El comando es label def y label val Por ejemplo, las ultimas 10 variables
pill-natural tienen sus etiquetas con el formato respuesta de yes/no:
label def yesno 1 "Yes" 2 "No"
label val pill yesno
label val inject yesno
….. etc.
label val natural yesno
Sabemos también que para cambiar la etiqueta de una variable, simplemente escribe
una nueva etiqueta después del comando laber var:
label var factype "Type of facility"
Para cambiar la etiqueta de una variable, se tienen dos opciones:
Borrar la etiqueta existente y recrarla con los cambios, o
Crear una nueva etiqueta y reasignar una variable a la nueva etiqueta.
El comando describe muestra cuales variables tienen etiqueta y de tenerlas, muestra
como se llaman. Usando este comando podemos ver que la variable urbrur tiene la
etiqueta urb. Aquí la borramos urb y la recreamos con nuevos valores:
label drop urb
label def urb 1 "RURAL" 2 "URBAN" 3 "MIXED"
label val urbrur urb
5. Ambos comandos muestra los datos en un formato tipo Excel. El comando Edit
permite hacer cambios a la base de datos sin registrarlos, mientras que el
comando browse solo permite ver la base de datos.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
31
6. El comando generate o gen permite crear una variable, para ello escribimos:
generate [nuevavariable] = [expresión]
También se puede generar constantes. Por ejemplo:
gen x=5
gen y=4*15
gen z = y/x
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
32
Sesión 6. Creación de variables binarias o dummy
Para crear una variable dummy especificamos que la variable tomará valores de 0 y 1 y
valores perdidos. Para esta sesión utilizaremos el archivo auto.dta. Vamos a crear una
variable dummy para el origen de los autos. La base de datos señala que pueden ser
domésticos o extranjeros. Nuestra variable tendrá el valor de 1 si es doméstico y 0 si es
extranjero: tabulate foreign, generate(dummy)
Se crea una variable binaria para cada valor que se encuentra en foreign, poniéndoles el
nombre dummy1 y dummy2 (o el nombre que se elija, pero siempre asignará valores
correlativos a las variables binarias generadas).
También se puede crear por la vía:
generate dummymed=0
replace dummymed=1 if foreign==0
En cualquiera de estos dos casos se debe tener cuidado si hay missing values, puesto
que se estaría asignando un cero a algo que en realidad es un missing. Para arreglar el
problema se puede hacer
replace dummymed=. if foreign==.
Otro ejemplo, es:
gen edu=1 if prima==1;
replace edu=2 if secun==1;
replace edu=3 if uni==1;
(ésta dummy vale 1,2,3).
Supongamos que se necesita generar una dummy que indique que un auto tiene ya un
millaje muy alto y está próximo a descomponerse. El millaje es una variable continua, y
queremos que la dummy indique cuando esté por arriba de 30.
/*Opción 1: comando simple */
generate retiro = mpg>30
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
33
Esto crea una variable llamada retiro igual con 1 si la expresión es cierta (el millaje está
por arriba de 30) e igual con 0 si la expresión no es cierta. Con tab retiro se observa que
casi el 7% de los autos se encuentran en esa condición.
/* Opción 2: dos comandos */
generate retiro=1 if mpg>30
replace retiro=0 if mpg<=30
/* También es importante escribir */
replace retiro =. si mpg ==.
El ejemplo anterior implicó la creación de una variable ficticia basada en una variable
continua, mpg. Los datos a menudo incluye las variables categóricas, que son variables
que toman valores numéricos que no son inherentemente significativa pero en vez
corresponden a diferentes categorías (región, raza y sexo son ejemplos variables que a
menudo están codificados de esta manera).
* Supongamos que elaboramos la base de datos y escribimos *
input sexo
1
1
1
1
0
1
0
1
1
0
end
label def sexo 1 "Femenino" 0 "Masculino"
label values sexo sexo
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
34
/* Hemos creado una variable numérica y la etiquetamos con nombres
*/
/* Luego se procede a convertirla en dummy con el proceso inverso
*/
gen dumi=0 if sexo==0
replace dumi=1 if sexo==1
bro sexo dumi
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
35
Sesión 7. Limpiando datos
Trabajando con do-files, documentando, outliers, ids duplicados.
Como se ha mencionado en sesiones anteriores, existen dos formas de trabajar en
STATA, en forma interactiva y en forma programada. La primera forma consiste en ir
ejecutando los comandos directamente en la ventana de comando, los resultados se
obtienen inmediatamente en la ventana de resultados. Al trabajar de esta forma, la
única manera de ir registrando todo lo realizado es mediante los archivos log. Sin
embargo, esta forma de trabajar tiene la desventaja de que una vez que uno ha realizado
varias modificaciones a la base de datos y uno quiere volver atrás, se pierde todo lo
realizado y hay que volver a reconstruir todo con ayuda del log.
La manera más ordenada de trabajar en STATA cuando se requiere hacer varias
modificaciones a la base de datos y obtener varias estadísticas de ella, es programar
todos los comandos en un archivo do.
El archivo do no es más que un archivo de texto que permite escribir las instrucciones
para la ejecución de comandos en Stata.
Cuando escribamos un do-file, existen una serie de símbolos que nos resultarán muy
útiles. Comentarios: en nuestros archivos de sintaxis, es conveniente introducir
numerosos comentarios para recordarnos lo que estamos haciendo cuando retomemos
el trabajo. Por supuesto, no queremos que Stata lea estos elementos, que sólo tienen
carácter informativo para nosotros mismos. Para eso, podemos usar los siguientes
símbolos:
Un asterisco (*) al principio de la línea, convierte toda la línea en un comentario
(representado en verde)
El símbolo /* abre un comentario y */ lo cierra
Saltos de línea: Tres /// le dicen a Stata que el resto de la línea es un comentario
y que el comando sigue en la línea de abajo.
Para abrir el archivo do escibimos el comando:
doedit
A continuación se puede empezar a escribir los comandos para transformar la base de
datos, para obtener estadísticas, etc. Exactamente de la misma forma que lo haría en la
ventana de comandos pero ahora en forma más ordenada. Es importante
constantemente ir corriendo el do-file para detectar los errores que se están
cometiendo. Escribimos lo siguiente en la ventana abierta:
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
36
*Aquí podemos poner el nombre de nuestro trabajo Curso de Stata*
clear
cd "D:\Desktop\CURSO de STATA"
use "D:\Desktop\CURSO de STATA\Datos del Curso\EXAMPFAC.DTA",
clear
gen factype2= factype /* aquí podemos poner un comentario,
después de un comando */
gen factype3= factype // esto funciona tambien
*¿Cuales son los datos raros en la información sobre la
antiguedad?*
ta age
/* Observamos que hay un dato raro 1998 años!!!*/
list facid facname factype authorit if age == 1998
/* Vemos que ese dato es erróneo, lo cambiamos por 1 */
replace age= 1 if age == 1998
* Para encontrar los valores duplicados de facid usando el
comando duplicates*
duplicates list facid
list facid factype authorit if facid == 1001
/* También podemos mirar los valores duplicados de facid usando
_n.*/
sort facid
list facid factype authorit if facid == facid[_n-1]
#delimit;
list facid factype authorit if facid == facid[_n-1]| facid ==
facid[_n+1];
#delimit cr
* Borra la observación duplicada cuando factype and authorit
son valores perdidos.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
37
drop if facid == 1001 & missing(factype)
El do-file quedaría asi:
Luego damos clic sobre el botón "Execute (do)"
Una manera de ir documentando mi trabajo para luego tener un documento para mi
archivo do es el siguiente comando:
cmdlog using “nombre del archivo”
Lo anterior crea un archivo del block de notas para luego ser usado para un do-file
� Preguntas de repaso
1. ¿Qué sucede si escribimos en un do-file lo siguiente?:
/*
ta age
list facid facname factype authorit if age == 1998
replace age= 1 if age == 1998
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
38
2. Cuando se ejecuta ta edad, la pantalla se detuvo el desplazamiento y --More--
apareció en la parte inferior. ¿Qué significa eso?
3. ¿Qué acción realiza el comando duplicates?
4. ¿Por qué se muestra una segunda forma de comprobar si hay duplicados?
5. El carácter _n es el número de secuencia de la observación actual en la memoria.
¿Qué significa facid [_n-1] ?¿Qué sucede si escribimos lo siguiente?:
gen id=_n
move id facid
label variable id "identificacion del hospital"
6. ¿Qué pasa si hay más de una variable id?
7. ¿Qué hace el comando #delimit y #delimit Cr?
8. ¿Cuál es la diferencia entre crear un bloc de notas y un archivo log?
Respuestas a las preguntas de repaso
1. Todo lo que está encerrado en los comentarios es tratado como un comentario
y no se ejecuta. Esta es una forma práctica para bloquear partes de un archivo
de tareas que no se desea ejecutar.
2. Cuando los resultados de un comando de Stata se llenan más de una pantalla,
Stata hace una pausa para que revise lo que está actualmente en la pantalla.
Cuando desea continuar, pulse la barra espaciadora para ver otra página, o pulse
la tecla Intro para ver otra línea.
3. El comando duplicates busca listas, etiquetas, o gotas duplicados. En este caso
sólo estamos enumerando los duplicados para que pueda explorar más a fondo.
4. Antes del comando duplicates es necesario utilizar [_n] para comprobar si hay
duplicados. A pesar de que ya no lo necesita para comprobar si hay duplicados,
es útil saber acerca de [_n] para la programación más avanzada.
5. Se puede pensar a cada variable como una columna en Excel y _n es el número
de fila. Por ejemplo, facid es la primera variable, que sería la columna A en Excel.
Para hacer referencia a la celda de la tercera fila, se escribe A3 en Excel. Del
mismo modo, en Stata facid [3] es el valor de facid para la tercera observación
en la memoria.
Se creó una nueva variable llamada id con la información de la variable facid,
luego movimos la columna al primer sitio para luego ponerle la etiqueta.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
39
También podemos utilizar _N para crear una variable con el número total de
casos en la base de datos, por ejemplo:
gen total=_N
move total id
label variable total "numero total de establecimientos
encuestados"
6. Si hay más de una variable Identificación, es necesario ordenar y comprobar
todos los identificadores de duplicados utilizando el operador lógico.
Supongamos que hay 3 identificadores:
sort id1 id2 id3
list id1 id2 id3 if id1 == id1[_n-1] & id2 == id2[_n-1] & id3 ==
id3[_n-1]
Una vez más, nos gustaría señalar que el comando duplicates comando es mucho más
fácil de usar que ese método:
duplicates list id1 id2 id3
Hemos mostrado el método que utiliza _n porque hay muchos casos en la programación
donde desea referirse a las observaciones antes o después de un caso particular. Esta
matriz implícita es potente y bien vale la pena entender y recordar para otras
aplicaciones.
7. En un archivo do, Stata supone que cada comando no tiene más de 1 línea de
largo, y que cada línea termina en un retorno de carro (al pulsar la tecla Intro, un
editor de texto inserta un símbolo de retorno de carro). Si desea escribir un
comando que es más de una línea larga, puede utilizar #delimit; para decirle
Stata que busque un punto y coma en lugar de un retorno de carro. A partir de
ahí, debe finalizar cada comando, si una o más líneas de largo, con un punto y
coma. Para volver al retorno de carro, use cr #delimit.
Hay otras maneras de continuar un solo comando en más de una línea. Una
forma es escribir / * al final de una línea, y * / al principio de la siguiente línea
(para terminar el comentario):
list facid factype authorit if facid == facid[_n-1] /*
*/ | facid == facid[_n+1]
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
40
Otra manera es colocar ///, el cual le dice a Stata que continue leyendo la siguiente línea
como continuación de la línea anterior:
list facid factype authorit if facid == facid[_n-1] ///
| facid == facid[_n+1]
8. La diferencia entre los siguientes comandos es que:
/* Crea un bloc de notas con comandos solamente */
cmdlog using practica
set more off
/* Crea un archivo log con resultados y comandos */
log using practica.log
log close
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
41
Sesion 8. Los estudiantes: un repaso y graficos
Creando graficos para visualizar datos
Utilizaremos la base de datos “Estudiantes” que es un archivo de Excel. En este apartado
haremos un breve repaso de lo que hemos vista hasta ahora.
Para obtener una descripción general de la base de datos del formato y cada tipo de
variable
*Comenzamos con nuestro trabajo *
Describe
/*Vamos a renombrar algunas variables */
rename lastname Clave
rename firstname Nombre
rename city Ciudad
rename state Estado
rename gender Genero
rename studentstatus Estatus
rename major Materia
rename country Pais
rename age Edad
rename averagescoregrade Promedio
rename heightin Peso
rename newspaperreadershiptimeswk Lectura
/* Agregamos etiquetas también, como por ejemplo */
label data "Encuesta a estudiantes"
label variable Pais "Nombre del Pais de origen"
label variable Nombre "Nombre del estudiante"
label variable Lectura "Horas que el alumno dedica a la lectura
de la prensa"
/* Luego hacemos una tabla de distribución de frecuencias para
las materias */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
42
tab Materia
/* Ya sabemos que el comando table proporciona las frecuencias y
estadísticas descriptivas por categoría. Aquí unos ejemplos */
table Genero, contents(freq mean Edad mean Promedio )
table Materia, contents(freq mean Edad mean sat mean Promedio
mean Lectura)
tabstat Edad sat Promedio Peso Lectura, s(mean median sd var count
range min max)
*Si es muy largo el renglón podemos poner /// o /* y */
/*Tambien se puede estimar estadística descriptiva por subgrupos
(por ejemplo, género, edad, etc) */
tabstat Edad sat Promedio Peso Lectura, s(mean median sd var count
range min max) by(Genero)
/*Podemos observar que Stata permite calcular distribución de
frecuencias para una variable o varias variables */
tab Genero
tab Genero Estatus, column row
/* Tambien podemos calcular las calificaciones promedio del SAT
por género y materia */
tab Genero Materia, sum(sat)
/*Ahora podemos hacer tablas cruzadas con tres variables*/
bysort Estatus: tab Genero Materia, column row
/* tablas cruzadas con tres variables con estadísticos de una
cuarta variable */
bysort Estatus: tab Genero Materia, sum(sat)
/* Supongamos que queremos conocer la nacionalidad y el género de
los estudiantes menores a 20 años */
list Genero Pais if Edad<20
/* Ordenar alfabéticamente las ciudades */
sort Ciudad
/* Para ordenar de mayor a menor el id */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
43
gsort –id
/* Ordenando alfabéticamente las materias y de mayor puntuación
en el sat */
gsort +Materia –sat
/* Recordemos que los símbolos | = “o”, & = “y” y != “diferente”
*/
Los gráficos de sectores son representaciones de los datos en un círculo cuyos
segmentos representan proporcionalmente la frecuencia de los valores contenidos en
una o varias variables. La instrucción mínima para realizar gráficos de sectores es la
siguiente:
scatter sat Edad
scatter sat Edad, mlabel(Clave)
scatter sat Edad, mlabel(Clave) || lfit sat Edad
scatter sat Edad, mlabel(Clave) || lfit sat Edad, yline(30)
xline(1800)
scatter sat Edad, || lfit sat Edad, mlabel(Clave) by(Materia,
total)
histogram Edad, frequency
histogram Edad, frequency normal
� Preguntas de repaso
Escriba los comandos para graficar la siguiente información:
1. ¿Cuantos hombres y mujeres?
2. ¿Cuantos graduados?
3. ¿Cuántos son en las materias de economía, política y matemáticas?
4. ¿De que país son?
5. ¿Cual es la estructura de la sintaxis para tablas cruzadas?
Respuestas a preguntas de repaso
1. Tab Genero
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
44
2. tab Estatus
3. tab Materia
4. tab Pais
5. tab [variable by rows] [variable by column]
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
45
Sesion 9. Estimación econométrica
Estructura básica de la sintaxis
Los comandos en Stata tienen una estructura básica común, que podemos resumir del
siguiente modo:
(by variables1:) comando (variables1) if expresión2 in intervalo3,
opciones4
1. Las variables son las que aparecen en la ventana de variables. Para anotar alguna
sintaxis no hay necesidad de escribir la variable: es mejor hacer doble clic sobre la
variable respectiva (y así se evitan errores de digitación). Así se transporta el nombre
de la variable a la ventana de comandos.
2. La expresión suele tomar estructura de fórmula matemática. 3. Indica un grupo
de observaciones. Por ejemplo in 5/12 quiere decir que solo se tomen en cuenta
las observaciones desde la 5 a la 12.
4. Opciones: Dependen del comando seleccionado.
Los componentes de la sintaxis que se encuentran entre paréntesis pueden omitirse
en algunos casos.
Para ejecutar una sintaxis con by variables: previamente debe ordenar la base de
datos a partir de esa variable. En tal caso la sintaxis será:
sort variable y después si puede escribir la sintaxis completa.
Muchos comandos se pueden abreviar. Generalmente solo se necesitan las tres
primeras letras del comando (a veces menos). Esto no es aplicable a las opciones.
El programa es sensible a mayúsculas. Esto quiere decir que si una variable se llama
Edad, será diferente de otra variable llamada edad, y diferente de otra denominada
EDAD. Los comandos siempre deben ir en minúsculas. El programa no reconoce
tildes ni la letra ñ.
El programa procesa básicamente variables que tengan valores numéricos. Si una
variable es de texto, se puede pasar a números con el comando:
encode variable, generate (nueva variable)
Ahora, utilizaremos en las siguientes sesiones la metodología del análisis econometrico
propuesto por Gujarati. En términos generales, la metodología econométrica tradicional
se ajusta a los siguientes lineamientos:
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
46
1. Planteamiento de la teoría o de la hipótesis.
2. Especifi cación del modelo matemático de la teoría.
3. Especifi cación del modelo econométrico o estadístico de la teoría.
4. Obtención de datos.
5. Estimación de los parámetros del modelo econométrico.
6. Pruebas de hipótesis.
7. Pronóstico o predicción.
8. Utilización del modelo para fi nes de control o de políticas.
Para ilustrar estos pasos, consideremos la conocida teoría keynesiana de consumo. Los
datos para esta práctica se hallan en el archivo Gujarati.
1. Planteamiento de la teoría o hipótesis
Keynes plantea: “La ley psicológica fundamental… consiste en que los hombres [y las
mujeres], como regla general y en promedio, están dispuestos a incrementar su
consumo a medida que aumenta su ingreso, pero no en la misma cuantía del aumento
en su ingreso”. En pocas palabras, Keynes postula que la propensión marginal a
consumir (PMC), es decir, la tasa de cambio del consumo generado por una unidad
(digamos, un dólar) de cambio en el ingreso, es mayor que cero pero menor que uno.
2. Especificación del modelo matemático de consumo
A pesar de haber postulado una relación positiva entre el consumo y el ingreso, Keynes
no especifica la forma precisa de la relación funcional entre ambas cosas. Por
simplicidad, un economista matemático puede proponer la siguiente forma de la
función keynesiana de consumo:
Y = β1 + β2X 0 < β2 < 1
donde Y = gasto de consumo y X = ingreso, y donde β1 y β2, conocidos como los
parámetros del modelo, son, respectivamente, los coefi cientes del intercepto y de la
pendiente.
El coeficiente de la pendiente β2 mide la PMC. Esta ecuación plantea que el consumo
está relacionado linealmente con el ingreso, y es un ejemplo de un modelo matemático
de la relación entre consumo e ingreso, llamada en economía función consumo. Un
modelo es simplemente un conjunto de ecuaciones matemáticas. Si el modelo tiene una
sola ecuación, como en el ejemplo anterior, se denomina modelo uniecuacional,
mientras que si tiene más de una ecuación, se conoce como modelo multiecuacional
(consideraremos más adelante este tipo de modelos). En la ecuación anterior la variable
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
47
que aparece al lado izquierdo del signo de la igualdad se llama variable dependiente, y
la(s) variable(s) del lado derecho se llama(n) variable(s) independiente(s), o
explicativa(s). Así, en la función keynesiana de consumo, el consumo (gasto) es la
variable dependiente, y el ingreso, la explicativa.
3. Especificación del modelo econométrico de consumo
El modelo puramente matemático de la función de consumo dado en la ecuación
anterior es de interés limitado para el econometrista, pues supone una relación exacta
o determinista entre el consumo y el ingreso. Pero las relaciones entre las variables
económicas suelen ser inexactas. Así, si fuéramos a obtener información sobre gasto de
consumo e ingreso disponible (es decir, después de impuestos) de una muestra de, por
ejemplo, 500 familias mexicanas y graficar estos datos, con el gasto de consumo en el
eje vertical y en el eje horizontal el ingreso disponible, no esperaríamos que las 500
observaciones quedaran exactamente sobre la línea recta de la ecuación porque,
además del ingreso, otras variables afectan el gasto de consumo, como el tamaño de la
familia, las edades de sus miembros, su religión, etcétera. Para dar cabida a relaciones
inexactas entre las variables económicas, el econometrista modificaría la función
determinista de consumo en la ecuación anterior de la siguiente manera:
Y = β1 + β2X + u
donde u, conocida como término de perturbación o de error, es una variable aleatoria
(estocástica) con propiedades probabilísticas bien defi nidas. El término de perturbación
u representa todos los factores que afectan el consumo pero que no se consideran en el
modelo en forma explícita.
La ecuación es un ejemplo de un modelo econométrico. Más técnicamente, dicha
ecuación es un ejemplo de un modelo de regresión lineal. La función econométrica de
consumo plantea como hipótesis que la variable dependiente Y (consumo) está
relacionada linealmente con la variable explicativa X (ingreso), pero que la relación entre
las dos no es exacta: está sujeta a variaciones individuales.
4. Obtención de información
Para estimar el modelo econométrico dado en la ecuación anterior, esto es, para
obtener los valores numéricos de β1 y β2, son necesarios los datos. Aunque tendremos
más que decir en el siguiente capítulo sobre la importancia crucial de los datos para el
análisis económico, por el momento observemos unas cifras relacionadas con la
economía de Estados Unidos de 1960 a 2005, que se presentan en el archivo. La variable
Y en esta tabla es el gasto de consumo personal (GCP) agregado (para la economía en
su conjunto), y la variable X, el producto interno bruto (PIB), una medida del ingreso
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
48
agregado, ambos medidos en miles de millones de dólares de 2000. Por consiguiente,
los datos están en términos “reales”, es decir, se midieron en precios constantes (2000).
5. Estimación del modelo econométrico
Antes de cualquier estimación. Graficamos los datos con un diagrama de dispersión.
scatter gcpy pibx
Se observa una relación positiva casi perfecta entre las variables. La siguiente labor es
estimar los parámetros de la función consumo. La estimación numérica de los
parámetros da contenido empírico a la función consumo. Por el momento, note que la
técnica estadística conocida como análisis de regresión es la herramienta principal para
obtener las estimaciones.
Con esta técnica y los datos obtenemos los siguientes valores estimados de β1 y β2, a
saber, −281.4845 y 0.7204. Así, la función consumo estimada es
Yˆ = −281.4845 + 0.7204X
El acento circunflejo (sombrero) sobre Y indica que es un valor estimado. En la fi gura se
muestra la función consumo estimada (es decir, la línea de regresión).
twoway (lfit gcpy pibx ) (scatter gcpy pibx )
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
49
Como se aprecia en la figura, la línea de regresión se ajusta bien a los datos, pues los
puntos que corresponden a los datos están muy cercanos a ella. En esta gráfica vemos
que de 1960 a 2005 el coeficiente de la pendiente (es decir, la PMC) fue de alrededor de
0.72, lo que indica que para el periodo muestral un incremento de un dólar en el ingreso
real produjo, en promedio, un incremento cercano a 72 centavos en el gasto de consumo
real.
Decimos “en promedio” porque la relación entre consumo e ingreso es inexacta; como
se deduce de la figura, no todos los puntos correspondientes a los datos están
exactamente en la recta de regresión. Con palabras sencillas, podemos decir que, de
acuerdo con los datos, el promedio o media del gasto de consumo aumentó alrededor
de 72 centavos por cada peso de incremento en el ingreso real.
6. Pruebas de hipótesis
En el supuesto de que el modelo ajustado sea una aproximación razonablemente buena
de la realidad, tenemos que establecer criterios apropiados para comprobar si los
valores estimados obtenidos en una ecuación, por ejemplo, concuerdan con las
expectativas de la teoría que estamos probando. De acuerdo con los economistas
“positivos”, como Milton Friedman, una teoría o hipótesis no verificable mediante la
evidencia empírica no puede ser admisible como parte de la investigación científica.
Como ya señalamos, Keynes esperaba que la PMC fuera positiva pero menor que 1. En
el ejemplo observamos que la PMC es alrededor de 0.72. Pero antes de aceptar este
resultado como confirmación de la teoría keynesiana de consumo, debemos averiguar
si esta estimación está lo bastante abajo de la unidad para convencernos de que no se
trata de un suceso debido al azar o de una peculiaridad de los datos. En otras palabras,
¿es 0.72 estadísticamente menor que 1? Si lo es, puede apoyar la teoría de Keynes.
2000
4000
6000
8000
2000 4000 6000 8000 10000 12000PIB (X)
Fitted values GCP (Y)
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
50
Tal confirmación o refutación de las teorías económicas con fundamento en la evidencia
muestral se basa en una rama de la teoría estadística conocida como inferencia
estadística (pruebas de hipótesis). A lo largo de un curso de econometria se analiza
como realizar en la práctica este proceso de inferencia.
7. Pronóstico o predicción
Si el modelo escogido no refuta la hipótesis o la teoría en consideración, servirá para
predecir el (los) valor(es) futuro(s) de la variable dependiente Y, o de pronóstico, con
base en el (los) valor(es) futuro(s) conocido(s) o esperado(s) de la variable explicativa, o
predictora, X.
Para ilustrarlo, suponga que queremos predecir la media del gasto de consumo para
2006. El valor del PIB para 2006 fue de 11,319.4 millones de pesos. Colocamos esta cifra
del PIB en el lado derecho de la ecuación estimada y obtenemos:
display -281.4845+0.7204*11319.4
Yˆ2006 = −281.4845 + 0.7204 (11,319.4)
= 7,873.0113
Por tanto, con ese valor del PIB, la media o el promedio del gasto de consumo previsto
es de alrededor de 7,873 millones de pesos. El valor real del gasto de consumo registrado
en 2006 fue de 8 044 millones de pesos. El modelo estimado, por tanto, subpredijo el
gasto de consumo real por casi 174 000 millones de dólares. Se diría que el error de
predicción es de aproximadamente 174 000 millones de pesos, que representa
alrededor de 1.5% del valor real del PIB para 2006. En algún curso de econometria es
comun averiguar si un error de esa naturaleza es “pequeño” o “grande”. Pero lo que
ahora importa es observar que tales errores de predicción son inevitables, dada la
naturaleza estadística del análisis.
8. Uso del modelo para fines de control o de políticas
Suponga que tenemos la función keynesiana de consumo estimada dada. Suponga
además que el gobierno considera que un nivel de gasto de aproximadamente 8,750
(miles de millones de dólares de 2000) mantendrá la tasa de desempleo en su nivel
actual de cerca de 4.2 por ciento (estimación para principios del 2006). ¿Qué nivel de
ingreso garantizará la cantidad de gasto de consumo fijado como meta?
7873.0113
. display -281.4845+0.7204*11319.4
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
51
Si los resultados de la regresión dados en la ecuación parecen razonables, la aritmética
simple mostrará que
8,750 = −281.4845 + 0.7204 (PIB2006)
display (8750+281.4845)/0.7204
que da X = 12 537, aproximadamente. Es decir, un nivel de ingresos de alrededor de 12,
537 (miles de millones) de pesos, con una PMC de cerca de 0.72, producirá un gasto
aproximado de 8 750 millones de pesos.
Como indican estos cálculos, un modelo estimado sirve para fines de control o de
políticas públicas. Mediante una mezcla apropiada de política fi scal y monetaria, el
gobierno puede manejar la variable de control X para producir el nivel deseado de la
variable objetivo Y.
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
52
Sesion 10. Un modelo econométrico para la
economía estadounidense
Comenzaremos esta práctica describiendo la base de datos. El archivo “Economia de EU”
se refiere al desempeño de la economía estadounidense en la década de los noventa.
Son datos anuales de las tasas de crecimiento del PIB, PIB per capita, consumo privado
inversión productividad del trabajo manufacturero desepleo y la inflación.
Las primeras dos variables (PIB y PIB per capita) pueden ser consideradas como variables
dependientes y el consumo, la inversión y la productividad pueden ser vistas como
variales independientes que tienen efectos sobre el crecimiento del PIB. El desempleo y
la inflación están intrisecamente correlacionadad, y queda a criterio de ustedes incluirlas
en nuestro modelo de crecimiento.
Primero, es importante conocer la base de datos y hacerle las modificaciones necesarias
como etiquetar las variables, etc.
rename ao Ano
label variable pib "tasa de crecimiento del PIB"
label variable consumo "Tasa de crecimiento del Consumo privado"
label variable inversion "Tasa de crecimiento de la Inversion"
label variable desempleo "Tasa de Desempleo"
label variable pibpercapita "Tasa de crecimiento del PIB per
capita "
label variable inflacion "Tasa de Inflacion"
label variable productivi "Tasa de crecimiento de Productividad
del trabajo en la industria manufacturera"
Tambien es importante escribir el siguiente comando para que Stata reconozca a la
variable Año como la variable tiempo:
tsset ano, year
Ahora, comenzamos con el comando summarize, que nos permite estimar el minimo y
máximo valor, la media aritmética, y la desviación estándar de cada variable.
sum
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
53
/* Si se desea conocer el comportamiento con percentiles */
summarize, detail
/* Si solo estamos interesados en una variable */
summarize inflacion, detail
/* Si nos interesa un subconjunto de datos, podemos utilizar
filtro, por ejemplo, los años de la administración de Clinton*/
summarize if Ano>=1993 & Ano<=2000
/* Si queremos contrastar ese periodo con las administraciones
de la familia Bush */
summarize if Ano<1993 | Ano>2000
/* Si queremos verificar todo el periodo excepto los años
electorales */
summarize if Ano~= 2000 & Ano~=1996 & Ano~=1992
Supongamos que se desea verificar la relación entre variables. Por ejemplo, queremos
observar que tan correlacionados están las variables consumo privado y la inversión con
el PIB de la economía estadounidense. Para ello graficamos estas variables:
line pib consumo inversion Ano
/* Podemos explorar la relacion entre variables */
scatter pib consumo
scatter pib inversion
scatter pib productivi
/* Muy útil es el siguiente grafico */
graph matrix pib consumo inversion
Como recordatorio: el comando tsset introduce una variable tiempo en Stata. Por
ejemplo:
/* Si es anual */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
54
generate time = (1960) + _n -1
format t %ty
tsset time
/* Si es mensual */
generate time = m(1960m7) + _n -1
format t %tm
tsset time
/* Si es trimestral */
generate time = q(1995q7) + _n -1
format t %tq
tsset time
Antes de hacer una regresión, es recomendable verificar las correlaciones cruzadas.
Podemos utilizar el siguiente comando:
correlate pib consumo inversion desempleo pibpercapita inflacion
productivi
De acuerdo a la matriz de correlacion podemos señalar que PIB y el PIB per capita están
estrechamente relacionados, pero se puede notar también que cada una de estas
variables tiene una conecccion distinta con la tasa de desempleo. De hecho, el PIB per
capita presenta una alta correlacion negativa con el desempleo (41.43%), contra un
30.35% con el PIB. La inflación y el desempleo presente un grado positivo de correlacion
(35.90%).
Ahora podemos comenzar con una regresión lineal simple. Por ejemplo podemos
verificar la posible relación entre la tasa de crecimiento del PIB con el consumo privado
y la tasa de crecimiento de la inversión.
Antes, es necesario plantear los primeros cuatro pasos de la metodología del análisis
econométrico según Gujarati. Luego, llegamos al quinto paso, con la estimación de la
ecuación de regresión.
De la misma manera, aplicamos el siguiente comando para encontrar las principales
variables que afectan al PIB, el modelo a estimar es:
PIB= b1 + b2Co + b3I – b4D + b5In + b6PR + U
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
55
Donde: PIB= PIB, Co= consumo, I= Inversion, D=Desempleo, In=Inflacion y U=termino de error
regress pib consumo inversion desempleo inflacion productivi
/* Con el modelo completo inicial se generan los valores
pronosticados de la variable dependiente y los residuos del
modelo para luego graficarlos, para ello escribimos */
predict lnpibfit
scatter lnpibfit Ano
predict errores, resid
scatter errores Ano
/* Una variable aleatoria distribuida normal es aquella que
gráficamente tiene la siguiente forma*/
set obs 200
gen obs=_n
tsset obs
generate normal=invnorm(uniform())
line normal obs
Tarea 3.
1. Analice los resultados obtenidos en el modelo de regresión lineal, ¿Qué se puede
decir de la prueba de bondad de ajuste? ¿Son las variables son estadísticamente
significativas?
2. Supongamos que se desea modifciar la forma funcional de la ecuación de
regresión y en lugar de estimarla de forma lineal, deseamos que sea en
logaritmos (modelo Log-log), podemos escribir lo siguiente:
gen lnpib=ln(pib)
gen lnconsumo=ln(consumo)
gen lninversion=ln(inversion)
gen lnproductivi=ln(productivi)
gen lndesempleo=ln(desempleo)
gen lninflacion=ln(inflacion)
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
56
¿Si estimamos la siguiente ecuación de regresión, se modifica sustancialmente los
resultados?
regress lnpib lnconsumo lninversion lndesempleo lninflacion
lnproductivi
3. ¿Como podría mejorarse el modelo anteriormente estimado?
4. ¿Qué utilidad tiene guardar los errores o residuos de la ecuación de regresión
estimada?
El caso de un modelo econométrico cuadratico
Supongamos que, en general, el modelo es de la forma siguiente:
Y = ßo + ß1X + ß
2 X
2 + ......... + ß
kX
k + ε
Los siguientes datos de la tabla 1 corresponden al tiempo de secado de cierto barniz y
a la cantidad de un aditivo con que se intenta reducir el tiempo de secado:
Cantidad de aditivos del barniz (grs) Tiempo de secado (hrs)
X Y 0 12 1 10.5 2 10 3 8 4 7 5 8 6 7.5 7 8.5 8 9
/* Graficar los datos, y probar que es razonable suponer una
relación parabólica */
scatter y x
/* Para ajustar un polinomio de segundo grado por el método de
mínimos cuadrados, generamos primero una variable que sea el
cuadrado de la variable X */
gen x2=x*x
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
57
/* El modelo a estimar es Y = ß0 + ß1X + ß2 X2 + U. Luego
hacemos la regresión de la siguiente manera */
reg y x x2
Los resultados de la regresión son:
Y (gorrito) = 12.1848 – 1.8465*X + 0.1829* X2
( R2 = 0.9226 )
Obsérvese que ambos coeficientes son estadísticamente significativos (probabilidad
asociada es menor a 0.05) además de que no hay evidencia de probable regresión
espuria (relación entre las variables que en realidad no existe) al ser la R2 (0.9226)
menor que el estadístico DW (2.65).
Usando el modelo estimado se predice el tiempo de secado del barniz cuando se han utilizado X = 6.5 gramos de un aditivo: Y = 12.2 – 1.85 (6.5) + 0.183(6.5)2
di 12.2 -1.85*(6.5) + 0.183*(6.5*6.5)
7.90675
Por consiguiente, el tiempo de secado es de 7.9 horas.
_cons 12.18485 .4199999 29.01 0.000 11.15715 13.21255
x2 .1829004 .0294444 6.21 0.001 .1108526 .2549483
x -1.846537 .2448197 -7.54 0.000 -2.445589 -1.247485
y Coef. Std. Err. t P>|t| [95% Conf. Interval]
Total 20.7222222 8 2.59027778 Root MSE = .51675
Adj R-squared = 0.8969
Residual 1.6021645 6 .267027417 R-squared = 0.9227
Model 19.1200577 2 9.56002886 Prob > F = 0.0005
F( 2, 6) = 35.80
Source SS df MS Number of obs = 9
. reg y x x2
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
58
Sesion 11. El modelo de consumo para Mexico
(Primera Parte)
En esta practica, estimaremos un modelo del consumo privado para la Mexico a partir
de una especificación convencional que incluye el ingreso, la inflación y el consumo
privado.
El modelo especificado es:
CPt= b1 + b2Y + b3CPt-1 – b4P + b5Pt-1 + Ut
Donde: CPt= consumo privado en el periodo t, CPt-1= consumo privado en el periodo t-1,
Y= PIB y Pt-1 = Nivel de precios en el periodo t-1.
Utilizaremos la base de datos “Datos Anuales” que es un archivo de Excel. Escriban los
siguientes comandos:
clear
cd "D:\Desktop\CURSO de STATA"
log using "D:\Desktop\consumo.smcl"
*Podemos hacer un Do-file y después correrlo con la siguiente
información*
/* Vamos agregar etiquetas a las variables */
label variable yp "PIB percapita"
label variable i "Formacion Bruta de capital fijo privado"
label variable it "Formacion Bruta de capital fijo total"
label variable e "Empleo"
label variable p "Precios internos"
label variable tc "Tipo de cambio nominal"
label variable c "Consumo privado"
label variable y "PIB de Mexico"
/* Definiremos la variable aos como la variable tiempo */
tsset aos, year
/* Si la variable tiempo fueran trimestre en lugar de year se
pone q */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
59
/* Se introducen tambien variables rezagadas con la letra l*/
gen lcp1=l.cp
gen lp1=l.p
Es recomendable graficar las variables antes de realizer cualquier estimacion. En este
caso graficaremos el PIB, Consumo y Precios:
line cp aos
/* Si se quiere graficar varias variables (cp e y por ejemplo)
en un mismo gráfico el comando */
line cp y aos
/* Un comando útil para graficar un diagrama de dispersión */
twoway scatter cp y
/* Podemos graficar la variable dependiente con una
independiente y obtener también la recta de regresión */
twoway (lfit cp y) (scatter cp y)
/* Un grafico útil es */
graph matrix cp y p, half maxis(ylabel(none) xlabel(none))
/* Para obtener el histograma */
hist cp
/* Tambien podemos escribir */
histogram cp, frequency
/* O también */
histogram cp, frequency normal
/* La estadística descriptiva de la base de datos se obtienen
con el comando */
summarize cp y p
describe cp y p
correlate cp y, covariance
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
60
/* Estimamos la ecuacion siguiente CPt= b1 + b2Y + b3CPt-1 – b4P +
b5Pt-1 + Ut */
regress cp lcp1 y p lp1
Tarea 4.
1. Si escribimos lo siguiente, que hace Stata?
gen dcp= d.cp
gen const=10
gen r1 = runiform() Random numbers, uniformly distributed between 0 and 1
gen r2 = rnormal() Random numbers, with a standard normal distribution.
gen r3 = rnormal(5,2) Random numbers, with a normal distribution using mean
5 and standard
deviation 2. Alternatively, you could use “gen r3 = 5 + 2 *
rnormal()”, or “gen r3 = 5 + 2 * invnorm(runiform())”
gen r4 = rchi2(27) Random numbers, with a chi-squared distribution with 27
degrees of freedom.
gen r5 = rt(27) Random numbers, with a t-distribution with 27 degrees of
freedom.
2. En el ejercicio analizamos solo las variables consumo, PIB y los precios, ¿en que
medida se asocian todas demas las variables contenidas en el archivo con el
consumo privado?
3. ¿Qué interpretación puede darse al modelo estimado (regress cp lcp1 y p lp1)?
4. ¿Pueden mejorar los resultados si se estima el modelo en logaritmos?
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
61
Sesion 11. El modelo de consumo para Mexico
(Segunda Parte)
Continuaremos con el modelo de regresión estimado CPt= b1 + b2Y + b3CPt-1 – b4P + b5Pt-
1 + Ut
Escribiremos lo siguiente.
* El modelo estimado *
/* Hacemos la regresion */
regress cp lcp1 y p lp1
/* Primero, guardamos los errores con el comando predict
inmediatamente de realizar la regresión */
predict errores, resid
/* Si notan en la ventana de variables una nueva variable se ha
creado. Los graficamos con el comando */
line errores aos
/* Otra manera es */
rvfplot, yline (0)
/// Los graficos de los errores no parecen cumplir con el
supuesto de ruido blanco. Podemos guardar los valores estimados
de cp del modelo de la siguiente manera ///
predict cpestimado, xb
/// Aparece una nueva variable llamada cpestimado. Ahora los
graficamos junto con los valores originales para ver el ajuste
del modelo ///
line cp cpestimado aos
/// Observese que la variable dependiente no ajusta bien a los
valores estimados. Es necesario validar los supuestos del modelo
antes de hacer cualquier interpretación o inferencia ///
/* Ahora hacemos la prueba de normalidad a los errores del
modelo */
hist errores
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
62
*Prueba de Normalidad*
/// De acuerdo con el grafico, los errores se distribuyen como
una normal pero no es suficiente para aceptar la hipótesis, asi
que es necesario realizar la prueba ///
sktest errores
/// Se observa que la probabilidad asociada a la prueba de
normalidad es de 0.5895 y se requiere sea mayor de 0.05, para
que se acepte la hipótesis de una distribución normal en los
errores, por tanto, hay normalidad en los errores de este modelo
///
*Test de autocorrelación*
/* Para ver si los errores no están corelacionados, hacemos la
prueba de autocorrelación */
estat bgodfrey
/* La probabilidad es menor a 0.05 por lo que se rechaza la
hipótesis de no autocorrelación en los errores de este modelo */
*Podemos estimar el estadístico DW */
estat dwatson
/* es muy lejano de 2 */
*Test de homocedasticidad*
/*Ya se validaron dos supuestos, pero falta probar que en los
errores exista homocedasticidad, para ello escribimos el
siguiente comando */
estat hettest
/* De acuerdo con los resultados la probabilidad asociada a la
prueba de homocedasticidad es de 0.18, lo cual es mayor a 0.05,
por tanto, se acepta la hipótesis de homocedasticidad */
*Corrigiendo autocorrelacion*
/*Podriamos intentar corregir la autocorrelación con Metodo
iterativo de Cochrane Orcutt */
prais cp l.cp y p l.p, corc
///En la salida anterior, se puede observar el numero de
iteraciones que realizó el algoritmo (en este caso fueron 10),
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
63
la regresión transformada, y el DW del modelo original y el DW
del modelo corregido. Se puede concluir, con el nuevo DW=2.09,
que ya no existe autocorrelación ///
/* Guardamos los los errores nuevamente en esta nueva regresión
*/
predict errores1, resid
*Luego los graficamos*
line errores1 aos
/* Y le aplicamos las pruebas de normalidad y homocedasticidad */
sktest errores1
El do-file de todo el modelo econométrico realizado en esta última sesión es el siguiente:
*Podemos hacer un Do-file y después correrlo con la siguiente
información*
/* Vamos agregar etiquetas a las variables */
label variable yp "PIB percapita"
label variable i "Formacion Bruta de capital fijo privado"
label variable it "Formacion Bruta de capital fijo total"
label variable e "Empleo"
label variable p "Precios internos"
label variable tc "Tipo de cambio nominal"
label variable c "Consumo privado"
label variable y "PIB de Mexico"
/* Definiremos la variable aos como la variable tiempo */
tsset aos, year
/* Si la variable tiempo fueran trimestre en lugar de year se
pone q */
/* Vamos a crear nuevas variables en logaritmos */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
64
gen lcp=ln(cp)
gen ly=ln(y)
gen lp=ln(p)
/* Se introducen tambien variables rezagadas */
gen c1=l.c
gen lp1=l.p
/* Si se quiere graficar varias variables (cp e y por ejemplo)
en un mismo gráfico el comando */
line cp y aos
/* Un comando útil para graficar un diagrama de dispersión */
twoway scatter cp y
graph matrix cp y p, half maxis(ylabel(none) xlabel(none))
/* Podemos graficar la variable dependiente con una independiente
y obtener también la recta de regresión */
twoway (lfit cp y) (scatter cp y)
/* Para obtener el histograma */
hist cp
/* Tambien podemos escribir */
histogram cp, frequency
/* O también */
histogram cp, frequency normal
/* La estadística descriptiva de la base de datos se obtienen con
el comando */
summarize cp y p
describe cp y p
correlate cp y, covariance
/* Estimamos la ecuacion siguiente CPt= b1 + b2Y + b3CPt-1 – b4P
+ b5Pt-1 + Ut */
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
65
regress cp l.cp y p l.p
/* Primero, guardamos los errores con el comando */
predict errores, resid
/* Si notan en la ventana de variables una nueva variable se ha
creado. Los graficamos con el comando */
line errores aos
/* Otra manera e */
rvfplot, yline (0)
/// Los graficos de los errores no parecen cumplir con el
supuesto de ruido blanco. Podemos guardar los valores estimados
de cp del modelo de la siguiente manera ///
predict cpestimado, xb
/// Aparece una nueva variable llamada cpestimado. Ahora los
graficamos junto con los valores originales para ver el ajuste
del modelo ///
line cp cpestimado aos
/// Observese que la variable dependiente no ajusta bien a los
valores estimados. Es necesario validar los supuestos del modelo
antes de hacer cualquier interpretación o inferencia ///
/* Ahora hacemos la prueba de normalidad a los errores del modelo
*/
hist errores
*Prueba de Normalidad*
/// De acuerdo con el grafico, los errores se distribuyen como
una normal pero no es suficiente para aceptar la hipótesis, asi
que es necesario realizar la prueba ///
sktest errores
/// Se observa que la probabilidad asociada a la prueba de
normalidad es de 0.5895 y se requiere sea mayor de 0.05, para
que se acepte la hipótesis de una distribución normal en los
errores, por tanto, hay normalidad en los errores de este modelo
///
*Test de autocorrelación*
Curso-Taller Introducción al manejo de Stata | Ricardo de la Peña Leyva
66
/* Para ver si los errores no están corelacionados, hacemos la
prueba de autocorrelación */
estat bgodfrey
/* La probabilidad es menor a 0.05 por lo que se rechaza la
hipótesis de no autocorrelación en los errores de este modelo */
*Podemos estimar el estadístico DW */
estat dwatson
/* es muy lejano de 2 */
*Test de homocedasticidad*
/*Ya se validaron dos supuestos, pero falta probar que en los
errores exista homocedasticidad, para ello escribimos el siguiente
comando */
estat hettest
/* De acuerdo con los resultados la probabilidad asociada a la
prueba de homocedasticidad es de 0.18, lo cual es mayor a 0.05,
por tanto, se acepta la hipótesis de homocedasticidad */
*Corrigiendo autocorrelacion*
/*Podriamos intentar corregir la autocorrelación con Metodo
iterativo de Cochrane Orcutt */
prais cp l.cp y p l.p, corc
///En la salida anterior, se puede observar el numero de
iteraciones que realizó el algoritmo (en este caso fueron 10),
la regresión transformada, y el DW del modelo original y el DW
del modelo corregido. Se puede concluir, con el nuevo DW=2.09,
que ya no existe autocorrelación ///
/* Guardamos los los errores nuevamente en esta nueva regresión
*/
predict errores1, resid
*Luego los graficamos*
line errores1 aos
/* Y le aplicamos las pruebas de normalidad y homocedasticidad
*/
sktest errores1