/*******************/ /*** Clase Stata ***/ /*******************/ clear ** Limpiamos datos y valores de la memoria de Stata clear matrix ** Elimina matrices creadas por código pero NO las almacenadas en memoria set mem 500m ** Memoria alocada al sistema (importacion de datos y otros calculos) set mat 800 ** Maximo numero de variables a utilizar en comandos de estimacion (800 tope) set more 1 ** Hace que Stata espere hasta que el usuario entregue input en bloques donde existe ** un more gl dir "C:\Stefan\Universidad\MAGCEA\Auxiliar" ** Se setea el directorio global *** Open data use "$dir\ClaseStata.dta", clear ** Clear borra el dataset previo ** Cuantos tipos de datos distintos hay ? *search distinct table var *** Creating Database replace var="c_gdp" if var=="Domestic credit provided by banking sector (% of GDP)" replace var="growth" if var=="GDP growth (annual %)" replace var="gdppc" if var=="GDP per capita (constant 2005 US$)" ** Cambiamos nombre por simpleza *** Loop para crear un archivo separado por tipo ** Es una forma de trabajar que permite mayor atomizacion y orden foreach x in c_gdp growth gdppc { ** Se itera por cada elemento en estas columnas preserve ** Preserva los datos, se restauran una vez que se cierre el programa o se ejecute restore keep if var=="`x'" ** Selecciona elementos a mantener en memoria reshape long inc, i(country) j(year) ** Esto va a cambiar a formato largo, reemplazando las variables indicadas ** (Mostrar ejemplo) rename inc `x' ** Cambiamos la variable drop var ** Se elimina el valor anterior sort country year ** Forma de ordenar los datos save "$dir/`x'.dta", replace ** Se almacenan los datos anteriores restore ** Con restore, volvemos a los datos anteriores guardados en la base original } ** Pareciera no haber pasado nada. Eso es cierto (en la original), pero veamos ** la utilidad de lo anterior *** Merging Data clear ** Volvemos a limpiar use "$dir\growth.dta", clear ** Cambiamos de BD! ** En primera instancia se ve que no hay datos. Ctrl + Shift + Down muestran que si ** Se ordena la base sort country year ** Se mezcla considerando estos parametros con la otra base merge country year using "$dir\c_gdp.dta" ** Aparece una variable molesta, se va para la casa ** La vemos como tabla para cachar que funciona bien tab _merge ** Y ahora bye bye drop _merge ** Fusionamos con la otra sort country year merge country year using "$dir\gdppc.dta" ** Y eliminamos el dato tab _merge drop _merge *** Cleaning outliers ** Esto permite capturar la programacion que queremos ** Es decir, es como armar una funcion o macro que se ejecuta al ser llamada * Se invoca cap program drop drops * Se da la instruccion de definir lo que se quiere programar program define drops * Quietly suprime el output quietly summarize `1' * Se genera una variable, se especifica su tipo y forma de calculo generate float z`1' = (`1'-r(mean))/r(sd) * Se entrega la condicion bajo la cual no se considera valido drop if z`1'<-3 | z`1'>3 * Se descarta el dato para acabar la rutina drop z`1' end ** Definimos las variables sobre las que trabajar local var "growth c_gdp gdppc" ** Llamamos el loop foreach x of local var { * Se hace el sumario sum `x', d * Se ejecuta el programa drops `x' } *** Replace ** Casos en los cuales no hay crecimiento, interesa hacerles frente ** Podemos armar una dummy * Se inicializa en 0 gen d_growth=0 * Adquiere valor en caso contrario replace d_growth=1 if growth>0 ** Obtenemos valor logaritmico de lo que se quiere hacer foreach x in growth c_gdp gdppc{ gen ln`x'=ln(`x') } *** Regressions ** Interesa analizar distintos modelos, sintaxis de dependiente e indeps ** Se estila este espacio pero no es necesario * Cluster dice de que forma se ordena * i.var es para decir que esa variable es un identificador * En otras palabras, generamos una dummy para controlar por pais * xi: reg es para llamar la regresion xi: reg growth c_gdp gdppc i.country i.year, cluster(country) * Outreg2 permite hacer la exportacion de los datos * IMPORTANTE! Outreg no permite exportar a hojas distintas en el mismo archivo * PERO SI permite agregar resultados a los ya existentes * los parametros tras la coma indican la especificidad de lo obtenido outreg2 c_gdp gdppc using "$dir\Table1.xls", se nolabel bdec(3) rdec(3) excel adjr2 replace *Gen sirve para obtener datos en los que haya ocurrido algo interesante *En este caso, interesa ver si algo salio de la muestra. Esto vale uno si esta *la fila incluida en la muestra [e(sample)] gen sample=1 if e(sample) ** Anadimos condicion a la regresion xi: reg growth c_gdp gdppc i.country i.year if gdppc>7000, cluster(country) outreg2 c_gdp gdppc using "$dir\Table1.xls", se nolabel bdec(3) rdec(3) excel adjr2 append xi: reg growth c_gdp gdppc i.country i.year if gdppc<7000, cluster(country) outreg2 c_gdp gdppc using "$dir\Table1.xls", se nolabel bdec(3) rdec(3) excel adjr2 append *** Panel Data and Lags * Extensiones a generar, toma valores enteros dependiendo del grupo a analizar egen ctr=group(country) * Esto permite declarar los datos a ser utilizados por panel xtset ctr year ** l genera el rezago y f genera el valor posterior gen lgrowth=l.growth gen fgrowth=f.growth * Especifica que es un modelo de efecto fijo y su regresionando xtreg growth lgrowth, fe *** Probit models probit d_growth c_gdp gdppc *dprobit tiene efectos marginales dprobit d_growth c_gdp gdppc *** Collapse * Que hacemos cuando nos interesan metricas? Usamos collapse collapse growth c_gdp gdppc, by (year) * El by entrega la forma de ordenar * Ahora especificamos el valor de interes collapse (max) growth c_gdp gdppc, by (year) * Murio la base por no usar preserve *** Label *Permite etiquetar variables (una de mis funciones favoritas de Stata) label variable growth "Mean Growth (Annual %)" label variable c_gdp "Mean Domestic Credit Provided by Banking Sector (% of GDP)" *** Append clear use "$dir\c_gdp.dta" append using "$dir\gdppc.dta"