BIBLIOTECA VIRTUAL de Derecho, Economía y Ciencias Sociales


INTRODUCCIÓN AL MANEJO DE INFORMACIÓN EN STATA 9.0 CON APLICACIÓN A LA ENCUESTA DE HOGARES

Wilson Mayorga y Rafael Escalante



Esta página muestra parte del texto pero sin formato.

Puede bajarse el libro completo en PDF comprimido ZIP (62 páginas, 797 kb) pulsando aquí

 

 

PARTE VI. ELEMENTOS DE PROGRAMACIÓN

Un programa es un archivo que se aplica en Stata diseñado por el usuario para realizar operaciones definidas por el mismo usuario.

Cuando se escribe un comando no reconocido por Stata el programa “pensará” que es un programa y buscará su nombre. Si lo encuentra lo aplica. La sintaxis básica de un programa es:

Program define nombre del programa

Comandos y operaciones de Stata

End

Es recomendable iniciar el archivo con la versión de Stata sobre la cual desea operar(version 9.0 para este caso). Además del comando capture program drop, para que cada vez que se inicie el programa escrito se borre la memoria temporal de Stata.

Capture program drop nombre del programa

Si se desea que alguna línea no sea leída se antepone un asterisco(*); y si se desea crear comentarios, se inician con (/*) y se finaliza con(*/). Estos comentarios pueden colocarse en cualquier parte, incluso entre líneas o entre comandos. Es importante anotar que estos comentarios sólo pueden hacerse en este tipo de archivos.

Un programa y un archivo *.do no son muy diferentes para Stata(los lee igual), pero existen algunas diferencias. Estas son:

• Un archivo *.do se aplica con do nombre del archivo, un programa se aplica con sólo su nombre.

• Los programas deben ser cargados antes de ser aplicados. Para cargar un programa, la forma “simple” es primero usar run seguido del nombre del archivo donde quedó guardado el programa y luego sí aplicar el programa(simplemente dando su nombre).

Run nombre archivo

Nombre del programa

• Un archivo *.do imprime en la ventana de resultados las operaciones y los comandos usados. Un programa sólo imprime resultados.

Al igual que los archivos *.do un programa puede llamar otros programas (incluso un programa puede usar archivos *.do y viceversa).

Los programas pueden crearse en el editor de archivos *.do o en cualquier editor de texto y pueden guardarse como archivos *.do o como archivos *.ado.

Una forma más eficiente de ahorrarse este problema entre archivos es guardar directamente el programa como si fuera un archivo *.ado, y esto se hace directamente desde el editor de *.do

EJEMPLO DE UN PROGRAMA TIPICO

Capture log close

log using nombre archivo log, replace

set more off

Capture program drop nombre del programa

program define nombre del programa

…operaciones…

end

log close

exit

RECOMENDACIÓN IMPORTANTE: Se recomienda no complicar al programa con rutas de archivos muy largas. Lo ideal es tener todos los archivos referentes a un ejercicio en una única carpeta( Y SÓLO UNA CARPETA). Y también debe guardarse cada archivo *.ado en algún sitio que Stata lo pueda encontrar(por ejemplo el listado de rutas donde stata por default).

• ALGUNOS COMANDOS UTILES EN PROGRAMACION

• COMANDO SET:

Set puede utilizarse de la siguiente manera:

Set memory

Set textsize

Pero tiene otros muchos usos. Dentro de un archivo *.do puede usarse para:

Set more esta línea hace que el programa se detenga en cada pantallazo y así con un enter el usuario va leyendo.

Set rmsg off Esta línea evita que aparezca la sintaxis de cada comando en la pantalla de resultados.

Set output error Suprime todos los outputs que pudieran aparecer producto de comandos, excepto los mensajes de error.

• COMANDO DISPLAY

Sirve para imprimir títulos.

Display “título”

• COMANDO ASSERT

Este comando asegura o verifica que algún condicional sea verdad. Si lo es, no producirá output. Si no lo es, imprimirá “assertion is false” y detendrá el archivo *.do donde se encuentre. La sintaxis básica es:

By categórica: assert expresión if condición in rango

Ejemplos:

Assert costos>=0.2 | costos <=0.8 if year==1997

Assert costos ~=.

• COMANDO PRESERVE

Este comando permite que se modifique una tabla de datos dentro de un programa, pero que una vez finalizado el programa se mantenga la tabla original sin modificaciones.

Program define nombre

Operaciones

Preserve

Comandos que “destruyen” los datos originales y realizan cálculos

End

El comando preserve mantiene la tabla una vez el programa finalice. Si se desea que cargue nuevamente la tabla original desde el mismo programa, en alguna línea específica se usa además de preserve el comando restore.

Program define nombre

Operaciones

Preserve

Comandos que “destruyen” los datos originales y realizan cálculos

Restore, preserve

Otros cálculos sobre la tabla original

End

• COMANDO QUIETLY

Este comando impide que sea impreso el output de un comando. Su sintaxis es:

Program define nombre

Quietly regress `1’ `2’

End

Program define nombre

Quietly {

Regress `1’ `2’

Predict resid, resid

Sort resid

Summarize resid, detail

}

list `1’ `2’

drop resid

end

• MACROS

NOTA: En esta sección se hará uso de la siguiente sintaxis, la cual es muy importante cumplir. Cuando se hable de comillas individuales realmente corresponde a `1’. Es decir, el primer símbolo es la tilde y el segundo es la comilla individual.

Una macro dentro de Stata corresponde a las variables utilizadas en un programa de Stata. Pueden ser locales o globales. Las macros locales deberán tener máximo una letra menos que los comandos ( en la versión 6.0 eran 7 letras, en la versión 7.0 son 31).

Ejemplo

Local lista1 “variable1 variable2”

Hemos creado una macro que hace que cada vez que se diga

List lista1 imprimirá variable1 variable2

Otra forma de llamar macros es con:

`lista1’

local lista variable1 variable2 variable3

regress dependiente `lista’

Las macros locales o globales pueden tener el mismo nombre y Stata las reconocerá como diferentes.

Cuando se desea que la macro deje de ser alfanúmerica(aplicable a títulos) y funcione como operaciones, lo único que debe hacerse es definir la operación:

Ejemplo:

Local dos = 2 + 2

En este caso se define una macro llamada dos la cual evalúa la operación y tendrá valor de 4.

Ejemplo:

Suponga que ya existe una macro llamada i y se le desea sumar un número 3. La sintaxis será:

Local i = `i’ + 1

Nótese que para definir variables alfanuméricas se usan dobles comillas(“ “) y para operar con macros ya creadas se usa comillas sencillas (` ‘).

Ejemplo:

If “`respuesta’” ==”si” {

}

else {

}

Nótese el uso de dobles comillas: “” y también de ‘ ‘ dentro del llamado a la macro de nombre respuesta. La razón es que, primero las comillas sencillas se refieren al uso de la macro y las comillas dobles se refieren a que el contenido de esta macro es alfanumérico.

• ARGUMENTOS EN PROGRAMAS

Suponga que llama un programa de la siguiente forma:

Programa variable1 variable2

En este caso tanto variable1 como variable2 son argumentos del programa y se incluyen como macros para ser operados dentro del programa.

Stata por default define macros usando números cuando se colocan variables seguidos de un programa o un archivo *.do.

Por ejemplo:

Do ejemplo1 var1 var2 var3 var4

Se definen automáticamente las siguientes macros:

`0’ que será igual a todo lo que el usuario escribió desde var1 hasta var4 con espacios comillas, todo.

`1’ la primera palabra que corresponde a var1

`2’ la segunda palabra que corresponde a var2

etc..

capture program drop tester

program define tester

display "argument 1 is |`1'|"

display "argument 2 is |`2'|"

display "argument 3 is |`3'|"

display "argument 4 is |`4'|"

end

exit

Una mejor forma de llamar los argumentos dentro de un archivo do o un programa es usando el comando args. Con este comando se asignan los nombres a las posiciones llenadas por el usuario al llamar el programa.

Ejemplo:

Program define programa1

Args var1 var2 var3 var4

…operaciones…

end

Entonces var1 var2 var3 var4 se convierten en cuatro variables locales que corresponden a `1’ `2’ `3’ `4’ respectivamente.

Otro ejemplo puede ser el siguiente:

Program define ejemplo1

Args n a b

Drop _all /*se usó una variable del sistema que borra todas

las variables en memoria*/

set obs = `1’

generate x = (_n-1)/(_N-1)*(`b’-`a’)+`a’

end

• USO DE CONDICIONALES

Los principales comandos que podemos usar en programación son:

If – else

While

Foreach

Forvalues

• COMANDO IF

Su sintaxis es:

If expression {

Comandos Stata

}

else if expression {

comandos stata

}

else {

comandos stata

}

Ejemplo:

Este programa toma 2 argumentos. El primero es una variable existente(x). El segundo argumento es un número(n). El programa creará una variable llamada z. Si n>0, z = x^n; si n=0, entonces z=log(x) y si n<0 entonces z= -x^n. Esta es la transformación de box-cox.

capture program drop potencia

program define potencia

if `2'>0 {

generate z =`1'^`2'

label variable z "`1^`2'"

}

else if `2'==0 {

generate z = log(`1')

label variable z = "log(`1')"

}

else {

generate z = -(`1'^(`2'))

label variable z "`1'^(`2')"

}

end

Aquí introducimos la sintaxis para los corchetes. Estos indican operaciones repetitivas(loop) todo lo que vaya dentro de corchetes se hará de manera que cumpla la condición impuesta, bien sea por un condicional if, como en este caso, o por otros condicionales como los que siguen a continuación.

• COMANDO FOR

Este comando permite realizar operaciones repetitivas. Su sintaxis básica es:

For variable in rango tipo de lista : comando condición en función de X.

Siendo x un letra que siempre debe ir; en este caso particular(únicamente con este comando) la X es fija como sintaxis; y también nótese que la X va en mayúscula.

En general estas variables comodin(en mayúscula para escribir la operación correspondiente) son:

X, Y, Z, A, B, C, D, E mejor dicho, cualquier cosa que vaya en MAYUSCULA

Se pueden tener varios tipos de lista separados por \; de igual manera se pueden tener varias condiciones separadas por \

Los tipos de lista pueden ser:

Var Un listado de variables: var1 var2 var3

New una nueva variable

Num Una secuencia de números(por ejemlo 4/10)

Any para cualquier variable

Ejemplos:

• Creación de 100 variables con números uniformes:

(debe haberse definido el tamaño de la tabla previamente. Esto se hace con la instrucción set obs número)

set obs 100

For new u1-u10: gen x=uniform()

• Reemplaza en cualquier variable un missing value:

For any . : replace z=. If y= X

• Genera nuevas 5 variables que corresponden a los poderes de x2, x3, x4, x5.

For new x2-x5 \ num 2/5: gen X =variable^Y

• COMANDO FORVALUES

La sintaxis para este comando es:

forvalues nueva_macro = rango {

comandos referidos a nueva_macro

}

Donde nueva macro es el nombre de una nueva macro local y rango especifica el rango de valores para los cuales se desea operar.

• Ejemplo: Construcción de un contador hasta 10

program define diez

forvalues i = 1(1)10 {

display "`i'"

}

end

Nótese la sintaxis del rango la macro se llama i y empieza en 1(va de 1 en 1)hasta 10.

program define ejemplo

local N = _N

forvalues i = 1(1)`N' {

display name[`i']

display _column(10) "genero " genero[`i']

}

end

• COMANDO WHILE

La sintaxis para este comando es:

while condicion {

comandos Stata

}

• Ejemplo: Construcción de un contador hasta 10

program define diez_w

local i = 1

while `i' <= 10 {

display `i'

local i = `i' + 1

}

end


Grupo EUMEDNET de la Universidad de Málaga Mensajes cristianos

Venta, Reparación y Liberación de Teléfonos Móviles
Enciclopedia Virtual
Biblioteca Virtual
Servicios
 
Todo en eumed.net:

Congresos Internacionales


¿Qué son?
 ¿Cómo funcionan?

 

15 al 29 de
julio
X Congreso EUMEDNET sobre
Turismo y Desarrollo




Aún está a tiempo de inscribirse en el congreso como participante-espectador.


Próximos congresos

 

06 al 20 de
octubre
I Congreso EUMEDNET sobre
Políticas públicas ante la crisis de las commodities

10 al 25 de
noviembre
I Congreso EUMEDNET sobre
Migración y Desarrollo

12 al 30 de
diciembre
I Congreso EUMEDNET sobre
Economía y Cambio Climático

 

 

 

 

Encuentros de economia internacionales a traves de internet


Este sitio web está mantenido por el grupo de investigación eumednet con el apoyo de Servicios Académicos Internacionales S.C.

Volver a la página principal de eumednet