Escribe tu primer paper de economía

La mayoría de los economistas tienen problemas para escribir textos académicos. Explorar sobre econometría es complejo y es difícil estar al corriente con las tendencias de investigación. Aquí encontrarás tutoriales de econometría en R y Python, deep dives en literatura reciente y modelos de trabajo para hacer tu escritura más fácil y publicar con éxito. Publica un paper que te posicione en tu área y te permita obtener un trabajo de investigador.

Escribe tu primer paper de Economía usando Inteligencia Artificial

El dilema de la IA: Crecimiento Económico vs Riesgo Existencial

El dilema de la IA: Crecimiento Económico vs Riesgo Existencial

Hoy hablaremos sobre la IA y el balance que hay entre todos los beneficios que trae y el riesgo muy real de que acabe eliminando a la humanidad como en Terminator.

En este deep dive, discutiremos un paper que usa un modelo matemático para discutir la forma en la que debemos evaluar el problema.

Es una maña de la economía poner nuestras discusiones en modelos de este tipo. Pero hacer este tipo de planteamientos tiene ventajas. La más importante es que todos los argumentos siguen una lógica matemática. Se supone que si alguien se encuentra con una función de utilidad como la que viene en el paper:

$$ U = N \int_0^\infty e^{-\rho t} u(c) dt = \frac{1}{\rho} N u(c) $$

debe ser capaz de entender la lógica que hay detrás de descontar la utilidad en el tiempo usando $e^{-\rho t}$, aunque no haya leído todo el bagaje de literatura neoclásica.

Pero al final del día es un argumento.

En otras palabras, la mayor parte de los argumentos que aquí se hacen no requieren en sí de los modelos matemáticos, pero el autor los hace de cualquier manera para demostrar la consistencia dentro del mapa de argumentos de la economía neoclásica.

El problema de la alineación

Volviendo al problema, el problema que se presenta con la inteligencia artificial (IA) es que tal vez las máquinas no tienen objetivos alineados con los nuestros.

El problema es algo que se ha discutido mucho en la academia, no nada más en la ciencia ficción. La idea es que nos podemos equivocar al programar una inteligencia artificial, con consecuencias nefastas. Por ejemplo, si le pedimos a una máquina que haga la mayor cantidad de clips como le sea posible, no es mucho problema si no es una máquina que aprende de su entorno. Pero una máquina con “inteligencia”, siempre está buscando nuevas soluciones “creativas” para lograr su resultado. En un caso muy extremo, nos robaría todo el hierro de la sangre para hacer más y más clips hasta que se acabe el mundo.

Algo parecido a Ultron en la película de los avengers, en la que determina que para lograr la paz, tendría que destruir a la humanidad (algo así es lo que me sale en los modelos microeconómicos cuando no hago el ajuste de las variables correctamente).

El problema es que, entre más usamos la IA, más peligrosa se vuelve

Hay muchas cosas positivas qué decir de la IA: nos está ayudando a ser más productivos y más innovadores.

Hay modelos de IA que nos están ayudando a encontrar las estructuras moleculares de antibióticos. Otros que están resolviendo problemas matemáticos que llevaban siglos sin poderse resolver y todos sabemos que cuando se resuelve un problema matemático, se vienen muchas innovaciones (estoy pensando en las criptomonedas).

Pero así como implica crecimiento y ganancias a corto y largo plazo, hay un peligro inminente de que la IA se vuelva contra nosotros y nos elimine de una (si no crees que sea posible, nada más acuérdate de lo que pasó cuando los archivos de Excel de los bancos en Estados Unidos dejaron de cuadrar en 2008).

En palabras del autor del paper (la traducción es mía):

La IA podría elevar los estándares de vida más que lo ha hecho la electricidad o el internet. Pero los riesgos que entraña exceden a los de las armas nucleares.

Tipo: “¿Quieres jugar ruleta rusa donde cada vez que no te caiga una bala te deposito un millón de dólares en la cuenta del banco?”

Los escenarios dependen de qué tanto es el riesgo y cuál es la ganancia

En la ruleta rusa, al revólver le caben 6 balas (creo).

Pero si le cupieran 1000 balas, tal vez más personas estarían dispuestas a jugársela. El paper lo que hace es básicamente jugar con esos parámetros. ¿Qué pasa si le aumentamos el número de balas que le caben a la pistola? ¿Cómo cambia nuestro comportamiento si le ponemos más valor al largo plazo?

Lo interesante es que si pensamos en los beneficios de la IA, no sólo son cosas que se reflejan en nuevos iPhones con un Siri que si sepa recibir órdenes interesantes. También la IA nos puede ayudar a encontrar innovaciones que curen enfermedades degenerativas y que extiendan la esperanza de vida de las personas.

En un modelo matemático, las extensiones en la esperanza de vida cancela la probabilidad de aniquilación.

Hay un punto en el que el modelo se siente un poco ridículo al respecto. Porque de acuerdo al modelo, si llegas a aumentar mucho la esperanza de vida de las personas, estas serían capaces de ignorar los riesgos de la IA de aniquilación dentro de 40 años. Es algo que tiene sentido en el modelo matemático y no lo podemos discutir desde ese punto de vista, pero sí me daría risa tener que presentar ese resultado en un auditorio.

[Guía] Crea presentaciones en LaTeX con IA

[Guía] Crea presentaciones en LaTeX con IA

Cuando estaba en el doctorado, hacía todo con LaTeX.

LaTeX es un lenguaje de programación que permite hacer textos de matemáticas. Lo importante de escribir matemáticas es que los símbolos son complicados de hacer caber bien dentro del texto y Word hace un trabajo mediocre incluyendo ecuaciones.

Pero mira esta maravilla (si estás leyendo esto en el correo, tendrás que entrar en la página para apreciarlo correctamente).

$$ \frac{\partial C}{\partial t} + rS \frac{\partial C}{\partial S} + \frac{1}{2} \sigma^2 S^2 \frac{\partial^2 C}{\partial S^2} - rC = 0 $$

Esa es la ecuación de derivadas parciales de Black y Scholes. Y para que se cargue bien en la pantalla, es necesario usar LaTeX.

Yo pasé meses enteros practicando diario para escribir usando LaTeX, pero tú no necesitas hacerlo.

Vamos a hacer una presentación usando LaTeX

Hacer presentaciones es una de las tareas constantes de un investigador.

Vale mucho la pena participar en congresos y presentar los resultados de tu investigación. Cuando haces presentaciones:

  • Puedes aclarar tu mente al preparar la presentación sobre los problemas que quieres resolver.
  • Practicar la presentación te ayuda a identificar posibles errores que estás cometiendo.
  • La retroalimentación de otras personas te puede ayudar a mejorar.

Y eso es sólo durante la presentación. También podrías encontrarte con colaboraciones interesantes que están haciendo cosas similares a lo tuyo dentro de las presentaciones. No lo descartes.

Ok, ya fue mucha introducción… comencemos.

Paso #1: Descarga o actualiza tu compilador de Beamer (LaTeX)

El código de LaTeX se compila con un programa especial.

Hay para todos los sistemas operativos:

O puedes usar servicios en la nube como OverLeaf para compilar tu código de LaTeX.

Espérame tantito… ¿Qué significa eso de compilar el código?

Significa que lo que vas a escribir se va a ver diferente que la página final.

Mientras que en LaTeX escribes \\int_a^b f(x) \\, dx = F(b) - F(a), en la pantalla debes ver la ecuación completa:

$$ \int_a^b f(x) \, dx = F(b) - F(a) $$

LaTeX es todo un lenguaje, y tiene sus complejidades, pero eso no es algo que nos va a preocupar de momento. Sobre todo porque la IA nos va a apoyar.

Paso #2: Prepara tu paper en el que se basará tu presentación

Estoy asumiendo que ya tienes un texto que usarás para tu presentación.

No importa si tu texto está en Word o en LaTeX. La única diferencia entre estas dos opciones son la forma en la que le daremos a conocer las ecuaciones a chatGPT. En este paso hay que preparar la información que le vamos a pasar.

Con el prompt que te daré en adelante el proceso será simple: Le vas a copiar y pegar tu paper para que te haga la presentación.

Lo único que necesitas es hacer una lista con las figuras y/o gráficas que estás incluyendo y guárdala.

O bien, te voy a facilitar el trabajo de conjuntar esta información con el siguiente prompt.

"No tengo tiempo de escribir un paper"

"No tengo tiempo de escribir un paper"

Me temo que ese no es el problema.

El problema es que no le estás dando la prioridad que se requiere a escribir. Escribir investigación requiere que pienses fuerte en un problema, en todas las aristas alrededor del problema y en cómo se soluciona.

Requiere que uses datos y econometría y tengas una intuición sólida sobre cómo se conectan los datos con la resolución de tu problema.

Pero también requiere que aprendas a hacer tu trabajo de manera eficiente.

Yo fui afortunado porque cuando hice el doctorado, tenía el tiempo de trabajar en mis proyectos y era prácticamente lo único de lo que me tenía que preocupar.

Pero luego llegó la vida y me di cuenta de que realmente tener todo para enfocarnos en escribir es un privilegio.

Así que comencé a diseñar métodos para seguir escribiendo.

Aún con miles de proyectos, alumnos y procurando siempre estar ahí para mis hijos y para mi esposa. Todo eso sin caer en estrés y depresión. Tengo un método para hacer todo de manera sistemática y con el apoyo de la IA para tener todo un "laboratorio" de investigación económica en mi computadora.

Y te lo estoy compartiendo en este newsletter. 6 veces al mes.

Todos los meses estaré compartiendo 2 tutoriales de R y Python, 2 deep dives y 2 guías para escribir y publicar usando inteligencia artificial.

Lo bueno es que es un newsletter que sirve como una especie de recordatorio de que le hagas tiempo a escribir tu proyecto. Pero también me puedes contestar los correos y me puedes contar el problema que estás enfrentando actualmente. Eso me ayuda a entender mejor cómo puedo ayudarte a solucionar tu problema.

Lo mejor es que puedes apartar todo un año al mejor precio por Black Friday.

Esta oferta estará activa hasta el lunes 25 de Noviembre.

8 pasos para transformar datos de panel en R

Lo más normal cuando trabajamos con datos es que no los encontramos en el formato que queremos.

Es muy común que queremos que los datos sean visuales y nos aparecen en columnas en panel o al contrario. Afortunadamente, el software estadístico viene con paqueterías que ya nos solucionan este problema.

Sólo tenemos que aprender a usar las funciones que transforman los datos.

En este tutorial, aprenderás un paso a paso para transformar un conjunto de datos en R. Usaremos un ejemplo del Producto Interno Bruto (PIB) per cápita y aprenderemos funciones clave como reshapetidyr y data.table para reorganizar nuestros datos de formato largo a ancho y viceversa.

¿Listos? Adelante…

Paso #1: Comprender el Problema y Preparar los Datos

Imagina que deseas analizar el crecimiento económico de varios países entre 2000 y 2020.

Tienes un conjunto de datos con tres columnas: PaísAño y PIB_per_Cápita. Sin embargo, está en formato largo, lo que dificulta las comparaciones directas entre países a lo largo del tiempo. Este formato es útil para ciertos análisis estadísticos, pero no es el más intuitivo para visualizar o comparar datos rápidamente.

Necesitamos transformar este conjunto de datos al formato ancho, donde cada país tenga su propia columna de PIB per cápita para cada año.

Ejecuta el siguiente código en R para crear y mostrar los datos:

# Creamos un ejemplo simulado
countries <- rep(c("Argentina", "Brasil", "Chile", "México"), each = 21)
years <- rep(2000:2020, times = 4)
gdp_per_capita <- runif(84, 8000, 20000)

data_long <- data.frame(
  País = countries,
  Año = years,
  PIB_per_Cápita = gdp_per_capita
)

head(data_long)

¿Por Qué Necesitamos Transformar los Datos?

Los datos en formato largo pueden ser poco prácticos para ciertos análisis.

Si deseas comparar gráficamente el PIB per cápita de varios países a lo largo del tiempo, el formato largo complica el proceso. En cambio, un formato ancho facilita la creación de gráficos y comparaciones directas. Además, tener los datos reorganizados mejora la legibilidad y comprensión de la información.

Transformar nuestros datos nos permitirá visualizar tendencias y realizar análisis más efectivos.

Paso #2: Exploración y Limpieza Inicial de los Datos

Antes de cualquier transformación, necesitamos explorar y limpiar nuestros datos.

Esto implica verificar si hay valores faltantes, duplicados o inconsistencias. Una base de datos limpia garantiza resultados confiables y evita errores en etapas posteriores del análisis.

Ejecuta el siguiente código para explorar tus datos:

# Verificamos la estructura y posibles problemas
str(data_long)
summary(data_long)

# Revisamos si hay valores faltantes
sum(is.na(data_long))

Paso #3: Transformación con reshape

La función reshape de R es una herramienta clásica para reorganizar data frames.

Nos permite cambiar entre formatos largo y ancho, adaptándose a nuestras necesidades analíticas. Aunque puede parecer intimidante al principio, su uso es bastante directo una vez que entiendes sus parámetros clave.

Utiliza este código para transformar tus datos al formato ancho:

# Transformamos el data frame de formato largo a ancho
data_wide <- reshape(
  data_long,
  timevar = "Año",
  idvar = "País",
  direction = "wide"
)

head(data_wide)

Ahora, profundicemos en lo que acabamos de hacer.

La función reshape() requiere especificar varios argumentos clave:

  1. data: El data frame que deseas transformar (en este caso, data_long).
  2. timevar: La variable que identifica el tiempo o las diferentes instancias que deseas convertir en columnas. Aquí, Año es nuestra variable de tiempo, ya que queremos que cada año sea una columna separada.
  3. idvar: La variable que identifica las unidades únicas en tus datos. En este caso, País es nuestro identificador, ya que queremos que cada fila represente un país único.
  4. direction: La dirección de la transformación. Usamos "wide" para convertir de formato largo a ancho.

Indica siempre correctamente las variables timevar e idvar.

Si no las especificamos adecuadamente, R no sabrá cómo reorganizar los datos. timevar le dice a R qué variable debe expandir en columnas (cada año en nuestro caso), mientras que idvar le indica cómo agrupar las filas (cada país). Al hacerlo correctamente, obtenemos un data frame donde cada país tiene una fila única y los años se despliegan como columnas con sus respectivos valores de PIB per cápita.

Paso #4: Transformación Moderna con tidyr

tidyr es un paquete de R que simplifica la reorganización de datos.

Con funciones intuitivas como spread(), puedes transformar tus datos de manera más legible y eficiente. Es una excelente alternativa moderna a reshape(), especialmente si prefieres código más limpio.

Prueba el siguiente código:

# Instalamos tidyr si no está disponible
if (!require(tidyr)) install.packages("tidyr")
library(tidyr)

# Usamos spread para transformar los datos
data_wide_tidyr <- spread(data_long, key = Año, value = PIB_per_Cápita)

head(data_wide_tidyr)

Aquí, la función spread() simplifica el proceso.

  • data: Nuestro data frame original (data_long).
  • key: La variable que queremos convertir en columnas (Año).
  • value: Los valores que llenarán las nuevas columnas (PIB_per_Cápita).

El resultado es similar, pero los nombres de las columnas son más limpios.

Cada columna se nombra directamente con el año correspondiente, facilitando la lectura y el acceso a los datos. Esto mejora la legibilidad y hace que el código sea más intuitivo.

Paso #5: Reorganización Eficiente con data.table

Leer el artículo completo

Registrarse ahora para leer el artículo completo y acceder a todos los artículos por solo suscriptores.

Suscribirse
¿Ya tienes una cuenta? Iniciar sesión

¿De dónde viene el Black Friday?

¿De dónde viene el Black Friday?

En México estamos en el buen fin, que es la versión mexicana del Black Friday.

El primer Black Friday se refería al pánico de 1869, que ocurrió cuando dos financieros querían acaparar el mercado del oro y el presidente Grant se dio cuenta. Liberó grandes reservas del metal, causando que los precios cayeran un 18%, arruinando las fortunas de muchos.

En la actualidad, Black Friday está relacionado con el Thanksgiving y marca el inicio del periodo de compras navideñas.

Lo empezó Roosevelt, cuando proclamó el día de acción de gracias el cuarto jueves de Noviembre, para extender el periodo de compras y estimular la economía después de la Gran Depresión. El nombre de Black Friday se adoptó después para las compras, pues al inicio era el viernes después de Thanksgiving, cuando todos los trabajadores faltaban al trabajo para hacer "puente largo" (no creas que sólo los Mexicanos la aplicamos).

Al final, se adoptó Black Friday con la idea en que los asientos de contabilidad pasaban de estar en rojo (negativo) a negro (positivo.

En México, el buen fin se adoptó en 2011 el fin de semana en el que hay el "puente" del aniversario de la revolución. De igual manera, aquí empieza la locura de las compras de buen fin.

[Deep dive] Semiconductores y la nueva política industrial

[Deep dive] Semiconductores y la nueva política industrial

Los semiconductores son piezas pequeñas de silicio que forman el "cerebro" de los aparatos tecnológicos.

También se les llama circuitos integrados o chips y están detrás de todo lo que hacemos. Una tostadora tiene semiconductores, al igual que los smartphones y los servidores que ejecutan los modelos de inteligencia artificial. Son de mucho interés para los países porque están íntimamente ligados con la producción, el empleo y la seguridad nacional.

Se trata de un mercado muy particular y que no se puede comparar fácilmente con otros, principalmente por su proceso de fabricación.

Hoy vamos a entrar de lleno en el mundo de los semiconductores y la política industrial.

Estos son los puntos más importantes que veremos:

  • Los gobiernos están tomando medidas para controlar la producción de semiconductores.
  • La concentración de fábricas en ciertas regiones puede ser arriesgada.
  • La cadena de suministro global de chips es compleja y frágil.

¿Estamos listos? Entremos en materia.

¿Por qué los semiconductores son tan importantes?

Los semiconductores son esenciales para el funcionamiento de casi todos los dispositivos electrónicos que usamos a diario.

Desde tu teléfono móvil hasta tu refrigerador, estos pequeños componentes hacen posible que la tecnología funcione. Sin ellos, gran parte de nuestra vida moderna se detendría. Incluso los objetos que no contienen microchips están hechos por máquinas con chips.

Así de fundamental es ese mercado.

Aquí hay algunos puntos clave:

  • Son el núcleo de la innovación tecnológica. Sin chips avanzados, no podríamos tener inteligencia artificial, coches autónomos o incluso servicios de internet confiables.
  • Impactan la economía global. La producción y venta de semiconductores es un negocio de miles de millones de dólares que afecta a múltiples industrias.
  • Son estratégicos para la seguridad nacional. Los países necesitan acceso a estos componentes para sistemas de defensa, comunicaciones y energía.

La carrera global por controlar la producción de chips

[guía] chatGPT para el análisis de datos

[guía] chatGPT para el análisis de datos

Recientemente se habilitó a las IA para que les subas tu base de datos, le pidas que haga análisis y te regresen resultados.

Tu rol como econometrista ya no implica llevar toda la carga del análisis de datos desde el inicio. Ahora es posible delegar una parte significativa de ese trabajo a tu asistente, la inteligencia artificial. Con una base de datos y una orden, tienes resultados e interpretaciones en minutos.

El truco está en tener bien claras las capacidades y los límites de la IA

En esta edición veremos:

  • Los límites de la IA en el análisis de datos.
  • Nuestro rol colaborando con la IA.
  • Y una guía (con prompts) para trabajar con datos con la IA como copiloto cuando no es posible pedirle que trabaje con tus datos directamente.

¿Y no puedo simplemente pedirle a chatGPT que haga todo mi análisis?

Por fortuna, no.

Si pudiéramos pedir a la IA que haga todo nuestro análisis, ahí si estaría en peligro nuestro trabajo. Pero la realidad es que ni chatGPT ni Claude ni ninguna otra IA tiene la creatividad para elegir proyectos que resuelvan problemas reales. Y si bien le puedes pedir que hagan una interpretación de una tabla de regresión, sus conclusiones son en el mejor de los casos “robóticas”.

Hay dos peligros de delegar el análisis de datos a la Inteligencia Artificial:

  • Puede empezar a alucinar aspectos importantes de tus datos. Cuando una inteligencia artificial no sabe alguna respuesta, siempre está el peligro de que se invente la respuesta.
  • Cuando los conjuntos de datos son demasiado grandes, el sistema no les permite cargar la información en memoria. En estos casos no hay mucho que se pueda hacer, pero en esta guía te daré una forma de avanzar de cualquier manera.

Quiero que pienses en chatGPT como tu becario.

Imagina que ponen a tu cargo a un becario muy inteligente, con mucho conocimiento y con mucha habilidad para manejar datos. El problema es que no conoce bien los objetivos que tú tienes con la investigación y tiene mala memoria, así que eso es algo que le tienes que explicar siempre que vas a trabajar con él.

Por naturaleza, los modelos de inteligencia son máquinas aleatorias. Cada vez que le haces una petición, te dará la respuesta que tiene mayor probabilidad de acuerdo a sus datos de entrenamiento. Cuando lo que necesitas hacer requiere precisión, necesitas tener esto en cuenta.

Tu rol es el de supervisor

Como supervisor, tu trabajo es tener siempre bien claro el objetivo y el problema que quieres resolver.

Es muy diferente el trabajo que le vas a pedir a tu becario, que es quien tiene el conocimiento técnico. Por ejemplo, si le das una base de datos sencilla, le puedes pedir que elabore por ti gráficos, estudios de correlación y análisis de regresión directamente.

Comencemos con el análisis.

Paso #0: Antes de comenzar

Estos pasos se pueden hacer con chatGPT en la versión 4o o con Claude 3.5. En ambos casos, tienes que ser capaz de subirle bases de datos y pedirle que haga el análisis por su cuenta.

El modelo de chatGPT trabaja con python. Es como si tuvieras del otro lado a un becario trabajando en google Colab que no puede descargarle ningún módulo nuevo aparte de los que ya tiene instalados. Tiene muchos de los módulos más importantes para trabajar con datos, pero si le pides algo más complejo, no lo podrá hacer.

Paso #1: Escribe toda la información sobre la base de datos con la que vas a trabajar

Entender la base sobre la que estás trabajando no es negociable.

Esta parte del proceso la puedes acelerar buscando el diccionario de datos o la descripción que hicieron los creadores de la base de datos. Si es una base de datos que descargaste de algún instituto de estadística, busca la descripción. Si tú eres el creador de los datos, documenta el proceso completo y descríbelo con tanto detalle como te sea posible.

Vamos a usar esta información para que chatGPT tenga el contexto necesario sobre la base de datos para darnos una buena perspectiva al respecto.

Paso #2: Asegúrate que los datos son claros, o agrega un diccionario de datos

Cuando le pases tus datos a chatGPT, si los nombres de tus columnas son claves (p. ej. P_13_1 para la pregunta 13.1), será difícil hacer análisis significativos. Será como ir con los ojos vendados.

La IA recordará el diccionario de datos al momento de sugerir análisis y ejecutarlos.

Incluso te servirá para hacer las etiquetas de los gráficos.

💡
El peor escenario al que te enfrentas es en el que las columnas tienen nombres que no son descriptivos y no tienes un diccionario. En ese caso tendrás que hacer el diccionario por tu cuenta.

Si estás en este caso, un diccionario no es más que una lista con los nombres de las variables y una descripción. Entre más detallada sea la descripción, más útil es el diccionario.

Paso #3: ¿Cuáles son los tipos de análisis que podemos hacer con estos datos?

Usa el siguiente prompt

Observa la siguiente base de datos.

Considera el siguiente contexto sobre esta base de datos:

{COPIA Y PEGA AQUÍ EL CONTEXTO QUE RECOPILASTE EN EL PASO #1}

---

Dame una lista con los tipos de análisis que consideres más reveladores.

Modifica el prompt copiando y pegando el contexto del paso #1.

La IA usará la función data.head() en python para leer las primeras filas de tu base de datos. Si los nombres de las variables son claros, los análisis que te sugerirá serán muy útiles y por lo general se trata de cosas que sí puede hacer.

Paso #4: Pídele que haga el análisis

Aquí entra tu criterio sobre el tema y los objetivos que tengas de tu investigación.

Es muy probable que dentro de la lista que generó se encuentre algo cercano a lo que deseas hacer. Por ejemplo, le puedes pedir que hagas un análisis de distribución.

Hagamos la opción 1: análisis de distribución

O puedes simplemente dejarlo hasta el número dentro de la lista.

La IA tiende mucho a hacer análisis con fines de predicción y no tanto de inferencia, por eso te encontrarás casi siempre opciones como PCA o redes neuronales. No te recomiendo comenzar por ahí, pero puedes considerarlo para el futuro.

Si chatGPT no lo puede hacer, úsalo como asesor

Hay circunstancias en las que chatGPT no te podrá ayudar.

  • Cuando los datos son demasiado grandes.
  • Cuando estás usando modelos avanzados (p. ej. quieres hacer un análisis de diferencias en diferencias escalonado).
  • Cuando quieres trabajar en cualquier lenguaje de programación que no sea python.

En estos casos, los pasos anteriores no te servirán.

Pero puedes usar a chatGPT como tu asesor que estará sobre tu hombro dándote direcciones para trabajar.

En este caso, lo que debes hacer es proporcionarle sólo una muestra de los datos para que conozca su estructura y los nombres de las variables y pedirle instrucciones paso a paso sobre los resultados que vas obteniendo.

Así te ahorras horas de trabajo.

[Tutorial] Hacer una pirámide de población en R y Python

[Tutorial] Hacer una pirámide de población en R y Python

La mejor forma de mostrar la dinámica de una población es con un gráfico de pirámide.

Se le llama así porque por años esa es la forma que ha tomado, cuando ponemos dos gráficos de barras contiguos. Cada barra es la suma de todas las personas en un rango de edades.

En este tutorial:

  • Te daré el código para hacer tus pirámides de población en R y Python.
  • Luego veremos un ejemplo real descargando datos del INEGI
  • Y finamente personalizaremos el gráfico.

Comencemos.

¿Para qué se usan las pirámides de población?

Es la forma más sencilla de entender la dinámica de la población de un lugar.

Es un vistazo al presente y al futuro de la población. Los jóvenes de ahora son los adultos del mañana, que a su vez serán los adultos mayores después. Entender esto de un vistazo te ayuda a proyectar la fuerza laboral, el estado de las pensiones y el futuro de las finanzas públicas.

Entre muchas otras cosas.

Este es el código para hacer una pirámide de población

Esta vez comenzaremos con el código.

Los scripts que te daré te harán el gráfico que buscas en python y R. Sólo tienes que modificar las cifras y los rangos, si es necesario.

Copia este código y úsalo en un script de python. También puedes usarlo en Google Colab.

El único módulo que necesitamos es matplotlib.

# Importamos las librerías necesarias
import matplotlib.pyplot as plt

# Definimos los datos manualmente
rangos_edades = ['0 - 5', '6 - 10', '11 - 15', '16 - 20', '21 - 25', '26 - 30', '31 - 35', '36 - 40', '41 - 45', '46 - 50', '51 - 55', '56 - 60', '61 - 65', '66 - 70', '71 - 75', '76 - 80', '81+']
hombres = [-30320, -24326, -20658, -19694, -16580, -13560, -10634, -8900, -7386, -6094, -4984, -4084, -3284, -2504, -1824, -1284, -896]
mujeres = [29144, 22493, 19878, 21686, 16947, 14374, 12220, 10800, 9634, 8056, 6804, 5634, 4512, 3500, 2642, 1904, 1208]

# Creamos la figura y los ejes
plt.figure(figsize=(10, 8))

# Graficamos la población masculina (lado izquierdo) y femenina (lado derecho)
plt.barh(rangos_edades, hombres, label='Hombres', color="#154957")
plt.barh(rangos_edades, mujeres, label='Mujeres', color="#05cd86")

# Añadimos etiquetas y título en español
plt.xlabel('Población')
plt.ylabel('Rango de Edad')
plt.title('Pirámide Poblacional para el año 1900')
plt.legend(loc='upper right')

# Mostramos el gráfico
plt.show()

Para hacer lo mismo en R, usamos este código. Nota que, como le estamos dando las cifras directamente en el código, no es necesario cargar ninguna base de datos (eso lo haremos más adelante con los datos del INEGI).

# Instalamos (si es necesario) y cargamos la librería ggplot2
if (!require(ggplot2)) install.packages("ggplot2")
library(ggplot2)

# Definimos los datos manualmente
rangos_edades <- c("0 - 5", "6 - 10", "11 - 15", "16 - 20", "21 - 25", 
                   "26 - 30", "31 - 35", "36 - 40", "41 - 45", "46 - 50", 
                   "51 - 55", "56 - 60", "61 - 65", "66 - 70", "71 - 75", 
                   "76 - 80", "81+")
hombres <- c(-30320, -24326, -20658, -19694, -16580, -13560, -10634, -8900, -7386, 
             -6094, -4984, -4084, -3284, -2504, -1824, -1284, -896)
mujeres <- c(29144, 22493, 19878, 21686, 16947, 14374, 12220, 10800, 9634, 
             8056, 6804, 5634, 4512, 3500, 2642, 1904, 1208)

# Creamos un data frame con los datos
datos <- data.frame(
  RangoEdad = factor(rangos_edades, levels = rev(rangos_edades)),  # Invertimos los niveles
  Hombres = hombres,
  Mujeres = mujeres
)

# Transformamos los datos a un formato largo para ggplot
datos_largo <- reshape2::melt(datos, id.vars = "RangoEdad", variable.name = "Genero", value.name = "Poblacion")

# Creamos la pirámide poblacional
ggplot(datos_largo, aes(x = Poblacion, y = RangoEdad, fill = Genero)) +
  geom_bar(stat = "identity", width = 0.8) +
  scale_x_continuous(labels = abs, name = "Población") +  # Etiquetas del eje x como valores absolutos
  labs(y = "Rango de Edad", title = "Pirámide Poblacional para el año 1900") +
  scale_fill_manual(values = c("Hombres" = "#154957", "Mujeres" = "#05cd86")) +  # Colores para cada género
  theme_minimal() +
  theme(legend.position = "top") +
  guides(fill = guide_legend(title = "Género"))

Debes de obtener como resultado un gráfico como este:

El truco en ambos casos es proporcionar los datos de un género en positivo y los otros en negativo.

Si ya tienes los datos y ya organizaste las sumas, basta con que cambies los números en el código y ya tienes el gráfico listo para usar.

Pero ¿qué hacer con los datos como vienen en el censo?

Hagámoslo.

Tutorial para hacer una pirámide de población con los datos del INEGI en R y Python

Normalmente no nos vamos a encontrar los datos listos para hacer nuestra gráfica.

Generalmente es necesario ordenar los datos y limpiarlos antes de comenzar a hacer los gráficos. Afortunadamente, tanto R como Python tienen funciones que facilitan mucho el trabajo. El código que te voy a pasar funciona sin cambios para el censo 2020 de México en Inegi. Si deseas usarlo en otras bases de datos, lo puedes hacer con cambios ligeros.

No te preocupes, te guiaré en el camino.

Si ya estás listo, comienza por aquí.

Paso #1: Descarga la base de datos

Para este ejemplo usaremos el censo 2020 de Inegi.

Entra el la siguiente página y descarga los tabulados del cuestionario básico de población.

Censo de Población y Vivienda 2020
Enumeración exhaustiva de la población y las viviendas existentes en el país, brinda características de ambas. Datos de 2020.

La hoja 03 contiene los datos que buscamos. Los únicos detalles son que hay que filtrar el estado que queremos que nos muestre y que nos arroja todas las edades. Para hacer una pirámide que sea fácil de leer, necesitamos dividir estos datos en rangos.

Así se ve la pantalla de los datos en Excel.

💡
En esa misma página puedes encontrar una pirámide poblacional ya hecha por INEGI en formato PDF. Puedes usarla para comparar tus resultados.

Paso #2: Carga la base de datos en Python/R

Ahora que tienes el archivo descargado, es momento de cargarlo en tu entorno de trabajo. Te mostraré cómo hacerlo tanto en Python como en R, y te explicaré cada paso para que entiendas lo que estamos haciendo y cómo puedes adaptar el código a tus necesidades.

Cargando los datos en Python

Primero, asegúrate de tener instaladas las librerías necesarias. En este caso, usaremos pandas para manejar los datos y matplotlib para las gráficas.

# Importamos las librerías necesarias
import pandas as pd
import matplotlib.pyplot as plt

Ahora, especifica la ruta al archivo que descargaste y el nombre de la hoja que contiene los datos que necesitamos (en este caso, la hoja "03").

# Especifica la ruta al archivo y el nombre de la hoja
file_path = 'ruta/a/tu/archivo.xlsx'  # Reemplaza con la ruta real de tu archivo
sheet_name = '03'  # Nombre de la hoja que contiene los datos

Leemos los datos del archivo Excel, omitiendo las primeras filas que contienen metadatos y no nos sirven para el análisis.

# Leemos la hoja de Excel, omitiendo las primeras 5 filas de metadatos
data = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=5)

Renombramos las columnas para facilitar su manejo.

# Renombramos las columnas para mayor claridad
data.columns = ["Entidad", "Edad", "Poblacion_Total", "Hombres", "Mujeres", "Relacion_H_M"]

Cargando los datos en R

En R, utilizaremos el paquete readxl para leer archivos Excel y ggplot2 para las gráficas. Asegúrate de tenerlos instalados.

# Instalamos y cargamos los paquetes necesarios
if (!require("readxl")) install.packages("readxl")
if (!require("ggplot2")) install.packages("ggplot2")

library(readxl)
library(ggplot2)

Especifica la ruta al archivo y el nombre de la hoja.

# Especifica la ruta al archivo y el nombre de la hoja
file_path <- "ruta/a/tu/archivo.xlsx"  # Reemplaza con la ruta real de tu archivo
sheet_name <- "03"  # Nombre de la hoja que contiene los datos

Leemos los datos, omitiendo las primeras filas innecesarias.

# Leemos la hoja de Excel, omitiendo las primeras 5 filas de metadatos
data <- read_excel(file_path, sheet = sheet_name, skip = 5)

Renombramos las columnas.

# Renombramos las columnas para mayor claridad
colnames(data) <- c("Entidad", "Edad", "Poblacion_Total", "Hombres", "Mujeres", "Relacion_H_M")

Paso #3: Filtra y limpia los datos

Los datos que hemos cargado incluyen información de todas las entidades federativas y edades individuales. Para nuestra pirámide poblacional, vamos a enfocarnos en el nivel nacional. Pero si deseas analizar un estado específico, como Durango, te mostraré cómo hacerlo.

Filtrando los datos en Python

Primero, filtramos los datos para quedarnos solo con la entidad que nos interesa. Para el nivel nacional, la entidad se llama "Estados Unidos Mexicanos".

¡Genial! Te has registrado exitosamente.

¡Bienvenido de vuelta! Has iniciado sesión correctamente.

Te has suscrito correctamente a Escribe tu primer paper de Economía usando Inteligencia Artificial.

¡Éxito! Revisa tu correo electrónico para obtener el enlace mágico para iniciar sesión.

¡Éxito! Se ha actualizado la información de facturación.

No se actualizó tu información de facturación.