Python para Econometría#
Elaborado en el ejercicio de Año Sabático autorizado en la UJED#
Si no sabes con qué lenguaje comenzar a aprender econometría, tu mejor opción es Python.
En las escuelas enseñan con Eviews o con Stata. R también es un genial para la estadística: es el que he usado por años. Pero si tuviera que empezar de cero hoy a aprender econometría lo haría con Python.
La razón de esto es la inteligencia artificial.
Python es un lenguaje de programación general, no es sólo para estadística.
Esto quiere decir que puedes integrarlo con diferentes soluciones y hacer productos con tus datos.
Estamos en una nueva era donde la inteligencia artificial (IA) es la que se encarga de crear y modificar el código y tú eres el encargado de pensar.
Hace un par de años programar en Python era una barrera gigante, hoy es trivial.
Lo que importa es entender los modelos de la econometría, cómo funcionan y cómo usarlos. Esto requiere que nos adentremos a la filosofía sobre cómo entendemos causas y efecto sobre. Pero también necesitamos conocer bien las herramientas a nuestra disposición.
Y nadie lo entendió mejor que una enfermera Rockstar del Siglo XIX.
Florence y la Máquina#
Florence Nightingale fundó la enfermería moderna, pero salvó aún más vidas gracias a su genialidad estadística.
La conocían como la dama de la linterna. Se le veía por las noches rondando en ayuda de los soldados durante la guerra de Crimea (Swenson, 1966). Se ofreció como voluntaria junto a un equipo de 38 enfermeras para atender a los heridos en combate.
Ahí fue donde hizo la contribución más grande a la estadística, que la hizo famosa.
No es sino hasta que se registran datos de forma meticulosa que los patrones comienzan a emerger.
Cuando llegó con su equipo a la guerra, se dio cuenta de que los malos cuidados médicos cobraban más vidas que las balas del enemigo. Había pocas medicinas, se ponía poca atención a la higiene y las infecciones eran comunes. Nightingale comenzó a hacer registros cuidadosos de todo y lo comunicó al gobierno británico.
Impulsó cambios importantes que redujeron las muertes de 42 a 2% en el hospital.
Convenció al gobierno británico de estos cambios gracias a gráficas innovadoras como ésta:
El gráfico de arriba se llama diagrama de rosa. El área azul representa las muertes por enfermedades infecciosas prevenibles, el área roja son las muertes por heridas en batalla y el área negra son otras causas. El poder de este gráfico es que se vuelve evidente de inmediato lo importante que es la higiene para prevenir muertes en el hospital.
En la época, hacer este tipo de gráficos requería muchas horas de trabajo. Hoy puedes hacerlo en minutos gracias a Python.
El primer paso para hacer econometría con python#
No necesitas instalar nada para empezar a hacer econometría.
Python es un lenguaje de programación general que puedes instalar en tu computadora. Sólo necesitas descargarlo, instalarlo y descargar los módulos apropiados. Hacerlo de esta forma requiere un poco de experiencia y que sepas usar la terminal, entre otras cosas.
Pero hay una forma más fácil.
Entra a Google Colab.
Si no tienes cuenta en Google, tiene que crearla.
Da click en Nueva Notebook y comienza a trabajar.
Para ejecutar un bloque de código, sólo necesitas picar el botón con el símbolo de play ▶️ o usa ctrl + Enter (cmnd + Enter en Mac)
Los notebook de Google Colab son la mejor forma de hacer ciencia de datos con Python porque trabajar con datos requiere mucha prueba y error. Repetir pequeños bloques de código una y otra vez sin alterar el resto del programa. Si nunca has usado Python, las notebook te ayudarán a comenzar sin preocuparte por los detalles de instalación. Si eres un experto en Python te será evidente los dolores de cabeza que estás evitando al trabajar así.
Familiarízate con Python#
La mejor forma de aprender cualquier lenguaje de programación es jugar con él.
Observa las siguientes operaciones. Ejecuta y modifica los ejemplos a tu gusto. Intenta predecir lo que vas a obtener de resultado antes de ejecutar.
Sumas y restas (
2 + 2
,8 - 3
)Multiplicaciones y divisiones (
7*2
,9/3
)Potencias y raíces cuadradas (
3**2
,16**(1/2)
)Concatenación de cadenas de texto (
"Hola " + "mundo"
)Comparaciones (
5 > 3
,"hola" == "adiós"
)
Pero este libro no se trata de aprender a programar.
Si quieres ser un maestro de la econometría, tienes que usar el código que hicieron otras personas.
El código de los expertos.
Módulos de Python para hacer econometría#
Un módulo es un paquete con funciones que hizo alguien más para solucionar un problema.
A diferencia de los programas estadísticos tradicionales como Stata o Eviews, Python requiere de paquetes especiales para hacer econometría. Cada paquete contiene funciones particulares para lo que deseas. La diferencia es que esos paquetes con funciones se descargan aparte y es necesario llamarlos cuando los quieres usar.
Aquí hay algunos módulos de Python que son útiles para hacer econometría:
Statsmodels
: Modelos estadísticos y herramientas para realizar análisis de datos.Pandas
: Estructuras de datos flexibles y eficientes para manipular y analizar datos. Útil para trabajar con datos en formato tabular.Numpy
: Biblioteca para el cálculo numérico en Python. Proporciona funciones y herramientas para trabajar con arreglos numéricos.
En capítulos posteriores veremos ejemplos de statsmodels
y numpy
, porque son los módulos que se usan para hacer modelos estadísticos y manipulación avanzada de datos.
Aquí aprenderemos a usar pandas
para manejar datos de manera visual y tabular.
Un juego de lotería con python#
La Lotería es un juego tradicional mexicano parecido al juego de Bingo.
En este juego, en lugar de números se sacan tarjetas con diferentes personajes u objetos como una campana, la muerte o un borracho.
Al inicio del juego se reparten cartas con pictogramas distribuidos de manera aleatoria. El jugador debe marcar lo que aparece en su carta. Gana el jugador que marca su carta completa.
Algunos conceptos importantes:
Mazo. Es el conjunto de todas las cartas individuales.
Carta. Cada carta tiene una imagen y su nombre. Por ejemplo: El valiente.
Tabla. Cada jugador tiene una tabla con 16 cartas aleatorias que debe de llenar conforme el gritón las menciona.
El gritón. Es la persona encargada de dar a conocer la siguiente carta a todos los jugadores.
Para comenzar, invocamos los módulos.
import pandas as pd
import random
Con pandas
ahora tienes el poder de crear y manipular bases de datos.
Con pandas
puedes cargar datos desde archivos csv
o Excel, visualizarlo, quitar filas, cambiar columnas y hacer lo que sea con tus datos. Como nuestro proyecto es una lotería, vamos a necesitar números aleatorios, que son la especialidad del módulo random
.
Comencemos a incluir las cartas en una lista.
cartas = ["La maceta", "El borracho", "La campana", "El catrin", "El violoncello","La sandia", "La chalupa", "El gorrito", "El arpa", "El camaron", "El barril", "La dama", "La bota", "El pajaro", "El melon", "El cotorro", "La palma", "El mundo", "El apache", "El pescado", "La muerte", "El alacran", "El gallo", "La calavera"]
Los conocedores de la lotería se podrán dar cuenta de que me faltó poner algunas cartas.
No es problema. Podemos incluír las cartas que nos faltan más adelante. Usemos la función append()
para agregar la carte de “El diablito” a nuestro mazo de cartas. También podemos usar extend()
para agregar más elementos al mazo desde otra lista.
# Con append podemos agregar un elemento adicional que nos faltaba
cartas.append("El diablito")
# Con extend podemos agregar los elementos de una lista a otra
cartas.extend(["El valiente", "La corona", "El barril"])
# Con print() mostramos
print(cartas)
['La maceta', 'El borracho', 'La campana', 'El catrin', 'El violoncello', 'La sandia', 'La chalupa', 'El gorrito', 'El arpa', 'El camaron', 'El barril', 'La dama', 'La bota', 'El pajaro', 'El melon', 'El cotorro', 'La palma', 'El mundo', 'El apache', 'El pescado', 'La muerte', 'El alacran', 'El gallo', 'La calavera', 'El diablito', 'El valiente', 'La corona', 'El barril']
Con esta lista ya podemos repartir las tablas.#
Una tabla de lotería tiene 16 cartas: cuatro a lo ancho y cuatro a lo largo. Usa pandas
para crear un DataFrame para la tabla de cada jugador. Este DataFrame tendrá 16 cartas únicas del mazo y una columna adicional para marcar las cartas.
deck_df = pd.DataFrame(cartas, columns=['Carta'])
def crear_tabla(deck_df):
tabla = deck_df.sample(16).reset_index(drop=True)
tabla['Marcada'] = False # Add a new column for marking the cards
return tabla
# Example of creating a table for a player
tabla_jugador = crear_tabla(deck_df)
print("Tabla del Jugador:")
print(tabla_jugador)
Tabla del Jugador:
Carta Marcada
0 El valiente False
1 El violoncello False
2 El alacran False
3 La palma False
4 El gallo False
5 El gorrito False
6 La sandia False
7 La muerte False
8 El arpa False
9 La chalupa False
10 El catrin False
11 La maceta False
12 El cotorro False
13 La dama False
14 La bota False
15 El mundo False
Esta función crear_tabla
toma la lista de cartas y utiliza random.sample
para seleccionar 16 cartas únicas de esa lista. random.sample
es útil porque automáticamente se asegura de que no haya duplicados en la selección.
Cantar las cartas#
Ahora que tenemos las tablas, necesitamos una forma de “cantar” las cartas y que los jugadores revisen sus tablas.
Podemos hacer esto con otra función muy sencilla. Hemos creado canta_carta()
, que selecciona una carta del mazo de forma aleatoria.
Este código tiene un error. Normalmente cuando el “gritón” canta las cartas de lotería, ya no las reemplaza en el mazo y no volverán a salir. Para solucionar esto tendríamos que hacer que se elimine el elemento de la carta, pero dejaremos esto como ejercicio al lector.
def cantar_carta(deck_df):
return deck_df.sample().iloc[0]['Carta']
# Example of drawing a card
carta_cantada = cantar_carta(deck_df)
print("Carta Cantada:", carta_cantada)
Carta Cantada: La calavera
Esta función selecciona una carta al azar de la lista de cartas. Cada vez que se llama a la función, simula al “gritón” cantando una nueva carta.
Marcando las Cartas#
El Data Frame tabla_jugador
tiene dos columnas. La primera tiene nuestras cartas y la segunda nos ayuda a marcar si el gritón ya dijo nuestra carta. Es nuestra columna de frijolitos.
En la siguiente función primero se verifica si la carta cantada está en nuestra tabla. Lo hacemos con la palabra clave if
, que cambia el elemento de la segunda columna a True
si la tenemos.
def marcar_carta(tabla, carta_cantada):
if carta_cantada in tabla['Carta'].values:
tabla.loc[tabla['Carta'] == carta_cantada, 'Marcada'] = True
print("¡Carta marcada!")
else:
print("Esta carta no está en tu tabla.")
# Example of marking a card
marcar_carta(tabla_jugador, carta_cantada)
print(tabla_jugador)
Esta carta no está en tu tabla.
Carta Marcada
0 El valiente False
1 El violoncello False
2 El alacran False
3 La palma False
4 El gallo False
5 El gorrito False
6 La sandia False
7 La muerte False
8 El arpa False
9 La chalupa False
10 El catrin False
11 La maceta False
12 El cotorro False
13 La dama False
14 La bota False
15 El mundo False
De lo contrario, el sistema simplemente nos dirá que la carta no está en nuestra tabla y podemos volver a pedir al gritón que cante.
Verificando el Ganador#
La función all()
verifica si todos los valores en la columna “Marcada” tiene valor verdadero.
def verificar_ganador(tabla):
return all(tabla['Marcada'])
# Example of checking for a winner
if verificar_ganador(tabla_jugador):
print("¡Felicidades, has ganado!")
else:
print("Sigue jugando.")
Sigue jugando.
Cuando tu tabla tiene todas las cartas marcadas, haz ganado.
Preguntas frecuentes en las primeras sesiones de python#
Tengo ya bastante experiencia enseñando a programar por primera vez para reconocer los problemas más comunes al inicio. Regresa a esta lista si te encuentras en problemas, tal vez encuentres tu problema aquí.
Me apareció error. En los lenguajes de programación no hay errores genéricos. Siempre tienes que revisar con detalle
No puedo cargar el módulo. Asegúrate que estés utilizando el entorno correcto donde el módulo está instalado. Si estás usando Google Colab, los módulos más comunes como
pandas
ynumpy
ya están preinstalados. Si estás en tu propia máquina, quizás necesites instalar el módulo usando pip, por ejemplo,pip install pandas
.Mi código no hace lo que espero. Revisa cada línea cuidadosamente. Asegúrate de entender qué hace cada parte del código. A veces, un pequeño error como una letra mal escrita o una indentación incorrecta puede causar problemas.
No entiendo el error que me muestra Python. Los mensajes de error pueden ser confusos al principio. Lee el mensaje completo; a menudo, la última línea te da una pista sobre lo que está mal. Si no entiendes el mensaje, intenta buscarlo en internet. Es muy probable que alguien más haya tenido el mismo problema.
El código se ejecuta, pero no pasa nada. Verifica que estés llamando a las funciones correctamente y que estés pasando los argumentos correctos. También asegúrate de que cualquier cambio que esperes ver se esté mostrando o guardando adecuadamente.
¿Cómo instalo un módulo de Python? Generalmente, puedes instalar módulos de Python usando pip. Por ejemplo, para instalar
matplotlib
, usaríaspip install matplotlib
en tu terminal o línea de comandos.¿Cómo sé qué módulo usar para una tarea específica? La experiencia te ayudará a conocer qué módulos son mejores para diferentes tareas. Mientras tanto, busca recomendaciones en línea o en libros de texto sobre Python. La comunidad de Python es muy activa y hay muchos recursos disponibles.
¿Cómo puedo mejorar en Python? La práctica es clave. Trabaja en pequeños proyectos, resuelve problemas y trata de leer y entender el código de otras personas. También, participar en comunidades en línea y foros puede ser muy útil.
Ya sabes usar Python, ahora aprendamos econometría#
Lo más importante es practicar.
No hay libro que te de la suficiente experiencia antes de comenzar a construir tus propios modelos. Necesitas empezar hoy mismo a modelar, a obtener datos y a jugar con ellos. Es a prueba y error que tu mente te hará un experto en econometría.
Es momento de comenzar con las matemáticas.#
Como citar este libro#
Cita en APA (7a edición)
García Meza, M. A. (2024). *Inferencia causal para negocios: Una guía práctica con Python*. https://inferenciacausal.com
Cita en MLA (9a edición)
García Meza, Mario A. *Inferencia Causal para Negocios: Una Guía Práctica con Python*. Durango, México, 2024. https://inferenciacausal.com.
Cita en Chicago
García Meza, Mario A. I*nferencia Causal para Negocios: Una Guía Práctica con Python*. Durango, México, 2024. https://inferenciacausal.com.
Espero que este libro te resulte útil.#
Si eres economista y deseas escribir tu primer paper de economía, hice este curso gratis por correo justo para tí.
En este curso aprenderás a:
Crear objetivos de investigación que tienen sentido, que ningún juez te podrá “tumbar”.
Usar causalidad en tus modelos y no sólo seguir una receta de cocina para trabajar con datos.
Apoyarte de otras personas y la tecnología para escribir al menos dos papers al año, todos los años, consistentemente y para siempre.
Elaborado en el ejercicio de Año Sabático autorizado en la UJED