Diseño Experimental & DOE · CULTIVA IA

Experimento 2⁴ Factorial
Email Onboarding NutriPaw

Optimización causal de tasa de apertura y CTR · Campaña Q3 2026

Seed: 2026
Diseño: Full 2⁴ Factorial
Randomización: Bloques estratificados
Skill: diseno-experimental-doe
Corridas DOE
16
2⁴ combinaciones · todos los efectos estimables
Clínicas asignadas
120
60 treatment · 60 control · 3 regiones
Factores
4
hora · asunto · personalización · descuento
Interacciones
11
4 pares · 4 triples · 1 cuádruple · todas estimables
Árbol de decisión
Diseño elegido
Árbol de decisión DOE — caso NutriPaw
Selección justificada del diseño antes de recoger datos
Full 2⁴ Factorial seleccionado
¿Qué queremos aprender? ├─ Comparar condiciones predefinidas (combinaciones de 4 parámetros de email)? │ ├─ Unidades independientes (clínicas) con nuisance factor conocido (región)? → SÍ │ │ └─ Cuantificar efectos principales E INTERACCIONES entre 4 factores? → SÍ │ │ └─ ✓ FULL 2⁴ FACTORIALtodos los efectos + interacciones estimables · 16 runs └─ ¿Nuisance factor (región) controlado? └─ ✓ RANDOMIZED BLOCK por región — Norte / Centro / Sur, 40 clínicas c/u └─ Aleatorización estratificada con bloques permutados (seed=2026, reproducible) ────────────────────────────────────────────────────────────────── Diseño final: Full 2⁴ Factorial + Stratified Block Randomization (3 regiones) Runs: 16 combinaciones DOE × 4 réplicas por región = 64 observaciones Errores evitados: pseudoreplicación, confusión región→tratamiento, drift temporal
Matriz DOE generada por scripts/doe_designs.py
Matriz 2⁴ Factorial — 16 corridas (orden aleatorizado seed=2026)
Orden de ejecución aleatorizado: las corridas no siguen el orden sistemático Yates — están permutadas con seed=2026 para que ningún factor quede confundido con la deriva temporal (machine warm-up, cambios en el algoritmo de inbox).
Matriz experimental · two_level_factorial(factors, seed=2026)
16 combinaciones únicas · orden de envío aleatorizado · archivable y re-genereable
pyDOE3 · numpy · pandas
Run Hora envío Long. asunto (palabras) Personalización Descuento Condición
18h mañana10 palabrasGenérico20%A₋B₊C₋D₊
28h mañana4 palabrasPersonalizado20%A₋B₋C₊D₊
38h mañana10 palabrasGenérico0%A₋B₊C₋D₋
418h tarde4 palabrasPersonalizado0%A₊B₋C₊D₋
518h tarde10 palabrasPersonalizado0%A₊B₊C₊D₋
618h tarde4 palabrasPersonalizado20%A₊B₋C₊D₊
78h mañana4 palabrasPersonalizado0%A₋B₋C₊D₋
818h tarde10 palabrasGenérico20%A₊B₊C₋D₊
918h tarde4 palabrasGenérico0%A₊B₋C₋D₋
108h mañana10 palabrasPersonalizado0%A₋B₊C₊D₋
1118h tarde10 palabrasPersonalizado20%A₊B₊C₊D₊
128h mañana4 palabrasGenérico0%A₋B₋C₋D₋ (baseline)
138h mañana4 palabrasGenérico20%A₋B₋C₋D₊
1418h tarde4 palabrasGenérico20%A₊B₋C₋D₊
158h mañana10 palabrasPersonalizado20%A₋B₊C₊D₊
1618h tarde10 palabrasGenérico0%A₊B₊C₋D₋
Aleatorización — scripts/randomization.py
Balance por región (estrato) — 120 clínicas veterinarias
stratified_block_randomization({Norte:40, Centro:40, Sur:40}, seed=2026)
Bloques permutados dentro de cada región → balance perfecto 50/50 sin chance de deriva
Balance 20/20 en los 3 estratos
Norte — 40 clínicas
Treatment
20
Control
20
Ratio 1:1 · 10 bloques de 4 · seed=2027
Centro — 40 clínicas
Treatment
20
Control
20
Ratio 1:1 · 10 bloques de 4 · seed=2028
Sur — 40 clínicas
Treatment
20
Control
20
Ratio 1:1 · 10 bloques de 4 · seed=2029
Efectos estimables — diseño full factorial 2⁴
Todos los 15 efectos son estimables (sin alias)
Estructura de efectos · Resolución V completa
Un diseño fraccional habría aliasado interacciones importantes — el full 2⁴ las estima todas
4 factores × 16 runs
A — Hora de envío
¿La mañana (8h) o la tarde (18h) genera más aperturas en clínicas veterinarias B2B?
✓ Estimable sin confusión
B — Longitud del asunto
¿Asuntos cortos (4 palabras) vs. descriptivos (10 palabras) impactan el CTR?
✓ Estimable sin confusión
C — Personalización
Incluir nombre de la clínica + especie más tratada vs. plantilla genérica.
✓ Estimable sin confusión
D — Descuento
Ofrecer 20% de descuento en primer mes vs. precio normal en el onboarding.
✓ Estimable sin confusión
A×C — Hora × Personalización
¿El efecto de personalizar depende de si el email llega de mañana o de tarde?
✓ Interacción de 2 factores estimable
B×D — Asunto × Descuento
¿Mencionar el descuento en el asunto corto es más efectivo que en el largo?
✓ Interacción de 2 factores estimable
A×C×D — triple interacción
Interacción de 3er orden: hora × personalización × descuento. Rara en la práctica.
✓ Estimable · se usará para validación del modelo
A×B×C×D — cuádruple interacción
Interacción completa de los 4 factores. Se espera no significativa (sirve como error puro en algunos análisis).
✓ Estimable · 16 runs permiten estimarla
Garantías del diseño
Errores estructurales evitados
Checklist de validez causal — pre-registro
Errores que el diseño evita activamente (no recuperables en análisis posteriores)
Error potencial Mecanismo de protección Estado
Pseudoreplicación La clínica = unidad de randomización Y análisis; no se cuentan emails individuales como réplicas ✓ Protegido
Confusión región → brazo Stratified block randomization: 20 treatment + 20 control en CADA región ✓ Protegido
Confusión temporal (drift) Orden de envío aleatorizado (run_order permutado con seed=2026) ✓ Protegido
Alias / interacciones no estimables Full 2⁴ (no fraccional): todos los 15 efectos estimables sin confusión ✓ Protegido
No reproducibilidad Seed=2026 archivado → diseño idéntico re-genereable en cualquier momento ✓ Protegido
Asignación por conveniencia Bloques permutados de tamaño 4 → no es posible predecir el siguiente brazo ✓ Protegido
Curvatura ignorada Respuesta esperada lineal en estos factores; si se sospecha curvatura → CCD en fase 2 ⚠ Fase 2 (CCD)