¡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.
Muy buen post, ya estoy implementando este comando. Gracias.
ResponderBorrarTengo un único inconveniente en la réplica del ejercicio: no consigo configurar la edad promedio con un decimal, a partir del scalar que genera el -summarize edad-, al comienzo del ejercicio. En el modelo de PDF que dejan al final del post, observo también que los tres scalars que se usan del -summ edad- se representan con missing.