# inferencia-causal-practica-con-dowhy-y-grafos-dirigidos-dags
Inferencia Causal Práctica con DoWhy y Grafos Dirigidos (DAGs)
Volver a la portada del cursoPropiedades de DAGs en Análisis Causal
Sección 2 · Fundamentos de Grafos Dirigidos (DAGs)
Propiedades de los DAGs en análisis causal
Un grafo dirigido acíclico (DAG) es la forma más compacta de escribir lo que crees sobre cómo se generan tus datos. Cada nodo es una variable; cada flecha $X \to Y$ dice "X es causa directa de Y". Que sea acíclico significa que ninguna variable puede ser causa de sí misma siguiendo flechas. Con ese dibujo ya puedes responder, antes de tocar los datos, qué variables hay que controlar para estimar un efecto y cuáles no deben tocarse.
Tres estructuras básicas
Todo DAG, por grande que sea, está hecho de tres piezas. Entenderlas es entender cómo fluye la asociación:
- Cadena $X \to M \to Y$: $X$ afecta a $Y$ a través del mediador $M$. $X$ y $Y$ están asociados, pero si condicionas en $M$, la asociación desaparece.
- Horquilla $X \leftarrow C \to Y$: una causa común (confusor) $C$ produce asociación entre $X$ y $Y$ aunque no haya efecto entre ellas. Condicionar en $C$ la elimina.
- Colisionador $X \to K \leftarrow Y$: dos causas independientes de $K$. Aquí ocurre lo contrario: $X$ y $Y$ son independientes, pero si condicionas en $K$ (o en un descendiente de $K$) aparece una asociación espuria.
El colisionador es la trampa más común: filtrar la muestra por una variable que depende del tratamiento y del resultado, por ejemplo "solo quienes respondieron la encuesta", introduce sesgo aunque los datos originales no lo tuvieran.
d-separación
Las tres reglas se generalizan en la d-separación. Un camino entre $X$ y $Y$ está bloqueado por un conjunto $Z$ si contiene una cadena o una horquilla cuyo nodo central está en $Z$, o un colisionador que no está en $Z$ y no tiene descendientes en $Z$. Si todos los caminos están bloqueados, $X$ y $Y$ están d-separados dados $Z$, y el DAG implica la independencia condicional $X \perp Y \mid Z$. Esas implicaciones son comprobables con datos, y la lección de validación las usa para poner a prueba el grafo.
NetworkX implementa la prueba directamente:
import networkx as nx
g = nx.DiGraph([("C", "X"), ("C", "Y"), ("X", "M"), ("M", "Y"), ("X", "K"), ("Y", "K")])
print(nx.is_d_separator(g, {"X"}, {"Y"}, {"C", "M"})) # True
print(nx.is_d_separator(g, {"X"}, {"Y"}, {"C", "M", "K"})) # False: K es colisionador
print(nx.is_directed_acyclic_graph(g)) # True
Con $\{C, M\}$ se bloquean la horquilla y la cadena. Al añadir $K$, el colisionador abre un camino nuevo y la independencia se rompe.
El criterio de la puerta trasera
Para estimar el efecto causal de $T$ sobre $Y$ hay que bloquear los caminos de puerta trasera: los que empiezan con una flecha que entra en $T$ ($T \leftarrow \cdots Y$). Un conjunto $Z$ cumple el criterio si (1) bloquea todos esos caminos y (2) no contiene descendientes de $T$. Entonces el efecto se identifica con la fórmula de ajuste:
$$P(Y \mid do(T=t)) = \sum_z P(Y \mid T=t, Z=z)\,P(Z=z)$$
La condición (2) explica por qué no se controla por mediadores ni por colisionadores: ambos son descendientes del tratamiento. Si controlas por el mediador, estimas solo el efecto directo; si controlas por un colisionador, introduces sesgo.
Cuando no hay puerta trasera: puerta delantera e instrumentos
Si existe un confusor que no mediste, el ajuste no alcanza. Dos estructuras rescatan la identificación:
- Puerta delantera: si todo el efecto pasa por un mediador $M$ medido, que no comparte confusores con $T$ y cuya relación con $Y$ se puede desconfundir ajustando por $T$, el efecto se recupera en dos etapas.
- Variable instrumental: una variable $Z$ que afecta a $T$, no afecta a $Y$ salvo a través de $T$ y no comparte causas con $Y$. Un sorteo es el ejemplo típico.
DoWhy revisa automáticamente las tres estrategias (puerta trasera, instrumento y puerta delantera) cuando llamas a identify_effect, y te dice cuáles aplican a tu grafo.
Trampas comunes
- "Controlar por todo": meter todas las variables disponibles en la regresión incluye mediadores y colisionadores. Más variables no es más causalidad.
- Olvidar el sesgo de selección: filtrar filas por una consecuencia del tratamiento es condicionar en un colisionador.
- Dibujar el DAG después de ver los resultados: el grafo es un supuesto. Escríbelo con conocimiento del dominio antes de estimar.
- Confundir ausencia de flecha con ignorancia: no dibujar una flecha es una afirmación fuerte (no hay efecto directo), no una omisión neutral.
Cierre
Antes de cada análisis, dibuja el DAG y clasifica cada variable: confusor, mediador, colisionador, instrumento o irrelevante. Esa tabla decide la estimación más que cualquier modelo estadístico, y es lo primero que pedirá el proyecto final.