Sunteți pe pagina 1din 10

sol_stata1_intro - Printed on 19/10/2017 06:29:59

1 *130223 ESTADÍSTICA APLICADA - DEPARTAMENTO ACADÉMICO DE ECONOMÍA


2 *EJERCICIOS ELABORADOS POR PROFESORES DEL CURSO. SUJETO A ERRORES Y OMISIONES.
3 *PROHIBIDA SU REPRODUCCIÓN Y DISTRIBUCIÓN SIN AUTORIZACIÓN (malaga_an@up.edu.pe)
4 ********************************************************************************
5
6 *STATA1_INTRO.ppt
7
8 *1. DÓNDE SE PROGRAMA? DO-FILES (*.do)
9 **************************************
10 *abrir un do nuevo : botón "new do" en la barra de comandos | teclado: ctrl+9
11 *abrir un do existente : menú File/Open | teclado: ctrl+o
12 *guardar do activo : botón "save" en ventana del do | teclado: ctrl+s
13 *ejecutar do-file todo : CTRL+D (muestra resultados) CTROL+R (no muestra resultados)
14 *ejecutar do una parte : seleccionar la parte que se quiere ejecutar y CTRL+(D|R)
15 *detener ejecución : "ESC"
16 *uno puede tener más de un do-file abierto
17
18 *2. COMANDOS BÁSICOS Y SINTAXIS GENERAL
19 ***************************************
20 *comando cd: cambia de directorio
21 *cd "D:\STATA"
22 dir //qué hay en el directorio?
23 clear //limpia base de datos cargada en memoria
24 display 3*4 //muestra cadenas de texto y/o números en la zona de resultados
25 *importar .xlsx con clicks: File / Import / *.xlsx / browse / firstrow
26 import excel datos0.xlsx, sheet("Sheet1") firstrow clear
27 *exportar .xlsx con clicks: File / Export / *.xlsx / browse / firstrow
28 **export excel using prueba.xlsx, firstrow(variables)¨
29
30 *sintaxis, jugar con summarize, help sum
31 *[bys varlist:] comando varlist [=exp] [if cond] [in #/#] [pesos] [using *.xxx], opciones
32 *operadores lógicos diferentes a EV VBA: == (igual) != (diferente) & (y) | (o)
33
34 *comando help: busca una cadena de texto en los manuales, stata journal y otros en línea
35 *help sum
36 sum edad //una var obs todas
37 sum edad ingxh //dos var obs todas
38 bys sector: sum ingxh //una var obs agrupadas
39 bys neduc sexo: sum ingxh //dos var obs agrupadas
40 sum ingxh if edad>30 //una var obs condicionadas
41 sum ingxh if edad>30 & horas>40 //una var obs condicionadas
42 sum ingxh in 1/18 //una var obs de 1/18
43 sum edad, detail //una var obs todas detallada
44 *comando ret list: lista resultados guardados por último comando con resultados guardados.
45 ret list //No todos los comandos guardan resultados
46 *para extraer un resultado guardado, escribo su nombre: r(N)
47 display r(mean)
48
49 *3. ¿CÓMO TOMAR APUNTES? LOG-FILES (.txt .log .smcl)
50 ****************************************************
51 *comando cmdlog: crea .txt que guarda lo ejecutado desde zona de comandos
52 **using: define cómo se denominará el archivo .txt
53 **opción replace: si existe un archivo con el mismo nombre, lo reemplaza
54 cmdlog using apuntes, replace
55 *comando log: crea .txt o .smcl que guarda lo que aparece en zona de resultados
56 **opción name: define con qué nombre stata identifica al log
57 **opción text: define que el archivo usado sea tipo .txt y no tipo .smcl
58 log using registro, replace name(registro) text
59 **puedes tener varios log pero solo un cmdlog, por eso nombras cada log
60
61 *comando log off: detiene la grabación
62 log off registro
63 *comando log on: reanuda la grabación
64 log on registro
65 *comando log close: cierra el log, ya no se puede reanudar con log on
66 log close registro
67 *para volver a abrir el log utilizas log using
68 **opción append: si archivo existe continúa grabando desde donde se quedó
69 log using registro, append name(registro) text
70 **también existen los comandos cmdlog {close|on|off} y cmdlong , append

Page 1
sol_stata1_intro - Printed on 19/10/2017 06:29:59
71
72 *4. PARÁMETROS DEL SISTEMA
73 **************************
74 clear
75 *comando query: muestra los parámetros bajo los cuales STATA funciona
76 query
77 *parámetros usuales: memory maxvar matsize more
78 *set memory #: define el tamaño de memoria RAM destinado al programa
79 *set maxvar #: define el máximo número de variables (#) que puede contener la base de datos
80 set maxvar 4000
81 *set matsize #: define el máximo número de variables (#) que se pueden incluir en un modelo
82 set matsize 300
83 *set more on/off: activa/desactiva el mensaje de -more- en la zona de resultados
84 set more off
85 *opción permanently: guarda la preferencia para cuando vuelvas a abrir stata
86 set more off, perm
87 log close registro
88 cmdlog close
89
90 *5. DÓNDE ESTÁ LA INFORMACIÓN? DTA-FILES (*.dta)
91 ************************************************
92 clear //crear base de 100 observaciones desde cero
93 set obs 100
94 *comando use: carga bases de datos en la memoria de STATA
95 **opción clear: limpia la base de datos anterior de la memoria, aunque no haya sido guardada
96 use datos1, clear
97 **parte using: abrir solo una parte de la base de datos (variables y/o observaciones)
98 use id sexo neduc sector ingxh using datos1, clear
99 **STATA solo puede tener una base de datos en la memoria
100 *comando save: guarda la base de datos en el archivo caracol.dta
101 **opción replace: si caracol.dta ya existe, sobreescribe información en el mismo archivo
102 save borrar, replace
103 *comando sysuse webuse: carga bases de datos desde internet o desde el sistema
104 webuse lifeexp, clear
105 sysuse auto, clear
106
107 *6. COMANDOS PARA EXPLORAR
108 **************************
109 use datos1, clear
110 *comando edit: ver base de datos, permite modificaciones
111 edit
112 *comando bro: [browse] ver base de datos sin permitir modificaciones
113 bro
114 *comando sort: ordenar la base de datos según los valores de alguna variable
115 *comando gsort: lo mismo pero permite orden ascendente y descendente
116 sort sexo ingxh
117 gsort -sexo -ingxh
118 *comando list: lista valores de la variable (siempre usar con in y/o if)
119 *comodines: * -> cualquier número de caracteres, ? -> un solo caracter
120 list neduc edad ing horas ingxh in 1/10
121 list neduc edad ing horas ingxh in 1/50 if horas>=40
122 *comando desc: [describe] describe base de datos (número de observaciones y variables)
123 desc
124 *comando lookfor: busca cadena de texto en nombres de variables y sus etiquetas
125 lookfor caracol
126 lookfor edad
127 *comando count: cuenta el número de observaciones
128 count
129 count if edad>=30
130 bysort sexo: count
131 bysort sexo sector: count
132 *comando keep: mantiene las observaciones o variables que especifiquemos
133 edit
134 keep id sexo-neduc ingxh* sector
135 keep if edad>=26 & edad<=55
136 *comando drop: borra las observaciones o variables que especifiquemos
137 drop ingxh2
138 gsort -ingxh
139 drop in 1/20
140 drop if ingxh<=5

Page 2
sol_stata2_var - Printed on 19/10/2017 06:30:05
1 *STATA2_VAR.ppt
2
3 use datos1, clear
4 *1. EXPLORAR Y VALIDAR VARIABLES
5 ********************************
6 codebook sexo neduc edad ingxh //descripción del contenido de variables
7 tab neduc, m //tabla de frecuencias (m para missings)
8 tab neduc sexo, m //tabla de frecuencias cruzada
9 sum ingxh, d //tabla de estadísticos (d para más estadísticos)
10 inspect neduc edad ingxh //descripción rápida de una variable
11 compare ing1 ing //compara dos variables
12 bys ocup_sec: compare ing1 ing
13
14 *2. CREAR Y MODIFICAR VARIABLES
15 *******************************
16 *Ejemplo 1 - tipos de variable y variables vacías
17 gen str4 ejem1="" // str4 -> cadenas de texto de 4 caracteres
18 gen byte ejem2=. // byte -> 0 ó 1
19 gen float ejem3=ln(ingxh1) // float -> numéricas con decimales
20 gen double ejem4=ln(ingxh1) // double -> numéricas con más decimales
21 set type double, perm // por defecto, nuevas numéricas serán double, no float
22 gen ejem5=horas1>40 // 1 sí es V, 0 si es F, (type double)
23 *Ejemplo 2 - replace y rename
24 replace ejem1="hola" // reemplaza los valores de una variable
25 set seed 100 // fija los valores aleatorios obtenidos
26 replace ejem2=runiform() // realizaciones de U(0,1) (cambia a type float)
27 rename ejem5 ejem6 // ejem5 ahora se llama ejem6
28 drop ejem* // solo en varlists: * ? - (var1-varN)
29 *Ejemplo 3 - in, if y condiciones
30 bro id sexo dominio ingxh?
31 gsort -sexo -dominio
32 codebook sexo dominio
33 gen ejem1=ln(ingxh1) in 1/25 // un igual en expresión
34 gen ejem2=sexo==1 & inlist(dominio,1,2,3,8) // dos iguales en condición
35 gsort -ejem2 -ingxh2
36 gen ejem3=ln(ingxh2) if ejem2==1 // condición en [if]
37 gen ejem4a=ingxh2>5 if ejem2==1 // condición en [=exp] e [if]
38 gen ejem4b=ingxh2>5 & ingxh2<. if ejem2==1 // missings ahora son 0 y no 1
39 gen ejem4c=inrange(ingxh2,5,.) if ejem2==1 // ídem a ejem4b
40 gen ejem4d=ingxh2>5 if ejem2==1 & ingxh2!=. // missings ahora son . y no 0
41 gsort -ejem2 -ingxh1 -ingxh2
42 gen ejem5= inrange(ingxh1,5,.) | inrange(ingxh2,5,.) if ejem2==1 & (ingxh1!=. | ingxh2!=.)
43 drop ejem*
44 *Ejemplo 4 - sumar, contar e identificar
45 bro id sexo sector horas*
46 gsort -sexo -sector -horas
47 gen ejem1=_n // número de observación
48 gen ejem2=_N // número de observaciones en dta
49 gen horas_sem1=horas1+horas2 // # + . = .
50 egen horas_sem2=rowtotal(horas?) // # + . = # pero . + . = 0
51 egen horas_sem=rowtotal(horas?), missing // # + . = # yyyy . + . = .
52 drop horas_sem?
53 egen muj_sec=group(sexo sector) // identificador por grupo
54 bys muj_sec: gen nobs_ms=_N
55 bys muj_sec: gen id_ms=_n
56 egen horas_tot=total(horas_sem) // egen: total() suma toda la columna
57 bys muj_sec: egen horas_tot_ms=total(horas_sem)
58 sort horas_sem // ordeno para acumular de menor a mayor
59 gen horas_acu=sum(horas_sem) // gen: sum() acumulativa de columna
60 sort muj_sec horas_sem
61 bys muj_sec: gen horas_acu_ms=sum(horas_sem)
62 drop ejem*
63 *Ejemplo 5 - etiquetas de valores
64 gen region=inlist(dominio,1,2,3,8)+inlist(dominio,4,5,6)*2+(dominio==7)*3
65 label variable region "Región natural" // etiqueta de variable
66 label define etiquetita 1 "Costa" 2 "Sierra" 3 "Selva" // etiquetas de cada valor
67 label values region etiquetita // coloca etiquetas a valores
68 codebook region
69 label list // muestra etiquetas de valores
70

Page 1
sol_stata2_var - Printed on 19/10/2017 06:30:05
71 *3. COMANDOS Y FUNCIONES
72 ************************
73 *comandos para variables categóricas // siempre en nuevas variables
74 bro dominio region dpto
75 decode dominio, gen(zona) // convierte etiquetas en textos
76 encode dpto, gen(departamento) // convierte textos en etiquetas
77 recode dominio (7=3 "Selva") (4/6=2 "Sierra") (min/3 8=1 "Costa"), gen(regiones)
78 //crea nueva numérica (con o sin etiquetas) a partir de reglas sobre otra numérica
79 *comandos para variables textuales
80 bro id
81 split id, gen(id_) parse(-) destring // separa textos
82 tostring id_2, replace // convierte números a textos
83 destring id_2, replace // convierte textos a números
84 *funciones para variables textuales
85 bro sexo region id
86 egen muj_reg=concat(sexo region), decode punct(" - ") // concatena textos
87 gen last=substr(id,-1,1) // extrae caracteres de un texto
88 bro id if substr(id,-5,2)!="11" // funciones de gen sirven fuera de gen
89 bro id
90 gen id1=real(substr(id,1,6)) // convierte texto a número
91 *percentiles
92 bro ingxh
93 gsort -ingxh
94 pctile cortes=ingxh1, nq(5) // puntos de corte
95 xtile quintos=ingxh1, nq(5) // percentil de cada observación
96
97 *4. EJERCICIOS ADICIONALES
98 **************************
99 *Ejercicio adicional 1 - curva de lorenz
100 use id ing sector using datos3, clear
101 drop if ing==.
102 gsort ing
103 egen acu_ing=total(ing)
104 replace acu_ing=sum(ing)/acu_ing
105 gen acu_pob=_n/_N
106 gsort sector ing
107 bys sector: egen acu_ing_s=total(ing)
108 bys sector: replace acu_ing_s=sum(ing)/acu_ing_s
109 bys sector: gen acu_pob_s=_n/_N
110 gsort acu_pob //bonus - gráficos
111 line acu_ing acu_pob || line acu_pob acu_pob
112 gsort sector acu_pob_s
113 line acu_ing_s acu_pob_s || line acu_pob_s acu_pob_s ||, by(sector)
114 line acu_ing_s acu_pob_s if sector==1|| line acu_ing_s acu_pob_s if sector==0 || /*
115 */line acu_pob_s acu_pob_s ||, legend(order(1 "Informal" 2 "Formal"))
116 *Ejercicio adicional 2 - variables categóricas
117 use id sexo sector ingxh using datos1 , clear
118 egen muj_sec=concat(sexo sector) if sexo!=. & sector!=., decode punct(" - ")
119 encode muj_sec, gen(mujsec)
120 drop muj_sec
121 label list mujsec
122 recode ingxh (min/3=1 "<3") (3/7=2 "3-7") (7/max=3 ">7"), gen(interval)
123 gsort -ingxh
124 *Ejercicio adicional 3 - variables textuales
125 use datos2, clear
126 split ubigeo, gen(p_) parse(/)
127 drop ubigeo
128 rename p_1 ubigeo_dist
129 gen ubigeo_prov=real(substr(ubigeo_dist,1,4))
130 encode p_2, gen(dpto)
131 split p_3, gen(n_muni) parse(" ")
132 drop p_*
133 codebook n_muni*
134 drop n_muni1
135 rename n_muni2 tipo
136 tab n_muni3
137 replace n_muni3="" if n_muni3=="DE" | n_muni3=="DEL"
138 egen municipio=concat(n_muni*), punct(" ")
139 drop n_m*
140

Page 2
sol_stata3_stat - Printed on 19/10/2017 06:30:13
1 *STATA3_STAT.ppt
2
3 *I.¨ESTADÍSTICA DESCRIPTIVA
4 use datos3, clear
5 *1. PONDERADORES O FACTORES DE EXPANSIÓN (pw iw aw fw)
6 ******************************************************
7 *ponderada: frecuencias relativas corregidas según pesos
8 *expandida: frecuencias absolutas corregidas según pesos
9 tab neduc //sin ponderar sin expandir
10 tab neduc [aw=factor] //ponderada sin expandir
11 tab neduc [iw=factor] //ponderada y expandida | sin definición
12 tab neduc [fw=round(factor)] //ponderada y expandida | aprox por round()
13 *tab neduc [pw=factor] //ponderada y expandida | no hay pw en tab
14
15 *2. TABLAS
16 **********
17 *tabla de frecuencias de una entrada
18 tab neduc [iw=fac], m //incluye categoría missing
19 tab neduc [iw=fac], nol //categorías con números y no etiquetas
20 label list neduc
21 tab neduc [iw=fac], gen(temp) //crea dummys por cada categoría
22 drop temp*
23 tab neduc [iw=fac], plot //muestra freq absolutas e histograma
24 *tabla de frecuencias de doble entrada
25 tab nedu sector [iw=fac] //solo obs !=missing para ambas variables
26 tab nedu sector [iw=fac], m //incluye categoría missing
27 tab nedu sector [iw=fac], col nofreq //nofreq quita frecuencias absolutas
28 tab nedu sector [iw=fac], row nofreq //col row cell: agrega frec. relativas
29 tab nedu sector [iw=fac], cell nofreq
30 *tabla de estadísticos rígida
31 sum ing? [aw=factor] //stats: obs mean stdev min max
32 ret list
33 *tabla de estadísticos flexible: muchas variables poco subgrupos
34 tabstat ing? [aw=fac] //stats: mean
35 tabstat ing? [aw=fac], save //guarda la tabla en r(Stat...)
36 ret list
37 tabstat ing? [aw=fac], stat(mean cv q) //stats posibles -> help tabstat
38 tabstat ing? [aw=fac], stat(mean cv q) col(s) //stats en cols, transpone tabla
39 tabstat ing? [aw=fac], by(neduc) //subgrupos según neduc
40 tabstat ing? [aw=fac], by(neduc) not //quita población total
41 tabstat ing? [aw=fac], by(neduc) not m //agrega missing como categoría
42 bys sexo: tabstat ing? [aw=fac], by(neduc) not //varias tablas para grupos según varlist
43 *tabla de estadísticos flexible: pocas variables muchas subgrupos
44 table sector [pw=fac] //contents: freq por defecto
45 table sector [pw=fac], c(mean ing1 count ing2) //definir contents -> help table
46 table ned sec sex [pw=fac], c(m ingxh) //table row col scol: ned inf sex
47 table ned sec sex [pw=fac], c(m ingxh) row col scol //pone totales, son independientes
48 table ned sec sex [pw=fac], c(m ingxh) by(gedad) //srow: gedad, hasta 5 vars
49 *table ned sec sex [pw=fac], c(m ingxh) by(gedad) replace //reemplaza dta por tabla
50
51 *3. GRÁFICOS DE UNA VARIABLE
52 ****************************
53 *graficar histogramas y distribuciones
54 hist ingxh [fw=round(fac)] //histograma var continua
55 hist ingxh [fw=round(fac)], percent //% en lugar de densidad en eje y
56 hist ingxh [fw=round(fac)], kdens normal //agrega fdp estimada y normal
57 hist ingxh [fw=round(fac)], by(sector sexo) //un graph por subgrupo
58 hist edad [fw=round(fac)], discrete //histograma var discreta
59 kdensity ingxh [iw=fac] //func. de prob. (solo continuas)
60 kdensity ingxh [iw=fac], g(ejex ejey) //vars ejex ejey: pares ordenados de graph
61 kdensity ingxh [iw=fac], g(x y) n(100) //cantidad de pares ordenados
62 *gráfico de caja
63 replace horas=horas/5
64 gr box ingxh horas [pw=fac] //1 caja por var | un gráfico
65 gr hbox ingxh horas [pw=fac] //cajas horizontales
66 gr box horas [pw=fac], over(gedad) //1 caja x categ gedad | un gráfico
67 gr box horas [pw=fac], over(gedad) by(sex) //varias cajas | varios subgráficos
68 gr box ingxh [pw=fac], over(sex) over(geda) over(sec) //max 3 over para 1 var
69 gr box ingxh horas [pw=fac], over(sex) over(sec) //max 2 over para más de 1 var
70 replace horas=horas*5

Page 1
sol_stata3_stat - Printed on 19/10/2017 06:30:13
71 *gráfico de barras
72 gr bar ing? [pw=fac] //barra mean de var
73 gr bar (mean) ing? (median) ing? [pw=fac] //indicar otros stats
74 gr hbar ingxh horas [pw=fac], over(nedu) //1 barra x categ gedad | un gráfico
75 gr hbar ingxh [pw=fac], over(gedad) by(sex) //varias barras | varios subgráficos
76 gr bar ingxh [pw=fac], over(sex) over(ged) over(sec) //max 3 over para 1 var
77 gen horas_hombre=horas if sexo==1
78 gen horas_mujere=horas if sexo==2
79 gr hbar (sum)horas_* [pw=fac], over(neduc) stack //barras apiladas
80 gr hbar (sum)horas [pw=fac], over(sexo) over(neduc) asyvars stack //igual a anterior
81 gr hbar (sum)horas [pw=fac], over(sexo) over(neduc) asyvars stack percent //sobre 100%
82
83 *4. GRÁFICOS DE DOS VARIABLES
84 *****************************
85 scatter ingxh edad //ejey ejex: un punto (x,y) por obs
86 line ingxh edad //conecta los puntos, según orden dta
87 line ingxh edad, sort //ordena según edad antes de conectar
88 twoway lfit ingxh edad [pw=factor] //grafica b0+b1*edad
89 twoway lfitci ingxh edad [pw=factor] //agrega intervalos de confianza
90 *graficar promedios
91 bys edad: egen ming_edad= mean(ingxh)
92 scatter ming_edad edad
93 line ming_edad edad
94 tw qfit ingxh edad [pw=factor] //grafica b0+b1*edad+b2*edad^2
95 tw (sca ming_edad edad) (qfitci ingxh edad [pw=fac]) //dos gráficos en uno
96 *subgráficos
97 bys edad neduc sexo sector: egen ming_edad2=mean(ingxh)
98 twoway (sca ming_edad2 edad) (qfitci ingxh edad [pw=fac]), by(sexo) //subgráficos
99 *gráficos más detallados
100 twoway (sca ming_edad2 edad) (qfitci ingxh edad [pw=fac]) ///
101 (sca ming_edad2 edad if neduc>=10 & sector==1), ///
102 title("Relación entre el salario por hora y la edad") /// título gráfico
103 ytitle("Salario por hora (en soles)") /// título eje y
104 legend(order(1 "Todos" 4 "Superior completa sector formal" /// leyenda
105 3 "Valores ajustados" 2 "Intervalos de confianza al 95%"))
106
107 *II.¨ESTADÍSTICA INFERENCIAL
108 *1. PROGRAMAR PREFIJO SVY
109 *************************
110 svyset conglome [pw=factor], strata(estrato) //formatea prefijo svy
111 *svyset, clear //borra formato previo de svy
112 svydes //obs y clusters por estrato
113
114 *2. COMANDOS QUE PERMITEN SVY
115 *****************************
116 *simple vs ponderaciones vs diseño muestral
117 mean ingxh //promedio ingreso de individuos en la muestra
118 mean ingxh [pw=factor] //promedio ingreso de individuos en la población
119 svy: mean ingxh //errores estándar calculados correctamente
120 *opciones de svy y de mean
121 svy: mean ingxh //sumatoria(ingxh1)/#población
122 svy: mean ing*, level(90) //cambiar intervalo de confianza
123 svy: mean ingxh, over(sexo) //subpops: hombres y mujeres
124 svy, subpop(sexo): mean ingxh //subpops: mujeres (sexo==1)
125 svy, subpop(if sexo==1): mean ingxh //igual a anterior
126 svy: mean ingxh if sexo==1 //forma incorrecta
127 svy: mean ingxh?, over(sector sexo) //over(varlist), varias subpops
128 svy, subpop(if sector==1 & sexo==1): mean ingxh? //subpop: mujer formal
129 *otros comandos svy
130 gen unos=1
131 svy: total unos, over(sector sexo) //sumatoria de variable (numerador de mean)
132 svy: tab neduc //tabla de frecuencias
133 svy: tab neduc, se ci //std. errors, conf. interval, #obs
134 svy: proportion sector //tabla de frecuencias con intervalos
135 svy: proportion sector, over(sexo) level(99) //69.9% hombre informal/hombres
136 svy: proportion sexo, over(sector) level(99) //59.3% hombre informal/informales
137 svy: tab sexo sector, se ci //41.9% hombre informal/todos
138 svy: ratio ing1/horas1 //sumatoria(ing1)/sumatoria(horas1)
139 svy: ratio (princ: ing1/horas1) (sec: ing2/horas2) //más de un ratio
140

Page 2
sol_stata3_stat - Printed on 19/10/2017 06:30:13
141 *3. PRUEBAS DE HIPÓTESIS
142 ************************
143 *ttest/prtest funcionan solos | lincom necesita una estimación previa (svy: mean)
144 svy: mean ingxh1 //(1) mean=#
145 lincom ingxh1-5.5 //muestreos complejos
146 ttest ingxh1=5.5 //muestreos simples
147 svy: mean ingxh1 ingxh2 //(2) mean1=mean2
148 lincom ingxh1-ingxh2
149 ttest ingxh1=ingxh2
150 svy: mean ingxh, over(sexo) //(3) mean_subpop1=mean_subpop2
151 lincom [ingxh]hombre - [ingxh]mujer
152 ttest ingxh, by(sexo)
153 gen ing15=inrange(ingxh,5,15) if ingxh!=.
154 prtest ing15=0.3 //prtest ídem a ttest pero para proporciones
155 prtest ing15, by(sexo)
156 svy: mean ingxh, over(sexo sector) //doble diferencia
157 lincom ([ingxh]_subpop_2-[ingxh]_subpop_1)-([ingxh]_subpop_4-[ingxh]_subpop_3)
158 /* Mean | Coef. Std. Err. t P>|t| [95% Conf. Interval]
159 (1) | -.2479341 .1206672 -2.05 0.040 -.4844948 -.0113734 */
160 *p<0.05 -> se rechaza la h0 con 95% de confianza -> H0=(hfor-hinf)-(mfor-minf)=0
161 *p=0.04<0.05 -> rechazo que (hfor-hinf) sea igual a (mfor-minf)
162 *intervalo que incluye 0 [-a,b] -> no puedo rechazar que (hfor-hinf)=(mfor-minf)
163 *[-a,-b] -> (hfor-hinf)<(mfor-minf) | [a,b] -> (hfor-hinf)>(mfor-minf)
164
165 *4. CORRELACIONES SIMPLES Y PARCIALES
166 *************************************
167 *correlación simple
168 cor ingxh horas [aw=factor] //correlación entre ingxh y horas
169 scalar p=r(rho) //correlación se guarda en r(rho)
170 cor ingxh horas [aw=factor], means //agrega tabla tipo summarize
171 pwcorr ingxh horas [aw=factor], st(0.05) //pone * si es significativa a 95%
172 *regresión como correlación simple
173 svy: reg ingxh horas //estima mínimos cuadrados ordinarios de ingxh sobre horas
174 /* ingxh | Coef. Std. Err. t P>|t| [95% Conf. Interval]
175 horas | -.0175833 .0012968 -13.56 0.000 -.0201257 -.0150409
176 _cons | 6.57971 .0696338 94.49 0.000 6.443197 6.716223 */
177 sum ingxh [iw=factor]
178 scalar isd=r(sd)
179 scalar imean=r(mean)
180 sum horas [iw=factor]
181 scalar hsd=r(sd)
182 scalar hmean=r(mean)
183 display p*(isd/hsd) //a esa expresión equivale beta_horas: -.01758327
184 display imean-p*(isd/hsd)*hmean //a esa expresión equivale beta_cons: 6.57971
185 *regresión como diferencia de medias
186 svy: reg ingxh sexo //si indep_var es dummy 1/0 equivale a diferencia de medias
187 /* ingxh | Coef. Std. Err. t P>|t| [95% Conf. Interval]
188 sexo | -.6779209 .050981 -13.30 0.000 -.777866 -.5779758
189 _cons | 6.058674 .0360929 167.86 0.000 5.987916 6.129432 */
190 svy: mean ingxh, over(sexo)
191 /* Over | Mean Std. Err. [95% Conf. Interval]
192 hombre | 6.058674 .0360929 5.987916 6.129432
193 mujer | 5.380753 .0464759 5.28964 5.471866 */
194 lincom [ingxh]mujer-[ingxh]hombre
195 * (1) | -.6779209 .050981 -13.30 0.000 -.777866 -.5779758
196 *regresión como (doble) diferencia de medias
197 svy: mean ingxh, over(sexo sector)
198 lincom ([ingxh]_subpop_4-[ingxh]_subpop_3)-([ingxh]_subpop_2-[ingxh]_subpop_1)
199 svy: reg ingxh sexo sector //de 3 valores (betas) no puedo obtener 4 (HI HF MI MF)
200 svy: reg ingxh sexo#sector //premio sobre constante (sexo=0 & sector=0)
201 svy: reg ingxh sexo##sector //doble diferencia en coef de mujer#formal
202 *regresión como correlaciones parciales
203 svy: reg ingxh sexo sector edad //reg vardep varindep_1 ... varindep_k
204 svy: reg ingxh sexo sector edad edad#sexo //trata edad como categórica
205 svy: reg ingxh sexo sector edad c.edad#sexo //c. para tratar edad como contínua
206 svy: reg ingxh sexo sector neduc //por defecto trata neduc como contínua
207 svy: reg ingxh sexo sector i.neduc //i. para tratar neduc como categórica
208 eret list //resultados guardados de e.stimaciones
209 test sexo=-0.2*_cons //prueba de hipótesis sobre coeficientes
210 test 8.neduc=9.neduc //#.nvar para coeficientes de categóricas

Page 3
sol_stata4_bd - Printed on 19/10/2017 06:30:19
1 *STATA4_BD.ppt
2
3 *1. COLLAPSE | para resumir bases de datos
4 ******************************************
5 use datos3, clear
6 collapse (mean)ingxh [pw=fac], by(edad) //id: edad | var: ingxh promedio por edad
7 scatter ingxh edad
8
9 use datos3, clear
10 collapse (p25) ingxh horas [pw=fac], by(edad) //vars: p25 de ingxh y horas por edad
11 scatter ingxh horas
12
13 use datos3, clear
14 preserve //se ejecuta desde aquí hasta restore
15 collapse (p25)inf=ingxh (median)med=ingxh (p75)sup=ingxh [pw=fac], by(edad)
16 two (scatter inf edad) (scatter med edad) (scatter sup edad)
17 save temp_edad, replace
18 restore //es como hacer ctrl+z hasta preserve
19 erase temp_edad.dta //borra el archivo del disco duro
20
21 *2. APPEND | para agregar observaciones de otra dta
22 ****************************************************
23 use gr_fiscal_2014, clear //gr_gas y gr_trans para dptos 2014
24 use gr_fiscal_2015, clear //gr_gas y gr_ing para dptos 2015
25 append using gr_fiscal_2014 //missings en gr_trans 2015 y gr_ing 2014
26 save gr_fiscal, replace //gr_gas gr_trans gr_ing para 2014 y 2015
27
28 *3. RESHAPE | para pasar wide a long y viceversa
29 ************************************************
30 use ao dpto gr_gas using gr_fiscal, clear //id: ao dpto | vars: ao dpto gr_gas
31 reshape wide gr*, i(dpto) j(ao) //id: dpto | vars: dpto gr_gas2014 gr_gas2015
32
33 use gr_fiscal, clear //id: ao dpto | vars: ao dpto gr_ing gr_gas gr_trans
34 reshape long gr_, i(ao dpto) j(cta) string //id: ao dpto cta | vars: ao dpto cta gr_
35 //string porque cta es textual (“ing” “gas” “trans”)
36
37 *4. MERGE | para agregar variables de otra dta
38 **********************************************
39 use gr_poblacion, clear
40 isid ao dpto //preguntar a Stata si ao y dpto son id
41 use gr_fiscal, clear
42 isid dpto ao
43 *merge 1:1 ao dpto using gr_poblacion //1:1 porque ao dpto es id en ambas
44 *merge 1:1 ao dpto using gr_poblacion, nogen //para no crear var _merge
45 merge 1:1 ao dpto using gr_poblacion, keep(1 3) //quedarme con _merge==1 y _merge==3
46
47 use gl_fiscal, clear
48 isid ao dpto prov
49 *merge m:1 ao dpto using gr_fiscal //m:1 porque master id tiene más vars que id en using
50 merge m:1 ao dpto using gr_fiscal, keepus(gr_gas) //solo agrega la variable gr_gas de using
51

Page 1
sol_stata5_prog - Printed on 19/10/2017 06:30:27
1 *STATA5_PROG.ppt
2
3 sysuse auto, clear
4 *1. MACROS
5 **********
6 *local
7 local x price mpg //creo el local (macro temporal) x
8 desc `x' //llamo local x
9 local y `x' weight //x deja de existir al terminar de ejecutar
10 desc `y'
11 local w="`x' weight" //usar "" si contiene string y se define con =
12 desc `w'
13 local z=20 //es indiferente usar "" si equivale a un número
14 codebook mpg if mpg>`z'
15
16 *global
17 global A "C:\" //declaro el global (macro permanente) A
18 display "$A" //cuidado con ""
19 cd "$A" //llamo a global A (forma a prueba de espacios en string)
20 cd $A
21 macro list //muestra macros en memoria
22 //volver a escribir en comandos (local se fueron)
23 macro drop A
24
25 *mini ejemplo
26 sum price, d //ret list para recordar como referirse a percentiles
27 local high=r(p95)
28 local low=r(p5)
29 display `low' " " `high'
30 sum mpg if inrange(price,`low',`high')
31
32 *2. SCALAR
33 **********
34 scalar D=10*log(3) //crea escalar pata
35 scalar E=price[_N] //extrae último valor de una serie
36 *gen lpr=price[_n-1] //operador funciona como rezago o adelanto
37 scalar list E //muestra escalar cola
38 sum price
39 scalar F=r(mean) //extrae un resultado guardado por sum price
40 scalar drop E //borra escalar "cola"
41 scalar list //muestra TODOS los escalares
42 scalar drop _all //borra TODOS los escalares
43
44 *3. MATRIX
45 **********
46 *crear y completar matrices
47 matrix G=J(5,7,.) //crea matriz loro de 5 x 7 llena de missings
48 matrix G[2,3]=100 //llena 100 en la fila 2 col 3 de matriz loro
49 matrix list G //muestra la matriz loro
50 *guardar y extraer valores
51 mean price //uno de los valores guardados de mean es r(table)
52 matrix H=r(table) //guarda la matriz r(table) en la matriz pato
53 matrix dir //muestra nombres de matrices existentes
54 matrix list H
55 scalar I=H[2,1] //guarda valor de una matriz en un escalar
56 scalar list
57 *borrar matrices
58 matrix drop G //borra la matriz loro
59 matrix drop _all
60 *juntar matrices
61 matrix A=J(4,5,1)
62 matrix B=J(3,5,2)
63 matrix C=A\B //une matrices A y B una debajo de otra
64 matrix D=J(4,1,3)
65 matrix E=J(4,5,4)
66 matrix F=D,E //une matrices D y E una a lado de otra
67 *funciones y comandos
68 matrix G=matuniform(3,4) //crea matriz de 3x4 llena de aleatorios U(0,1)
69 svmat G //copia matriz en variables (columnas = variables)
70 mkmat price-headroom in 1/5, matrix(H) //copia variables en matriz

Page 1
sol_stata5_prog - Printed on 19/10/2017 06:30:27
71
72 *4. CONDICIONAL: IF
73 *******************
74 gen a=uniform()
75 sum a
76 if r(mean)>0.5{ //forma 1: extensa, permite más de 1 comando
77 gen a2=a^2
78 }
79 else{
80 gen a3=a^3
81 }
82 if r(mean)>0.5 gen a2b=a^2 //forma 2: simple, permite solo 1 comando
83 else gen a3b=a^3 //no confundir con: gen a2c=a^2 if a>0.5
84
85 *5. BUCLE CERRADO: FOREACH (IN/OF) FORVALUES
86 ********************************************
87 foreach mu in 1 2 3{ //numlist en cualquier orden
88 gen vaca`mu'=uniform()*`mu'
89 }
90 foreach pio of numlist 4(2)8{ //numlist ordenada o no
91 gen pollo`pio'=uniform()*`pio'
92 }
93 forvalues vee=5(2)9{ //ídem a foreach x of numlist
94 gen oveja`vee'=uniform()*`vee'
95 }
96 foreach cua in price headroom{ //pueden ser nombres de variables o no
97 gen log_`cua'=log(`cua')
98 }
99 foreach oing of varlist mpg trunk-turn{ //deben ser nombres de variables
100 gen log_`oing'=log(`oing')
101 }
102 levelsof rep78, local(niveles) //para repetir según valores de categórica
103 foreach x of local niveles{
104 count if rep78==`x'
105 }
106
107 *6. BUCLE ABIERTO: WHILE
108 ************************
109 gen e=uniform()
110 sum e
111 local cuenta=1
112 while r(mean)<0.6 {
113 replace e=uniform()
114 quietly sum e //quietly no mostrar resultados aunque ejecute do (ctrl+d)
115 noisily display `cuenta' //noisily mostrar resultados aunque ejecute run (ctrl+r)
116 local cuenta=`cuenta'+1
117 }
118
119 *7. COMANDOS EN INTERNET
120 ************************
121 use dpto ingxh factor using datos3, clear
122 encode dpto, gen(departa)
123 findit gini //busca "gini" en stata related websites
124 ssc install ineqdeco //instala el ineqdeco.ado desde internet
125 ssc install egen_inequal
126 which summarize //¿el comando es built-in Stata o es un ado?
127 which ineqdeco //si es ado muestra su ubicación en C:/
128 viewsource ineqdeco.ado //muestra la programación del ado-file
129 *help ineqdeco //mini ejercicio
130 ineqdeco ingxh [aw=factor] //gini nacional
131 scalar gini_nacional=r(gini)
132 *help egen_inequal //gini por departamento
133 egen ginis=inequal(ingxh), by(departa) weights(factor) index(gini)
134 local gnac=gini_nacional //gráfico
135 graph hbar ginis, over(dpto, sort(1)) yline(`gnac')
136 collapse (mean)ginis, by(dpto) //tabla en excel
137 set obs 26
138 replace dpto="NACIONAL" in 26
139 replace ginis=gini_nacional in 26
140 export excel using "Ginis.xlsx", sheetmodify cell(C8) firstrow(variables)

Page 2

S-ar putea să vă placă și