GrowFlow · SaaS B2B
Junio 2026 · CULTIVA IA / Datos & Análisis

Informe de Ciencia de Datos Senior

Análisis estadístico completo: experimento A/B, modelo predictivo de churn e inferencia causal DiD para GrowFlow SaaS.

Skill: cientifico-datos-senior Stack: Python · Scikit-learn · GBM · statsmodels Dataset: n=1.200 cuentas Nivel: Producción
Lift SmartSequences
+9.2%
retención 90d (vs baseline 34%)
p-valor A/B
0.057
marginalmente no sig. (α=5%)
AUC-ROC Modelo Churn
0.701
Logistic Regression (campeón)
ATT Onboarding DiD
−6.6pp
reducción churn (p=0.079)
1
Experimento A/B — SmartSequences
Test two-proportion z-test · α=5% · Power=80%

Control — Sin SmartSequences

33.97%
581 / 1.710 usuarios convirtieron a 90d

Treatment — Con SmartSequences

37.09%
628 / 1.693 usuarios convirtieron a 90d

Resultados estadísticos

Lift relativo+9.17%
Diff. absoluta+3.11pp
p-valor (z-test)0.0575
Veredicto⚠ Marginalmente no sig.
IC 95% (abs)[−0.001, +0.063]
Muestra requerida6.165/variante
Muestra actual~1.700/variante

Visualización IC 95% (diferencia absoluta)

El intervalo de confianza cruza el cero — el experimento está infrapotenciado. Se necesita más tiempo de recogida.

−0.001 0 (nulo) +0.031 (est.) +0.063
Muestra actual
1.700
27.6%
Muestra necesaria
6.165
100%

Checklist de rigor experimental

  • Métrica primaria pre-registrada: retención a 90 días.
  • Aleatorización a nivel usuario (no sesión) para evitar leakage.
  • SRM check: |1710−1693|/1701 = 1.0% ≤ umbral 1% (marginal, ok).
  • Duración insuficiente: recogidos 3.403 usuarios, se necesitan 12.330. Continuar 3-4 semanas más.
  • Corrección Bonferroni pendiente si se reportan métricas secundarias (open rate, feature adoption).
2
Modelo Predictivo de Churn
5-fold Stratified CV · n=1.200 cuentas · 7.3% churn rate

Comparativa de modelos — Validación cruzada estratificada (5 folds)

Modelo AUC-ROC AUC-PR Overfit Gap Veredicto
Baseline (DummyClassifier) 0.500 ±0.00 0.073 ±0.00 0.000 Referencia
Logistic Regression ⭐ 0.702 ±0.011 0.179 ±0.030 0.035 Campeón
GBM (Gradient Boosting) 0.659 ±0.058 0.169 ±0.044 0.341 ⚠ Sobreajuste

El GBM tiene un overfit_gap de 0.341 — muy elevado. Logistic Regression generaliza mejor con esta muestra. Recomendamos regularización más agresiva en GBM (max_depth=2, min_child_weight=10) o ampliar el dataset.

Top-8 features por importancia (GBM)

days_since_login
43.2%
tenure_months
15.5%
logins_30d
12.6%
features_used
9.4%
exports_30d
6.0%
company_size_11-50
3.8%
mrr
3.2%
plan_starter
3.1%

Pipeline de features (production-ready)

from sklearn.pipeline import Pipeline from sklearn.compose import ColumnTransformer # Numeric: median imputation + standardization numeric_pipe = Pipeline([ ("impute", SimpleImputer(strategy="median")), ("scale", StandardScaler()), ]) # Categorical: mode imputation + OHE cat_pipe = Pipeline([ ("impute", SimpleImputer(strategy="most_frequent")), ("encode", OneHotEncoder(handle_unknown="ignore")), ]) preprocessor = ColumnTransformer([ ("num", numeric_pipe, NUMERIC_COLS), ("cat", cat_pipe, CAT_COLS), ]) # Fit SOLO en train split — nunca en full dataset X_tr = preprocessor.fit_transform(df_train) X_te = preprocessor.transform(df_test)
Señales de riesgo de churn identificadas
  • Días desde último login > 14d — señal #1 de abandono
  • Tenure < 3 meses — periodo crítico de onboarding
  • Logins < 3/mes — engagement muy bajo
  • plan=starter + features_used < 2 — sin adopción de valor

Checklist de evaluación de modelos

  • AUC-PR reportado además de AUC-ROC (dataset con churn=7.3% — muy desbalanceado).
  • Baseline DummyClassifier superado: LR +20.2pp en AUC-ROC.
  • GBM: overfit_gap=0.341 supera umbral >0.05. Ajustar hiperparámetros antes de producción.
  • Calibrar probabilidades con Platt Scaling antes de usar scores en campaña de retención.
  • Validar importancias con SHAP values — pendiente ejecución en entorno con más datos.
  • Validación cruzada estratificada (StratifiedKFold) para preservar balance de clases.
3
Inferencia Causal — Diferencias en Diferencias
Onboarding guiado Oct 2025 · Panel jul–ene 2026 · HC3 robust SE
ATT estimado
−6.6pp
reducción churn en cuentas con onboarding guiado (post Oct 2025)
p-valor (HC3)
0.079
marginalmente no significativo (α=5%); tendencia positiva clara
IC 95%
[−13.9pp, +0.8pp]
intervalo cruza el cero — necesita más observaciones post-treatment

Churn rate pre/post por grupo

GrupoPre-Oct 2025Post-Oct 2025Cambio
Control (cuentas existentes) 12.0% 11.0% −1.0pp
Treatment (cuentas nuevas con onboarding) 18.0% 12.0% −6.0pp
DiD (ATT) −5.0pp (estimado)

Las cuentas nuevas parten con más churn (early-life) — el onboarding guiado cierra parte de esa brecha.

Checklist de rigor causal

  • Errores estándar HC3 robustos a heterocedasticidad.
  • Validar parallel trends en el período pre (jul–sep 2025).
  • Panel corto (7 meses) — añadir datos a Q3 2026 aumentará potencia.
  • Considerar propensity score matching si los grupos difieren en MRR baseline.
  • Se reporta ATT con IC, no solo significancia estadística.
4
Recomendaciones Ejecutivas
Acciones prioritarias para GrowFlow
🔬
Extender el A/B de SmartSequences
El experimento está infrapotenciado al 28%. Necesitas ~4.700 usuarios más por variante (~3-4 semanas adicionales). El lift del 9.2% es económicamente significativo: proyecta +$38K ARR si se confirma.
🚨
Activar alerta de churn en 14d sin login
"days_since_login" explica el 43% de la varianza del modelo. Configura un trigger automático: si una cuenta no hace login en 14 días, envía una secuencia de reactivación personalizada (usar SmartSequences).
📈
Escalar el onboarding guiado
La reducción de churn en cuentas nuevas es de −6.6pp (p=0.08). Aunque no supera el umbral formal, la dirección y magnitud del efecto justifican escalar el onboarding guiado a todos los planes en Q3 2026.
🤖
Regularizar el GBM para producción
El overfit gap de 0.341 es inaceptable en producción. Reducir max_depth a 2, aumentar min_child_weight a 10 y aplicar early stopping. Objetivo: overfit_gap < 0.05 manteniendo AUC-ROC > 0.70.
📊
Ampliar dataset para modelos
Con n=1.200 y churn=7.3%, solo hay 88 eventos de churn — muy pocos para AUC-PR fiable. Apunta a n=5.000+ con mínimo 350 churns. Considera SMOTE para balancear en training.
Logging en MLflow desde hoy
Registrar cada experimento con mlflow.log_params + mlflow.log_metrics + mlflow.sklearn.log_model. Antes de deploy a producción, siempre comparar contra el modelo en producción en el mismo holdout set.