Ir al contenido principal

Introducción a la IA causal con la biblioteca DoWhy en Python

Este tutorial es una introducción a la IA causal con la biblioteca DoWhy en Python. Repasa los principios fundamentales y ofrece ejemplos de código.
Actualizado 17 sept 2026  · 14 min leer

Explorar con IA

ChatGPTClaudePerplexity

A la hora de tomar decisiones basadas en datos, muchos expertos del sector tienen la sospecha de que los algoritmos de predicción que se usan habitualmente no siempre son fiables. Por ejemplo, la cantidad de chocolate consumido per cápita predice muy bien el número de premios Nobel en un país, y existe una correlación entre las ventas de helado y los ataques de tiburón. Sin embargo, eso no significa que tenga sentido atraer muchos tiburones a la playa para impulsar nuestro negocio de helados.

Lo que está en juego aquí es, por supuesto, la conocida idea de que «correlación no implica causalidad». Que dos variables estén correlacionadas no quiere decir que podamos usar una para influir en la otra. Ambos sucesos pueden venir dados por una tercera variable, como el «tiempo soleado» en el ejemplo de los tiburones y los helados, que actúa como causa común de ambos. Al mismo tiempo, entender las causas de fondo de los fenómenos y usar el análisis de datos para impulsar cambios es clave para cualquier negocio. Por eso muchos líderes del sector, como Microsoft, Amazon, Uber, Spotify, McKinsey y muchos más, han empezado a invertir fuertemente en capacidades de IA causal.

Este tutorial cubre algunos de los conceptos e ideas fundamentales de la IA causal usando la biblioteca DoWhy en Python. La inferencia causal es conceptualmente distinta del aprendizaje automático estándar, así que la mayoría empezará con poca base previa. No obstante, tener conocimientos básicos de análisis de regresión y modelado estadístico te ayudará a seguirlo. Si eres nuevo en regresión o quieres refrescar conceptos, echa un vistazo al curso de DataCamp Introduction to Linear Modeling in Python.

También puedes explorar las diferencias entre modelos predictivos y causales en el curso de DataCamp Machine Learning for Business.

Los bloques de construcción de la IA causal

Cuando hablamos de inferencia causal, necesitamos adoptar una mentalidad distinta a la de machine learning y analítica predictiva.

La filósofa Nancy Cartwright acuñó la frase: «Sin causas a la entrada, no hay causas a la salida». Es decir, tenemos que hacer supuestos sobre la estructura causal que subyace al fenómeno que estudiamos para poder obtener respuestas causales. Un enfoque puramente basado en datos no basta.

Puede sonar circular, pero no lo es.

Si queremos saber si la correlación entre consumo de chocolate y premios Nobel es causal, debemos descartar explicaciones alternativas. Esas explicaciones alternativas son conocimiento causal que no siempre hallarás en los datos y que hay que aportar desde fuera.

Imagina que estamos valorando implantar una política de teletrabajo (WFH) y queremos saber si afectará a la productividad. Un análisis inicial muestra que quienes trabajan desde casa completan más tareas al día.

Ahora bien, ¿podemos estar seguros de que esa correlación se mantendrá cuando la política se aplique a todo el mundo? En otras palabras, ¿podemos asegurar que la relación entre WFH y productividad es causal?

Graph created by causalfusion.net

Nota: gráfico creado por causalfusion.net

Un modelo causal sencillo para este contexto podría ser así.

Suponemos que trabajar desde casa afecta a la productividad, pero no conocemos la dirección ni la intensidad del efecto. A la vez, puede haber otros motivos por los que veamos mayor productividad entre quienes teletrabajan.

Personas con hijos o muy introvertidas, que no llevan bien el ruido de una oficina diáfana, pueden optar por trabajar más desde casa porque les resulta más cómodo. Estas variables podrían estar a su vez relacionadas con la productividad, lo que las convierte en causas comunes potenciales que también pueden explicar la correlación.

Para hacer explícitas todas estas hipótesis, las plasmamos en lo que se conoce como grafo causal, una representación gráfica que modela las relaciones entre variables de un sistema, con foco en las relaciones causales.

Verás que algunos de estos supuestos pueden ser fuertes en escenarios reales. La gran ventaja es que los grafos causales hacen muy explícitas las hipótesis y el conocimiento previo, pero siempre debemos estar listos para cuestionarlos y afinarlos para dar credibilidad a nuestros análisis.

Primeros pasos con DoWhy en Python

La biblioteca DoWhy de Microsoft, desarrollada junto con Amazon Web Services como parte del ecosistema PyWhy, se está convirtiendo rápidamente en el estándar del sector para el análisis causal en Python. Podemos usar DoWhy para simular un conjunto de datos según nuestro modelo causal y así ilustrar pasos fundamentales del flujo de inferencia causal. Primero, instala DoWhy en tu entorno.

!pip install git+https://github.com/microsoft/dowhy.git

Una vez hecho, cargamos las bibliotecas necesarias.

import numpy as np
import pandas as pd
import dowhy

Ahora, creemos un conjunto de datos propio. La gran ventaja de trabajar con datos simulados al estudiar IA causal es que controlamos por completo el proceso generador de datos y conocemos la «realidad subyacente», algo que con datos reales no ocurre.

Fijamos el efecto causal verdadero en uno (beta=1), especificamos dos causas comunes y creamos diez mil observaciones según relaciones lineales sencillas entre las variables del modelo.

La variable de tratamiento que analizamos es binaria: solo puede valer cero o uno.

Antes, establecimos un punto de partida fijo para la generación aleatoria —using np.random.seed(1)— para poder reproducir exactamente el conjunto de datos.

from dowhy import CausalModel
import dowhy.datasets

# Set seed to enable exact replication
np.random.seed(1)

# Simulate sample data
data = dowhy.datasets.linear_dataset(
    beta=1,
    num_common_causes=2,
    num_discrete_common_causes=1,
    num_instruments=1,
    num_samples=10000,
    treatment_is_binary=True)

df = data['df']

DoWhy asigna las siguientes etiquetas:

Tabla 1

Etiqueta

Variable

Tipo

Media

v0

Variable de tratamiento, la principal variable de interés en nuestro análisis (teletrabajo)

Binaria

0.608

y

Resultado de interés (productividad)

Continua

1.583

W0

Introversión

Continua

-0.148

W1

Número de hijos

Categoría

1.5

Z0

Variable instrumental que solo afecta a v0 y no a y (cierre del metro)

Binaria

0.281

Aquí hemos definido implícitamente un grafo causal al fijar el tipo de tratamiento y el número de causas comunes. DoWhy almacena los grafos en el lenguaje DOT, lo que nos da una forma cómoda de especificar nuestro propio grafo causal dirigido (digraph) cuando trabajemos con datos reales.

digraph {v0->y;W0-> v0; W1-> v0;Z0-> v0;W0-> y; W1-> y;}

Por último, combinamos toda esta información en un único modelo causal.

# Create a causal model from the data and given graph.
model=CausalModel(
        data = df,
        treatment=data['treatment_name'],
        outcome=data['outcome_name'],
        graph=data['gml_graph']
        )

Aprovechar la potencia de la IA causal

Antes de ejecutar nuestro análisis causal, comparemos con lo que nos diría un enfoque ingenuo basado en una regresión lineal simple.

# Run a linear regression of column y on v0 in df
import statsmodels.api as sm

X = df['v0'].astype(float)
y = df['y'].astype(float)

X = sm.add_constant(X)

ols = sm.OLS(y, X).fit()

# Display a more parsimonious results summary
print(ols.summary().tables[1])

El coeficiente de la pendiente en una regresión bivariada es 1.298. Sin embargo, sabemos que el efecto causal verdadero es uno, porque así generamos los datos.

Esto implica que las dos causas comunes, introversión y tener hijos, que influyen tanto en la productividad como en la probabilidad de teletrabajar, llevan a una sobreestimación de casi el 30% en este caso.

Por suerte, mientras tengamos datos de estas variables, podemos corregir este sesgo fácilmente añadiendo las causas comunes en un análisis multivariante.

En la literatura de IA causal, esto se conoce como el criterio de la puerta trasera. Queremos controlar todas las variables del grafo causal que apuntan a la variable de tratamiento. Entran por la «puerta trasera» y pueden crear una correlación espuria entre tratamiento y resultado que no es causal. En nuestro ejemplo, aplica a la introversión y al número de hijos.

WFH <— Introversión —> Productividad

WFH <— Hijos —> Productividad

DoWhy ofrece varios algoritmos para determinar si un efecto causal deseado es identificable dado un modelo causal concreto.

# Check whether causal effect is identified and return target estimands
identified_estimand = model.identify_effect()

Como era de esperar, en nuestro modelo sencillo del efecto del teletrabajo, la identificación causal es posible.

A continuación, pasamos a la estimación, el proceso de cuantificar el efecto objetivo con los datos disponibles.

DoWhy ofrece varios algoritmos entre los que elegir, como regresión, emparejamiento, estratificación y ponderación. Dado que los datos simulados se basan en relaciones lineales, una regresión simple bastaría. Si necesitas un repaso, el curso de DataCamp Intro to Regression with statsmodels in Python puede ayudarte.

Sin embargo, para hacer el análisis más general, usaremos la ponderación por probabilidad inversa, que también maneja datos no lineales.

# Estimate the causal effect using inverse probability weighting
estimate = model.estimate_effect(identified_estimand,
                                 method_name="backdoor.propensity_score_weighting")

DoWhy devuelve una estimación del efecto causal igual a 1.001. Obviamente, las cifras concretas no son muy relevantes en este contexto simulado. Lo importante es que estamos muy cerca de la verdad subyacente, que es uno. En comparación con la regresión previa, el sesgo se ha reducido en un asombroso 99,6%.

Poner a prueba tus resultados

Está muy bien, pero no deberíamos quedarnos ahí.

El principio de «sin causas a la entrada, no hay causas a la salida» nos recuerda que cualquier análisis causal es tan bueno como los supuestos en los que se apoya.

Por ejemplo, ¿cómo sabemos que solo la introversión y los hijos afectan al WFH, como estipula nuestro modelo causal sencillo?

Para ganar confianza en nuestros supuestos, DoWhy nos ofrece toda una batería de tests de refutación para someter el análisis a estrés, como pruebas con submuestras o tratamientos placebo, entre otros.

# Check sensitivity of obtained estimate to unobserved confounders
refute_results = model.refute_estimate(identified_estimand, estimate,
                                       method_name="add_unobserved_common_cause")

Veamos qué pasa si añadimos otra causa común además de introversión e hijos.

Esta vez no tenemos datos de esa variable, por lo que seguirá siendo no observable. ¿Qué tan fiables son nuestras estimaciones? Por desgracia, la respuesta no es muy tranquilizadora.

El gráfico de la figura 2 ilustra la gran influencia que pueden tener causas comunes no observadas en el efecto causal estimado, con un rango de -0.222 a 1.003. Es tan amplio que podría incluso duplicar el efecto estimado.

Figure 2

No es sorprendente. Los mecanismos causales alternativos que implican variables no observadas y que no podemos incorporar al análisis siempre son un problema en los estudios causales.

Afortunadamente, existe una vía alternativa para lograr la identificación en este contexto, y DoWhy es lo bastante inteligente como para detectarla.

Encontrar estrategias causales alternativas

Aunque las personas introvertidas o con hijos pueden teletrabajar más a menudo, puede haber otros determinantes del WFH que no estén relacionados con la productividad.

Imagina una gran interrupción del transporte público y que una línea de metro de la ciudad se cierra durante tres meses. Como resultado, quienes viven cerca de esa línea tenderán a trabajar más desde casa, aunque en otras circunstancias preferirían ir a la oficina.

Podemos ilustrar este modelo causal ampliado así.

Augmented causal model

En este caso, el cierre del metro actúa como una variable instrumental.

Intuitivamente, el cierre es un shock sobre los patrones de desplazamiento, creando una especie de experimento natural.

Durante tres meses, quienes viven cerca de la línea afectada trabajarán más desde casa, pero eso no guarda otra relación con su productividad. Quizá te hayas fijado en que ya incluimos una variable instrumental, Z0, al crear el conjunto de datos simulado más arriba con la opción num_instruments=1. La función identify_effect() de DoWhy puede encontrar automáticamente variables instrumentales adecuadas en el grafo causal.

iv_estimate = model.estimate_effect(identified_estimand,
                                    method_name="iv.instrumental_variable")

Tras la estimación, obtenemos un efecto causal de 0.920. Es un poco menos preciso que la estrategia de puerta trasera, pero mucho más preciso que la predicción ingenua.

La estimación con variables instrumentales tiene la ventaja de que no depende de supuestos sobre el número de causas comunes no observadas de WFH y productividad.

Por tanto, aunque nuestras estimaciones puedan ser menos precisas, son más robustas porque requieren supuestos más débiles. Este es un compromiso habitual en análisis causal.

¿Y ahora qué?

DoWhy es un excelente punto de partida para la IA causal. Es una biblioteca potente de extremo a extremo que ofrece un flujo de inferencia causal versátil y te guía por los pasos esenciales.

Una vez domines el flujo básico, puedes pasar a temas más avanzados como el descubrimiento causal y potenciar tu análisis con bibliotecas como DoubleML, o daggity, ggdag y pcalg en R. Cuando te sientas cómodo con las bases, quizá quieras explorar temas avanzados de inferencia causal. El curso de DataCamp Advanced Causal Inference with R es un gran siguiente paso.

La inferencia causal ofrece una nueva forma de mirar los datos. La mayoría de enfoques dependen de comprender el grafo causal u otros supuestos causales. La clave está en elegir las técnicas y supuestos adecuados para tu situación. Esto requiere conocimiento externo y experiencia de dominio.

Por ello, es buena idea consultar con tus especialistas de marketing o RR. HH. para conocer su opinión sobre un problema concreto y ver si pueden ayudarte a plantear un modelo adecuado.

El conocimiento causal es crucial en muchos contextos de negocio. Necesitamos entender, por ejemplo, si el lanzamiento de un nuevo producto está funcionando o cuán eficaz es nuestra estrategia publicitaria.

Obtener respuestas causales de los datos puede ser más difícil que entrenar un algoritmo de predicción sencillo, pero merece la pena. Y bibliotecas como DoWhy te ofrecen un gran conjunto de herramientas para encontrar las soluciones que mejor se ajusten a tus necesidades.

Si este tutorial te ha resultado útil y tienes ganas de aplicar técnicas de IA causal en tus proyectos, es un gran momento para profundizar. En el curso completo de Machine Learning for Business aprenderás no solo modelos predictivos, sino también modelos causales que te ayudarán a tomar mejores decisiones de negocio.


Paul Hünermund 's photo
Author
Paul Hünermund
LinkedIn
Twitter
Paul Hünermund es profesor adjunto de Estrategia e Innovación en la Copenhagen Business School. En su investigación, el Dr. Hünermund estudia cómo las empresas pueden aprovechar las nuevas tecnologías en el espacio del aprendizaje automático y la inteligencia artificial para la creación de valor y la ventaja competitiva. Su trabajo explora el potencial de los sesgos en la toma de decisiones organizativas y las formas en que los directivos pueden contrarrestarlos. De este modo, arroja luz sobre los orígenes de las estrategias empresariales eficaces en mercados caracterizados por un alto grado de competencia tecnológica y las implicaciones resultantes para el crecimiento económico y la sostenibilidad medioambiental. 
 
Sus trabajos se han publicado en The Journal of Management Studies, the Econometrics Journal, Research Policy, Journal of Product Innovation Management, International Journal of Industrial Organization, MIT Sloan Management Review y Harvard Business Review, entre otros. Frankfurter Allgemeine Zeitung, Süddeutsche Zeitung, Politiken y Neue Zürcher Zeitung se han hecho eco de su trabajo. Dr. Hünermund forma parte del consejo editorial del Journal of Causal Inference y del equipo ejecutivo de la división de Gestión de la Tecnología y la Innovación de la Academy of Management. Se doctoró en Economía de la Empresa en la Universidad Católica de Lovaina (Bélgica) y obtuvo un máster en Economía en la Universidad de Mannheim (Alemania).

Jermain Kaminski's photo
Author
Jermain Kaminski
Jermain Kaminski es profesor adjunto de Iniciativa Empresarial e Innovación en la Universidad de Maastricht. En su investigación, combina el aprendizaje automático y el procesamiento del lenguaje natural, con especial atención a los datos de texto, audio y vídeo en el mundo empresarial. En particular, su investigación actual se centra en la toma de decisiones estratégicas, profundizando en el impacto del aprendizaje automático causal en el proceso de toma de decisiones. Sus trabajos con coautores se han publicado en Journal of Business Venturing, Journal of Business Venturing Insights, Journal of Product Innovation Management, Small Business Economics, ACM Conference on Human Factors in Computing Systems y Harvard Business Review, entre otros. 
 
Jermain estudió en la Universidad de Witten/Herdecke (Alemania) y en el Instituto Tecnológico de Massachusetts (EE.UU.). En el MIT, fue estudiante visitante e investigador en el Centro de Inteligencia Colectiva del MIT en la Sloan School of Management y en el MIT Media Lab. Jermain realizó sus estudios de doctorado en la Universidad RWTH de Aquisgrán. Es cofundador y copresidente de la Reunión de Ciencia de Datos Causal(causalscience.org).
Temas
Inteligencia Artificial
Python
Relacionado

blog

Introducción a PandasAI

Mejora tu experiencia pandas con el análisis de datos potenciado por IA.
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutorial

Introducción a Q-learning: tutorial para principiantes

Conoce el algoritmo de aprendizaje por refuerzo sin modelo más popular con un tutorial en Python.
Abid Ali Awan's photo

Abid Ali Awan

11 min

Tutorial

Aprendizaje automático de datos categóricos con el tutorial de Python

Aprenda los trucos más comunes para manejar datos categóricos y preprocesarlos para construir modelos de aprendizaje automático.
Moez Ali's photo

Moez Ali

14 min

Tutorial

Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas

Este tutorial te presenta la API de OpenAI, sus casos de uso, un enfoque práctico para utilizar la API y todas las prácticas recomendadas que debes seguir.
Arunn Thevapalan's photo

Arunn Thevapalan

13 min

Tutorial

Construir agentes LangChain para automatizar tareas en Python

Un tutorial completo sobre la construcción de agentes LangChain multiherramienta para automatizar tareas en Python utilizando LLMs y modelos de chat utilizando OpenAI.

Tutorial

Tutorial de clasificación mediante árboles de decisión en Python

En este tutorial, aprenderás sobre la clasificación mediante árboles de decisión, las medidas de selección de atributos y cómo crear y optimizar un clasificador de árboles de decisión utilizando el paquete Scikit-learn de Python.
Avinash Navlani's photo

Avinash Navlani

12 min

Ver MásVer Más