miércoles, 31 de octubre de 2018

Colapsando bases de datos en Stata

Hoy en nuestro blog daremos un breve recorrido por las opciones que tiene Stata para que podamos colapsar bases de datos a través del comando collapse, pues a veces resulta de mayor utilidad las estadísticas descriptivas de nuestras variables, así como sus características y con este comando podremos obtener una nueva base de datos a partir de estas.


A continuación, abrimos una base que contiene las características de la estadística de sacrificio de ganado 
según la especie:


Las variables Año y Mes son variables de texto que identifican el año y mes de las cifras de nuestras variables, donde podemos observar que tenemos cuatro especies (bovino, porcino, ovino y caprino) por número de cabezas y, para cada una de ellas tenemos la producción medida en toneladas y el valor de la producción medido en miles de pesos[1]. A través de ejecutar el comando summarize podemos observar estadística descriptiva de nuestras variables a lo largo de toda la muestra; sin embargo, utilizaremos collapse para producir nuevas bases de datos según nuestros requerimientos.


Nuestro primer paso es utilizar el comando de manera sencilla:


Al utilizar simplemente el comando seguido de una lista de variables obtenemos que nuestra base de datos ha colapsado a sólo cuatro datos: el promedio de cabezas de ganado por especie. Estos datos son los mismos que observamos en la salida del comando summarize.

Por lo cual, la opción que viene predeterminada en el comando collapse calcula los promedios de las variables especificadas. De tal forma, nosotros podemos especificar qué estadístico deseamos que se calcula al realizar la contracción de la base original; a continuación, indicaremos que necesitamos la sumatoria de las variables con la especificación (sum) antecediendo a la lista de variables, así, este estadístico será calculado para cada una de las variables hasta que Stata encuentre una nueva especificación.


Esto resulta de mayor utilidad cuando introducimos mayores especificaciones, tal como la siguiente.


En la nueva base obtuvimos la sumatoria anual de cabezas de ganado de las cuatro especies, gracias a la opción by() pudimos referirle a Stata la variable que tenía incluida las categorías por las cuales debíamos realizar el colapso de datos. Nuestra base cuenta con una observación más que contiene solo casillas en blanco, de ahí que la primera fila contenga el valor faltante (.) y sus valores correspondientes (0).


Como se mencionó líneas atrás, Stata aplicará el estadístico indicado a la lista de variables hasta que encuentre una nueva especificación; sin embargo, no podemos utilizar dos veces una variable existente en nuestra base original, pues Stata arrojará el siguiente error:


Por ello, podemos crear nuevas variables a partir de las que tenemos en nuestra base original, pero nombrándolas de distinta manera.


En esta ocasión hemos nombrado nuevas variables (vp_*), en las que se calcula la media ((mean)), en base a nuestras variables de valor por especie originales (Valor*).

Por último, también podemos realizar el colapso de información utilizando expresiones condicionales como if.



Gracias por leernos. Espere pronto la próxima entrada.

Solicite su cotización ahora: jcervantes@multion.com

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

viernes, 28 de septiembre de 2018

Obteniendo datos de la NFL en Stata

Esta es una traducción basada en la publicación original de Kevin Crow, Senior Software Developer.


La temporada de fútbol está a la vuelta de la esquina, y no podría estar más emocionado. Tenemos una liga de fútbol de fantasía bastante competitiva de StataCorp. Siempre busco una ventaja en nuestra liga, así que desafié a uno de nuestros pasantes, Chris Hassell, a escribir un comando para buscar en la web http://www.nfl.com los datos de la NFL. El nuevo comando es nfl2stata.

Para instalar el comando, escriba:



Con este nuevo comando, puede encontrar fácilmente a los corredores que tuvieron más touchdowns la temporada pasada,



Puede encontrar los mejores 5 pateadores de gol de campo (por goles de campo realizados) de la temporada pasada.



Puede generar un gráfico de los mejores líderes en pases de la última temporada regular.




Hay muchos datos interesantes por recorrer, especialmente si te interesa el fútbol de fantasía, como a mí. Aunque esto parece un comando simple, en realidad no lo es, debido al tiempo que lleva buscar, analizar y cargar los datos desde http://www.nfl.com  a través del web scraping.


Web scraping


Es posible que haya oído hablar del término "web scraping". Una simple definición de web scraping es extraer datos de sitios web. La mayoría de las veces, los derechos de autor de un sitio web impiden que las personas distribuyan los datos obtenidos de su sitio web, pero puede usar una copia personal de los datos en su computadora personal. Esto es lo que dicen los derechos de autor de la NFL. Debido a esto, los usuarios deben “raspar” el sitio web ellos mismos. Para hacer esto para los datos de la NFL, escriba:



Este comando raspará todos los datos desde 2009 hasta el año actual y guardará los datos como base de datos en formato Stata en su computadora local en la ruta de acceso a los archivos ado. Específicamente, los guardará en su directorio PLUS donde los comandos nfl2stata estarán disponibles. El primer año de datos de la NFL almacenado en http://www.nfl.com es 2009. Actualmente, no hay datos para raspar antes de esto. El web scraping es un proceso costoso y lento. Dependiendo de varios factores (velocidad de la computadora, memoria de la computadora, conexión de red, etc.), este raspado inicial de datos puede tardar horas en completarse. Es posible que desee ejecutar el comando anterior durante la noche. Una vez que haya raspado los datos históricos, puede simplemente escribir:



La actualización de las bases almacenadas localmente con los datos de la semana actual se ejecuta más rápido.

A partir de la redacción de este blog, el comando de raspado funciona, pero si la NFL cambia el formato de la página HTML, el comando se romperá, y si esto sucede, lo corregiremos si podemos. Además, los datos que se eliminan cambiarán con el tiempo a medida que la NFL actualice los datos anteriores en su sitio, por lo que a veces los datos que recopiló hace unas semanas no coincidirán con los que ve en el sitio web de ESPN o NFL. Además, a veces los datos pueden existir en más de un lugar y pueden ser inconsistentes dado que un sitio se actualiza las estadísticas y otros no. Puede volver a raspar los datos utilizando nfl2stata scrape, season (_all) replace para crear nuevas bases de datos limpias. Estos problemas son los que hacen que el web scraping sea un proceso volátil.


Comando

El comando nfl2stata scrape produce bases de datos de: juego, resumen de juego, jugada por jugada, jugador, perfil de jugador, lista y equipo para cada año. Para cargar esos datos en Stata, debe usar los siguientes comandos:

Para cargar datos de juego por juego en Stata, use:


Para cargar datos del resumen del juego en Stata, use:


Para cargar datos de jugada por jugada en Stata, use:


Para cargar datos de un jugador especifico en Stata, use:


Para cargar datos del perfil de jugador en Stata, use:


Para cargar datos de la lista de equipo en Stata, use:


Para cargar datos del equipo juego por juego en Stata, use:



Cada uno de estos comandos buscan su respectiva base de datos. A menudo necesitará usar comandos de Stata como collapse, gsort y merge para generar las estadísticas, ordenar los datos y fusionar dos o más datasets de la NFL para examinar los datos. Veamos algunos ejemplos más.


Ejemplos


Descubrí que los dos comandos de Stata que uso con mayor frecuencia con estos datos son gsort, que ordena los datos en orden ascendente o descendente, y collapse, lo que hace un conjunto de datos de estadísticas de resumen. collapse es especialmente útil cuando se trabaja con datos de múltiples juegos o múltiples temporadas. Por ejemplo, para saber qué receptor abierto líderó la NFL en recepciones el año pasado, escribiría:



A veces, necesita fusionar dos o más bases de datos NFL para responder algunas preguntas sobre los datos. Por ejemplo, para encontrar el peso promedio de un corredor de la NFL en los últimos nueve años, debe fusionar los datos de la lista y los datos del perfil para obtener la posición del jugador y las variables de peso del jugador juntas en el mismo conjunto de datos. Por ejemplo, escriba:



Para encontrar quién lideró a la NFL en recepciones o carreras, necesita fusionar todos los datos de jugadores ofensivos en un solo conjunto de datos. Por ejemplo, para enumerar a los líderes de recepción escriba:




Implementación

Chris usó los complementos Java de Stata para escribir la mayoría del comando. Las otras librerías Java que él usó para escribir el comando son:



Hay una gran cantidad de bibliotecas de Java disponibles para web scraping. Estos son solo los que usamos.

Si desea acceder al artículo original, de clic aquí.

Gracias por leer una entrada más de nuestro blog. Le invitamos continuar al pendiente de este blog y de nuestras redes sociales en las que encontrará descuentos, lanzamientos y artículos de su interés. ¡Hasta la próxima entrada!



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

jueves, 13 de septiembre de 2018

Uniendo las bases de datos de la ENIGH en Stata

En esta nueva entrada de nuestro blog daremos un recorrido por las opciones que tiene Stata para que podamos fusionar bases de datos a través del comando merge, ampliamente utilizado por aquellos que trabajan con microdatos.

El comando merge une las observaciones contenidos en la base de datos en la que se trabaja en el momento, a esta base la llamaremos base maestra, con otra base de datos, a esta la llamaremos base de uso; estas bases deben de coincidir en al menos una variable en común, que llamaremos llave. Entonces, podremos utilizar este comando para agregar nuevas variables provenientes de un segundo conjunto de datos a nuestras observaciones existentes en la base de datos que estemos trabajando, asimismo, podemos agregar simultáneamente nuevas observaciones y variables, siempre y cuando exista una llave que pueda relacionarse a las nuevas observaciones.

Para estos efectos, merge realiza cuatro tipos de uniones respecto a la o las variables llave contenidas en las bases que deseemos unir; estas son: uno a uno, uno a muchos, muchos a uno, y muchos a muchos. La sintaxis para este comando requiere que se especifique el nombre de las variables llave (varlist) y el nombre o ubicación de la base de uso (filename); según el tipo de unión que se realizará, la sintaxis será la siguiente:


  • Unión uno a uno
    merge  1:1  varlist   using     filename
  • Unión muchos a uno merge m:1 varlist using   filename
  • Unión uno a muchos merge  1:m   varlist  using     filename
  • Unión muchos a muchos merge m:m  varlist  using     filename


Todos estos comandos crean una nueva variable que contiene códigos numéricos relacionados con la fuente y el contenido de cada observación de la base de datos que resulta de la unión, por la cual la llamaremos base resultado.

Ahora bien, pensemos en un caso práctico: la Encuesta Nacional de Ingresos y Gastos de los Hogares en México. La fuente de información, el Instituto Nacional de Estadistica y Geografía, ofrece 12 bases de datos donde se recolecta la información; en el diseño muestral de la encuesta toman en cuenta las viviendas, los hogares y a las personas como nivel de desagregación de la información, por lo cual cada base de datos cuenta con al menos un nivel de desagregación; estas variables, identificadas con un folio, serán nuestras variables llave (folioviv, foliohog, numren).


A continuación, ejemplificaremos la unión uno a uno. Abriremos la base “hogares”, contiene características de los hogares que habitan los integrantes de los mismos.

. use hogares.dta

. describe, short

Con la opción short, Stata nos arrojará una descripción corta de la base de datos, pues para fines de esta entrada sólo nos interesa saber el número de observaciones (70,311).

Contains data from C:\Blog\hogares.dta
obs:        70,311                         
vars:           137                          
size:    37,475,763                         

Sorted by:


Las variables llave con las que cuenta esta base son folioviv y foliohog. La única base que, sin hacer modificaciones a ninguna de ellas, podemos unir uno a uno es “concentradohogar”, ya que su nivel de desagregación es a nivel hogar. Como paréntesis, cerraremos nuestra base hogares para poder echar un vistazo a la base concentradohogar para después volver a abrirla.

. use concentradohogar.dta, clear
. des, short

Contains data from C:\Blog\concentradohogar.dta
obs:        70,311                         
vars:           127                         
size:    68,131,359                         
Sorted by:


. use hogares

En la base concentradohogar se encuentran las variables construidas a partir de las otras bases de datos de la ENIGH. Tenemos el mismo número de observaciones debido a que en ambas bases los hogares son la unidad de observación, por lo cual podemos realizar la unión uno a uno de la siguiente manera:

. merge 1:1 folioviv foliohog using concentradohogar


Stata despliega un breve informe del proceso de unión, en donde detalla cuántas observaciones se unieron. En nuestro caso, las 70,311 observaciones se unieron; los caracteres que aparecen entre paréntesis son los códigos que tiene la variable creada durante la unión para identificar la fuente de las observaciones en la base resultado, siendo (_merge==3) el código que informa que la observación aparece originalmente tanto en la base maestra como en la base de uso. Por lo cual podemos estar seguros de que en ambas bases las variables llaves son identificadores únicos de los hogares.


Ahora contamos con:

. d, short

Contains data from hogares.dta
obs:        70,311                  
vars:           263                 
size:   104,904,012                 
Sorted by: folioviv  foliohog
Note: Dataset has changed since  last   saved.


Las mismas 70,311 observaciones (hogares), 263 variables (137 de la base maestra más 127 de la base de uso) y, podemos percatarnos de una nota que nos dice que la base ahora ha ordenado las observaciones de menor a mayor según las variables llave folioviv y foliohog; esto siempre ocurre para este tipo de unión ya que sólo hay observaciones que coinciden en ambas bases.

Las observaciones se han unido a la base maestra (en memoria) sin afectar la base de uso (guardada en disco).


Ahora supongamos que queremos añadir a nuestra base la información de los habitantes de los hogares, por lo tanto, nuestra siguiente base de uso será la base de “población”. Veamos qué contiene:

. preserve
. use poblacion, clear
. d, s

Contains data from poblacion.dta
obs:       257,805                         
vars:           178                         
size:   110,340,540                         
Sorted by:

. restore

Contamos con 257,805 observaciones pues ahora la unidad de observación son las personas, además nuestra base “poblacion” cuenta con una llave adicional (numren), la cual identifica a las personas dentro del hogar y reporta en primer lugar al jefe del hogar con el valor “01”. Por esta razón, debemos crear en nuestra base maestra la variable numren que identifica al jefe de hogar como la persona cuyas características tienen el valor de cada variable en la base maestra.

. generate numren=”01”

Una vez creada nuestra variable procedemos a realizar la unión de bases uno a muchos, debido a que en la base de uso se repiten los valores de nuestras variables llave folioviv y foliohog para los demás integrantes del hogar y no sólo para el jefe de hogar, sin embargo tenemos en la base maestra información especifica del jefe de hogar que sólo debe unirse a esta observación y no duplicarse para los demás integrantes, por esto adicionamos la variable llave numren como identificador en ambas bases.


. merge 1:m folioviv foliohog numren using poblacion, generate(_merge2)


Como lo mencionamos anteriormente, merge crea una variable para identificar la fuente de las observaciones, pero nosotros ya tenemos una variable llamada _merge, que es el nombre que por defecto se le da; por esta razón especificamos el nombre de la segunda variable _merge a través de la opción generate(_merge2), en donde _merge2 es el nombre que hemos decidido brindarle a la variable. Ahora nos percatamos que hay observaciones que no han coincidido por completo, siendo estas 187,494 provenientes de la base de uso (_merge2==2), 0 de la base maestra (_merge2==1), pero 70,311 han coincidido en ambas bases (_merge2==3) siendo estos los jefes de hogar. Veamos una descripción corta de la base actual:

. d,s

Contains data from hogares.dta
obs:       257,805                  
vars:           440                 
size:   492,407,550                 
Sorted by:
Note: Dataset has changed since  last   saved.


Es importante mencionar que ordenar las observaciones de las bases o no hacerlo, no altera el producto de la unión de bases ya que el comando merge realiza un ordenamiento de forma interna para ser más eficiente; si la base de uso no está ordenada, Stata crea una copia temporal para ordenarla y así asegurar que la forma en que esté ordenada la base guardada en disco no sea afectada. Sin embargo, la base resultado que observamos no se encuentra ordenada, ya que primero observamos el ordenamiento que teníamos previamente con la unión 1:1, por folioviv y foliohog, y después tendremos las observaciones de las demás personas que no son jefes de hogar.


Guardaremos esta base resultado de dos procesos de unión con un nuevo nombre para que no se vean afectadas las bases en originales guardadas en disco.

. save “C:\Blog\concen_hog_per.dta”


Ahora abriremos la base “ingresos”, la cual permite identificar los ingresos y percepciones financieras y de capital de cada uno de los integrantes del hogar, por diversos conceptos. Dada su construcción, tenemos que el nivel de desagregación de esta base es por concepto de ingreso, por lo cual encontraremos que cada individuo puede tener más de una observación que identifique la fuente de sus ingresos; también observaremos que no tendremos a todas las personas en esta base ya que no todas perciben ingresos. Veamos la información breve de esta base:

. use ingresos, clear
. d,s


Contains data from C:\Blog\ingresos.dta
obs:       334,337                         
vars:            17                         
size:    28,418,645                         
Sorted by:


Como podemos observar, ahora contamos con un mayor número de observaciones y sólo 17 variables. Procederemos a hacer la unión de bases tipo muchos a uno, ya que la base maestra cuenta con muchas observaciones para una sola combinación de llaves única (folioviv, foliohog y numren), mientras que la base de uso sí cuenta con una sola observación para una combinación única de variables llave.

. merge m:1 folio* numren using “C:\Blog\concen_hog_per.dta”, generate(_merge3)


Tenemos 82,686 personas en la base de uso que no cuentan con ninguna fuente de ingreso; de la base maestra claramente todas encontraron una combinación de llaves iguales a las propias. En este ejemplo, decidimos especificar la ruta donde se puede encontrar la base de uso en vez de sólo especificar su nombre. También, podrán notar el asterisco seguido de la palabra folio, esto se puede hacer para que Stata reconozca que toda variable que inicie con la palabra folio debe ser considerada para ejecutar el comando respectivo, en nuestro caso, podemos hacerlo con seguridad ya que sólo tenemos dos variables que inician con tal palabra: folioviv y foliohog.

Como paso final, se puede dar orden a las observaciones para que esté visiblemente ordenada cada vivienda con cada uno de sus hogares, por las personas que habitan determinado hogar, así como los ingresos de las personas que los perciben.

. sort folio* numren parentesco sexo edad clave



Esta es nuestra base resultado final, en la cual pudimos realizar tres tipos de unión de bases de datos, sólo procedemos a guardarla.

. save “C:\Blog\BaseResultado.dta"


Es importante mencionar que realizar una unión del tipo muchos a muchos es probablemente una mala idea, ya que es probable que se haya perdido de vista una o más variables llave que puedan ser usadas como identificadoras de las observaciones dentro de grupos.

El comando merge cuenta con una serie de opciones que son de gran utilidad al depurar nuestras bases, ya que en este ejercicio unimos las bases con todas sus variables, dejando una base con las siguientes características:

Contains data from BaseResultado.dta
obs:       417,023         
vars:          455      13 Sep 2018 10:13
size:   826,956,609        
Sorted by: folioviv  foliohog  numren



Gracias por leernos, nos vemos en la próxima entrada.

Esta entrada fue escrita y desarrollada por nuestro Esp. Ángel Cruz. Si tienes alguna duda, su correo es acruz@multion.com


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

miércoles, 25 de julio de 2018

Creando un archivo PDF desde Stata

¡Hola! Bienvenidos de nuevo a nuestro Blog de Usuarios Stata para la comunidad de habla hispana.

En esta nueva entrada de nuestro Blog, mostraremos algunos de los alcances del comando putpdf, realizando breves ejemplos de cómo usarlo para realizar algunos reportes.

El comando putpdf viene acompañado de un conjunto de comandos útiles para escribir párrafos, pegar imágenes y tablas a un archivo .pdf que guardaremos en memoria.

Para iniciar, debemos crear el documento .pdf escribiendo el siguiente comando:
.putpdf begin


Esto ha creado un documento en la carpeta en la cual estemos trabajando, por lo que si se encuentran trabajando en una carpeta diferente a la deseada pueden utilizar el comando cd para cambiar el directorio de trabajo de Stata. Cabe mencionar que este documento está guardado en la memoria y no el disco, por lo que no veremos un nuevo archivo dentro de la carpeta seleccionada hasta que utilicemos el siguiente comando:

. putpdf save nombredearchivo.pdf


Este último comando se utiliza, normalmente, una vez que hayamos terminado la edición de nuestro archivo; además, podemos utilizar la opción replace para sobrescribir nuestro documento cuando ya exista en disco.

En nuestro ejemplo, utilizaremos ola base de datos precargada en Stata: nlsw88.dta. En primera instancia, obtendremos estadística descriptiva de una variable para después obtener los resultados guardados en memoria de Stata para poder usarlos en nuestro documento y realizar un breve párrafo donde se describe la variable. Escribiremos en la barra de comandos lo siguiente:

. sysuse nlsw88.dta
. sum age

. return list





Antes de que podamos agregar texto a nuestro documento necesitamos indicarle a Stata la creación de un nuevo párrafo utilizando putpdf paragraph. Con el cual podemos realizar los ajustes necesarios de formato de este, tal como la alineación. Una vez creado el párrafo podemos insertar texto a través del comando putpdf text, este texto se añadirá a cualquier texto o imagen que haya sido agregada anteriormente; también podemos darle un formato especial a este texto.

Utilizaremos los datos obtenidos anteriormente para escribir nuestro primer párrafo, sólo necesitamos escribir lo siguiente en la barra de comandos:

. putpdf begin
. putpdf paragraph, halign(justified)
. putpdf text ("En la base de datos ")
. putpdf text ("nlsw88.dta"), font("Courier New")
. putpdf text (", se cuenta con")
. putpdf text (r(N)), nformat("%7.0fc")
. putpdf text (" datos sobre el salario de mujeres. Si observamos la edad de cada una, observamos que ")
. putpdf text (r(max)), bold
. putpdf text (" es la edad máxima. En promedio, las mujeres de esta muestra tienen ")
. putpdf text (r(mean)), nformat("%4.1fc")
. putpdf text (" años.")
. putpdf text (" Además, contamos con información sobre su estado civil, años de experiencia laboral y años de educación"), linebreak

En la segunda línea, la opción halign(justified) indica que la alineación del párrafo será justificada, entre otras opciones puede ser centrado o justificado a la derecha o izquierda. Notarán que todo el texto debe estar entre comillas; en nuestra cuarta línea, el nombre de la base de datos ocupa la opción font("Courier New") para indicar qué tipo de fuente se utilizará para ese texto en especial.

La sexta línea se utiliza la información que Stata retiene en memoria del comando summarize age, específicamente utilizamos el número de datos y le dimos un formato especifico a la cifra con la opción nformat("%7.0fc")

En la octava línea, nuevamente utilizamos la estadística descriptiva, pero especificando el tipo de letra con la que se reportaría (bold).

Por último, al escribir las líneas finales del párrafo especificamos que habrá un salto de línea para iniciar un segundo párrafo, esto a través de la opción linebreak.


Así luce hasta ahora nuestro documento:




Para que usted pueda ver el documento, recuerde que tiene que indicarle a Stata que quiere guardar el documento en disco, con el comando putpdf save.

. putpdf save BlogUsuariosEspañolSTATA.pdf, replace

Ahora pegaremos una imagen en nuestro documento. Se pueden gregar imágenes con formato .jpg y .png; debido a que las gráficas de Stata son formato .gph, debmos utilizar el comando graph export para convertir la gráfica a un formato soportado por putpdf image.

Si se requiere que la imagen sea agregada al párrafo activo, la imagen adoptará las especificaciones de formato del propio párrafo, pero si se requiere que la imagen sea independiente del párrafo activo, es necesario activar un nuevo párrafo en el cual podemos darle las opciones de formato distintas a las anteriores y que se ajusten a nuestra imagen; para esto, antes escribiremos en la ventana de comandos lo siguiente:

. histogram wage, percent kdensity by(race, total)
. graph export histo.png, replace

Obtuvimos un histograma del salario para cada subgrupo de la muestra según la raza, y la exportamos a un formato soportado por el comando. Ahora insertaremos esta imagen a nuestro documento PDF.

. putpdf paragraph, halign(center)
. putpdf image histo.png, width(4) height(2) linebreak
. putpdf text ("Observamos cómo se distribuye el salario por hora de las mujeres según la raza a la que pertenezcan."), italic


Esta vez nuestro párrafo fue centrado y a la imagen le especificamos las medidas que ocuparía en pulgadas (width(4) height(2)), además de especificarle un salto de línea, sin esta opción (linebreak) las líneas de texto posteriores se escribirían sobre la misma línea en la que se ubica la gráfica, produciendo un error visual fatal. Y por último describimos brevemente el gráfico con letras itálicas. 




Nuestro siguiente paso será agregar una tabla a nuestro documento. Necesitamos un nombre válido para nuestra tabla, pues lo utilizaremos para darle formato. La edición del formato de la tabla durará hasta que un nuevo párrafo, gráfico u otra tabla sean añadidas. En esta ocasión utilizaremos nuestra base de datos para obtener estadística descriptiva que pegaremos en el archivo.

Utilizaremos nuestra base de datos para obtener estadística descriptiva referente al salario por hora de las trabajadoras según su raza, obteniendo el número total de trabajadoras en cada categoría, el promedio, el valor máximo y el valor mínimo. Para hacer esto utilizaremos el comando statsby; sin embargo, esto modifica nuestra base de datos por lo cual usaremos el comando preserve para mantener guardado en memoria el estado actual de la base.

Cambiaremos de nombre la variable race a Raza para que nuestra tabla luzca mejor.
. rename race Raza

Si observamos nuestra base de datos se ha reducido a lo siguiente:


Para añadir esta tabla a nuestro documento necesitamos darle un nombre a esta tabla (tabla1), indicando que lo que pegaremos a nuestro archivo será parte de la base de datos e indicando el nombre de las variables (data("Raza Total Promedio Max Min")). El comando es el siguiente:
. putpdf table tabla1= data("Raza Total Promedio Max Min"), varnames border(start, nil) border(end, nil) border(insideV, nil)

Las opciones indican que la tabla debe ocupar el nombre de las variables y el tipo de línea que debe tener la tabla de inicio a fin y dentro de esta. Ejecutamos el comando restore para regresar la base de datos a su estado anterior al de realizar el comando statsby
Nuestro documento ahora luce de la siguiente forma:


Por último, exportaremos los resultados de una estimación. Vamos a estimar un modelo de regresión exponencial tipo Poisson, dicho sea de paso, sirve para evadir el problema de predicción de los niveles de una variable expresada en logaritmos y nos ayuda a estimar de manera individual ciertas interacciones que no tienen el mismo impacto pero que se alojan en la misma variable; por ejemplo, el efecto en el salario del estado civil de las trabajadoras según su estado civil. Escribimos en la ventana de comandos:
. poisson wage i.union##(c.grade c.ttl_exp##c.ttl_exp), vce(robust)


Esta tabla de resultados es grande, por lo que la pondremos en una página nueva de nuestro documento, para realizar esta acción sólo escribimos:

. putpdf pagebreak

Para exportar todas las columnas de la salida de regresión, sólo necesitamos escribir:

. putpdf table reg = etable



Nuestro PDF queda como vemos a continuación:





Gracias por leernos. Nos vemos en la próxima entrada. Este blog es administrado por MultiON Consulting S.A. de C.V.