martes, 24 de septiembre de 2019

Programando un comando de estimación en Stata: Un mejor comando para MCO

Por David M. Drukker, Director Ejecutivo de Econometría.


Utilizaré el comando syntax para mejorar el comando que se implementa un estimador de MCO, que se discutió en Programando un comando de estimación en Stata: Un primer comando para MCO. Muestro cómo requerir que las variables sean numércias y cómo hacer que el comando acepte variables operadas por series de tiempo.

Esta es la séptima publicación de la serie Programando un comando de estimación en Stata. Te recomiendo que empieces por el principio.

Sintaxis de Stata y el comando syntax

El comando myregress2 descrito en Programando un comando de estimación en Stata: Un primer comando para MCO tiene la sintaxis
myregress2 depvar [indepvars]

La sintaxis requiere que la variable dependiente sea especificada porque depvars no está encerrada entre corchetes. Las variables independientes son opcionales porque indepvars está encerrado entre corchetes. Escriba


Para una introducción a la lectura de diagramas de sintaxis de Stata.

La sintaxis es implementada por el comando syntax en la línea 5 de myregress.ad, el cual comento ampliamente en Programando un comando de estimación en Stata: Un primer comando para MCO. El usuario debe especificar una lista de nombres de variables porque varlist no está encerrada entre corchetes. La sintaxis de el comando syntax sigue las reglas de un diagrama de sintaxis.



El ejemplo 1 ilustra que myregress2 ejecuta la regresión requerida cuando yo especifico una lista de variables.


Ejemplo 1: myregress2 con variables especificas




El ejemplo 2 ilustra que el comando syntax despliega un mensaje de error y detiene la ejecución cuando yo no especifico una lista de variables. Utilizaré set trace on para ver cada línea del código y el resultado que produce.

Ejemplo 2: myregress2 sin lista de variables





El ejemplo 3 ilustra que el comando syntax está verificando que las variables especificadas se encuentren en la base de datos actual. El comando arroja un error porque DoesNotExist no es una variable en la base de datos actual.

Ejemplo 3: myregress2 con una variable que no está en la base de datos






Ya que el comando syntax en la línea 5 no está restringiendo que las variables especificadas a ser numéricas, obtengo el error no observations en el ejemplo 4 en lugar de un error que indique el problema real, el cual es la variable string make.

Ejemplo 4: myregress2 con una variable string



En la línea 5 de myregress3, modifico varlistpara que sólo acepte variables numéricas. Este cambio produce un mensaje de error más informativo cuando trato de incluir una variable string en la regresión.



Ejemplo 5: myregress3 con una variable string



En la línea 5 de myregress4, modifico varlist para que acepte series de tiempo (ts). El comando syntax pone variables de series de tiempo en una forma canónica que es guardarlas en una macro local varlist, que se ilustra en la línea 6 dentro del ejemplo 6.


Ejemplo 6: myregress4 con series de tiempo




Hecho y sin hacer

Uso el comando syntax para mejorar cómo myregress2 maneja las variables especificadas por el usuario. Mostré cómo pedir que todas las variables sean numéricas y cómo hacer que el comando acepte variables series de tiempo. En la siguiente publicación, muestro cómo hacer que el comando permita restricciones en la muestra, cómo lidiar con valores perdidos, cómo permitir variables factor, y cómo lidiar con variables perfectamente colineales.


Gracias por leernos. Siga al pendiente de nuestras próximas entradas y siéntase libre de compartir este blog con sus colegas y amigos.

Para cualquier información referente a Stata, escríbanos a: info@multion.com 














1 comentario: