# COMPLEXA C360 — simulación causal didáctica con 1.000 unidades

**Tipo de datos:** 1.000 filas **enteramente sintéticas**; los términos «programa terapéutico» y «respuesta funcional» son ficciones educativas y las cifras no representan efectos clínicos.

## Reproducción

```sh
python3 reproduce.py --out output
```

Solo usa la biblioteca estándar de Python. La reconstrucción es determinista, por tipos de respuesta y fracciones exactas de asignación dentro de gravedad basal, como describe el capítulo: no utiliza una semilla aleatoria porque ningún sorteo participa en la generación. Así los recuentos enteros reproducen **exactamente** la tabla sin atribuir el balance a un experimento aleatorio.

Archivos: `observados.csv` contiene únicamente ID, gravedad basal `L`, asignación `A` y respuesta observada `Y`. Las copias `potenciales_mecanismo_efecto.csv` y `potenciales_mecanismo_nulo.csv` contienen resultados potenciales **separados** y no forman parte de la estimación observacional. `pesos_individuales.csv` muestra las ponderaciones por estimando. `estimandos.csv` y `comprobacion.json` documentan las comprobaciones.

Resultados exactos: comparación cruda **−12 puntos porcentuales**; ATE estandarizado **+15**; ATT **+18**; ATC **+12**. El segundo mecanismo conserva exactamente las filas observadas y da efecto causal verdadero nulo; por ello la estandarización requiere la hipótesis causal de intercambiabilidad condicional del primer mecanismo. Figuras 360.1 y 360.2 son reconstruibles mediante `make_figures.py` (matplotlib).

**Límite científico:** ninguna cifra es una estimación de eficacia clínica, ni una evaluación de un servicio real. El esquema ilustra la definición de estimandos, el sesgo por gravedad y la no identificabilidad sin supuestos externos.
