Está en la página 1de 35

Introducción a la a gestión de datos en Stata

Iván Andrés Trujillo


ivan.trujillo@usco.edu.co
Universidad Surcolombiana Facultad de Salud
July 22, 2020

Contenido
1 Generalidades 3
1.0.1 Sintaxis del lenguaje de Stata . . . . . . . . . . . . . . . . 3
1.0.2 Gestión de base de datos . . . . . . . . . . . . . . . . . . 3
1.0.3 Análisis empı́rico . . . . . . . . . . . . . . . . . . . . . . . 3

2 Introducción 4
2.1 Tipos de Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Generalidades de Stata . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Sintaxis del lenguaje de Stata 7

4 Operadores 8
4.1 Operados lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 Operados de letras (string) . . . . . . . . . . . . . . . . . . . . . 8
4.4 Dofile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.5 input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6 Summarize y tabulate . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Programa y Hojas de ruta 10


5.1 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.1.1 foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.2 Levelsof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.4 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.5 forvalue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.5.1 Ado file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Gestión de Base de datos 14


6.1 Los datos en Stata . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.1.1 Creación de Variables . . . . . . . . . . . . . . . . . . . . 14
6.2 Rename & Label . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.3 Keep & drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.4 Reshape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.5 if & cond() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1
7 Importar documentos 19
7.1 import delimited . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2 import excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

8 Homogenización de la base 20
8.1 Eliminar columnas vacı́as . . . . . . . . . . . . . . . . . . . . . . 21
8.2 Delimitadores en variables . . . . . . . . . . . . . . . . . . . . . . 22
8.3 Nombre de variables muy largos . . . . . . . . . . . . . . . . . . . 22
8.4 Hallar un resultado . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.5 Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.6 Datos atı́picos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.6.1 Teorema de shebysheb y la regla empirica . . . . . . . . . 25
8.6.2 Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.7 Append & Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.8 Append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.9 Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

9 World Bank Data 28

10 Análisis empı́rico 28
10.1 Gráficas descriptivas . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.1.1 Pastel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.1.2 Gráfica de barras . . . . . . . . . . . . . . . . . . . . . . . 29
10.1.3 Gráfica de lineas . . . . . . . . . . . . . . . . . . . . . . . 30
10.1.4 Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.2 Medidas de tendencia central . . . . . . . . . . . . . . . . . . . . 31
10.2.1 La media . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.3 tabstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.3.1 La mediana . . . . . . . . . . . . . . . . . . . . . . . . . 32
10.4 Medidas de variabilidad . . . . . . . . . . . . . . . . . . . . . . . 33
10.5 El rango . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
10.5.1 Gráfico de caja . . . . . . . . . . . . . . . . . . . . . . . . 33
10.6 La varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
10.7 Variable estándar . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

11 Apéndice 34

2
1 Generalidades
El siguiente texto está dirigido a aquellas personas que tienen necesidades lab-
orales o académicas en el manejo de bases de datos, como para aquellas que se
introducen en la estadı́stica descriptiva. El contenido de este documento se ha
basado en las necesidades mas comunes a los que se podrı́a enfrentar laboral-
mente en la gestión de los datos o la limpieza de los mismos. Este documento
será útil solo para aquellas personas que se introducen en el tema, e irá per-
diendo su valor en el grado que se vaya interactuando con el software, pues
el objetivo final es que los lectores tengan autonomı́a para trabajar con el so-
porte de Stata, que es más que suficiente. En cuanto al contenido implı́cito el
texto esta dividido en tres componentes o secciones que pueden considerarse
independientes si el lector tiene ya cierto grado de destreza:

1.0.1 Sintaxis del lenguaje de Stata


En esta seccion se introduce al lenguje del software, dado que Stata ”entiende”
un lenguaje, respeta una sintaxis.

1.0.2 Gestión de base de datos


La depuración, estandarización y unión de base de datos es importante para la
obtención de resultados debido a que menudo la información no se encuentra
consolidada o no está en la forma adecuada para realizar las descripciones nece-
sarias. Por lo que en esta sección se desarrollan elementos utiles y basicos para
la gestion de la base de datos.

1.0.3 Análisis empı́rico


Dentro de esta sección se manejarán los estadı́sticos básicos que utilizará el
investigador para hacer descripciones acerca de la información que posee y se
plantee las hipótesis a probar.

3
2 Introducción
Aceptada la eficiencia de los paquetes estadı́sticos para hacer reproducible y val-
idable en el manejo y descripción de la población objeto de estudio, e identificar
patrones en las variables de manera mas sencilla y confiable, nos queda decir
que Stata es un programa deseable pues proporciona un lenguaje sencillo pero
potente que lo posiciona como uno de los mejores programas en el mercado.

2.1 Tipos de Variables


En el estudio de los fenómenos existen dos tipos de variables; las variables cual-
itativas y las cuantitativas que pueden ser discretas o continuas. las primeras
cualitativas corresponden a las categorı́as como el sexo, la ocupación, la religión,
la presencia o ausencia de una morbilidad. Las variables discretas son aquellas
que por su naturaleza no pueden contener una parte decimal, ası́ el número de
hijos, comorbilidades, y número de personas que viven el hogar serán discre-
tas, por otra parte las variables continuas pueden contener una parte decimal,
ası́ el peso, la edad , y el salario serán de caracter continuo. Stata identifica
la naturaleza de la variable para poder realizar operaciones sobre ellas, ası́ las
variables podrán ser de texto string o númericas numeric, por ejemplo la talla
y el peso serán de carácter numeric, mientras que la ocupación o profesión será
identificadas como string. No obstante, existen errores de registro y por lo
tanto podrı́amos encontrar que en la variable peso se ha registrado el peso de
un individuo como 1oo en vez de 100, por lo que Stata considerará que esa
variable es de carácter string, debido a que algún registro contiene caracteres no
numéricos, ası́ si queremos calcular el ı́ndice de masa corporal de los individuos
nos aparecerı́a un error de sintaxis. pues la suma de variables está definida para
variables numéricas. más adelante veremos como podemos tratar estos errores.
Lo que nos interesa en sı́ntesis es saber que Stata identificará como variables
numéricas aquellas que en cada una de sus celdas solo se hayan registrado car-
acteres numéricos y podrá definir como string aquellas que tengan caracteres
numéricos, no numéricos o ambas.
Realizaremos un ejercicio para demostrar por que es necesario identificar
cuales son los tipo de variables que contiene nuestra base de datos. No se
preocupe por la falta de descripción de los pasos, cada uno de los comando será
descrito posteriormente. Este solo es un ejemplo ilustrativo.
Al abrir Stata, en la barra de comandos tecleamos la palabra
edit

nos aparecerá una ventana similar a una hoja de cálculo allı́ podremos registrar
los datos de interés para el siguiente ejercicio queremos conocer cual fue el
promedio de la inflación en Colombia para el año 2018, información disponible
en Banco De la Républica
Se observará que al introducirse los datos en el programa se genera una
variable denominada var1 dicha variable contiene el registro de los datos sobre
inflación, que acabamos de registrar para obtener el promedio de la inflación
para el periodo de estudio podemos teclear en la barra de comando

sum var1

4
Table 1: Fuente: Banco de la républica
3,18
3,27
3,33
3,23
3,10
3,12
3,20
3,16
3,13
3,14
3,37
3,68

Observamos que en la ventana de Stata encontramos una tabla pero no regis-


tra ningún resultado y en la columna Obs nos indica que hay cero observaciones.
¿por qué?
cuando tecleamos
describe
aparece un recuadro proporcionándonos información sobre la base de datos que
tenemos en memoria en este momento, observe que Obs nos está indicando que
por el contrario tenemos 12 registros,y vars nos indica que tenemos solo una
variable. No obstante, en la descripción de var1 nos indica que dicha variable
se identificó como str(string), y eso ocurrió debido a que Stata reconoce al ”.”
como separador decimal y no la ”,”. por lo tanto la variable se almacenó en
formato string y no podemos calcular su media.
Por ahora solucionemos esto tecleando secuencialmente:

destring var1, dpcomma replace

describe

sum var1
Lo que hicimos en la primera lı́nea fue modificar ”.” por ”,” en los registros,
y reestructurar la naturaleza de la variable a numérica, lo que nos permitirá
efectivamente obtener un promedio de inflación de 3.245 para el periodo de
estudio.
Cuando se trabaja en la recolección de datos para una investigación académica
o laboral, es importante identificar la naturaleza de las variables en el registro
de la base, debido a que algunas investigaciones requieren aplicar algún instru-
mento, o revisar una historia clı́nica, ası́ entonces necesita consolidar una base

5
de datos entre un conjunto de personas y puede no haber uniformidad en como
los individuos registran las observaciones, por lo tanto es recomendable para este
ejercicio que se realice la colaboración en una plataforma como google Formu-
lario, pues esta le permite a diferentes usuarios trabajar de manera simultánea
en el registro de los datos, consolidar descripciones y parámetros de registro de
los mismos. adicional, se consolidan en un archivo de extensión .xls o también
una hoja de calculo en Excel, que puede ser facilmente importado a Stata.
En algunas ocasiones cuando un individuo no registra información sobre
alguna variable, se suelen utilizar acrónimos o colocar palabras como “No regis-
tra” o “N.A”. Para Stata los datos faltantes o missing son identificados de dos
maneras; para las variables cuantitativas con el caracter “.” Y para las variables
categóricas o string ningún carácter “” (en otras palabras se deja vacı́o). Si
recolectaremos nuestra información en una formato .xls, entonces bastará con
no registrar caracteres cuando la variable no cuenta con la observación ya que
cuando sea importada a Stata según la naturaleza de cada variable el software
por defecto le asignará “.” a los valores numéricas y “” a las categorı́as. Cuando
no se participa en el diseño de la recolección de datos y se han utilizado ciertos
caracteres para identificar la ausencia del dato tendremos que eliminar o reem-
plazar dichas palabras, pues para las variables cuantitativas como se habı́a men-
cionado serán consideradas en formato string por lo que no podrı́amos aplicar
operaciones sobre la misma, como por ejemplo calcular su media o desviación
estándar. No obstante, veremos que dicho proceso de reemplazo o eliminación
no representa mayor dificultad.

2.2 Generalidades de Stata


Hay aspectos básicos y elementales que se deben conocer acerca del paquete
Stata;
los archivos con extensión .dta hace referencia a los archivos de bases de
datos, la extensión .do indica los archivos de texto que contienen una sesión de
trabajo; Comandos, directorios o programas. .log indica el formato de impresión
de resultados en Stata.
si deseamos saber u obtener información acerca de un comando 1 en partic-
ular, debemos escribir en la barra de comandos help comando. Por ejemplo
deseamos tener información del comando list que es utilizado para mostrar las
observaciones o el valor de las variables;

help list

Para conocer nuestro escritorio de trabajo utilizamos el comando


cd
que es muy útil por que es el lugar donde el programa reconoce donde stata
aplicará las sentencias o comandos por ejemplo donde buscará una base de
datos concreta, o donde guardará los archivos producto de la sesión como las
gráficas. Stata por determinación trabajará en su carpeta de instalación, para
cambiar esta carpeta basta con indicar la ruta de trabajo.
1 Cabe mencionar que Satata es sensible a la composición de la escritura de los caracteres

pues reconoce diferencias entre mayusculas y minisculas

6
cd "C:\Users\MICROSOFT\Desktop\Taller Stata y descriptiva"

Allı́ el usuario especı́fica la ruta donde sea mas comodo trabajar. igualmente
Stata trabajará con una sola base de datos en memoria esto es muy importante
debido a que en el momento de abrir una base de datos determinada se debe
trabajar con la memoria limpia de lo contrario se tornará un error (las versiones
mas recientes no tienen problema en limpiar la memoria automáticamente).
El comando browse nos permite abrir la base de datos para observar su
contenido e igualmense si deseamos modificarla debemos introducir el comando
edit subsection 6.1

3 Sintaxis del lenguaje de Stata


Por ahora solo es necesario conocer los aspectos básicos del lenguaje de stata;
podemos interactuar con el programa de dos manera uno vı́a el lenguaje MATA
y el otro informalmente como ADO, en este último nos centraremos en este
taller.

Comando Variable(s) condicional (if) rango (in) , opciones

Stata reconoce como primera instancia los comandos, por ejemplo el co-
mando de regresión ( regression, el comando de estadı́stica descriptiva tabu-
late o summarize etc... posteriormente stata reconoce la lista de variables o la
variable con que trabajará cada comando, posterior se exprena las condiciones
precidas por la palabra if para hacer subestimaciones en categorı́as o en ciertos
intervalos, depues se acepta el rango de las observaciones por ejemplo las diez
primeras o las diez últimas con in, y ya por último se declaran las las opciones
de cada comando después de la , (coma).

sysuse dir

Observamos cada una de las bases de datos que tiene incoporado Stata.
Utilizaremos la base de datos cancer por ejemplo.

sysuse cancer, clear

se agrega la opción debido a que Stata Debe permanecer con su memoria de


trabajo limpia.
help list
sysuse auto, clear
list price if price>1000
sysuse cancer, clear
list studytime in 1/19
list studytime age if age>20
list studytime age if age>20, table nocompress sep(0)

bysort Variables: Comando Variable(s) condicional (if) rango (in) , opciones

Stata y algunos comandos permiten que se les agregue un comando que repite
las operaciones por submuestras o categorı́as.
bysort died: list died, sep(0)

7
4 Operadores
4.1 Operados lógicos
Los operadores lógicos son importantes por que nos permiten obtener resultados
para submuestas que cumplen una condicón o sentencia lógica como vimos en
la sección anterior para obtener la edad de los mayores a 20 años.

1. & es ”y”
2. | es ”o”
3. ∼ es la negación
4. ≤ menor o igual
5. ≥ mayor o igual
6. == igual
7. ! = diferente a

4.2 Operadores aritméticos


1. + adición
2. − sustracción
3. ∗ multiplicación
4. / division
5. ∧ potenciación

4.3 Operados de letras (string)


aquı́ se utilizan dos operados + y ∗

Ejercicio
1. Compruebe la formula (a + b)2 = a2 + 2ab + b2 para cualquier par de
números.
a+b a+c
2. realice la siguiente operación +
c b

4.4 Dofile
Se ha mencionado con anterioridad que una de las ventajas de usar un software
estadı́stico es la capacidad de obtener resultados por medio de procedimien-
tos reproducibles y modificables con facilidad, que permiten la generalización a
cualquier base de datos o variables a este conjunto de pasos para obtner resul-
tados deseados lo denominaremos como programa. El código de un programa
debe estar almacenado en algún formato de texto plano por suerte Stata nos
facilita un formato integrado, y para accerder a éste basta con teclear en la
barra de comandos.

8
doedit
Al abrirse dicha aplicación puede verse su parecido con el bloc de notas, lo
intersante es que con oprimit ctrl + d podremos ejectuar el código contenido en
dicho documento cuantas veces queramos. Aquı́ se utilizará el Do-file editor para
realizar casi todo, incluso el cargue de datos a la memoria de Stata mediante el
comando input.
El uso de el dofile es extendible a la modulación o segmentación de nuestro
código, ası́ pues podemos ejecutar un dofile desde otro dofile o desde la barra
de comandos, usando el comando do
display as text "Esto texto será mostrado con do Dofile"
exit
Por supuesto que antes de ejecturarse como se mostrará enseguida el directorio
la sesión actual debe ser el mismo donde se ecuentra el archivo Dofile.do.

do Dofile

4.5 input
input sigue una estructura muy sencilla para almacenar datos, la palabra input
va seguida por el nombre de las variables que queramos almacenar en caso de que
dicha variable sea de tipo string, debemos anteponer el prefijo str y reemplazar
el sı́mbolo # por el número de bytes que podrá contener dicha variable, y en
las lineas siguiente separadas por un espacio colocar los datos correspondientes
como se muestra a continuación, y se indica que hemos terminado con la palabra
end.
input var1 var2 var3 str# var4
1 2 3 "A"
end
La base que contiene los diez primeros digitos de nuestro sistema numérico
podrı́amos almacenarla en memoria de la siguente forma:

clear all
input número str6 strnúmero
0 "cero"
1 "uno"
2 "dos"
3 "tres"
4 "cuatro"
5 "cinco"
6 "seis"
7 "siete"
8 "ocho"
9 "nueve"
end
No está de mas señalar que el comando input nos permitirá practicar con
cualquier tipo de dato, el uso de los distintos comandos.

9
4.6 Summarize y tabulate
Usualmente para describir las variables basta con conocer su frecuencia absoluta
y relativa si es categórica o las medidas de tendencia central y de dispersión si
dicha variable es de caracter númerico.
clear all
input str8 letters numbers
"A" 10
"B" 12
"C" 10
"A" 10
"B" 30
end

Para describir las variables letters y numbers de la base de datos que acabamos
de cargar en memoria tan solo nos bastará con anteponer el comando tabu-
late para variables categóricas y el comando summarize para las variables
continuas.
summarize numbers
tabulate letters
Dos cosas debemos resaltar, la primera de ellas es que el ambos comandos tienen
una forma abreviada que al revisar en la ayuda de los comandos se indicará sub-
rayando las letras hasta las cuales se identifica dicho comando por ejemplo para
tabulate, bastará con colocar tab y para summarize bastará con sum. El
segundo punto a remarcar es que ambos comandos permiten opciones bastante
interensates, por ejemplo en algunas ocasiones necesitamos saber el número de
datos missing al tabular, o si quisieramos obtener los percentiles de la varibale
númerica entonces podriamos usar las opciones missing y detail respectivamente.
sum numbers, detail
tab letters, missing

5 Programa y Hojas de ruta


Cuando hacemos un análisis o la gestión de una base de datos podemos utilizar
nuestra propia hoja de ruta que utilizará en Stata como extensión .do que se
puede abrir y editar el Do-file editor.

5.1 Macros
Los macros los podemos dividir en dos categorı́as en local y global, su función
principal es almacenar varios carácteres y la diferencia entre ellos radica, en el
ámbito, ası́ los globlals son almacenados permanentemente sobre una sesión en
Stata y los locals solo temporalmente. Es decir los local deben ser definidos y
ejecutados en el mismo orden o si no Stata no lo encontrará para su ejecución
mientras los global pueden ser definidos y usados en cualquier momento.

local a = 2
display ‘a’

10
global a = 2
display $a
En el código anterior se observa que la definición y accesso a los macros difere
dado su tipo, pues utilizamos las comillas ”‘’” para los locals y anteponemos el
signo $ para acceder a los globals.
Una caracteristica importante de los Macros es que son iterables; es decir
que podemos aplicar ciertas operaciones sobre cada uno de los elementos que lo
componen, y por lo tanto son sumamente útiles para la gestión de base de datos
y la automatización de dicho proceso.
sysuse auto, clear
tabulate rep78
local x " 1 2 3 4 5"
foreach k of local x {
sum price if rep78==‘k’
}
Utilizando la base de datos integrada auto, hemos obtenido le precio promedio
para los atutos que presentan 1,2,3,4 y 5 reparaciones, lo que intuitivamente
hicimos fue guardar los posibles valores de reparaciones en un local x y utilizando
el bucle sobre items foreach obtenemos la descripción de dicha variable.

5.1.1 foreach
foreach es la palabra reservada para iterar sobre elementos, dentro de los mas
utilzados están los elementos que componen un macro; sea global o local, un
varlist, o una lista de números. Por el momento, nos interesa comprender la
estructura, que inicia con la palabra foreach seguida da el nombre identificador
que puede ser cualquier letra, que será reemplazada en cada iteración por el
elemento correspondiente dentro del objeto iterable, y posteriormente se indica
el tipo de elemento iterable y su nombre, finalizando la definición con { en la
linea siguiente se definen los comandos aplicados secuencialmente a cada uno de
los elementos y se cierra con } en una nueva lı́nea.

foreach x of local j {
di "Muestre el siguiente texto para el objeto ‘x’"
aplique este comando if varname=="‘x’"
}

5.2 Levelsof
En el ejemplo anterior usando la base integrada auto, definimos los posibles val-
ores que puede tomar la variable rep78. No obstante podemos utilizar levelsof
para almacenar todos estos posibles valores dentro de un local particular, esto es
muy útil puesto que nos permite abstraer o simplificar aún más nuestro código.

levelsof rep78, local(l)


foreach k of local l{
quietly sum price if rep78==‘k’
display as text " La media del precio de los carros con ‘k’ reparaciones es " = ‘r(mean)’
}

11
En sı́ntesis la primera lı́nea del segmento de código está generando un local l,
que contiene los 5 posibles valores de la variable rep78, de esta manera el código
nos permitirá incluir mayor número de valores para la variable sin definirlos
explicitamente.

5.3 Bucles
5.4 While
El bucle while es importante para realizar tareas complejas en la gestión y
el análisis de datos, la sintaxis comprende la palabra reservada while y una
condición que sera evaluada para determinar si lo que se contiene entre llaves
{} será ejecutado.
local i = 0
while ‘i’<5{
display as text " el número ‘i’
local i = ‘i’ + 1
}
En el segmento de código anterior especificamos que se mostrara en pantalla el
texto ” el número es i” 4 veces donde ‘i’ tomará los valores de 1 a 4.

el número 1
el número 2
el número 3
el número 4
Lo hara hasta el número 4 debido a que el número no cumple la condición ‘i’
menor a 5 y por lo tanto el bucle finalizará, en otras palabras ejecute el código
mientras ‘i’ sea menor a 5. Es importante señalar que en cada iteración la linea
local i = ‘i’ + 1 actualiza el valor del local, esto es posible debido a la jerarquı́a
de los operadores en Stata y en general de los lenguajes de programación , el
programa primero realiza la suma y luego la asignación, si esto no fuera ası́
entonces el bucle serı́a inifinito y nunca terminarı́a debido a que siempre se
evaluara la misma condición, podrı́a comprobarlo por su cuenta ejecutando;

local i = 0
while ‘i’ < 5{
dispĺay "Muestre el número ‘i’"
}

5.5 forvalue
Debemos señalar que forvalue es una forma práctica del bucle while y que
podemos representar cualquier bucle realizado por forvalue de manera exten-
siva usando while, pero la afirmación contraria no es cierta.

forvalue i = 1/4{
display ‘i’
}

12
el número 1
el número 2
el número 3
el número 4

5.5.1 Ado file


.ado es la extensión para los programas de Stata, estos son especiales para
generar nuestra ruta de comandos2
capture program drop salude
program define salude
display as text " Saludos! ‘0’"
end
Es importante notar el uso del comando capture, es util para ”anular” er-
rores, producidos durante la ejecución de un comando. Sin embargo su uso
debe ser cuidadoso debido a que puede producir errores secuenciales impercep-
tibles para el novel. En este caso con program drop name, eliminaremos el
comando denominado name, pero si dicho comando no ha sido definido previa-
mente nos aparecerá un error, que nos detendrá la ejecución del programa, y es
ahı́ precisamente donde capture juega su papel importante.

caputure program drop mylist


program define mylist
list ‘0’ , sep(0) nocompress
end
En este caso ‘0’ indica que cuando llamamos desde la barra de comandos o desde
un dofile el programa que hemos creado se creará un macro que contiene todos
los items separados por caracteres blancos que tecleamos junto al nombre del
comando. Despues de guardar el archivo mylist.ado en la carpeta crearemos una
lista con los modelos y el precio de los autos dado el formato sin separadores
definido en nuestro programa.

sysuse auto,clear
mylist make price

Definitivamente este programa nuevo no nos aportarı́a mucho, pero mas adelante
podremos crear un sin fin de programas que nos ayuden a nuestras tareas diarias,
de momento solo interesa aprender como hacerlo.

SSC install
En algunas ocasiones, existen programas desarrollados por usuarios para diseños
especificos, asi si conocemos el nombre del programa bastará con escribir en la
barra de comando, dentro de estos paquetes podrı́amos estar interesados en
estout or table1.
2 Los programas pueden ser cargados directamente si los guardamos como extensión .ado

y los almacenamos en la carpeta de directorio personal para conocer su dirección exacta


podemos usar el comando sysdir

13
6 Gestión de Base de datos
En algunas ocasiones contamos con los datos pero estos no poseen la forma
o la información relevante para nuestra investigación, puesto que por ejemplo
necesitamos constuir indicadores en periodos de tiempo, o variables resultado
de ciertas condiciones lógicas. Una buena descripción de una base de datos
también permite colaborar en los grupos de investigación lo que agiliza el proceso
o permite a un tercero valorar o validar nuestros resultados. En el proceso de
investigación muchas veces los proyectos cuentan con k procesos consecutivos lo
que usualemente genera la necesidad de agregar observaciones o variables, esto
es útil para consolidar la base de datos y obtener los resultados esperados.
describe
Con el comando describe obtendremos una descripción de la base de datos,
el número de observaciones y de las varibales la cantidad y el tipo, podemos
conocer sobre que datos estamos trabajando o de de que entidad o proyecto de
investigación se extrayerón.

6.1 Los datos en Stata


La creacı́ón de variables, la transformación de su escala y la creación de indi-
cadores, son importantes para obtener relaciones empiricas y hacer más robusto
el proceso de investigación en cuesitón. Averiguemos que información tenemos
disponible en el Banco Mundial.

6.1.1 Creación de Variables


A veces se necesita constuir una nueva variable, que puede ser por ejemplo; un
identificador, una transformación o un indicador.
help generate
Podriamos estar interesados en conocer la tasa de retorno de una acción par-
ticular para un peridodo de tiempo, y sabemos que dicha tasa puede ser aproxi-
mada mediante la diferencia de logaritmos, ası́ que, necesitarı́amos transformar
nuestra variable a escala logarı́tmica, o podrı́amos estar interesados simplemente
en realizar una transformación monótona de una variable con el objetivo de tener
una mejor visualización de los datos.
sysuse census,clear
generate lnpop= ln(pop)
En este caso hemos creado una nueva variable denominada lnpop que es el
logarı́tmo de la variable pop. Por lo tanto la sintaxis del comando generate o
gen es muy sencilla.
gen new_var= valor
new indica el nombre que le daremos a la nueva variable que creeramos, hay que
señalar que el nombre de la variable no puede iniciar con números. Posterior
al signo de asignación = debemos especificar si la varibale tendrá algun valor
númerico o string, o será igual a otra variable ya definida sobre la cual queremos
aplicar una transormación o una operación aritmética. Igualmente podremos
usar condicionales.

14
sysue auto,clear
gen costoso= 1 if price >6165

Note que se ha generado la variable costoso con el fin de usarse para identificar
aquellos automoviles cuyo valor supera al valor medio de la distribución. No
obstante, en aquellos individuos que no se cumple la condición se coloca un .
como si su dato fuese faltante, antes de visualizarlo podemos teclear order para
organizar la base de datos en el orden especificado.
oder costoso
browse
browse costoso
Recordemos que browse nos permite visualizar una variable o toda la matriz de
datos.
La generación de estos datos faltantes o missing en la variable costoso podrı́a
no facilitar la manipulación de los datos o la descripción adecuada de dichas vari-
ables, por lo tanto con el comando replace cambiaremos estos datos faltantes
por cero.
replace costos=0 if costoso==.
Podrı́a preguntarse por que estamos usando dos veces el igual seguido, en caso
tendrı́amos que distinguir entre la asingación de un valor, y la evaluación de
una condición o comparación en este caso.

6.2 Rename & Label


En ocasiones es importante renombrar las variables, o incluso dejarles etiquetas
para saber cual es su descripción. El comando rename es sencillo de utilizar
como se envidencia enseguida;
sysuse auto,clear
rename price precio
rename rep78 reparaciones
En concreto hay solo dos arguementos posteriores al comando rename, old-
Varible y NewVariable donde la primera indica el nombre de la variable actual
en la base de datos y el ultimo indica el nombre nuevo que le daremos a esa
variable.
En algunas ocasiones es importante o útil tener etiquetas en las varibles
para acordarnos de su significado o de los posibles valores que puede tomar
cada variable. En este caso se invita al lector a que utilice la documentación.
No obstante, de manera general para darle etiqueta a una varible debemos
especificarla posteriormente al comando label var
clear all
input var1
10
11
12
10
end

15
label var var1 "Esta variable contiene del 10-12"

Anteriormente habı́amos visto que el comando describe nos arrojaba una


descripción de la variable y la base de datos, ahora el comando codebook nos
permite conocer de manera similar información sobre las variables de la base
de datos aportando información adicional como el número de valores de una
variable, su rango, y el número de datos faltantes.

codebook

6.3 Keep & drop


Estos comandos son importantes por que nos permiten mantener (keep) o elim-
nar (drop) observaciones o variables. la sintáxis de ambos similar;
drop Varname
lo que hemos hecho con el comando anterior es eliminar de la base de datos
la variable Varname, ahora si quisieramos solo dejar en la base de datos dicha
variable deberı́amos utilizar el comando keep.

keep Varname
No obstante, como hemos dicho anteriormente podemos eliminar observaciones
que cumplan ciertas condiciones, por ejemplo:
keep if Var1=="group1" & Var2==1

Por lo que en la base solo permanecerán las observaciones que pertenzcan al


grupo 1 y además aquellos donde Var2 sea igual a 1. Podriamos estar interesados
en dejar en nuestra base de datos los 10 autos mas costosos de la base de datos
integrada auto.

sysuse auto,clear
gsort - price // ordenaremos la base de menor a mayor
keep in 1/10 // dejamos las 10 primeras observaciones
list make price
Observemos que hemos realizado unos comentarios dentro del código usando dos
forward slachs // seguidos, ası́ indicaremos al programa que el resto de lı́nea es
un comentario, tambien podemos usar un comentario multilı́nea de la siguiente
forma.
/* Se inicia un comentario en la lı́nea 1
linea 2
linea 3
linea 4
y se finiliza */

16
6.4 Reshape
El comando reshape es de gran utilidad, puesto que permite llevar a formato de
panel algunas bases de datos que se encuentran en formato ancho, por ejemplo
observemos que en la siguiente base de datos tenemos n municipios o unidades
geográficas, y la población de k años, nombradas con prefijo pob, ası́ las variables
van desde pob1 hasta pob200k

Table 2: Base en formato ancho


id pob2000 pob2001 pob2002 pob2003 . . . pob200k
Municipio 1
Municipio 2
Municipio 3
.
.
.
Municipio N

La Tabla 2 puede transformarse en la siguiente Tabla 3 donde hay n*k obser-


vaciones en la base de datos, una variable nueva denominada año y la variable
pob (el prefijo de la base larga). En sı́ntesis, se extendieron las unidades en la
variable id, para que en una sola variable se almacenaran todas las observaciones
para cada una de los municipios.

Table 3: Base en formato largo


id año pob
Municipio 1 2001
Municipio 1 2002
Municipio 1 2003
Municipio 1 2004
. .
. .
Municipio 1k 200k
Municipio 2 2001
Municipio 2 2002
Municipio 2 2003
. .
. .
. .
Municipio 2k 200k
Municipio N1 2001
Municipio N2 2002
.
.
Municipio Nk 200k

La sintaxis del comando reshape es la siguiente ;


reshape (wide o long) prefijos, i(id) j(year)

17
Posterior a escribir el comando reshape debemos elegir long or wide si quer-
emos pasar a ese formato, i(id) identifica las uniades geográficas, individuos o
entidades para las cuales se ha recolectado la información, j(year) es una una
variable nueva si lo que se quiere es pasar de ancho a largo, o j(year) ya está
dentro de la base si se tiene en formato largo y se quiere pasar a ancho, note
que usamos prefijos por que puede ser todo un varlist o lista de variables.

clear all
input str8 municipio a~
no pib
A 1 10
A 2 12
A 3 13
A 4 14
B 1 20
B 2 22
B 3 23
end

La base enteriormente descrita está en formato largo y nuestro objetivo será


pasarla a formato ancho, note que este caso municipio es párametro de i() y
año el parámetro de j() y pib es el único prefijo por lo que podemos realizar la
transformación con la siguiente lı́nea de código:
reshape wide pib, i(municipio) j(a~
no)

6.5 if & cond()


Los condicionales son importantes para la generación de variables, por ejemplo
para la creación de categorı́as dada una condición particular. La funcionalidad
de la función cond() es importante debido a que sigue la estructura lógica si x
entonces p.
La función cond(1,2,3) está compuesta de 3 argumentos, el 1 indica la vari-
able en la cual se va a evaluar la sentencia lógica por ejemplo price==number,
o price==”string”, el 2 indica que valor se determinará si la sentencia lógica se
cumple y 3 el valor en caso de que no se cumpla.
sysuse cancer,clear
gen live= cond(died==0, "muerto", "vivo")

live tomará la categorı́a de muerto si el número de la variable died es cero de lo


contrario se le asignará la categorı́a vivo. Como se ve cond() es bastante útil
y compacta, No obstante, hay que tener cuidado si la variable presenta datos
faltantes o missings se les asignará el valor de 3 dado que este no cumple la
condición en 1, para corregir esto podemos hacer:

gen var=cond(missing(var1),.,cond(Price>10,1,2))
Asi la función missing indentificará que si es un dalto faltante, le proporcione un
punto dado que me interesa que la variable resultante sea de caracter númerico.

18
7 Importar documentos
En Stata se puede importar diferentes archivos o formatos de los mismos, hay
dos cosas a tener en cuenta, su extensión y la codificaión del mismo. Los com-
putadores solo trabajan internamente con el sistema bianario ( de dos digitos 1
y 0) por lo tanto para que sea entendible por las personas es necesario un mapeo
de bits a sı́mbolos, para ello se han usado algunos códigos que han tratado de ho-
mogeneizar dicha representación, entre estos están; el código ASCII, el unicode
y el UTF-8 y el Latin-1 esto es imporante por que algunos documentos pueden
haber sido códficados en un formato diferente al que lee Stata por defecto y
posiblemente no se cargue en memorı́a como esperamos.

7.1 import delimited


import delimited es usado para archivos delimitados por algun caracter especial,
por ejemplo por las extensiones .txt y .csv, la primera extensión corresponde al
formato de texto plano y el otro separado por comas, ambos son muy usuales
en datos insitucionales y de gran tamaño, para importar en memoria basta con
seguir la siguinete sintaxis.
immport delimited using nombre_del_archivo.[txt,csv], clear
en algunas ocasiones es necesario especificar el caracter por el cual han realizado
la delimitación por ejemplo en algunas bases de datos utilizan el caracter (”-”)
como separador, Stata reconocerá automaticamente con la primera linea si el
separador es un tabulador o una coma, pero en caso de que esto no funcione
podremos recurrir a la opción delimtiers().

import delimited using data1.txt, clear delimiters("-")

7.2 import excel


el Comando import excel nos facilita la importacion de la base de datos en
formato .xls a Stata. Sin embargo, para que la base sea importada de manera
adecuada, sin mayores ajustes, es recomendable que la estructura de la Matriz
o base de datos, en el foramto .xls se considere como nombre de la variable
la primera fila, es decir; no pueden existir celdas por encima del nombre de
la variable dado que esta es la primera fila y debajo de ella deben apracer los
registros de inmediato y segundo que no existan celdas compartidas .

import excel using archivo.xlsx, sheet("hoja") first

Se le debe especificar al comando que hoja de trabajo es la que se va incor-


porar en la base de datos de stata ası́ mismo la opción first resalta la condición
de que la primera columna de la hoja corresponde al nombre de las variables.
recuerde que Stata solo trabaja con una base de datos en memoria por lo que
es necesario anteceder una linea de comando con clear all o utilizar la opcion
clear, permitida por la mayor parte de comandos de importacion.

19
8 Homogenización de la base
Ya habremos notado que existen diferentes formas de conseguir el mismo resul-
tado, y es por esto que el software es tan versátil. No obstante, en lo posible
debemos tratae de realizar rutinas generalizables con el objetivo de que sirvan
para cualquier base de datos y que la rutina sea intuitiva y legible fácilmente.
Por lo tanto, el lector puede modificar las rutinas aquı́ presentadas de forma
que le sean más optimas en su trabajo. Hemos dicho previamente que Stata
es sensible a las mayúsculas y minúsculas, ası́ por ejemplo en el registro de los
departamentos de residencia habitual de los individuos para la tabulación de
frecuencias con el comando se obtendrán diferentes resultados si en los registros
no hay uniformidad por ejemplo; ”Bogota”, ”bogota” aunque en conjunto sean
el mismo departamento para Stata son dos diferentes.

replace dpto=ustrupper(dpto)

Lo que se hace es transformar todas las letras correspondientes minúsculas a


mayúsculas. No obstante, el problema se seguirá presentandose para el caso
siguiente ”BOGOTÁ” ”BOGOTA” una forma de corregir este errpr es homo-
geneizar el registro sin los caracteres de acentuación por medio de la función
subinstr() que tiene como dominio cuatro parámetros subinstr(1,2,3,4) en el 1
se indica la variable, en 2 se indica que caracter se quiere reemplazar y en el 3
por cual, en el 4 la posición en la cadena de caracteres que se quiere modificar,
puede ser el primero, segundo, tercero, o hasta la n-ésima posición, si se quiere
modificar o reemplazar en toda la cadena de caracteres se utiliza el ”.”

replace dpto=subinstr(dpto,"Á","A",.)

En algunas ocasiones, se trabajan con bases de datos en la cual desde Excel


parecen homogéneas Empero, Stata reconoce el ” ” (espacio) como un caracter
por lo que los registros ”BOGOTA ” Y ”BOGOTA” son diferentes, note que
el primero tiene un espacio después de la A, para corregir esto solo debemos
reemplazar dicho caracter por el vacı́o;
replace dpto=subinstr(dpto," ","",.)
Notará el lector que la estructura de la lı́nea anterior sirve para eliminar
cualquier carácter indeseable dentro de una variable, por ejemplo en algunas
series númericas se presenta con facilidad el singo ”$” como también el de ”%”.
Para corregir esto de manera general (En cualquier base de datos), se puede
generar un programa denominado work1 que preserva el nombre del programa
personal del autor que en estructura general son iguales excepto por unas
mı́nimas variaciones.

ds, has(type numeric)


foreach x in ‘r(varlist)’{
replace ‘x’ =upper(‘x’)
replace ‘x’ = subinstr(‘x’," ","",.)
replace ‘x’ = subinstr(‘x’,"Á","A",.)
replace ‘x’ = subinstr(‘x’,"É","E",.)
replace ‘x’ = subinstr(‘x’,"Í","I",.)
replace ‘x’ = subinstr(‘x’,"Ó","O",.)

20
replace ‘x’ = subinstr(‘x’,"Ú","U",.)
}

8.1 Eliminar columnas vacı́as


En algunas ocasiones, cuando se trabaja con alguna base de datos modificadas
e importadas desde Excel directamente a Stata, se generan variables que no
contienen ningún dato, lo mismo ocurre cuando se desea analizar un subconjunto
de la población para la cual múltiples variables pueden no contener información,
para solucionar el problema de manera automática podemos utilizar el siguiente
programa:
capture program eliminate
ds, has(type numeric)
foreach x in ‘r(varlist)’{
sum ‘x’
if ‘r(N)’==0{
drop ‘x’
end
}
}

Notará el lector que este programa puede guardarse como un ADO y poste-
riormente ser llamado directamente desde el comando work1

21
Table 4: Variable con múltiples categorı́as
varn1 varn2
conyugue,madre conyugue y madre
hijos, conyugue, otra persona hijos , conyugue y otra persona
padre,madre,conyugue padre, madre y conyugue
solo solo

8.2 Delimitadores en variables


Un problema recurrente es la aparición de columnas con múltiples categorı́as,
en algunas ocasiones separados por algún caracter como ”-” o ”,” lo que puede
limitar la capacidad de obtener resultados.
La anterior tabla presenta las variables varn1 y varn2 que en esencia con-
tienen la misma información, pero fueron registradas de manera diferente en
la base de datos, en la primera columna de la tabla anterior las categorı́as se
encuentran separadas por ”,” mientras que en la segunda no. Podrı́amos sepa-
rar la primera columna en dos debido a que contiene el separador ”,” usado el
comando split.
split varn1, gen(e) parse("-")
lo que generará un número k de variables con prefijo e donde k es el número
máximo de palabras a separar dentro de la variable, con la opción parse(),
indicamos cual es el delimitador de dicha variable.
las siguientes funciones son importantes. No obstante, en este punto el
lector no tendrá dificultad alguna para leer la documentación y se su sintaxis y
aplicación se dejan como ejercico al lector las funciones son strpos, int, substr.

8.3 Nombre de variables muy largos


En algunas ocasiones el nombre de las variables es muy largo, lo que nos dificulta
acceder a algunos métodos o funciones como la exportación de resultados.
local i = 0
ds, has(type string)
foreach d in ‘r(varlist)’{
local n‘d’ = substr("‘d’",1,15)
rename ‘d’ v‘i’‘n‘d’’
local i= ‘i’ +1
}

8.4 Hallar un resultado


En algunas ocasiones necesitamos encontar una palabra o valor dentro de un
conjunto completo de variables, no obstante este procedimiento se puede gener-
alizar al punto de realizar casi automáticamente la búsqueda.

clear all

22
input str6 var1 str6 var2 str6 var3
A H F A
B K N P
C A T C
D T A D
E J R D
end
Aquı́ definimos un problema, pues para la anterior base de datos necesitamos
identificar si en cualquiera de las variables var1-var3 está contenida letra ”A”.

forvalue i=1/2{
display as text "var‘i’"
local f var‘i’, ‘f’
}
gen id2=1 if inlist("A", ‘f’ var3)

Podrı́amos decir que hemos generado primero el local ‘f ’ cuyo contendio es


el nómbre de las variables var1 y var2 separador por una coma, posteriormente
generamos la variable id2 que identifica si dentro de las variables contenidas en
‘f ’ y var3 se cuentra la palabra ”A”, esto se realiza la función inlist(), que
retorna el valor de 1 si la letra ”A” se encuentra en los demás argumentos y
cero en caso que no la encuentre en ninguno de los argumentos.

8.5 Expresiones regulares


Los datos de tipo string o cadenas de caracteres son frecuentes en las bases
de datos, por eso debemos tener claras que operaciones podemos realizar so-
bre ellas; podemos concatenar, localizar o extraer una subcadena de otra, en-
tre otras operaciones, pero las principales aquı́ abordadas son las mencionadas
anteriormente. Las expresiones regulares nos serán de utilidad en la medida
que deseemos depurar nuestra información textual de la manera mas general
y eficiente posible. Para una revisión mas detallada deberı́a consultarse otra
referencia debido a que estamos interesados en resolver un problema puntual,
para lo cual basta decir que las expresiones regulares actuan como motores de
búesqueda. En nuestro caso las usaremos para reemplazar o eliminar caracteres
ya sea alfanuméricos o no alfanuméricos que contiene una variable, en especial
de tipo string.
para esto utilizaremos la función regex que se basa en dos parámetros o
argumentos:
regex(varname,"regexpression")
varname indica la variable de tipo string y el segundo argumento ”regexpres-
sion” es nuestra expresión regular, que detallaremos enseguida como funcionan,
regex retorna el valor de 1 cuando varname cumple la expresión regular y cero
en el caso contrario.

clear all
input str8 sumas
"1+1"
"1+2"

23
"1+3"
"1+4"
end
gen suma=1 if regex(sumas,"1+1")

gen suma2=1 if regex(sumas,"1\+1")

La variable sumas, esta compuesta del operador binario de adición, y dos


números naturales, queremos identificar donde se encuentra la expresión ”1+1”,
al ejecutar la primera linea de comandos, nos dará como resultado elementos
vacı́os, para esta base de datos y esta expresión regular solamente se obtienen
vacı́os, no obstante, si agregamos el backslash (\) al signo de adición (+) obten-
emos lo que deseamos, esto es ası́ debido a que ese signo es un metacarater y
por lo tanto el computador lo reconoce como un sı́mbolo especial, con el (\) se
anula su significado dando énfasis a su expresión textual.
Notemos hasta el momento el parecido de regex con subinstr, cabrı́a de
preguntarnos cual es la diferencia, y esta radica en la capacidad que poseen los
metacaracteres como motor de búsqueda y que son soportados por regex.
En algunas ocasiones, las variables contienen datos de carácter alfanumérico(
letras y números), pero para algún fin práctico necesitaremos remover ya sean
los números o las letras, hasta el momento regex nos permite identificar cuando
se cumple la sentencia, para el reemplazo directo utilizamos la función regexr
que consta de 3 argumentos:

regexr(varname, "regex", "newstring")

varname corresponde a la variable que queremos modificar, regex la definición


de la expresión regular y por ultimo esos carácteres por cuales queremos modi-
ficar con newstring.

clear all
input str8 iscod
is-123
io-124
il-123
io-124
end

replace iscod=regexr(iscod,"[a-z]*\-","")

Como podrá observar en su pantalla se han removido de la variable las letras


y el guión, si no nos hubiese interesado los caracteres numéricos si no las letras
serı́a necesario el siguiente código:

gen iscod2=regexr(iscod,"\-[0-9]*","")

24
Debemos tener en cuenta que hemos hecho uso de una expresión regular para
los caracteres alfabéticos ”[a-z]” en minúscula, y estos se deben distinguir en
mayúscula [”A-Z”] cuando sea el caso. No obstante podemos también utilizar
una expresión para ambos caracteres [”A-Za-z”], pero se espera que en este
momento el lector ya haya hecho una depuración previa de su base de datos, y
esta se encuentre homogenizada.

8.6 Datos atı́picos


Es importante entender si existen datos atı́picos (extremadamente heterogéneos)
o si hay errores de registro( por ejemplo registrar la talla de un individuo en
centı́metros cuando la de los demás esta en metros), este apartado utiliza los
conceptos de posición relativa no obstante se presentan aquı́ con el objetivo de
que el lector vaya formando su programa cada vez mas óptimo, los detalles con
mayor exactitud en el apartado de las medidas de posición relativa. No obstante
el teorema de shebysheb y la regla empı́rica nos pueden ayudar a sospechar de
algunas observaciones, hago énfasis en sospechar debido a que en algunos casos
por ejemplo para el producto interno bruto ( PIB) existe una brecha de tamaña
importancia entre los paı́ses y no se debe a observaciones con error en el registro.

8.6.1 Teorema de shebysheb y la regla empirica


La regla empirica es un resultado derivado de la normalidad de una variable,
no obstante el teorema de shebysev es para cualquier función y por lo tanto
para nosotros particularmente más adecuado. El teorema expresa que dado un
número k ≥ 1 y un número n de mediciones entonces, al menos 1 − k12 de las
observaciones estarán a k desviaciones estándar de la media
display as text "{center:{ title: El teorema de shebyshev}}"
forvalue i = 1/4{
display as text "{it: a ‘i’ desviaciones estandar de un conjunto de n mediciones, al menos
" (1- 1/(‘i’)^2) " de las mediciones estára dentro de ‘i’ desvaiaciones estadnar de la media}"
}
end

8.6.2 Ejercicio
Realice un programa que identifique los valores atipicos a 3,4 y 5 desviaciones
estandar de la media de la distribucion, de las variables que desee especificar en
un varslit ( lista de variables) y que nos proporcione informacion con respecto
al porcentaje de datos atipicos en la muestra por variable.

8.7 Append & Merge


Hemos mencionado con anterioridad que la recolección de datos, en algunas
ocasiones implica un k número de pasos secuenciales y que por lo tanto la
información necesita ser consolidada. Podemos entonces necesitar ya sea de
agregar observaciones o incluir variables a las mismas observaciones o ambas.
Para esto vamos a crear una base de datos master y una base de datos using,
que serán guardadas en el escritorio de preferencia del lector.
clear all

25
cd "dir..."
input id str8 var1
1 A
2 B
3 A
4 B
end
save master, replace
Ahora debemos definir un base de datos using que contenga exactamente las
mismas variables que la base master( aunque esto no es estrictamente necesario)
y en este caso que los nombres de las variables sean coincidentes (idénticos).

clear all
cd "dir..."
input id str8 var1
10 A
11 A
12 A
14 A
end
save using,replace

8.8 Append
Ya que tenemos definida nuestra base de datos master y using el proceso sigu-
iente es empalmar a al base master la base using.
cd "dir..."
use master,clear
append using using.dta
ası́ tendremos una base de datos de la siguiente forma,

id var1
1 A
2 B
3 A
4 B
10 A
11 A
12 A
14 A

Para empalmar las bases de datos de manera consecutiva bastara con especi-
ficar un bucle a la variable del texto, asi por ejemplo si se tienen 10 bases con el
prefijo data, podemos realizar su empalme con append de la siguiente forma.

use data1,
forvalue i = 2/10{
append using data ‘i’
}

26
Debe tenerse en cuenta que la base maestra esta en formato .dta, por lo que es
necesario que las demas bases tambien se encuentren en el mismo formato, ası́
si por ejemplo están en formato plano, primero deben guardare en formato dta.

8.9 Merge
Ahora suponiendo que solo necesitamos las primeras obersvaciones es decir la
base master, agregar otras variables generamos una variable que contenga una
llave o identifación de las unidades a las cuales peretencen esas variables reg-
istradas.
// Base using para merge
clear all
cd "dir..."
id str8 var2
1 x
2 y
3 z
4 0
end
save usingMerge,replace
aquı́ notamos que la variable id es idéntica tanto para la base master como para
la base using usingMerge, como deberı́a ser, y que la variable que adicionaremos
será var2.

merge 1:1 id using usingMerge

La sintaxis de merge requiere especificar cual será el método de indentificación


1 : 1, 1 : n o n : 1, para este caso particular a cada individuo de la base master
le corresponde exclusivamente una observación de la base using. No obstante
esto no siempre puede ser ası́ pensemos en el caso de que tengamos un listado
de estudiantes con su respectivo promedio académico y necesitemso adicionar
los atributos de un colegio, ası́ varios estudiantes tedrán un único atributo del
plantel por lo que necesitamos usar n : 1.

id var1 var2 merge


1 A x matched (3)
2 B y matched (3)
3 A z matched (3)
4 B 0 matched (3)

Posterior a definir el método de empalme debemos indicar las llaves que


identifican a los indivudos notese que utilizamos plural para indicar que este
tambien puede ser un varlist, para el caso concreto de nuestro ejemplo es id.
Es importante mencionar que la creación de la variable merge es nos sirve
para darnos cuenta cuentas observaciones son pareadas correctamente (identifi-
cadas con el número 3).

27
9 World Bank Data
El Banco Mundial provee una útil herramienta para los usuaros de Stata, un co-
mando que permite descargar microdatos por distintos tipos de modulos, como
salúd, economı́a y desarollo entre otros, que podemos utilizar para realizar in-
vestigación.
debemos instalar el modulo wbopendata;
ssc install wbopendata
Después de isntalarlo podemos abrir una interfaz para seleccionar lo que quer-
emos descagar de dichos modulos con el comandodb wbopendata. Aquı́
presentare un dofile para descargar y empalmar los modulos de algunos de
economı́a, salud y medio ambiente.
clear all
ssc install wbopendata

wbopendata, language(en - English) country() topics(3 - Economy & Growth) indicator() long
save economy,replace
clear

wbopendata, language(en - English) country() topics(8 - Health) indicator() long


save health,replace
clear all

wbopendata, language(en - English) country() topics(6 - Environment) indicator() long


save enviorement,replace

clear all
use economy
merge 1:m countrycode year using health.dta
drop _merge
merge 1:m countrycode year using enviorement.dta, nogenerate
save panel ,replace

10 Análisis empı́rico
10.1 Gráficas descriptivas
10.1.1 Pastel
Se usa para gráficar la frecuencia relativa o o la propoción de observaciones en
una cateogrı́a dada del total, por ejemplo el porcentaje de personas acorde al
género en una ciudad. Para la base de datos auto grafiquemos el porcentaje de
carros según su nacionalidad en la muestra.

sysuse auto,clear
graph pie, over(foreign) plabel( _all percent) scheme(s1mono) ///
title("Distribución de origen de los autos") subtitle("datos del a~
no 2000") ///
note("Source:Compra venta stata corp")

28
Distribución de origen de los autos
datos del año 2000

29.73%

70.27%

Domestic Foreign
Source:Compra venta stata corp

10.1.2 Gráfica de barras


El gráfico de barras, se utiliza especialmente para mostrar las frecuencias abso-
lutas de las categorı́as. por ejemplo se le pregunta a 150 pacientes de un hospital
que califiquen en excelente, bueno, regular y malo la antención en la entidad.
Otro gráfico de barras serı́a la asignación de presupuesto anual a los ministe-
rios. Piense también en el ingreso promedio de diferentes grupos poblacionales,
es decir por rango de edad, por sexo, por etnia etc.

Número de autos por origen


50
40
frequency
20
10
0 30

Domestic Foreign
Souce: Base de datos auto

sysuse auto,clear
graph bar (count), over(foreign) name(barra,replace) scheme(s1mono) ///
title("Número de autos por origen") note("Souce: Base de datos auto")

29
10.1.3 Gráfica de lineas
Se utiliza para observar la tendencia de una serie de tiempo, es decir una
variable que ha sido registrado a través del tiempo. Un ejemplo es el caso de
afiliados al régimen contributivo través del tiempo, o el gasto del ministerio de
salud en sus diferentes rubros a través del tiempo.

Esperanza de vida periodo (1900−1999)


80
70
life expectancy
60
50
40

1900 1920 1940 1960 1980 2000


Year
Source: Base de datos uslifeexp

sysuse uslifeexp,clear
line le year, scheme(s1mono) name(tendencia,replace) ///
title("Esperanza de vida periodo (1900-1999)") note("Source: Base de datos uslifeexp")

10.1.4 Histograma
El histograma es utilizado para observar la distribución de la variable en in-
tervalos definidos. El histograma es sensible a la cantidad de clases que se
construyan o intervalos. Por ejemplo, deseamos observar la distribución de una
variable por ejemplo la distribución del peso de recién nacidos en un hospi-
tal.Una distribución puede estar sesgada a la derecha o a la izquierda; es decir
cuando está sesgada a la derecha existen pocos datos anormalmente grandes y
el caso contrario para el lado izquierdo.

sysuse cancer,clear
histogram age, normal schem(s1mono) name(histograma2, replace) ///
title("Histograma con 6 intervalos")
histogram age, normal scheme(s1mono) name(histograma1, replace) bin(8) ///
title("Histograma con 8 intervalos")

graph combine histograma1 histograma2, name(combhistogramas,replace) scheme(s1mono) ///


title("Histogramas con diferentes número de intervalos") note(source: Base de datos Cancer)

30
Histogramas con diferentes número de intervalos
Histograma con 8 intervalos Histograma con 6 intervalos
.08

.08
.06

.06
Density

Density
.04

.04
.02

.02
0

45 50 55 60 65 45 50 55 60 65
Patient’s age at start of exp. Patient’s age at start of exp.

source: Base de datos Cancer

10.2 Medidas de tendencia central


Las medidas de tendencia central nos sirven para tener información acerca del
comportamiento de la variable a estudiar, como su nombre lo indica las medidas
de tendencia central dan un una estimativo del centro de una variable estudiada.

10.2.1 La media
La media esta definida como;
Pn
i=1 xi
x̄ =
n
la sumatoria de las obseravciones dividio el total de observaciones en la muestra.
Posee unas propiedades por ejemplo de la ecuación anterior se deduce que;
n
X
x̄n = xi
i=1

por lo que;
n
X
(xi − x̄) = 0
i=1

dado que
nx̄ − nx̄ = 0
uno de los problemas que tiene la media es que es muy sensible a los datos
atı́picos, lo cual en algunas ocasiones no es la mejor opción como medida de
tendencia central de una variable.

10.3 tabstat
Es un comando util para obtener una tabla con medidas descriptivas de las
variables para este caso podemos utilizar para presentar en pantalla la media y
la cantidad de observaiones para eso usamos la opcion statistics(), incluso para
contrastar con la opción by() podremos contrastar dos grupos.

31
sysuse cancer, clear
help tabstat
tabstat age
tabstat age studytime
tabstat age studytime , by(died)
tabstat studytime age, by(died) s(N)
tabstat studytime age, by(died) s(mean N)
Podrı́a pensarse que no tiene sentido realizar un programa que calcule la me-
dia de una distribución, pues existen varios comandos integrados en el programa
para su cálculo, no obstante aquı́ lo realizaremos, para que implicitamente el lec-
tor conozca varias extensiones que serán realmente utiles a la hora de gestionar
la base de datos e incluso de obtener medidas descriptivas.
** La media aritmetica como programa:
capture program drop mean
program define mean
egen suma = total(‘1’)
scalar x = suma[1]
drop suma
quietly describe ‘1’
scalar media= x/‘r(N)’
display as text " la media observada de la variable ‘1’ es =" media
end
El comando egen soporta funciones muy utiles para la gestión de datos, ası́ la
función total() para este caso crea una constante suma que contiene la suma
total de todas las observaciones de la varible ‘1’, posteriormente generamos un
scalar denominado x que contiene el valor de la variable suma en la primera
fila, note que podemos indexar los valores de las filas con los corchetes [ ].
Ahora note que hemos hecho uso de ‘r(N)’ que es un local creado con la eje-
cución de describe ‘1’, es importante mencionar que estos local solo mantienen
en memoria mientras no se ejecute otro comando que pueda producir resultados
almacenados (por ejemplo sum o tab), puede dirigirse a la documentación para
observar que resultados son almancenados en local cada vez que un comando en
partciular se ejecuta, por ejemplo resulta muy útil conocer el número de filas de
una tabla, este valor se puede conseguir de la siguiente forma:

sysuse auto,clear
tab rep78
display "El número de reparaciones a lo máximo que puede tener un auto es =" ‘r(r)’

10.3.1 La mediana
La mediana o percentil 50, es la posición relativa en la cual el 50% de los datos es
superior a ésta y el 50% restante inferior a la misma, esta se consigue ordenando
los datos de menor a mayor:

1−2−3−4−5−6−7

la mediana es 3, cuando el número de observaciones son par entonces escogemos


el promedio de las dos centrales.

32
10.4 Medidas de variabilidad
Las medidas de variabilidad son importantes por que nos dan un estimativo de
la dispersión de los datos, algunas se basan en la tendencia central medida por
la media como la varianza y otras en el ancho de la medidición como el rango.

10.5 El rango
El rango es una medida de variabilidad que considera la distancı́a o diferencia
entre el mayor valor y el menor valor de la distribución. Sin embargo, no es tan
sensitivo a la distribución de los datos en general.

sum x
‘r(max)’ - ‘r(min)’

10.5.1 Gráfico de caja


El gráfico de caja está basado en las medidas de posición relativa, también se
utiliza para observar la distribución de las variables entre dos grupos.

Precio de los autos domésticos y extranjeros


15,000
10,000
Price
5,000
0

Domestic Foreign
Source: Base de datos auto

sysuse auto,clear
graph box price, over(foreign) scheme(s1mono) title("Precio de los autos domésticos y extranjeros ")

10.6 La varianza
Podriamos pensar en medir la variabilidad de los datos, como la distancia entre
una observación y su medida de tendencia central, si usamos la media entonces
para la observación i, tendrı́amos;

xi − x̄

Sin embargo, para las n observaciones no podemos obtener la suma;


n
X
(xi − x̄)
i=1

33
Pues como vimos con anterioridad, su resultado es cero. ası́ tenemos la varianza
poblacional que está definida como

(xi − x̄)2
P

n
y la varianza muestral con un grado de libertad (n − 1) dado empiricamente sus
resultados son mejores.
(xi − x̄)2
P

n−1
Por ultimo, la desvaición estandar es tan solo la raı́z cuadrada de la varianza.

10.7 Variable estándar


La variable estándar es útil en el sentido que nos permite establecer, a cuantas
desvaiciones estandar de la media se encuentra una observación y por lo tanto
tratar problemas de medida o escala.
xi − x̄
zi =
σ
podrı́a realizarse con lo trabajado hasta aquı́ un programa para aplicar el teo-
rema de shebyshev mencionado con anterioriedad.
** Variables estandarizadas
capture program drop standar
program define standar
foreach x of local 0{
quietly sum ‘x’
gen std‘x’= (‘x’-‘r(mean)’)/(‘r(sd)’)
}
end

11 Apéndice
Propiedades de la sumatoria:
n
X
xi = x1 + x2 + x3 + ... + xn
i=1
n
X
x2i = x21 + x22 + x23 + ... + x2n
i=1
n
X Xn
x2i 6= ( xi )2
i=1 i

n
X n
X
axi = ax1 + ax2 + ax3 + ... + ax n = a(x1 + x2 + x3 + ... + xn ) = a xi
i=1 i=1

la formula computacional de la varianza:

34
X X
(x1 − x̄)2 = (x21 − 2xi x̄ + (x̄)2 )
n
X n
X X
= x2i − 2x̄ xi + x̄2
i=0 i=0
n
X
= x2i − 2nx̄2 + nx2i
i=0
n  Pn 2
X xi
= x2i − n i=0

i=0
n

35

También podría gustarte