A/B testing onest pe campanii — cu holdout real, nu pe instinct.
Framework de experimentare A/B + Bayesian pentru orice recomandare AI. Raportăm și p-value frequentist, și posterior probability. Sample-size guard la 30+ trials. Decizie automată cu confidence interval. Niciun „looks promising" pe instinct.
Două metrici, două statistici.
Diferite metrice cer diferite teste. Rate metrics (rate de conversie, click rate) folosesc Beta-Binomial conjugate. Continuous metrics (revenue per row, AOV) folosesc Welch's t-test + bootstrap CI. Sample-size guard la 30+ trials pe ambele.
| Metric kind | Frequentist | Bayesian | Sample-size guard |
|---|---|---|---|
rate Binary success/failure per entity | Two-proportion `z-test` → p-value | Spune direct cât de probabil e ca B să fie mai bun ca A — ca procent (ex. „97% șanse”) — plus intervalul realist în care se află diferența. | Ambele variants ≥30 trials; sub asta → `inconclusive` |
continuous Revenue per row, AOV, time on site | Welch's `t-test (equal_var=False)` → p-value | Spune cu cât diferă în medie cele două variante și cât de sigură e estimarea — un interval de încredere de 95%. | Ambele variants ≥30 rows; sub asta → `inconclusive` |
P-value și posterior — răspund la întrebări diferite.
Statistica nu-i religia. Raportăm ambele pentru că răspund la întrebări complementare. Frequentist e standard în comunitate, Bayesian e ce vrei să auzi când iei o decizie de buget. Nu te forțăm să alegi.
P-value: cât de surprinzător?
Pragul standard: p < 0.05. Sub asta, datele sunt destul de surprinzătoare ca să rejectăm null hypothesis (că variants sunt egale). Util pentru audit, pentru rapoarte către clienți cu cerințe de compliance, pentru a vorbi aceeași limbă cu academia.
P(B > A): cât de încrezător ești?
Pragul nostru: P(B>A) > 0.95 (sau invers). Direct interpretabil — „suntem 97.8% siguri că modelul nou e mai bun". Asta e ce vrei să auzi când iei o decizie de a redirecționa €100K din buget media. Plus credible interval pentru magnitudinea efectului.
Patru stări, una singură activă la un moment dat.
Audit log append-only pentru fiecare tranziție de status. Un experiment „running" nu poate deveni brusc „archived" fără să rămână urmă cine, când și de ce.
Draft
Definim hypothesis, metric (rate sau continuous), variants cu allocation %, target entity type. Nu colectează încă date.
Running
Assignment activ — entitățile primesc variant deterministic. Results se acumulează. Audit cu started_at timestamp.
Completed
Analiză finală cu p-value + posterior + winner declaration (sau inconclusive). Lock pe results — nu se mai pot adăuga date.
Archived
Read-only retenție pe termen lung. Util pentru re-rulări în context istoric, audits, sau pattern analysis pe meta-experiments.
Orice acțiune AI poate intra într-un experiment.
Atașăm un experiment și o variantă oricărei recomandări AI, fără să schimbăm logica de business. Mai jos, exemple de acțiuni pe care le testăm — orice altă acțiune se adaugă la fel.
- 01
Reallocare buget între campanii
A: distribuție actuală · B: distribuție recomandată de model. Aplică-se la cost-per-acquisition sau ROAS per cont agregat.
Continuous · Welch's t - 02
Pauză creative low-performing
A: lăsăm creative rulând · B: pauzăm pe baza recomandării. Click rate și revenue per impression pe perioada post-decizie.
Rate · Beta-Binomial - 03
Scale produse hot
A: bid actual · B: bid scaled cu 20% pe Profit-Leaders. Măsurăm conversion rate și marginal CPA.
Rate · Beta-Binomial - 04
Audience exclusion suggestions
A: audience nemodificat · B: audience cu segmente excluse. CTR și cost per click raportat.
Rate · Beta-Binomial - 05
Title variants pentru ad copy
A: title actual · B: title generat de copywriter agent + review. CTR pe primele 7 zile post-rotation.
Rate · Beta-Binomial - 06
Dayparting schedule
A: 24/7 even budget · B: heavy weights orele 17-23. Revenue per impression pe ferestrele de timp.
Continuous · Welch's t
Trei lucruri pe care nu le compromitem.
Honestă statistică e o disciplină, nu o opțiune. Aceste trei reguli ne țin în lina dreaptă chiar și când clientul vrea „un rezultat repede".
Niciodată sub n=30
Refuzăm să declarăm „win" cu eșantion mic. Sample-size guard hard-coded — chiar și pentru experiments featured în review către board.
SHA-256 deterministic
Assignment-ul folosește hash peste (experiment_id, entity_id). Aceeași entitate primește mereu același variant — reproducibilitate totală pentru audit.
Audit log append-only
Fiecare tranziție de status (draft→running→completed) e înregistrată cu actor, timestamp, motiv. Imposibil de șters retroactiv. Audit-uri externe pot verifica integritatea oricând.
Vezi experimente reale de la clienții noștri.
În demo-ul de 30 min îți arătăm dashboard-ul Experiments pe un cont real (date anonimizate), cu experimentele active, p-value-uri și posterior probabilities. Vezi cum funcționează înainte să te decizi.