Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a Stata II
Juan D. Barn
juandbaron@gmail.com
Notes:
1. (/m# option or -set memory-) 10.00 MB allocated to data
2. (/v# option or -set maxvar-) 5000 maximum variables
. describe
. describe price
5
. describe m*
. describe mpg-trunk
6
Una de las mejores formas de obtener descripciones de las variables es a
travs del comando codebook
. describe make
. codebook make
-------------------------------------------------------------------------
make Make and Model
-------------------------------------------------------------------------
7
Codebook para una variable numrica
. codebook mpg
----------------------------------------------------------------------------------
mpg Mileage (mpg)
----------------------------------------------------------------------------------
mean: 21.2973
std. dev: 5.7855
8
Tipos de variables
De texto (strings)
Numricas (numeric)
Tipo de Tipo de
Significado
datos variable
str1 Texto de mximo 1 caracter
9
Use el comando describe para ver el tipo de variable
10
Variable Categrica
11
Ejemplo de variable categrica codificada numricamente:
codebook muestra tabulacin y no estadsticas descriptivas
(Stata se da cuenta que la variable toma pocos valores)
codedebook realmente no sabe que esta es una variable
categrica
. codebook rep78
-------------------------------------------------------------------------
rep78 Repair Record 1978
-------------------------------------------------------------------------
12
Variable categrica codificada numricamente (con value labels):
La variable foreign toma valores 1 y 0. Toma 0 si es domstico 1
si es importado (y Stata lo sabe)
codebook y describe lucen diferentes para esta variable
(label: origin)
. codebook foreign
-------------------------------------------------------------------------
foreign Car type
-------------------------------------------------------------------------
+--------------------------------+
| make mpg foreign |
|--------------------------------|
1. | AMC Concord 22 Domestic |
2. | AMC Pacer 17 Domestic |
3. | AMC Spirit 22 Domestic |
4. | Buick Century 20 Domestic |
5. | Buick Electra 15 Domestic |
+--------------------------------+
14
Para crear una etiqueta de valores se siguen dos pasos sencillos:
1. Crear la asignacin (llamado el value label):
. label define origin 0 "Domestic" 1 "Foreign"
2. Asociar el value label con la variable:
. label values foreign origin
. summarize foreign
15
La variable es numrica, pero cuando se pueden usar los value labels
se usarn (recuerde cuando listamos la variable foreign).
Cuando tabulamos la variable (comando tabulate) sucede algo similar:
. tabulate foreign
17
1.3 Otros tipos de de etiquetas
Etiquetas de base de datos: . label data 1978 Automobile Data
Etiquetas de variables: . label var make Make and Model
. describe
18
2. Reportes bsicos de informacin
Los comandos recomendados para reportes bsicos de datos son:
20
Comando count
Ejemplos:
Cuntos carros domsticos hay en la base de datos?
. count if foreign == 1
52
----------------------------------------------------------
-> foreign = Domestic
22
----------------------------------------------------------
-> foreign = Foreign
17
22
Lo mismo se podra lograr con el comando tabulate:
23
3. Manipulacin de datos
Los comandos recomendados para manipulacin de datos son:
(no los veremos todos a la vez, pero los veremos todos)
generate y replace
egen
rename
drop
keep
sort
encode
decode
order
reshape
Ejemplos:
. generate lbperin = length/weight
. generate lbperin = weight/length
. generate nalcaro = 0
. replace nalcaro = 1 if foreign == 0 & price >= 6000
26
Se pueden combinar funciones en Stata con la generacin de variables
(matemticas o de texto):
27
4. De variables de texto (strings)
a numricas
Stata maneja variables de texto y numricas bastante bien
En muchas ocasiones preferimos usar variables numricas
(queremos usar comandos que generen estadsticas)
Las variables de texto contienen uno de dos tipos de informacin
Identificadores nicos para cada obs (ej. make)
Categoras no nicas (ej. manuf)
29
Qu queremos hacer exactamente?
Tenemos una variable de texto (manuf) y queremos crear una variable
numrica con etiquetas de valores (value labels). Esa nueva variable la
llamamos manuf2
30
Existen al menos tres formas de hacerlo en Stata:
1. Usando el comando encode
. encode manuf, gen(manuf2)
31
Manualmente:
Primero, cargando la informacin y generando la variable manuf
(se haba hecho en diapositivas anteriores)
. sysuse auto, clear
(1978 Automobile Data)
. sort manuf
. l manuf in 1/8
+-------+
| manuf |
|-------|
1. | AMC |
2. | AMC |
3. | AMC |
4. | Audi |
5. | Audi |
|-------|
6. | BMW |
7. | Buick |
8. | Buick |
+-------+ 32
La parte generate manuf2 = 1 if _n==1 crea una variable numrica
manuf2, igual a 1 o nada. Pondr 1s en manuf2, donde _n==1, y nada
(.) en el resto
_n: notacin de la observacin actual. _n es 1 para la primera obs,
_n es 2 para la segunda, _n es 3 para la tercera,.
Dado que se usa by (se ejecuta el comando para cada grupo
independientemente), _n es 1 para la obs 4 tambin.
La obs 4 es la primera obs del grupo Audi (definido por manuf)
1 AMC 1 1
2 AMC . 2
3 AMC . 3
4 Audi 1 1
5 Audi . 2
6 BMW 1 1
7 Buick 1 1
8 Buick . 2
34
El ltimo paso es usar la funcin sum()
sum(manuf2) : Produce la suma acumulada de la variable manuf2
(empezando por la primera obs) y tratando los . como 0
AMC 1 1
. list manuf manuf2 in 1/8
AMC . 1
+----------------+ AMC . 1
| manuf manuf2 |
|----------------| Audi 1 2
1. | AMC 1 |
Audi . 2
2. | AMC 1 |
3. | AMC 1 | BMW 1 3
4. | Audi 2 |
Buick 1 4
5. | Audi 2 |
6. | BMW 3 | Buick . 4
7. | Buick 4 |
8. | Buick 4 |
+----------------+
. des manuf2
36
Forma ms eficiente: usando el comando encode
. codebook manuf2
---------------------------------------------------------------------------------
manuf2 (unlabeled)
---------------------------------------------------------------------------------
type: numeric (long)
label: manuf2
examples: 5 Cad.
8 Dodge
14 Merc.
18 Pont.
37
4. Subndices de observacin
_n y _N
_n se introdujo en la recodificacin de variables de texto a numricas
_n: Notacin para el subdndice de obs (nmero de obs actual)
_N: Nmero total de observaciones (til cuando se combina con by)
Ejemplo: +-------------+
| familia edad|
|-------------|
Suponga que analizamos el 1. | 2 3 |
comportamiento de hermanos 2. | 0 5 |
3. | 3 0 |
4. | 0 2 |
Tenemos un identificador de familia 5. | 0 6 |
|-------------|
Queremos una nueva variable que 6. | 2 1 |
contenga el nmero de hermanos para 7. | 1 6 |
8. | 0 1 |
cada individuo
9. | 1 4 |
10. | 2 0 |
+-------------+
39
Primero, ordenamos por familia (para que queden contiguos)
. sort familia
+-------------+ +--------------+
| familia edad| | familia edad |
|-------------| |--------------|
1. | 2 3 | 1. | 0 1 |
2. | 0 5 | 2. | 0 2 |
3. | 3 0 | 3. | 0 5 |
4. | 0 2 | 4. | 0 6 |
5. | 0 6 | 5. | 1 4 |
|-------------| |--------------|
6. | 2 1 | 6. | 1 6 |
7. | 1 6 | 7. | 2 0 |
8. | 0 1 | 8. | 2 1 |
9. | 1 4 | 9. | 2 3 |
10. | 2 0 | 10. | 3 0 |
+-------------+ +--------------+
40
Ahora, creamos la nueva variable con by (porque es para cada familia)
. sort familia
. by familia: generate hrms = _N
+----------------------+
| familia edad hrms |
|----------------------|
1. | 0 1 4 |
2. | 0 2 4 |
3. | 0 5 4 |
4. | 0 6 4 |
5. | 1 4 2 |
|----------------------|
6. | 1 6 2 |
7. | 2 0 3 |
8. | 2 1 3 |
9. | 2 3 3 |
10. | 3 0 1 |
+----------------------+
41
Para generar el orden de nacimiento en cada familia, usaramos
. sort familia edad
. by familia: generate orden = _N - _n +1
+------------------------------+
| familia edad hrms orden |
|------------------------------|
1. | 0 1 4 4 |
2. | 0 2 4 3 |
3. | 0 5 4 2 |
4. | 0 6 4 1 |
5. | 1 4 2 2 |
|------------------------------|
6. | 1 6 2 1 |
7. | 2 0 3 3 |
8. | 2 1 3 2 |
9. | 2 3 3 1 |
10. | 3 0 1 1 |
+------------------------------+
42
Resumen
43