martes, 29 de octubre de 2019

Programando un comando de estimación en Stata: Permitir restricciones de muestra y variables factor

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


Modificaré el comando de mínimos cuadrados ordinarios (OLS) que se discutió en Programando un comando de estimación en Stata: Un mejor comando para MCO para permitir restricciones en la muestra, manejar valores perdidos, permitir variables factor, y para lidiar con la perfecta colinealidad de las variables.

Esta es la octava publicación de la serie programando un comando de estimación en Stata. Te recomiendo que empieces por el principio.

Restricciones en la muestra

El comando myregress4 descrito en programando un comando de estimación en Stata: Un mejor comando para MCO tiene la sintaxis

myregress4 depvar [indepvars]

Donde indepvars pueden ser variables con operadores de series de tiempo. myregress5 permite restricciones en la muestra y valores perdidos. Tiene la sintaxis

myregress5 depvar [indepvars] [if] [in]

Un usuario puede opcionalmente especificar una expresión if o un rango in para restringir la muestra. También hice que myregress5 manejara valores perdidos en las variables especificadas por el usuario.




El comando syntax en la línea 5 especifica que el usuario puede opcionalmente restringir la muestra al especificar una expresión if o un rango in. Cuando el usuario especifica una expresión if, syntax lo pone dentro de una macro local if; de otra manera, la macro local if estará vacía. Cuando el usuario especifica un rango in, syntax lo pone dentro de una macro local in; de otra manera, la macro local in estará vacía.

Podemos usar las macros locales if e in para manejar restricciones en la muestra especificadas por el usuario, pero estos no se encargan de los valores perdidos en las variables especificadas por los usuarios. 

El comando marksample en la línea 6 crea una macro local llamada touse, la cual contiene el nombre de una variable temporal que es una variable identificadora de la muestra. Cada observación en la variable identificadora de la muestra tiene el valor cero o uno. Es uno si la observación está incluida en la muestra. 
Es cero si la observación está excluida de la muestra. Una observación se puede excluir de la muestra por una expresión if del usuario, por un rango in especificado por el usuario, o porque hay un valor perdido en una de las variables especificadas.

Las líneas 20 a 23 usan la variable identificadora de muestra contenida en la macro local touse para hacer que se cumplan las restricciones en los cálculos MCO.

La línea 28 envía la variable identificadora de muestra dentro de e(sample), la cual es uno si la observación fue incluida en la muestra de estimación y es cero si la observación fue excluida de la muestra de estimación.

La línea 29 guarda el número de observaciones de la muestra en e(N).
El ejemplo 1 ilustra que myregress5 ejecuta la regresión solicitada en la muestra que respeta los valores faltantes en rep78 y a la expresión if



Ejemplo 1: myregress5 con valores faltantes y una expresión if



Permitiendo variables factor



El ejemplo 1 incluye el número de repartaciones como una variable continua, pero puede tratarse mejor como un factor discreto. myregress6 acepta factores. Las listas de variables factor generalmente implican listas de variables que contienen variables perfectamente colineales, por lo que myregress6 también maneja variables perfectamente colineales.



El fv en el parentesis despues de varlist en el comando syntax de la linea 5 modifica el varlist para aceptar variables factor. Cualquier variable factor especificada es guardada en la macro local varlist en una forma canonica.

Los comandos de estimación no permiten que la variable deoendiuente sea una variable factor. El comando _fv_check_deovar en la linea 9 saldrá con un error si la macro local depvar contiene una variable factor.


La línea 15 guarda el número de columnas en la matriz formada por matrix accum en la macro local p. La línea 19 guarda el número de columnas linealmente independientes en la macro local k. Este caculo utiliza diag0cnt() para tener en cuenta las variables perfectamente colineales que se descartaron. (Cada variable descartada pone un cero en la diagonal del inverso generalizado calculado por symin() y diag0cnt() devuelve el número de ceros en la diagonal.)

Sobre la línea 29, especifico la opción builddfvinfo en ereturn post para guardar información escondida que ereturn display, contrast, margins, y pwcompare usan para etiquetar tablas y para decidir cuáles funciones de los parámetros son estimables.

La línea 31 guarda el número de variables linealmente independientes en e(rank) para comandos postestimación.


Ahora, utilizo myregress6 para incluir rep78 como una variable que puede utilizar operadores factoriales. La categoría base es descartada porque se incluye un término constante.



Ejemplo 2: myregress6 con una variable factor




Hecho y sin hacer

Modifiqué el comando de mínimos cuadrados ordinarios (OLS) que se discutió en Programando un comando de estimación en Stata: Un mejor comando para MCO para permitir restricciones en la muestra, manejar valores faltantes, permitir variables factor, y para lidiar con la perfecta colinealidad de las variables. En la siguiente publicación, muestro cómo permitir opciones para errores estándar robustos y para suprimir el término constante.


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 


Este blog es administrado por MultiON Consulting S.A. de C.V.