Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
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:
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.
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
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.
help list
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
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.
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
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.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.
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
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
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.
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.
15
label var var1 "Esta variable contiene del 10-12"
codebook
keep Varname
No obstante, como hemos dicho anteriormente podemos eliminar observaciones
que cumplan ciertas condiciones, por ejemplo:
keep if Var1=="group1" & Var2==1
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
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
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.
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)
replace dpto=subinstr(dpto,"Á","A",.)
20
replace ‘x’ = subinstr(‘x’,"Ú","U",.)
}
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
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)
clear all
input str8 sumas
"1+1"
"1+2"
23
"1+3"
"1+4"
end
gen suma=1 if regex(sumas,"1+1")
clear all
input str8 iscod
is-123
io-124
il-123
io-124
end
replace iscod=regexr(iscod,"[a-z]*\-","")
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.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.
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.
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
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
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.
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")
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.
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
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)’
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̄
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.
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
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