Está en la página 1de 19

INTRODUCCIÓN A STATA

Mauricio Fuentes Alburquenque


Programa de Bioestadı́stica, Escuela de Salud Pública, Facultad de Medicina, Universidad de Chile
Elaboración: Junio de 2015. Última revisión: Enero de 2020

De acuerdo al ejemplo 1.1.1 dado por Milton1 , los datos mostrados en la Tabla 1 corresponden a 40
pacientes de un hogar de adultos, recogidos para un estudio sobre el destino de estos pacientes luego de
ser dados de alta desde dicho hogar.
Esta información se encuentra en una base de datos, disponible en los archivos destino.dta (formato Stata)
y destino.xlsx (formato Excel), la que contiene las siguientes variables:

• sexo: Sexo del paciente (0 = Hombre; 1 = Mujer).


• diagnostico: Diagnóstico del paciente (1 = Enfermedad fı́sica; 2 = Enfermedad psı́quica;
3 = Discapacidad intelectual).
• edad: Edad del paciente, en años.
• destino: Destino del paciente después de dejar el hogar (1 = Fallecido; 2 = Hogar de un pariente;
3 = Hospital; 4 = Calle; 5 = Otro hogar de adultos; 6 = Hogar de ancianos; 7 = Sin alta a la fecha).

Como se observa, las variables están codificadas, ya que Stata (ası́ como cualquier programa estadı́stico)
trabaja esencialmente con datos numéricos. Ante esto, siempre es necesario que toda base de datos
sea acompañada de su respectiva codificación, es decir, el significado de los códigos numéricos, también
conocido como diccionario de códigos. La mayorı́a de las veces las bases de datos se crean en planillas
Excel, y una buena manera de manejar y preparar la información es utilizar distintas hojas del libro Excel
para la base original, la base codificada y la codificación, como se hace en el archivo destino.xlsx.

1 Estableciendo la carpeta de trabajo

Antes de abrir la base de datos es conveniente fijar una carpeta de trabajo, de modo que cualquier co-
mando que se ejecute en Stata se haga dentro de esa carpeta (ejemplo: abrir un archivo, guardar un
archivo, etc.), sin tener que especificar la ruta cada vez. El comando para fijar la carpeta de trabajo es2

. cd "ruta"

Por ejemplo, si la carpeta de trabajo va a estar en Mis documentos (válido para Windows), el comando
serı́a

. cd "C:\Users\Usuario\Documents\"

También esta operación se puede realizar desde el menú File → Change Working Directory..., en el que
se abre un cuadro de diálogo y se debe buscar la carpeta de trabajo.

1
Milton, J. Susan. Statistical methods in the Biological and Health Sciences, 2nd Ed. McGraw-Hill, 1992.
2
Aquı́ los comandos se escribirán empezando con un punto y un espacio, que es como aparecen en la salida del programa.
Sin embargo, para ejecutarlos se deben escribir directamente, sin el punto y el espacio.

1
Tabla 1: Datos de 40 pacientes de un hogar de adultos.
Sexo Diagnóstico Edad (años) Destino
Hombre Enfermedad psı́quica 29 Hogar de un pariente
Hombre Discapacidad intelectual 35 Sin alta a la fecha
Mujer Enfermedad fı́sica 34 Sin alta a la fecha
Hombre Enfermedad psı́quica 36 Sin alta a la fecha
Mujer Discapacidad intelectual 25 Sin alta a la fecha
Mujer Enfermedad psı́quica 20 Sin alta a la fecha
Mujer Enfermedad fı́sica 31 Sin alta a la fecha
Mujer Enfermedad fı́sica 89 Fallecido
Hombre Discapacidad intelectual 42 Sin alta a la fecha
Hombre Enfermedad psı́quica 41 Sin alta a la fecha
Mujer Enfermedad fı́sica 47 Sin alta a la fecha
Hombre Enfermedad fı́sica 41 Hogar de un pariente
Hombre Enfermedad psı́quica 87 Sin alta a la fecha
Mujer Discapacidad intelectual 56 Fallecido
Mujer Discapacidad intelectual 50 Sin alta a la fecha
Mujer Enfermedad fı́sica 28 Sin alta a la fecha
Hombre Discapacidad intelectual 35 Sin alta a la fecha
Mujer Enfermedad fı́sica 23 Sin alta a la fecha
Mujer Discapacidad intelectual 39 Hospital
Hombre Enfermedad fı́sica 42 Sin alta a la fecha
Mujer Enfermedad psı́quica 72 Hogar de ancianos
Hombre Enfermedad psı́quica 52 Sin alta a la fecha
Mujer Enfermedad fı́sica 31 Sin alta a la fecha
Hombre Enfermedad fı́sica 35 Sin alta a la fecha
Hombre Enfermedad fı́sica 42 Sin alta a la fecha
Mujer Enfermedad psı́quica 29 Hogar de un pariente
Mujer Discapacidad intelectual 61 Sin alta a la fecha
Mujer Enfermedad psı́quica 18 Hospital
Mujer Discapacidad intelectual 64 Sin alta a la fecha
Hombre Enfermedad fı́sica 51 Sin alta a la fecha
Mujer Enfermedad fı́sica 30 Sin alta a la fecha
Mujer Discapacidad intelectual 35 Sin alta a la fecha
Hombre Enfermedad fı́sica 40 Hogar de ancianos
Hombre Discapacidad intelectual 76 Hospital
Hombre Enfermedad fı́sica 59 Sin alta a la fecha
Mujer Enfermedad psı́quica 71 Hogar de ancianos
Mujer Enfermedad psı́quica 62 Sin alta a la fecha
Mujer Enfermedad psı́quica 65 Hospital
Hombre Discapacidad intelectual 51 Sin alta a la fecha
Mujer Discapacidad intelectual 18 Sin alta a la fecha

2 Abriendo la base de datos

Una vez fijada la carpeta de trabajo, y habiendo copiado la base de datos destino.dta en ella, el comando
para abrirla es

. use destino, clear

La opción clear le indica a Stata que cierre la base de datos que está abierta, aunque hayan cambios sin
guardar. Si no hay ningún archivo previamente abierto, simplemente se abrirá el que estamos indicando.

2
Cuando se trabaja con secuencias de comandos en archivos .do (ver apartado 6) es recomendable usar
esta opción, ya que evita que la ejecución se detenga.
Cuando el nombre de la base de datos contiene dos o más palabras separadas, éste se debe colocar entre
comillas. Por ejemplo, si el archivo se llama destino de pacientes.dta el comando a usar serı́a

. use "destino de pacientes.dta", clear

Cabe notar que si no se hubiese fijado la carpeta de trabajo previamente y se hubiese guardado la base
de datos en Mis documentos, se tendrı́a que escribir el comando

. use "C:\Users\Usuario\Documents\destino.dta", clear

También se puede abrir la base de datos desde el menú File → Open. Para abrir la base de datos directa-
mente desde el archivo Excel, éste se debe importar con el comando

. import excel "destino.xlsx", sheet("BD codificada") firstrow clear

3 Etiquetando la base de datos

Una vez que se tenga claridad sobre la descripción de las variables y sus códigos, conviene hacer algunos
“ajustes de forma” a la información. Estos ajustes involucran principalmente el etiquetado de variables y
sus categorı́as (esto último en el caso de variables cualitativas). Esto, si bien no es estrictamente necesario
para realizar el análisis estadı́stico, permite una lectura más fácil de las salidas y la obtención de gráficos
adecuados, en los que, por ejemplo, se indiquen para la variable sexo las categorı́as “Hombre” y “Mujer”
y no los números 0 y 1.
Antes del etiquetado conviene mencionar que en la barra de herramientas de Stata hay dos ı́conos ( )
que permiten ver la base de datos como una planilla. El de la izquierda permite editar la información
(modo edición o Edit) y el de la derecha sólo verla (modo visualización o Browse). Si se hace click, se
abre la ventana Data Editor y se ve como en la Figura 1. En general esta ventana se mantiene cerrada,
salvo si se necesita modificar algún dato. No obstante, para evitar errores es recomendable abrirla en
modo Browse.
También es posible abrir la ventana de datos a través de los comandos browse y edit, para el modo
visualización y edición, respectivamente. Si se quiere ver sólo algunas variables (especialmente útil cuando
la base de datos contiene muchas), se puede especificar, por ejemplo, mediante browse(sexo edad). Si
se desea usar el menú se debe ir a Data → Data Editor.
El etiquetado de variables y categorı́as es posible a través de la ventana Data Editor. Sin embargo, se
mostrará la manera de realizarlo usando comandos, ya que esto permite, como veremos después, hacerlo
de manera más rápida y automática.
Partiremos con la variable sexo y le pondremos la etiqueta “Sexo del paciente”. El comando es

. label variable sexo "Sexo del paciente"

3
Figura 1: Ventana Data Editor en modo Browse.

Luego etiquetaremos las categorı́as de esta variable. Para ello, primero se debe crear o definir una etiqueta,
que llamaremos genero, y luego se asigna a la variable sexo los valores de la etiqueta genero recién creada.
Los dos comandos para esto son

. label define genero 0 Hombre 1 Mujer


. label values sexo genero

Del mismo modo, para etiquetar la variable diagnostico y sus categorı́as, la secuencia de comandos es

. label variable diagnostico "Diagnóstico del paciente"


. label define diag 1 "Enfermedad fı́sica" 2 "Enfermedad psı́quica" ///
3 "Discapacidad intelectual"
. label values diagnostico diag

Notar que la etiqueta asignada a la variable consta de más de una palabra y una de ellas lleva tilde,
obligando ambas situaciones a ponerla entre comillas. Lo mismo ocurre para las etiquetas de las categorı́as.
El sı́mbolo /// indica que el comando continúa en la siguiente lı́nea, por lo que se puede escribir completo
en Stata (sin ///) para ejecutarlo.
Los comandos para etiquetar las variables edad y destino, ası́ como las categorı́as de esta última, son

. label variable edad "Edad del paciente (a~


nos)"
. label variable destino "Destino del paciente"
. label define dest 1 Fallecido 2 "Hogar de un pariente" 3 Hospital 4 Calle ///
5 "Otro hogar de adultos" 6 "Hogar de ancianos" 7 "Sin alta"
. label values destino dest

Si abrimos la ventana Data Editor veremos la base de datos etiquetada, como se muestra en la Figura
2. Es importante tener en cuenta que la información mantiene su formato numérico original, y que las
etiquetas es sólo la forma en que Stata la muestra al usuario.

4
Figura 2: Base de datos etiquetada

Otra forma de visualizar la base de datos es a través del comando list, pero se puede limitar el rango
para que no muestre las 40 observaciones, sino, por ejemplo, las primeras diez:

. list in 1/10

+-----------------------------------------------------------------+
| sexo diagnostico edad destino |
|-----------------------------------------------------------------|
1. | Hombre Enfermedad psı́quica 29 Hogar de un pariente |
2. | Hombre Discapacidad intelectual 35 Sin alta |
3. | Mujer Enfermedad fı́sica 34 Sin alta |
4. | Hombre Enfermedad psı́quica 36 Sin alta |
5. | Mujer Discapacidad intelectual 25 Sin alta |
|-----------------------------------------------------------------|
6. | Mujer Enfermedad psı́quica 20 Sin alta |
7. | Mujer Enfermedad fı́sica 31 Sin alta |
8. | Mujer Enfermedad fı́sica 89 Fallecido |
9. | Hombre Discapacidad intelectual 42 Sin alta |
10. | Hombre Enfermedad psı́quica 41 Sin alta |
+-----------------------------------------------------------------+

Si se desea ver sólo algunas variables éstas se deben especificar. Por ejemplo, si queremos ver las primeras
10 observaciones sólo para las variables sexo y destino, debemos usar list sexo destino in 1/10.

5
4 Revisando la base de datos

Antes de comenzar con cualquier análisis estadı́stico se debe estar seguro de la calidad y validez de la
información contenida en la base de datos. Un primer comando importante es duplicates, que permite
identificar observaciones duplicadas ya sea en una, varias o todas las variables. Este comando debe ir
seguido de un subcomando que tiene cinco opciones: report, examples, list, tag y drop. En nuestro
caso buscaremos casos duplicados completos, para los cual no se debe especificar ninguna variable en el
comando.
La primera opción entrega la siguiente salida:

. duplicates report

Duplicates in terms of all variables

--------------------------------------
copies | observations surplus
----------+---------------------------
1 | 34 0
2 | 6 3
--------------------------------------

Esto nos informa que existen 34 observaciones con una copia única y de las cuales se producen 0 observa-
ciones “sobrantes” (columna “surplus”). Mirando la segunda fila, la salida indica que hay 6 observaciones
con 2 copias, lo que genera 3 observaciones “sobrantes”3 .
La segunda opción (examples) entrega un ejemplo de cada observación duplicada. La salida es

. duplicates examples

Duplicates in terms of all variables

+-----------------------------------------------------------------------+
| group: # e.g. obs sexo diagnostico edad destino |
|-----------------------------------------------------------------------|
| 1 2 20 Hombre Enfermedad fı́sica 42 Sin alta |
| 2 2 2 Hombre Discapacidad intelectual 35 Sin alta |
| 3 2 7 Mujer Enfermedad fı́sica 31 Sin alta |
+-----------------------------------------------------------------------+

El subcomando list muestra todos los casos duplicados:

. duplicates list

3
Stata por defecto señala que cuando hay dos observaciones iguales una de ellas “sobra”, aunque no necesariamente es
ası́.

6
Duplicates in terms of all variables

+---------------------------------------------------------------------+
| group: obs: sexo diagnostico edad destino |
|---------------------------------------------------------------------|
| 1 20 Hombre Enfermedad fı́sica 42 Sin alta |
| 1 25 Hombre Enfermedad fı́sica 42 Sin alta |
| 2 2 Hombre Discapacidad intelectual 35 Sin alta |
| 2 17 Hombre Discapacidad intelectual 35 Sin alta |
| 3 7 Mujer Enfermedad fı́sica 31 Sin alta |
|---------------------------------------------------------------------|
| 3 23 Mujer Enfermedad fı́sica 31 Sin alta |
+---------------------------------------------------------------------+

Es necesario aclarar que en esta base de datos no existen observaciones duplicadas, sólo hay casos que
tienen las mismas caracterı́sticas (para las variables registradas). Esto no es tan difı́cil que ocurra si hay
pocas variables, es decir, por ejemplo, que en este establecimiento existan dos hombres de 42 años con
una enfermedad fı́sica y que aún no han sido dados de alta (casos 20 y 25). Con esto se intenta resaltar
la importancia que tiene no olvidar que cada conjunto de datos tiene su origen y naturaleza particular,
y que no se deben tomar decisiones apresuradas y “ciegas” por el resultado que entrega un programa
computacional.
Las últimas dos opciones de subcomando, que no usaremos aquı́ dado que no son necesarias, permiten
generar una nueva variable que indica el número de casos iguales para cada observación (subcomando tag),
y eliminar los casos duplicados conservando sólo el primero que aparece en la base de datos (subcomando
drop).
El comando duplicates también se puede ejecutar desde el menú Data → Data utilities → Manage du-
plicate observations, seleccionando la opción correspondiente en la ventana que emerge después.
Otro comando útil es describe, el que también se puede ejecutar a través del menú Data → Describe
data → Describe data in memory, cuya salida en este caso es

. describe

Contains data from C:\Users\Usuario\Documents\destino.dta


obs: 40
vars: 4 22 Jun 2015 14:32
size: 200
-------------------------------------------------------------------------
storage display value
variable name type format label variable label
-------------------------------------------------------------------------
sexo byte %10.0g genero Sexo del paciente
diagnostico byte %19.0g diag Diagnóstico del paciente
edad int %10.0g Edad del paciente (a~nos)
destino byte %21.0g dest Destino del paciente
Sorted by:

La información más importante de esta salida es el número de observaciones (40) y el de variables (4),
además de algunas caracterı́sticas de las variables como el formato y las etiquetas.

7
Un comando mucho más importante y completo que el anterior es codebook, al que se puede acceder en el
menú Data → Describe data → Describe data contents (codebook). Al igual que describe y duplicates,
si no se especifica ninguna variable este comando se ejecuta para todas las contenidas en la base. Sin
embargo, veremos la salida para cada variable por separado.

. codebook sexo

----------------------------------------------------------------------------
sexo Sexo del paciente
----------------------------------------------------------------------------

type: numeric (byte)


label: genero

range: [0,1] units: 1


unique values: 2 missing .: 0/40

tabulation: Freq. Numeric Label


17 0 Hombre
23 1 Mujer

Lo más importante de revisar en esta salida es el rango de la variable, que en el caso de sexo corresponde
a [0,1] y tiene sólo dos valores ya que es dicotómica (ver “unique values”). No hay ningún dato faltante, ya
que indica 0 datos “missing” de un total de 40 (0/40). Finalmente, entrega la distribución de frecuencias de
los valores 0 y 1, es decir, la distribución de hombres y mujeres, mostrando las etiquetas correspondientes.
Viendo estos resultados no se aprecia ningún error o inconsistencia aparente en esta variable.

. codebook diagnostico

----------------------------------------------------------------------------
diagnostico Diagnóstico del paciente
----------------------------------------------------------------------------

type: numeric (byte)


label: diag, but 1 nonmissing value is not labeled

range: [0,3] units: 1


unique values: 4 missing .: 0/40

tabulation: Freq. Numeric Label


1 0
15 1 Enfermedad fı́sica
11 2 Enfermedad psı́quica
13 3 Discapacidad intelectual

En el caso de diagnostico, si bien no hay datos faltantes (0/40), el rango [0,3] no corresponde al
definido para esta variable ya que sólo tiene 3 valores (1, 2 y 3). En la tabulación se observa que sólo

8
hay un dato que tiene un valor incorrecto (0). Para saber cuál observación es la que contiene este error,
podemos usar el comando list especificando, con la opción if, que sólo se muestre la observación donde
la variable diagnostico toma el valor 0, cuya salida nos informa que la observación 22 es la que contiene
el error detectado:

. list if diagnostico==0

+-------------------------------------+
| sexo diagno~o edad destino |
|-------------------------------------|
22. | Hombre 0 52 Sin alta |
+-------------------------------------+

Comúnmente, durante el análisis estadı́stico se reordenan las observaciones, luego de lo cual la que actual-
mente es la observación 22 ya no lo será. Esto produce que la identificación de una observación con algún
error se haga un poco más difı́cil. Por otra parte, suele ser de interés mantener identificados a los indi-
viduos, independientemente de su posición en la base de datos. Para resolver esto, podemos asignarle un
identificador a cada observación, creando una nueva variable denominada id y ubicándola en la primera
columna de la base, con los comandos:

. generate id=_n
. order id sexo

Entonces, podemos identificar que el error en diagnostico se produjo para el individuo 22, lo que no
cambiará en caso que debamos reordenar las observaciones para algún análisis particular. Con el comando
list también se puede especificar que sólo se muestren, por ejemplo, las variables id y diagnostico
(esto es especialmente útil cuando hay muchas variables):

. list id diagnostico if diagnostico==0

+---------------+
| id diagno~o |
|---------------|
22. | 22 0 |
+---------------+

Supongamos que logramos determinar que el individuo 22 corresponde a un paciente con diagnóstico de
enfermedad psı́quica, es decir, con un valor 2. Entonces debemos corregir el error, para lo cual la manera
más fácil es abrir la ventana Data Editor en modo Edit y cambiar el dato manualmente. Notar que al
hacer esto, en la pantalla de resultados de Stata queda registrado el comando y la salida4 :

. replace diagnostico = 2 in 22
(1 real change made)

4
Siempre es posible encontrar el comando que se necesita si se ejecuta alguna acción a través del menú, por lo cual no
hay necesidad de tener un listado de comandos a mano o una memoria privilegiada para retenerlos.

9
Ahora que se ha corregido el error en la observación 22, podemos verificar que la variable diagnostico
está correcta:

. codebook diagnostico

----------------------------------------------------------------------------
diagnostico Diagnóstico del paciente
----------------------------------------------------------------------------

type: numeric (byte)


label: diag

range: [1,3] units: 1


unique values: 3 missing .: 0/40

tabulation: Freq. Numeric Label


15 1 Enfermedad fı́sica
12 2 Enfermedad psı́quica
13 3 Discapacidad intelectual

Veamos la variable edad:

. codebook edad

----------------------------------------------------------------------------
edad Edad del paciente (a~
nos)
----------------------------------------------------------------------------

type: numeric (int)

range: [18,300] units: 1


unique values: 30 missing .: 0/40

mean: 51.55
std. dev: 44.153

percentiles: 10% 25% 50% 75% 90%


24 32.5 41.5 60 74

Esta es una variable cuantitativa, por lo que se muestran medidas de posición y dispersión como media,
desviación estándar y percentiles. Tampoco hay aquı́ datos faltantes (0/40), y no nos preocuparemos
por los valores únicos ya que no nos informa de posibles errores. Sin embargo, si observamos el rango
o recorrido vemos que el lı́mite superior es 300, lo que indica que hay errores ya que podemos suponer
razonablemente que es imposible que hayan individuos con 300 años o edades cercanas. Lamentablemente,
codebook no nos permite saber cuántas observaciones tienen valores anómalos de edad. Una alternativa
es plantearse un lı́mite superior razonable (por ejemplo 100 años) y mediante el comando list ver qué
observaciones presentan edades sobre dicho lı́mite:

10
. list if edad>100

+--------------------------------------------------+
| id sexo diagnostico edad destino |
|--------------------------------------------------|
31. | 31 Mujer Enfermedad fı́sica 300 Sin alta |
+--------------------------------------------------+

Con este resultado podrı́amos determinar que sólo el paciente 31 presenta un error (evidente) en la edad.
Otra manera de averiguarlo, y que puede ser complementaria a la anterior (incluso previa en muchos
casos), es a través de un diagrama de caja y bigote, el que se realiza mediante el comando boxplot (o a
través del menú Graphics → Box plot):

. graph box edad

El gráfico obtenido se muestra en la Figura 3, donde se observa que el único dato “outlier” es el que
presenta una edad de 300 años5 .
Suponiendo que se logra determinar que se trató de un error de digitación y que la edad correcta del
paciente era 30 años, corregimos el dato y la nueva salida de codebook es la mostrada a continuación,
mientras que el nuevo diagrama de caja y bigote se muestra en la Figura 4.

. codebook edad

----------------------------------------------------------------------------
edad Edad del paciente (a~
nos)
----------------------------------------------------------------------------

type: numeric (int)

range: [18,89] units: 1


unique values: 30 missing .: 0/40

mean: 44.8
std. dev: 18.2183

percentiles: 10% 25% 50% 75% 90%


24 31 41 57.5 71.5

5
En realidad podrı́a haber más de un punto superpuesto en 300 o en valores cercanos, lo que a veces es imposible identificar
en el gráfico. Sin embargo, por el resultado del comando list ya sabemos que sólo una observación presenta ese valor para
edad.

11
Figura 3: Diagrama de caja y bigote para la variable edad.

Finalmente, para la variable destino se obtiene:

. codebook destino

----------------------------------------------------------------------------
destino Destino del paciente
----------------------------------------------------------------------------

type: numeric (byte)


label: dest

range: [1,7] units: 1


unique values: 5 missing .: 1/40

tabulation: Freq. Numeric Label


2 1 Fallecido
3 2 Hogar de un pariente
4 3 Hospital
3 6 Hogar de ancianos
27 7 Sin alta
1 .

Aquı́ se observan dos situaciones. La primera (en principio no hay motivos para pensar que es un error)
es que, de las 7 categorı́as de la variable, hay dos que no están presentes (los valores 4 y 5, cuya frecuencia
no aparece ya que es 0). La segunda, que sı́ se trata de un error, es que hay un dato faltante. Lo podemos
identificar con el comando list, que informa que se trata del paciente 27:

12
. list if destino==.

+--------------------------------------------------------+
| id sexo diagnostico edad destino |
|--------------------------------------------------------|
27. | 27 Mujer Discapacidad intelectual 61 . |
+--------------------------------------------------------+

Figura 4: Diagrama de caja y bigote para la variable edad con la base de datos corregida.

Una vez más, supondremos que logramos determinar el origen del error y que se trataba de un paciente
que no habı́a sido dado de alta a la fecha del estudio (valor 7 de destino). Se corrige y se comprueba
nuevamente con codebook:

. codebook destino

----------------------------------------------------------------------------
destino Destino del paciente
----------------------------------------------------------------------------

type: numeric (byte)


label: dest

range: [1,7] units: 1


unique values: 5 missing .: 0/40

tabulation: Freq. Numeric Label


2 1 Fallecido
3 2 Hogar de un pariente
4 3 Hospital
3 6 Hogar de ancianos
28 7 Sin alta

13
5 Guardando un registro de los comandos y las salidas (opcional)

En muchos casos, especialmente cuando se hacen análisis extensos, resulta útil guardar los comandos
utilizados y las salidas con los resultados. Si bien se puede copiar el texto desde la pantalla de resultados
(seleccionando con el mouse, haciendo click al botón derecho del mouse y luego pinchando Copiar ) y
pegarlo en un procesador o archivo de texto, la mejor manera es ir guardando automáticamente lo que
hacemos.
Stata puede hacer esto a través de un archivo log (registro), el que debe ser creado al inicio de la sesión
de análisis. Suponiendo que ya hemos establecido la carpeta de trabajo, el comando para iniciar un nuevo
archivo log y su salida son

. log using "destino.log"


-----------------------------------------------------------------------
name: <unnamed>
log: C:\Users\Usuario\Documents\destino.log
log type: text
opened on: 23 Jun 2015, 09:59:54

Esto también se puede realizar pinchando el botón de la barra de herramientas, o mediante el menú
File → Log → Begin..., con lo que se abrirá una ventana donde se debe seleccionar la carpeta de trabajo,
colocar el nombre del archivo y seleccionar el tipo Log (*.log), como se muestra en la Figura 5.

Figura 5: Ventana de creación de un archivo log.

Una vez terminada la sesión de análisis se debe cerrar el archivo log, de lo contrario Stata advertirá que
aún está abierto. Para cerrar el archivo log, el comando y su salida son

. log close
name: <unnamed>
log: C:\Users\Usuario\Documents\destino.log
log type: text
closed on: 23 Jun 2015, 10:09:40
------------------------------------------------------------------------

14
También se puede cerrar con el botón y seleccionando Close log file en la ventana emergente, como se
muestra en la Figura 6.

Figura 6: Ventana para cerrar un archivo log.

Para ver cómo funciona, podemos ejecutar la siguiente serie de comandos (hay que asegurarse de establecer
previamente la carpeta de trabajo):

. log using "destino.log", replace


. use destino, clear
. *Se etiquetan las variables
. label variable sexo "Sexo del paciente"
. label define genero 0 Hombre 1 Mujer
. label values sexo genero
. label variable diagnostico "Diagnóstico del paciente"
. label define diag 1 "Enfermedad fı́sica" ///
2 "Enfermedad psı́quica" 3 "Discapacidad intelectual"
. label values diagnostico diag
. label variable edad "Edad del paciente (a~nos)"
. label variable destino "Destino del paciente"
. label define dest 1 Fallecido 2 "Hogar de un pariente" ///
3 Hospital 4 Calle 5 "Otro hogar de adultos" ///
6 "Hogar de ancianos" 7 "Sin alta"
. label values destino dest
. duplicates report
. duplicates examples
. duplicates list
. describe
. codebook
. log close

En el primer comando se agregó la opción replace, que permite sobreescribir el nuevo archivo log en el
anterior que se guardó con el mismo nombre. En general siempre es conveniente usar esta opción.
En el segundo comando se agregó la opción clear, que cierra la base de datos que esté abierta antes de
abrir la que se está especificando. En general también es conveniente usar esta opción, pero hay que tener

15
claro que se perderán los cambios que se hayan hecho al archivo que se está cerrando y que no hayan sido
guardados.
La tercera lı́nea es un comentario, el que se inserta comenzando con un asterisco (*) de modo que Stata
no lo considere como un comando.
Luego, con un editor de texto (por ejemplo el Block de notas) podemos abrir el archivo destino.log y ver
los resultados.

6 Usando archivos do

Los archivos do de Stata permiten guardar una serie de comandos y ejecutarlos automáticamente en el
orden especificado, evitando tener que digitarlos uno a uno. Es muy útil cuando ya se ha decidido cuáles
son los comandos adecuados para el análisis.
Para crear un archivo do se debe pinchar el botón , que abre una ventana en blanco como se muestra
en la Figura 7.

Figura 7: Ventana para crear un archivo do.

Dentro de esta ventana simplemente se deben escribir los comandos que se desea ejecutar, separados por
Enter (un comando en cada lı́nea). Por ejemplo, habiendo establecido previamente la carpeta de trabajo,
si quisiéramos sólo ejecutar los comandos duplicates, describe y codebook, guardando la salida en un
archivo log, la secuencia serı́a6

log using "destino.log", replace


use destino, clear
duplicates report
duplicates examples
duplicates list
describe
codebook
log close

6
En esta sección no se comenzará con punto y espacio, ya que ası́ es como queda escrito en el archivo do.

16
Para ejecutarlo, se debe copiar la anterior secuencia en la ventana en blanco del archivo do, y luego
pinchar el botón de la barra de herramientas de dicha ventana (el botón más a la derecha). También
se pueden seleccionar sólo algunos comandos y ejecutarlos con el mismo botón, como se muestra en la
Figura 8.

Figura 8: Selección de algunos comandos en un archivo do.

En un archivo do se pueden insertar comentarios anteponiendo * o //, y éstos pueden escribirse en una
lı́nea independiente o después del comando en la misma lı́nea. Por ejemplo:

//Revisión de la base de datos


log using "destino.log", replace //se inicia un archivo log
use destino, clear //se abre la base
duplicates report //resumen de duplicados
duplicates examples //ejemplos de duplicados
duplicates list //lista de todos los duplicados
describe // descripción de la base
codebook // descripción de las variables
log close //se cierra el archivo log

Si se hace un gráfico y se desea guardarlo, Stata lo guardará en la carpeta de trabajo sin necesidad de
especificar la ruta. Para hacer un diagrama de caja y bigote y guardarlo con el nombre box edad.gph
(formato de gráfico de Stata), los comandos serı́an

graph box edad


graph save box_edad, replace

Para etiquetar la base de datos se pueden incluir los comandos en el mismo archivo do, pero se puede
también crear un archivo do de etiquetado y ejecutarlo desde el archivo do de análisis. El archivo de
etiquetado lo llamaremos etiquetas.do y contiene los comandos mostrados en la Figura 9.
Luego, en el archivo do de análisis (destino.do) insertamos el comando do etiquetas, que indica a Stata
ejecutar etiquetas.do y seguir con los comandos que vienen a continuación (ver Figura 10).

17
Figura 9: Archivo do para etiquetar la base de datos.

Figura 10: Archivo do que incluye el etiquetado ejecutando otro archivo do.

Cuando se crea una etiqueta para categorı́as de variables con el comando label define, la etiqueta queda
guardada en la memoria de la sesión actual. Por lo tanto, si corremos nuevamente el comando para crear
la etiqueta7 , Stata entregará un mensaje de error y no ejecutará dicho comando, como a continuación:

. label define genero 0 Hombre 1 Mujer


label genero already defined
r(110);

Esta situación detiene la ejecución del do, ya que éste no puede “saltarse” un comando que arroje un
error. Para evitar esto, conviene insertar al inicio del do un comando que borra todas las etiquetas que
hayan sido guardadas en la memoria de la actual sesión de trabajo. Este comando es

label drop _all

7
Usualmente cuando se está creando un archivo do, éste se ejecuta muchas veces para ir probando si el análisis es correcto,
si los gráficos son adecuados, etc. Por este motivo es importante incluir opciones de limpieza al principio de los archivos do,
ası́ como las opciones replace y clear cuando corresponda.

18
Tambien se podrı́a usar un comando más “radical”, que borra todo lo que haya podido ser guardado
anteriormente en la memoria de la sesión y cierra el archivo que esté abierto. Este comando es

clear all

Finalmente, conviene insertar al inicio de toda la secuencia el comando set more off, que hace que los
resultados se muestren de inmediato en la pantalla y no parcialmente con la opción --more-- en la parte
inferior.
Con todo lo anterior, tenemos el archivo do definitivo como se muestra en la Figura 11.

Figura 11: Archivo do definitivo.

19

También podría gustarte