Duda ejercicio 2 Latinobarómetro

Duda ejercicio 2 Latinobarómetro

de Zunino Antonino -
Número de respuestas: 9

Buen día José Ignacio, te hago una pregunta:

en el ej. 2 del conjunto de Latinobarómetro, la parte a) pide: "aplica filtros similares a los del ejercicio anterior y guarda los archivos resultantes"... ¿te refieres a descartar todas las variables salvo las ocho que usamos en el ejercicio anterior, a las personas de 65 años o más y a España?

Gracias por tu tiempo.

En respuesta a Zunino Antonino

Re: Duda ejercicio 2 Latinobarómetro

de Antón José Ignacio -
Hola, Antonio:

Muchas gracias por tu interés. Se refiere básicamente a que hagas lo mismo que en el ejercicio anterior, como bien dices. La idea es que aproveches la mayor parte de los comandos del apartado anterior, modificándolos como sea conveniente.

Idealmente, podrías incluso hacer un bucle, pero no lo pensé para eso y antes tendrías que homogeneizar totalmente las tres olas (1997, 2007, 2017).

La idea es que, luego, hagas con ellas una fusión vertical (append).

Un saludo,

Nacho
En respuesta a Antón José Ignacio

Re: Duda ejercicio 2 Latinobarómetro

de Zunino Antonino -
Buenos días José Ignacio,

perdona seguir molestándote con dudas de los ejercicios, pero quería adelantar todo lo posible este finde ya que la semana que viene empiezo con exámenes y tendré menos tiempo.

Estoy realizando los ejercicios núm. 2 del Latinobarómetro, y en la instrucción d) nos pide fusionar el archivo latbar19972017.dta con el archivo weo.dta usando como variables enlace el país y el año.

El problema es que los años en la base WEO son varias variables, no categorías de una sola; a cada año corresponde determinada tasa de desempleo por país, por lo que no entiendo bien la consigna.

Resolví intentar fusionar las bases usando solamente el país como variable enlace, pero el problema que tengo ahora es que en la base WEO la variable Country es String, no numérica, y el tipo básico de variable necesita coincidir para ejecutar el merge.

¿Debo recodificar la variable para convertir los países a códigos como en la de latinobarómetro? ¿Y cómo modifico el tipo de variable después?

Por otra parte, para la instrucción "Comprueba qué países aparecen en ambas bases de datos y cuáles no, y quédate únicamente con los primeros", estoy intentando emplear el siguiente comando condicional: keep if idenpa == "Argentina" | idenpa == "Bolivia" | idenpa == "Brazil" | idenpa == "Chile" | idenpa == "Colombia" | idenpa == "Costa Rica" | idenpa == "Dominican Rep." | idenpa == "Ecuador" | idenpa == "El Salvador" | idenpa == "Guatemala" | idenpa == "Honduras" | idenpa == "Mexico" | idenpa == "Nicaragua" | idenpa == "Panama" | idenpa == "Paraguay" | idenpa == "Peru" | idenpa == "Uruguay" | idenpa == "Venezuela"

No obstante, lo que ocurre es que me elimina todas las observaciones de la base.
¿Qué estoy haciendo mal?

Desde ya, gracias por tu tiempo y de nuevo disculpas por la insistencia.
Nino.
En respuesta a Zunino Antonino

Re: Duda ejercicio 2 Latinobarómetro

de Antón José Ignacio -
Hola, Antonino:

Muchas gracias por tu interés. La pregunta es interesante.

En primer lugar, en relación a la base de datos del FMI, puedes bajarla en distintos formatos y de distintas formas. No obstante, vas a tener que transformarla luego para poder hacer la fusión horizontal con el archivo del Latinobarómetro. Para hacerlo vas a necesitar que el país y el año de ambas bases de datos tengan exactamente los mismos nombres y están codificados de igual forma.

Si, con el Latinobarometro, escribes codebook idenpa, vas a poder comprobar que se trata de una variable numérica, pero con etiquetas (los nombres de los países). Puedes ejecutar, por ejemplo, tabulate idenpa y tabulate idenpa, nolabel para verificar esto. Por eso, en el browser aparece en azul (y no en rojo, como las variables string).

Por tanto, si quisieses quedarte solo con Argentina ejecutarías keep if idenpa == 32. Como a lo que te has referido es a las etiquetas y es una variable numérica, Stata te borra todo, porque no hay ninguna observación con el valor “Argentina” (es una etiqueta, su valor es 32).

Puedes transformar la que prefieras para que sea como la otra, pero recuerda, las variables países y año deben llamarse igual y utilizar mismos valores. Puedes emplear los valores que quieras, pero, por ejemplo, una manera razonable de proceder es utilizar algún sistema estandarizado de llamar a los países. Podrías, en los dos casos, tener una variable que recoja el país como una variable string de acuerdo, por ejemplo, a los códigos ISO de 2 o 3 dígitos (https://es.wikipedia.org/wiki/ISO_3166-1). Uruguay, por ejemplo, toma el valor UY.
Para esto, puedes crear una nueva variable. Por ejemplo,

generate isopais = “AR” if idenpa == 32 // Argentina
replace isopais = “BO” if idenpa == 68 // Bolivia



Luego, en el archive del FMI, asegúrate de que tienes otra variable igual que se llame isopais y otra con el año y, empleando esas dos variables, vas a poder hacer un merge 1:1.
Espero haber aclarado la duda.

Un saludo,

Nacho
En respuesta a Antón José Ignacio

Re: Duda ejercicio 2 Latinobarómetro

de Zunino Antonino -
Gracias por tu respuesta. Recién ahora estoy pudiendo volver a dedicar tiempo a los ejercicios.

Yo entiendo lo que me dices, pero, por una parte, no consigo resolver este problema: los años en la base WEO son *varias* variables, no categorías de una sola; a cada año corresponde determinada tasa de desempleo por país, por lo que no consigo entender la consigna de fusionar las bases usando país y año como variables de enlace...

Por otra parte, el comando condicional keep if idenpa == "Argentina" | idenpa == "Bolivia" | idenpa == "Brazil" | idenpa == "Chile"... etc. lo estaba intentando aplicar a una variable *string*, no numérica (la de la base WEO a la que había renombrado "idenpa" para coincidir con la otra base, no la del latinobarómetro que, como bien indicas, es numérica). No obstante, aun así no funciona, y no entiendo por qué ya que me resultaría muy útil aprender a usar comandos "if" con condiciones "or" usando el símbolo |.
Sigo sin entender qué estoy haciendo mal en esta línea que te copié aquí arriba.

Disculpa la insistencia y, de nuevo, gracias por tu disposición.
En respuesta a Zunino Antonino

Re: Duda ejercicio 2 Latinobarómetro

de Antón José Ignacio -
Hola, Antonino:

Respecto a la primera cuestión, lo mejor será que hagas una hoja de Excel en la que únicamente tengas tres variables: el país, el año y la tasa de desempleo. Puede que tengas alguna dificultad en obtenerla de la web del FMI en exactamente ese formato. Por eso, para evitar problemas, aunque eso requiera menos automatización, descarga los datos y modifícalos en un Excel. Luego, importa esos datos desde Stata y crea un archivo de Stata con esas tres variables. Recuerda que las variables de enlace, país y año, deben estar codificadas exactamente igual en ambas bases (nombre de la variable y valores de la variable). Si no te manejas bien con reshape, etc., modifica manualmente to archivo de Excel hasta ponerlo con la disposición de la captura adjunta (los datos son inventados).



En relación a la segunda pregunta, no es fácil de contestar sin ver el archivo y el mensaje de error. Puedes adjuntármelo en formato dta y te contesto de inmediato. La sintaxis que indica debería funcionar. Te sugiero, además, que pruebes primero con un solo valor para comprender qué sucede, por ejemplo usando keep if idenpa == "Argentina".

Por favor, indícame si pudiste solucionarlo y, en cualquier caso, podemos conectarnos por Zoom.

Un cordial saludo,

Nacho Antón
En respuesta a Antón José Ignacio

Re: Duda ejercicio 2 Latinobarómetro

de Zunino Antonino -
Michas gracias por tu respuesta y por la disposición a ayudar.

Finalmente encontré el problema con el "keep if" y era bastante trivial: la base de datos de WEO tiene marcados los nombres de los países con un espacio ("Argentina ").

Ahora lo último que me falta para completar los 5 ejercicios es efectuar el merge del ej. 2. Pude usar el comando reshape para disponer los datos en el orden que me indicas, creé variables 'Año' e 'isopais' en ambas bases de datos que a mi entender coinciden exactamente, y sin embargo cuando empleo la función "merge" (ya sea probando con m:1, 1:1, 1:m, etc.) siempre me arroja el error "variables isopais Año do not uniquely identify observations in the using data"...

No quiero robarte mucho tiempo con esto; si se te ocurre qué puedo estar haciendo mal te estaré agradecido, de lo contrario igual puedo enviarte todo lo demás.

Un saludo.
En respuesta a Zunino Antonino

Re: Duda ejercicio 2 Latinobarómetro

de Antón José Ignacio -
El mensaje de error lo que te dice es que en la base de datos "using" (la que no tienes abierta) hay varias observaciones para cada país y año. Por eso, no puede encontrar, para cada país y año en la base "master" (la que tienes abierta) una única observación en la base "using". Debes chequear la base "using" y ver por qué ocurre esto (debería haber únicamente una observación por país y año).

Un saludo,

Nacho
En respuesta a Antón José Ignacio

Re: Duda ejercicio 2 Latinobarómetro

de Zunino Antonino -
Muchas gracias por tu apoyo. Ya te envío los ejercicios, realmente he aprendido un montón en el curso.