{"id":3385,"date":"2026-02-20T09:48:38","date_gmt":"2026-02-20T08:48:38","guid":{"rendered":"https:\/\/www.gironi.it\/blog\/?p=3385"},"modified":"2026-07-15T09:27:51","modified_gmt":"2026-07-15T08:27:51","slug":"ab-testing","status":"publish","type":"post","link":"https:\/\/www.gironi.it\/blog\/ab-testing\/","title":{"rendered":"A\/B Testing: come condurre esperimenti statisticamente validi (e gli errori da evitare)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il <a href=\"\/blog\/il-test-delle-ipotesi\/\">test delle ipotesi<\/a> e come il <a href=\"\/blog\/il-t-test-per-due-campioni-testare-una-ipotesi-per-campioni-dipendenti-o-indipendenti\/\">t-test per due campioni<\/a> ci permetta di confrontare due gruppi in modo rigoroso. Abbiamo anche costruito <a href=\"\/blog\/intervalli-di-confidenza\/\">intervalli di confidenza<\/a>, imparato a quantificare l&#8217;incertezza delle nostre stime, e visto con il <a href=\"\/blog\/teorema-del-limite-centrale\/\">Teorema del Limite Centrale<\/a> perch\u00e9 tutto questo funziona anche quando i dati non sono normali.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ma c&#8217;\u00e8 una domanda che, nella realt\u00e0 operativa di chi fa SEO e marketing, si presenta con una frequenza quasi quotidiana: <strong>quale variante funziona meglio?<\/strong> Quale title tag porta pi\u00f9 click? Quale landing page converte di pi\u00f9? Quale meta description attira l&#8217;attenzione? Non \u00e8 una domanda accademica: \u00e8 la domanda che separa le decisioni basate sui dati dalle opinioni travestite da strategie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La buona notizia \u00e8 che per rispondere abbiamo gi\u00e0 tutti gli strumenti. L&#8217;<strong>A\/B testing<\/strong> non \u00e8 altro che l&#8217;applicazione diretta dei concetti di inferenza statistica che abbiamo costruito passo dopo passo: test delle ipotesi, confronto tra gruppi, significativit\u00e0. In questo articolo mettiamo tutto insieme.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div style=\"background-color: #f8f9fa;padding: 20px;border-radius: 8px;margin-bottom: 30px;border-left: 4px solid #4a90e2\">\n<h3 style=\"margin-top: 0\">In questo articolo:<\/h3>\n<ul style=\"margin-bottom: 0\">\n<li><a href=\"#cose-ab-test\">Cos&#8217;\u00e8 un A\/B test<\/a><\/li>\n<li><a href=\"#formulare-test\">Formulare correttamente un A\/B test<\/a><\/li>\n<li><a href=\"#esempio-landing\">Esempio pratico: conversion rate di due landing page<\/a><\/li>\n<li><a href=\"#errori-comuni\">Gli errori pi\u00f9 comuni<\/a><\/li>\n<li><a href=\"#frequentista-bayesiano\">Approccio frequentista vs bayesiano<\/a><\/li>\n<li><a href=\"#esempio-seo\">Esempio pratico SEO: meta description A\/B test<\/a><\/li>\n<li><a href=\"#faq\">FAQ<\/a><\/li>\n<li><a href=\"#prova-tu\">Prova tu<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cose-ab-test\">Cos&#8217;\u00e8 un A\/B test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un A\/B test \u00e8, nella sua essenza, un <strong>esperimento controllato<\/strong>: prendiamo due varianti di qualcosa (una pagina, un titolo, una call-to-action), assegniamo casualmente gli utenti a una delle due varianti, e misuriamo quale produce risultati migliori.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La variante <strong>A<\/strong> \u00e8 il <strong>controllo<\/strong> (la versione attuale, quella che stiamo gi\u00e0 usando). La variante <strong>B<\/strong> \u00e8 il <strong>trattamento<\/strong> (la nuova versione che vogliamo testare). La logica \u00e8 la stessa di un esperimento scientifico: cambiamo una sola variabile alla volta, manteniamo tutto il resto costante, e osserviamo se il cambiamento produce un effetto misurabile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tre elementi rendono un A\/B test affidabile. La <strong>randomizzazione<\/strong>: gli utenti vengono assegnati a A o B in modo casuale. Questo \u00e8 fondamentale, perch\u00e9 se mostrassimo A di mattina e B di pomeriggio, ogni differenza osservata potrebbe dipendere dall&#8217;orario, non dalla variante. Il <strong>gruppo di controllo<\/strong>: senza A come riferimento, non sapremmo se i risultati di B sono buoni o cattivi. E infine una <strong>metrica di successo<\/strong> definita in anticipo: CTR, tasso di conversione, tempo sulla pagina. La metrica va scelta <em>prima<\/em> di raccogliere i dati, non dopo (torneremo su questo punto tra poco).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"675\" src=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-flow-1.png\" class=\"wp-image-4250\" alt=\"Flusso di un A\/B test\" srcset=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-flow-1.png 650w, https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-flow-1-289x300.png 289w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><figcaption class=\"wp-element-caption\">Flusso di un A\/B test<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Lo schema sintetizza il percorso che seguiremo: dalla domanda iniziale alla decisione finale, passando per ipotesi, randomizzazione, raccolta e test. Ogni passaggio ha le sue insidie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ma perch\u00e9 serve la statistica? Perch\u00e9 i dati sono rumorosi. Se la variante A ha un CTR del 5,0% e la variante B del 5,3%, quella differenza \u00e8 reale o \u00e8 solo fluttuazione casuale?<br> L&#8217;occhio nudo non pu\u00f2 distinguere: ci serve un test formale. Ed \u00e8 esattamente il <strong>test per due campioni<\/strong> che abbiamo gi\u00e0 visto \u2014 applicato a proporzioni anzich\u00e9 a medie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"formulare-test\">Formulare correttamente un A\/B test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Prima di raccogliere dati, dobbiamo impostare il test in modo rigoroso. Vediamo come.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Scegliere la metrica.<\/strong> La metrica deve essere chiara, misurabile e direttamente collegata all&#8217;obiettivo. Per un title tag, la metrica naturale \u00e8 il <strong>CTR<\/strong> (Click-Through Rate). Per una landing page, il <strong>tasso di conversione<\/strong>. Per un articolo del blog, magari il <strong>tempo medio sulla pagina<\/strong>.<br> Va sempre tenuto bene a mente: una metrica vaga (&#8220;la pagina piace di pi\u00f9&#8221;) non \u00e8 una metrica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Definire le ipotesi.<\/strong> Come in ogni test statistico, partiamo da un&#8217;ipotesi nulla e un&#8217;ipotesi alternativa:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\\( H_0 \\): le due varianti hanno lo stesso effetto (nessuna differenza tra A e B)<\/li><li>\\( H_1 \\): le due varianti hanno un effetto diverso (esiste una differenza)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Il test assume che le osservazioni siano <strong>indipendenti<\/strong> e che l&#8217;assegnazione alle varianti sia <strong>realmente casuale<\/strong>. Nella pratica, questo significa: niente sessioni dello stesso utente contate due volte, niente alternanza oraria A-di-mattina-B-di-pomeriggio. Sono condizioni che sembrano ovvie, ma vengono violate pi\u00f9 spesso di quanto si creda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Il test statistico.<\/strong> Quando confrontiamo due proporzioni (come due CTR o due tassi di conversione), il test appropriato \u00e8 lo <strong>z-test per due proporzioni<\/strong>. La logica \u00e8 la stessa del t-test per due campioni, ma adattata a dati binari (click\/non-click, conversione\/non-conversione).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La statistica test si calcola cos\u00ec. Prima, calcoliamo la <strong>proporzione pooled<\/strong> (combinata), che \u00e8 la nostra migliore stima della proporzione comune sotto l&#8217;ipotesi nulla:<\/p>\n\n\n\n\\( hat{p} = frac{x_1 + x_2}{n_1 + n_2} \\ \\)\n\n\n\n<p class=\"wp-block-paragraph\">dove \\( x_1 \\) e \\( x_2 \\) sono i successi (click, conversioni) nei due gruppi, e \\( n_1 \\) e \\( n_2 \\) le dimensioni dei campioni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poi calcoliamo la statistica z:<\/p>\n\n\n\n\\( z = frac{hat{p}_1 &#8211; hat{p}_2}{sqrt{hat{p}(1-hat{p})left(frac{1}{n_1} + frac{1}{n_2}right)}} \\ \\)\n\n\n\n<p class=\"wp-block-paragraph\">Al numeratore c&#8217;\u00e8 la differenza osservata tra le due proporzioni; al denominatore, l&#8217;errore standard sotto l&#8217;ipotesi nulla.<br> Il rapporto ci dice quante &#8220;unit\u00e0 di errore standard&#8221; separano le due proporzioni: pi\u00f9 \u00e8 alto, pi\u00f9 la differenza \u00e8 difficile da attribuire al caso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Esempio: CTR di due title tag<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Facciamo un esempio concreto. Abbiamo testato due varianti di title tag per una pagina importante del sito:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Title A<\/strong> (controllo): 1500 impressioni, 75 click \u2192 CTR = 5,0%<\/li><li><strong>Title B<\/strong> (trattamento): 1500 impressioni, 105 click \u2192 CTR = 7,0%<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Il title B sembra migliore, ma la differenza \u00e8 statisticamente significativa? Calcoliamo passo dopo passo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 1<\/strong>: la proporzione pooled:<\/p>\n\n\n\n\\( hat{p} = frac{75 + 105}{1500 + 1500} = frac{180}{3000} = 0{,}06 \\ \\)\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 2<\/strong>: l&#8217;errore standard:<\/p>\n\n\n\n\\( SE = sqrt{0{,}06 times 0{,}94 times left(frac{1}{1500} + frac{1}{1500}right)} = sqrt{0{,}0564 times 0{,}00133} approx 0{,}00867 \\ \\)\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 3<\/strong>: la statistica z:<\/p>\n\n\n\n\\( z = frac{0{,}07 &#8211; 0{,}05}{0{,}00867} approx 2{,}31 \\ \\)\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 4<\/strong>: il p-value. Per un test a due code, \\( p approx 0{,}021 \\).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dunque: il p-value \u00e8 inferiore a 0,05. Possiamo rifiutare l&#8217;ipotesi nulla e concludere che la differenza tra i due title tag \u00e8 statisticamente significativa. Il title B ha un CTR significativamente pi\u00f9 alto \u2014 dal punto di vista statistico.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1020\" height=\"630\" src=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-z.png\" class=\"wp-image-4242\" alt=\"Test z per due proporzioni: distribuzione sotto H\u2080 con il valore osservato dell&apos;esempio\" srcset=\"https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-z.png 1020w, https:\/\/www.gironi.it\/blog\/wp-content\/uploads\/2026\/07\/ab-test-z-300x185.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Test z per due proporzioni: distribuzione sotto H\u2080 con il valore osservato dell&#8217;esempio<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La figura mostra cosa significa &#8220;statisticamente significativo&#8221; con i nostri dati. La curva \u00e8 la distribuzione della differenza standardizzata sotto H\u2080: se non ci fosse alcuna differenza reale tra A e B, il valore di z cadrebbe quasi sempre tra \u22121,96 e +1,96 (le linee rosse). Il nostro z = 2,31 cade oltre la soglia, nella zona di rifiuto. L&#8217;area colorata in arancione \u00e8 il p-value: la probabilit\u00e0 di osservare una differenza cos\u00ec grande (o pi\u00f9) per puro caso \u00e8 solo del 2,1% \u2014 sufficientemente piccola da escludere il caso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Calcoliamo lo stesso test in R:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n1 &lt;- 1500; x1 &lt;- 75    # Title A\nn2 &lt;- 1500; x2 &lt;- 105   # Title B\np1 &lt;- x1 \/ n1  # 0.05\np2 &lt;- x2 \/ n2  # 0.07\n\np_pool &lt;- (x1 + x2) \/ (n1 + n2)\nse &lt;- sqrt(p_pool * (1 - p_pool) * (1\/n1 + 1\/n2))\nz &lt;- (p2 - p1) \/ se\np_value &lt;- 2 * (1 - pnorm(abs(z)))\n\ncat(\"z =\", round(z, 3), \"n\")\ncat(\"p-value =\", round(p_value, 4), \"n\")<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Risultato: z = 2,306, p-value = 0,0211.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"esempio-landing\">Esempio pratico: conversion rate di due landing page<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Passiamo a un esempio pi\u00f9 articolato. Un e-commerce sta testando due varianti della propria landing page:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Pagina A<\/strong> (design attuale): 1000 visitatori, 35 conversioni \u2192 tasso di conversione = 3,5%<\/li><li><strong>Pagina B<\/strong> (nuovo design): 1000 visitatori, 58 conversioni \u2192 tasso di conversione = 5,8%<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La differenza appare sostanziosa (2,3 punti percentuali), ma con questi numeri \u00e8 sufficiente per escludere il caso?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifichiamo in R con <code>prop.test()<\/code>, che esegue il test per due proporzioni:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>risultato &lt;- prop.test(x = c(35, 58), n = c(1000, 1000))\nprint(risultato)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La funzione restituisce il p-value del test e, cosa molto utile, l&#8217;<strong>intervallo di confidenza della differenza<\/strong> tra le due proporzioni. In questo caso il p-value \u00e8 circa 0,019 \u2014 inferiore a 0,05, quindi la differenza \u00e8 statisticamente significativa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ma \u00e8 l&#8217;intervallo di confidenza della differenza che ci d\u00e0 l&#8217;informazione pi\u00f9 preziosa: non solo <em>se<\/em> B \u00e8 meglio di A, ma <em>di quanto<\/em>, con quale margine di incertezza. Se l&#8217;IC della differenza va da circa 0,4 a 4,2 punti percentuali, sappiamo che B \u00e8 quasi certamente migliore, e il miglioramento si colloca in quell&#8217;intervallo. \u00c8 un&#8217;informazione molto pi\u00f9 ricca di un semplice &#8220;s\u00ec, \u00e8 significativo&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il p-value ci dice se possiamo dubitare dell&#8217;ipotesi nulla; l&#8217;intervallo di confidenza ci dice quanto potrebbe essere grande l&#8217;effetto osservato. Sono due domande diverse, e l&#8217;IC risponde a quella che in fondo ci interessa di pi\u00f9: non solo &#8220;c&#8217;\u00e8 una differenza?&#8221;, ma &#8220;quanto \u00e8 grande?&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">n.b.: <code>prop.test()<\/code> applica una <strong>correzione di continuit\u00e0<\/strong> (correzione di Yates) che rende il test leggermente pi\u00f9 conservativo. Per campioni grandi la differenza \u00e8 trascurabile; per campioni piccoli, \u00e8 una cautela benvenuta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"errori-comuni\">Gli errori pi\u00f9 comuni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;A\/B testing \u00e8 uno strumento potente, ma insidioso. La facilit\u00e0 con cui si pu\u00f2 impostare un test nasconde insidie metodologiche serie. Vediamo le pi\u00f9 frequenti.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fermare il test troppo presto<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c8 la tentazione pi\u00f9 forte: dopo pochi giorni, B sembra nettamente migliore di A. Perch\u00e9 aspettare ancora?<br> Perch\u00e9 quei risultati preliminari sono <strong>rumore<\/strong>, non segnale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il problema ha un nome tecnico: <strong><a href=\"\/blog\/peeking-problem\/\">peeking<\/a><\/strong> (come dicono gli anglosassoni, &#8220;sbirciare&#8221;). Ogni volta che guardiamo i dati intermedi e decidiamo se fermarci, aumentiamo la probabilit\u00e0 di un falso positivo. \u00c8 come lanciare una moneta: se ci fermiamo ogni volta che esce testa tre volte di fila, concluderemo che la moneta \u00e8 truccata. Ma non lo \u00e8 \u2014 semplicemente, non le abbiamo dato abbastanza lanci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Come evitarlo<\/strong>: definire <em>prima<\/em> la dimensione campionaria necessaria e attendere di raggiungere quel numero prima di trarre conclusioni. Nel frattempo, puoi usare il nostro <a href=\"\/blog\/calcolatore-sample-size-ab-test\/\">calcolatore di sample size<\/a> per determinare quanti utenti ti servono prima di avviare il test.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testare troppe varianti senza correzione<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un altro errore frequente: testare tre, quattro, cinque varianti contemporaneamente (A\/B\/C\/D&#8230;) e poi confrontarle tutte a coppie. Il problema \u00e8 quello delle <strong>comparazioni multiple<\/strong>: pi\u00f9 confronti facciamo, pi\u00f9 \u00e8 probabile trovare almeno un risultato significativo per puro caso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con 5 varianti e 10 confronti a coppie, la probabilit\u00e0 di trovare almeno un falso positivo sale dal 5% a quasi il 40%. Non \u00e8 un dettaglio: \u00e8 un errore che invalida l&#8217;intero test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Come evitarlo<\/strong>: se servono confronti multipli, applicare una <strong>correzione di Bonferroni<\/strong> (dividere la soglia \u03b1 per il numero di confronti) o, meglio ancora, limitarsi a testare una variante alla volta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ignorare la potenza del test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Il rischio di falso positivo (errore di tipo I, \u03b1) lo conosciamo bene. Ma c&#8217;\u00e8 un rischio speculare che viene spesso ignorato: il <strong>falso negativo<\/strong> (errore di tipo II, \u03b2). Succede quando B \u00e8 davvero meglio di A, ma il nostro test non riesce a rilevarlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La causa pi\u00f9 comune? Un <strong>campione troppo piccolo<\/strong>. Se abbiamo solo 100 visitatori per variante, il test non ha abbastanza &#8220;potenza&#8221; per rilevare differenze piccole ma reali. Concluderemo &#8220;nessuna differenza significativa&#8221; non perch\u00e9 la differenza non esiste, ma perch\u00e9 non avevamo abbastanza dati per vederla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Come evitarlo<\/strong>: calcolare la dimensione campionaria necessaria <em>prima<\/em> di avviare il test, in base all&#8217;effetto minimo che vogliamo rilevare. \u00c8 il tema della <strong>power analysis<\/strong>: usa il <a href=\"\/blog\/calcolatore-sample-size-ab-test\/\">calcolatore di dimensione campionaria<\/a> per verificare se il tuo test ha abbastanza potenza.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Confondere significativit\u00e0 statistica con significativit\u00e0 pratica<\/h3>\n\n\n\n<div class=\"wp-block-group has-background\" style=\"background-color:#f5f7f9;margin-top:2.5rem;margin-bottom:2.5rem;padding-top:1.5rem;padding-right:1.5rem;padding-bottom:1.5rem;padding-left:1.5rem\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Un p-value basso non significa automaticamente che il risultato sia importante. Con campioni molto grandi, anche differenze microscopiche diventano statisticamente significative. Se testiamo due varianti su 500.000 visitatori, una differenza di CTR dello 0,01% (dal 5,00% al 5,01%) potrebbe risultare significativa. Operativamente, per\u00f2, \u00e8 irrilevante. Il p-value risponde alla domanda &#8220;la differenza \u00e8 reale?&#8221;, non alla domanda &#8220;la differenza \u00e8 grande abbastanza da interessarci?&#8221;. Per quest&#8217;ultima serve una misura diversa \u2014 l&#8217;<strong>effect size<\/strong> \u2014 che tratteremo in un articolo dedicato.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequentista-bayesiano\">Approccio frequentista vs bayesiano<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tutto ci\u00f2 che abbiamo visto finora segue l&#8217;approccio <strong>frequentista<\/strong>: calcoliamo una statistica test, la confrontiamo con una distribuzione di riferimento, otteniamo un p-value e prendiamo una decisione binaria (rifiutare o non rifiutare \\( H_0 \\)).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Funziona, e funziona bene. Ma ha dei limiti che nella pratica quotidiana si avvertono. Il p-value non ci dice &#8220;di quanto \u00e8 meglio B rispetto ad A&#8221;. Non ci dice &#8220;qual \u00e8 la probabilit\u00e0 che B sia davvero superiore&#8221;. E se raccogliamo nuovi dati, non possiamo semplicemente aggiornare il risultato: dobbiamo ricalcolare tutto da capo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esiste un approccio alternativo che risponde direttamente alla domanda che in fondo ci interessa di pi\u00f9: <strong>qual \u00e8 la probabilit\u00e0 che B sia meglio di A?<\/strong><br> \u00c8 l&#8217;approccio <strong>bayesiano<\/strong>, a cui abbiamo dedicato un articolo a s\u00e9: <a href=\"\/blog\/ab-test-bayesiano\/\">A\/B test bayesiano<\/a>, dove vediamo come costruire un posterior Beta per ciascuna variante, calcolare P(B &gt; A), leggere la distribuzione della differenza (di <em>quanto<\/em> B \u00e8 meglio, non solo <em>se<\/em>) e decidere quando fermare il test usando l&#8217;expected loss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"esempio-seo\">Esempio pratico SEO: meta description A\/B test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vediamo un ultimo scenario, molto comune nella pratica quotidiana. Abbiamo due varianti di meta description per una pagina chiave del sito. Alternando le due versioni (due settimane ciascuna, per minimizzare effetti stagionali) e consultando i dati di Search Console, otteniamo:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Meta A<\/strong>: 3200 impressioni, 128 click \u2192 CTR = 4,0%<\/li><li><strong>Meta B<\/strong>: 3100 impressioni, 155 click \u2192 CTR = 5,0%<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Verifichiamo in R:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>prop.test(c(128, 155), c(3200, 3100))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il p-value \u00e8 circa 0,064 \u2014 superiore alla soglia di 0,05, quindi non possiamo rifiutare l&#8217;ipotesi nulla. Anche l&#8217;intervallo di confidenza della differenza include lo zero, confermando la non significativit\u00e0. Un risultato al limite, che ci dice: con questi dati non abbiamo abbastanza evidenza per concludere che la meta B sia davvero migliore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quale approccio usare? Per un test semplice come questo, l&#8217;approccio frequentista con <code>prop.test()<\/code> \u00e8 pi\u00f9 che sufficiente: abbiamo campioni grandi, la domanda \u00e8 chiara. L&#8217;approccio bayesiano diventa pi\u00f9 prezioso quando i campioni sono piccoli, quando vogliamo aggiornare il risultato man mano che arrivano nuovi dati, o quando abbiamo conoscenze pregresse da incorporare (ad esempio, sappiamo che per quel tipo di pagina il CTR \u00e8 tipicamente tra il 3% e il 7%).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ma la decisione operativa non deve basarsi solo sul p-value. Dobbiamo chiederci: la differenza (un punto percentuale di CTR in pi\u00f9) \u00e8 abbastanza grande da giustificare il cambiamento? Con 3000 e pi\u00f9 impressioni al mese, un punto percentuale in pi\u00f9 significa circa 30 click aggiuntivi. \u00c8 significativo <em>per il nostro business<\/em>?<br> Questa \u00e8 una domanda che la statistica non pu\u00f2 risolvere da sola \u2014 \u00e8 una valutazione che spetta a noi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qual \u00e8 la differenza tra test a una coda e a due code?<\/strong><br> Il test a due code verifica se B \u00e8 diverso da A (in meglio o in peggio). Il test a una coda verifica se B \u00e8 <em>migliore<\/em> di A (o <em>peggiore<\/em>, a seconda della direzione). Nel dubbio, si usa sempre il test a due code, pi\u00f9 conservativo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Posso fare A\/B testing con pi\u00f9 di due varianti?<\/strong><br> S\u00ec, ma ogni variante aggiuntiva aumenta il rischio di falsi positivi. Se testi 5 varianti, devi correggere la soglia di significativit\u00e0 (es. Bonferroni). Meglio testare una variante alla volta, a meno che non si usi un design specifico per test multivariati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Il p-value mi dice quanto B \u00e8 meglio di A?<\/strong><br> No. Il p-value dice solo se la differenza osservata \u00e8 compatibile con l&#8217;ipotesi nulla. Per sapere <em>di quanto<\/em> B \u00e8 meglio serve l&#8217;intervallo di confidenza della differenza o una misura di effect size.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quando devo fermare un A\/B test?<\/strong><br> Quando hai raggiunto la dimensione campionaria pianificata, non prima. Fermarsi &#8220;perch\u00e9 B sta vincendo&#8221; \u00e8 la trappola pi\u00f9 comune (peeking). Se il test dura pi\u00f9 del previsto senza raggiungere significativit\u00e0, potrebbe significare che l&#8217;effetto \u00e8 troppo piccolo per essere rilevato con i dati a disposizione.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prova-tu\">Prova tu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un e-commerce sta testando due varianti di call-to-action su una pagina prodotto:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Variante A<\/strong> (&#8220;Aggiungi al carrello&#8221;): 450 visite, 23 conversioni<\/li><li><strong>Variante B<\/strong> (&#8220;Compralo ora&#8221;): 430 visite, 31 conversioni<\/li><\/ul>\n\n\n\n<ol class=\"wp-block-list\"><li>Calcola il tasso di conversione di ciascuna variante<\/li><li>Esegui il test con <code>prop.test(c(23, 31), c(450, 430))<\/code> e interpreta il p-value<\/li><li>L&#8217;intervallo di confidenza della differenza include lo zero?<\/li><li>Al livello di significativit\u00e0 del 5%, la differenza \u00e8 statisticamente significativa?<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Suggerimento: se il p-value \u00e8 superiore a 0,05, non possiamo concludere che una variante sia meglio dell&#8217;altra \u2014 ma questo non significa che siano uguali. Potrebbe semplicemente significare che non abbiamo abbastanza dati. \u00c8 esattamente il problema della potenza del test di cui abbiamo parlato.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;A\/B testing ci offre un framework rigoroso per prendere decisioni basate sui dati, non sulle intuizioni. Ma come abbiamo visto, un test ben condotto ci dice <em>se<\/em> c&#8217;\u00e8 una differenza significativa \u2014 non ci dice quanto sia <em>grande<\/em> quell&#8217;effetto, n\u00e9 quanti dati ci servano per rilevarlo con sicurezza. Sono le domande dell&#8217;<strong>effect size<\/strong> e della <strong>power analysis<\/strong>, i prossimi strumenti nel nostro percorso. Per la dimensione campionaria, il <a href=\"\/blog\/calcolatore-sample-size-ab-test\/\">calcolatore interattivo<\/a> ti permette di ottenere il numero esatto in tempo reale.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Per approfondire<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Se vuoi approfondire la metodologia degli esperimenti online, <a href=\"https:\/\/www.amazon.it\/dp\/1108724264?tag=consulenzeinf-21&amp;ascsubtag=ab-testing\" rel=\"nofollow sponsored noopener\" target=\"_blank\"><em>Trustworthy Online Controlled Experiments<\/em><\/a> di Ron Kohavi, Diane Tang e Ya Xu \u00e8 il riferimento mondiale sull&#8217;A\/B testing. Gli autori hanno guidato le piattaforme di sperimentazione di Microsoft, Amazon e LinkedIn \u2014 e il libro copre tutto, dal design del test alle insidie che abbiamo visto in questo articolo, fino agli aspetti organizzativi che fanno la differenza tra un test ben condotto e un esercizio sterile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per chi vuole esplorare l&#8217;approccio bayesiano all&#8217;A\/B testing (che abbiamo appena introdotto), <a href=\"https:\/\/www.amazon.it\/dp\/1593279566?tag=consulenzeinf-21&amp;ascsubtag=ab-testing\" rel=\"nofollow sponsored noopener\" target=\"_blank\"><em>Bayesian Statistics the Fun Way<\/em><\/a> di Will Kurt \u00e8 un&#8217;introduzione accessibile e sorprendentemente divertente. Spiega prior, posterior e aggiornamento bayesiano con esempi che non richiedono una laurea in matematica \u2014 e usa R per la parte computazionale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo articolo fa parte del percorso <a href=\"\/blog\/approccio-bayesiano\/\">\u00abL&#8217;approccio bayesiano\u00bb<\/a>, la guida ragionata agli articoli su statistica e inferenza bayesiana applicate alla SEO.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle ipotesi e come il t-test per due campioni ci permetta di confrontare due gruppi in modo rigoroso. Abbiamo anche costruito intervalli di confidenza, imparato a quantificare l&#8217;incertezza delle nostre stime, e visto con il Teorema del Limite Centrale perch\u00e9 tutto &hellip; <a href=\"https:\/\/www.gironi.it\/blog\/ab-testing\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;A\/B Testing: come condurre esperimenti statisticamente validi (e gli errori da evitare)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[629],"tags":[],"class_list":["post-3385","post","type-post","status-publish","format-standard","hentry","category-statistica-it"],"lang":"it","translations":{"it":3385,"en":3830},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"paolo","author_link":"https:\/\/www.gironi.it\/blog\/author\/paolo\/"},"uagb_comment_info":6,"uagb_excerpt":"Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle ipotesi e come il t-test per due campioni ci permetta di confrontare due gruppi in modo rigoroso. Abbiamo anche costruito intervalli di confidenza, imparato a quantificare l&#8217;incertezza delle nostre stime, e visto con il Teorema del Limite Centrale perch\u00e9 tutto&hellip;","_links":{"self":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/comments?post=3385"}],"version-history":[{"count":5,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3385\/revisions"}],"predecessor-version":[{"id":4300,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/posts\/3385\/revisions\/4300"}],"wp:attachment":[{"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/media?parent=3385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/categories?post=3385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gironi.it\/blog\/wp-json\/wp\/v2\/tags?post=3385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}