Correlación o causalidad: ¿qué permite afirmar realmente un análisis?
La correlación describe covariación. Un efecto causal exige un contrafactual creíble y supuestos de identificación que no se derivan del coeficiente por sí solo.
Respuesta directa
Separar una asociación observada de un efecto causal identificado y mostrar qué cambia el ajuste.
La correlación describe covariación. Un efecto causal exige un contrafactual creíble y supuestos de identificación que no se derivan del coeficiente por sí solo.
Hernán & Robins, Causal Inference: What IfCinelli, Forney & Pearl, 2022
01
La respuesta en 30 segundos
1
Una correlación o diferencia bruta describe lo observado conjuntamente. No define la intervención ni el resultado contrafactual.
2
Un efecto causal compara resultados medios bajo dos intervenciones bien definidas para una población y un periodo declarados.
3
En un estudio observacional, la interpretación causal depende del diseño, del grafo causal y de supuestos no demostrados por el coeficiente.
02
Tres niveles de lectura
- 1
Responsable: pregunte qué decisión cambiaría y qué comparación contrafactual la sustenta.
- 2
Profesional: declare exposición, resultado, población, periodo y variables de ajuste antes del análisis.
- 3
Analista: separe estimando, identificación y estimación; documente positividad, sensibilidad y validez externa.
03
Situación de marketing concreta
Un equipo observa que los clientes reimpactados compran más en 30 días. Sin embargo, el retargeting se dirige sobre todo a visitantes con alta intención previa. La pregunta útil no es solo «¿quién compra más?», sino «¿cuál habría sido la tasa de la misma población con y sin retargeting?»
04
Pregunta científica y estimando
Población objetivo: clientes elegibles representados por una muestra sintética de 10.000 unidades. En el instante cero, A=1 es la asignación a una política fija: una impresión display, misma creatividad, en 24 horas, limitada a una en siete días. A=0 suprime toda impresión de retargeting durante siete días. Y es compra en 30 días y L intención previa. Estimando: ATE = E[Y¹] − E[Y⁰], estandarizado con los pesos empíricos fijos de la muestra.
ATE = E[Y¹] − E[Y⁰]05
Por qué la comparación bruta puede engañar
- Confusión: la intención previa afecta al retargeting y a la compra; L → A y L → Y crean asociación no causal.
- Causalidad inversa: una señal temprana del resultado puede activar la exposición si la cronología está mal definida.
- Mal control: ajustar por un mediador o collider puede bloquear parte del efecto o abrir una vía de sesgo.
06
Intuición del método
El DAG declarado es L → A, L → Y y A → Y. La variación de A procede del targeting operativo, no de asignación aleatoria. La estandarización compara riesgos con A=1 y A=0 dentro de cada nivel de L y pondera los estratos según la población objetivo. Cierra la vía trasera observada por L; no corrige confusores no medidos.
Greenland, Pearl & Robins (1999) Cinelli, Forney & Pearl (2022)
07
Datos necesarios
- Una fila por estrato de intención y nivel de exposición, con tamaño n y compras y.
- Definición estable de exposición, resultado binario a 30 días, población, ventana y exclusiones fijados antes del cálculo.
- Confusores elegidos mediante razonamiento causal, no por selección automática.
08
Modelo formal y símbolos
Asociación
RDcrude = E[Y|A=1] − E[Y|A=0]A: asignación a la política; Y: compra en 30 días.
Estandarización
E[Yᵃ] = Σₗ E[Y|A=a,L=l]P(L=l)L: intención previa; a: intervención declarada; ATE: diferencia de riesgos estandarizados.
09
Cálculo declarado, paso a paso
- 01
Calcular riesgos brutos por exposición.
- 02
Calcular riesgo en cada celda L × A.
- 03
Ponderar cada riesgo por P(L) en la población objetivo.
- 04
Restar riesgos estandarizados y calcular el error estándar.
10
Ejemplo numérico completo
Dataset sintético creado para el aprendizaje. No describe ninguna campaña real.
| L | A | n | Y=1 | Riesgo |
|---|---|---|---|---|
| 0 | 0 | 4,800 | 192 | 4% |
| 0 | 1 | 1,200 | 72 | 6% |
| 1 | 0 | 800 | 192 | 24% |
| 1 | 1 | 3,200 | 896 | 28% |
Asociación
22,00% − 6,86% = 15,14 puntos
ATE
14,80% − 12,00% = 2,80 puntos
IC del 95%
[1,20; 4,40] puntos
La diferencia entre 15,14 y 2,80 puntos procede de la composición de intención. El intervalo de Wald trata el muestreo, no confusores omitidos.
11
Supuestos de validez
- Consistencia: la asignación observada coincide exactamente con la política display definida, su comparador y el instante cero.
- Intercambiabilidad condicional: dentro de L, ningún determinante no medido afecta aún a A e Y.
- Positividad: cada nivel de L contiene clientes expuestos y no expuestos.
- Ausencia de interferencia: la exposición de un cliente no cambia el resultado de otro.
Hernán & Robins, Causal Inference: What If Cinelli, Forney & Pearl (2022)
12
Diagnósticos e incertidumbre
01
Comprobar tamaños y riesgos por celda, cronología y definición del tratamiento.
02
Comprobar positividad: ninguna celda vacía; inspeccionar probabilidades extremas con datos individuales.
03
El IC de Wald supone celdas binomiales independientes y condiciona por tamaños y pesos observados. Si los pesos se estiman, usar bootstrap o función de influencia. Informar por separado la sensibilidad a confusores no medidos y al DAG.
13
Interpretar ambos resultados
La asociación bruta responde «¿qué diferencia se observa entre grupos?». El ATE estandarizado responde «¿qué diferencia media habría bajo dos políticas?», solo con supuestos creíbles. El intervalo cuantifica el muestreo, no automáticamente el sesgo de confusión.
14
Conclusiones permitidas y prohibidas
Permitido
- Describir una asociación bruta de 15,14 puntos en el dataset.
- Bajo los supuestos declarados, estimar un ATE estandarizado de 2,80 puntos para esta población.
Prohibido
- Afirmar que el coeficiente o su significación prueban el impacto del retargeting.
- Generalizar a otra población, periodo o versión del tratamiento sin nueva justificación.
15
Decisión de marketing posible
La responsable puede decidir un A/B test cuando la importancia justifica variación aleatoria, o usar provisionalmente la estimación estandarizada con prudencia y sensibilidad. El cálculo informa; no decide presupuesto ni despliegue.
16
Cuándo usar y cuándo no usar
01
Usar estandarización cuando están disponibles tratamiento, resultado, población y un conjunto pretratamiento defendible.
02
No usarla como atajo causal si falla la positividad, el tratamiento es ambiguo o faltan confusores importantes.
03
Alternativas: experimentos A/B o geográficos, diferencias en diferencias, variables instrumentales, control sintético y sensibilidad según el diseño.
17
Implementaciones reproducibles
Mismo CSV, misma estandarización y mismos resultados esperados. El software ejecuta el cálculo; no valida los supuestos causales.
Python 3.13
# Python 3.13, standard library only
import csv, math
rows = list(csv.DictReader(open("msc-p002-retargeting.csv", encoding="utf-8")))
for r in rows:
r.update({k:int(r[k]) for k in ("prior_intent","retargeted","n","purchases")})
N = sum(r["n"] for r in rows)
weights = {l:sum(r["n"] for r in rows if r["prior_intent"]==l)/N for l in (0,1)}
risk = {(r["prior_intent"],r["retargeted"]):r["purchases"]/r["n"] for r in rows}
crude = {a:sum(r["purchases"] for r in rows if r["retargeted"]==a)/sum(r["n"] for r in rows if r["retargeted"]==a) for a in (0,1)}
standardized = {a:sum(weights[l]*risk[l,a] for l in (0,1)) for a in (0,1)}
ate = standardized[1]-standardized[0]
se = math.sqrt(sum(weights[l]**2*(risk[l,1]*(1-risk[l,1])/next(r["n"] for r in rows if r["prior_intent"]==l and r["retargeted"]==1)+risk[l,0]*(1-risk[l,0])/next(r["n"] for r in rows if r["prior_intent"]==l and r["retargeted"]==0)) for l in (0,1)))
print(crude[1]-crude[0], ate, (ate-1.959964*se, ate+1.959964*se))R 4.5
# R 4.5
d <- read.csv("msc-p002-retargeting.csv")
d$risk <- d$purchases / d$n
w <- aggregate(n ~ prior_intent, d, sum); w$weight <- w$n / sum(w$n)
d <- merge(d, w[c("prior_intent","weight")], by="prior_intent")
crude <- aggregate(cbind(purchases,n) ~ retargeted, d, sum)
crude$risk <- crude$purchases / crude$n
std <- aggregate(I(weight*risk) ~ retargeted, d, sum)
ate <- std[std$retargeted==1,2] - std[std$retargeted==0,2]
cell <- transform(d, v=weight^2*risk*(1-risk)/n)
se <- sqrt(sum(cell$v))
c(crude_RD=diff(crude$risk), ATE=ate, lo=ate-qnorm(.975)*se, hi=ate+qnorm(.975)*se)IBM SPSS Statistics 31
* IBM SPSS Statistics 31.
GET DATA /TYPE=TXT /FILE='msc-p002-retargeting.csv' /FIRSTCASE=2 /DELCASE=LINE
/DELIMITERS=',' /VARIABLES=prior_intent F1.0 retargeted F1.0 n F8.0 purchases F8.0.
MATRIX.
GET x /VARIABLES=prior_intent retargeted n purchases.
COMPUTE risk=x(:,4)&/x(:,3).
COMPUTE N=CSUM(x(:,3)).
COMPUTE w={CSUM(x(1:2,3))/N;CSUM(x(1:2,3))/N;CSUM(x(3:4,3))/N;CSUM(x(3:4,3))/N}.
COMPUTE p1=CSUM((x(:,2)=1)&*x(:,4))/CSUM((x(:,2)=1)&*x(:,3)).
COMPUTE p0=CSUM((x(:,2)=0)&*x(:,4))/CSUM((x(:,2)=0)&*x(:,3)).
COMPUTE s1=CSUM((x(:,2)=1)&*w&*risk); s0=CSUM((x(:,2)=0)&*w&*risk).
COMPUTE se=SQRT(CSUM(w&*w&*risk&*(1-risk)&/x(:,3))).
PRINT {p1-p0;s1-s0;s1-s0-1.959964*se;s1-s0+1.959964*se}
/TITLE='crude_RD ATE CI_low CI_high'.
END MATRIX.SAS 9.4
/* SAS 9.4 */
proc import datafile='msc-p002-retargeting.csv' out=d dbms=csv replace; guessingrows=max; run;
proc sql;
create table cell as select a.*, purchases/n as risk,
(select sum(n) from d b where b.prior_intent=a.prior_intent)/(select sum(n) from d) as weight
from d a;
create table crude as select retargeted, sum(purchases)/sum(n) as risk from cell group by retargeted;
create table std as select retargeted, sum(weight*risk) as risk,
sum(weight*weight*risk*(1-risk)/n) as variance from cell group by retargeted;
quit;
data result; merge crude(where=(retargeted=0) rename=(risk=c0)) crude(where=(retargeted=1) rename=(risk=c1))
std(where=(retargeted=0) rename=(risk=s0 variance=v0)) std(where=(retargeted=1) rename=(risk=s1 variance=v1));
crude_RD=c1-c0; ATE=s1-s0; SE=sqrt(v0+v1); CI_low=ATE-1.959964*SE; CI_high=ATE+1.959964*SE; run;
proc print data=result; var crude_RD ATE CI_low CI_high; run;18
Entregable final esperado
Un expediente de decisión contiene pregunta causal, DAG versionado, estimando, población y periodo, diccionario, cálculo bruto y ajustado, intervalo, diagnósticos de positividad, supuestos no comprobables, sensibilidad, límites de generalización y decisión humana propuesta.
19
Fuentes científicas y nivel de evidencia
- Hernán & Robins, Causal Inference: What If
Texto metodológico completo: contrafactuales, consistencia, intercambiabilidad, positividad, estandarización e interferencia.
- Cinelli, Forney & Pearl (2022)
Artículo metodológico sobre buenos y malos controles, vías traseras, mediadores y colliders.
- Greenland, Pearl & Robins (1999)
Fundamento formal de grafos causales y criterios de identificación basados en vías.
Las fuentes sustentan el método. El dataset y los resultados son creaciones sintéticas MSC; no son validación empírica externa.
Dataset · Herramienta
Conexiones metodológicas
