# Checklist — Buenos y malos controles (Cinelli, Forney & Pearl 2024)

> "Más controles" no es "mejor identificación". Algunos controles **sesgan** el efecto causal.

---

## Tabla de decisión rápida

| Variable X | Rol en el DAG | ¿Controlar? | Por qué |
|---|---|---|---|
| **Confounder** (X → D, X → Y) | Causa común | ✅ **SÍ** | Cierra backdoor |
| **Mediador** (D → X → Y) | Mecanismo intermedio | ❌ **NO** (para efecto total) | Bloquea el efecto que querés estimar |
| **Collider** (D → X, Y → X) | Efecto común | ❌ **NO** | Crea sesgo M-bias |
| **Descendiente del outcome** (Y → X) | Consecuencia de Y | ❌ **NO** | Sesgo por sobre-control |
| **Variable instrumental** (Z → D, sin path a Y) | Instrumento | ⚠️ Solo si IV | NO controlar en OLS |
| **Variable pre-tratamiento irrelevante** | No causal | 🤷 Neutral | Pierde grados de libertad |
| **Proxy de confounder no observable** | Mediador de U | ✅ **SÍ** (con cuidado) | Puede cerrar parcialmente backdoor |
| **Mediador parcial** + interesa efecto directo | Mecanismo | ⚠️ Controlar SÍ — pero declarar como "efecto directo, no total" |

---

## Tipología de sesgos por control inapropiado

### M-bias (Cinelli ex.1)
```
A → M ← B
B → Y
```
Si controlás M sin controlar A o B, podés **abrir un path espurio** D ← A → M ← B → Y.

### Selección sobre el outcome
```
D → Y → S (selección muestral)
```
Si tu muestra está condicionada en S, hay sesgo aunque no controles nada.

### Sobre-ajuste por mediador
```
D → M → Y
```
Controlar M te da el **efecto directo** (CDE), no el **efecto total** (TE). Tenés que saber cuál querés.

---

## Auto-chequeo para mi DAG actual

Para cada variable que pienso ajustar en mi modelo principal:

| Variable | Mi clasificación (conf./medi./coll./otro) | ¿Mi decisión? | Justificación |
|---|---|---|---|
| | | Controlar / NO controlar | |
| | | | |
| | | | |
| | | | |

---

## El error más común MAE

> "Le agregué TODAS las variables disponibles del dataset al modelo, así controlo más."

**Falso.** Algunas variables sesgan. La pregunta no es "¿qué variables tengo?" sino **"¿cuál es el conjunto de ajuste mínimo suficiente según mi DAG?"**.

Usá `dagitty::adjustmentSets()` o `ggdag::ggdag_adjustment_set()` para que el software te lo diga.

---

## Conexión

→ Las decisiones de control **forman parte del PAP moderado (U6)**. Pre-registrá tu conjunto de ajuste antes de correr el modelo.
→ En el **Lab L3**, pedíle a la IA que identifique malos controles en tu DAG.
