Senza categoria

Campionamento e Dimensione Campionaria: Quanti Dati Servono?

Nella vita di tutti i giorni, come nella web analytics, dobbiamo spesso prendere decisioni basate su informazioni incomplete. Quanti dati mi servono per capire se questa modifica alla landing page ha funzionato? Mille visite bastano? Diecimila sono troppe?

Non possiamo quasi mai misurare l’intera popolazione (ad esempio, tutti i futuri visitatori di un sito). Dobbiamo lavorare su un campione. E qui sta l’equilibrio delicato: un campione troppo piccolo porta a conclusioni sbagliate, uno inutilmente grande fa sprecare tempo e risorse. La domanda diventa allora: quanti dati ci servono davvero?

Come scegliere chi misurare: i tipi di campionamento

Prima di capire quanti dati ci servono, dobbiamo capire come raccoglierli. I tre metodi principali sono:

  • Campionamento casuale semplice: Ogni utente ha esattamente la stessa probabilità di essere scelto. È il gold standard, quello che cerchiamo di ottenere quando randomizziamo gli utenti in un A/B test.
  • Campionamento stratificato: Dividiamo gli utenti in gruppi (es. traffico Mobile e Desktop) e campioniamo casualmente all’interno di ogni gruppo, rispettando le proporzioni originali. Assicura che nessuna minoranza importante venga ignorata.
  • Campionamento sistematico: Scegliamo un utente ogni k (es. un utente ogni 10). Facile da implementare, ma insidioso quando nei dati si nasconde una ciclicità (immaginiamo di campionare un utente ogni 7: se prendiamo solo i lunedì, la stima sarà deformata in partenza).

La dimensione campionaria: la matematica dietro la stima

L’intuizione è semplice: più è piccolo l’effetto che cerchiamo (o più i dati sono variabili), più dati ci servono per distinguerlo dal rumore di fondo. Sembra difficile da formalizzare? È più lineare di quanto sembri.

Per calcolare il numero esatto, ci servono tre ingredienti:

  • Livello di confidenza: Quanto vogliamo essere sicuri? Di solito si usa il 95% (che corrisponde a uno Z-score di 1.96).
  • Margine di errore (E): L’errore massimo che siamo disposti ad accettare (es. 1% o 0.01).
  • Proporzione attesa (p): La stima del tasso di conversione. Se non ne abbiamo idea, usiamo 0.5 (50%): è il caso di massima incertezza e darà il campione più grande possibile, quindi la scelta più conservativa.

La formula per stimare una proporzione (come il Conversion Rate) è:

n = (Z² × p(1 – p)) / E²

Calcoliamolo in R e Python

Facciamo un esempio al volo. Vogliamo stimare il Conversion Rate di una nuova pagina con un margine di errore dell’1% (0.01) e un livello di confidenza del 95% (Z = 1.96). Per cautela, impostiamo p = 0.5.

Gli esempi seguono sia in R sia in Python: ognuno scelga il linguaggio con cui ha più familiarità.

Calcoliamo in R:

# Calcolo della dimensione campionaria per una proporzione
Z <- 1.96
p <- 0.5
E <- 0.01

n <- (Z^2 * p * (1-p)) / E^2
print(paste("Dimensione necessaria:", round(n)))
# Output: Dimensione necessaria: 9604

Verifichiamo in Python:

# Calcolo della dimensione campionaria per una proporzione
Z = 1.96
p = 0.5
E = 0.01

n = (Z**2 * p * (1-p)) / E**2
print(f"Dimensione necessaria: {round(n)}")
# Output: Dimensione necessaria: 9604

Come si vede, servono circa 9.604 utenti per avere quella precisione. n.b.: se accettassimo un margine di errore del 2% (E=0.02), il numero crollerebbe a circa 2.401. È l’effetto dell’E al quadrato a denominatore: dimezzare la pretesa di precisione significa dividere per quattro il campione richiesto. Va sempre tenuto bene a mente quando si decide quale margine accettare.

Dalla stima all’A/B Testing

La formula vista finora serve a stimare una singola proporzione. Ma nella pratica quotidiana della CRO (Conversion Rate Optimization) il problema è quasi sempre un altro: confrontare due proporzioni, come in un A/B test.

In quel caso la logica è la stessa, ma la formula si complica perché entrano in gioco due concetti nuovi: l’Effect Size (la minima differenza che vogliamo rilevare) e la Potenza Statistica (come dicono gli anglosassoni, power).

Per evitare di calcolarlo a mano ho preparato un calcolatore interattivo del sample size per A/B test: fa il lavoro sporco al posto nostro e indica anche per quanti giorni far girare il test, dato il traffico medio della pagina.

Errore campionario vs Bias

Va sempre tenuto bene a mente un punto, prima di chiudere. L’errore di campionamento (quello che la formula gestisce) è inevitabile e si riduce aumentando i dati. Ma c’è un nemico molto più insidioso, e nessuna formula lo cattura: il bias.

Se testiamo una pagina solo durante il weekend, possiamo anche raccogliere un milione di visite (errore campionario praticamente nullo), ma il campione non sarà rappresentativo degli utenti infrasettimanali. Dunque: nessuna formula può salvare un campione distorto all’origine. Meglio mille osservazioni ben raccolte di un milione raccolte male.

Prova tu

Una pagina prodotto riceve circa 10.000 impressioni al mese su Google, con un CTR osservato del 3,5%. Vogliamo stimare il vero CTR con un margine di errore di 1 punto percentuale (E = 0,01) e una confidenza del 95%.

  1. Calcola la dimensione campionaria necessaria con la formula vista, prima usando p = 0,5 (caso conservativo) e poi p = 0,035 (CTR osservato).
  2. Confronta i due risultati: di quanto cambia il fabbisogno di dati quando abbiamo una stima ragionevole di p?
  3. Considerando le 10.000 impressioni al mese, in quanti mesi raccogliamo abbastanza dati per soddisfare la stima conservativa?
  4. Se accettassimo un margine del 2% (E = 0,02), come cambierebbe il tempo di raccolta?

Suggerimento: in R basta una funzione minima — sample_size <- function(Z, p, E) ceiling((Z^2 * p * (1-p)) / E^2) — da chiamare due volte con i due valori di p.


Adesso sappiamo come raccogliere un campione adeguato e quanti dati ci servono. Resta una domanda: come usiamo quel campione per confrontare in modo rigoroso due versioni della stessa pagina? È qui che entra in gioco l’A/B testing vero e proprio, ed è il prossimo tassello del percorso.


Per approfondire

Se vuoi approfondire il tema del campionamento, dei bias che possono distorcerlo e della logica dell’inferenza statistica, L’arte della statistica di David Spiegelhalter è il compagno di viaggio più adatto. Spiegelhalter dedica pagine illuminanti a casi reali — sondaggi sbagliati, campioni di convenienza, statistiche che ingannano — e mostra come la matematica del campionamento valga poco senza una riflessione attenta su come i dati vengono raccolti.

autore-articoli

Share
Published by
autore-articoli

Recent Posts

Calcolatore Sample Size per A/B Test

Una delle domande più ricorrenti quando si progetta un A/B test è: quanti utenti mi…

2 mesi ago

Anomaly detection: come identificare valori anomali nei dati

Tre metodi statistici per identificare valori anomali nei dati: z-score, IQR di Tukey e test…

2 mesi ago

Statistica bayesiana: come imparare dai dati, un passo alla volta

Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, l'inferenza statistica da una prospettiva…

2 mesi ago

A/B Testing: come condurre esperimenti statisticamente validi (e gli errori da evitare)

Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle…

3 mesi ago

Il Teorema del Limite Centrale: perché la statistica funziona (anche quando i dati non sono normali)

Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, la distribuzione normale e le…

3 mesi ago

Intervalli di confidenza: cosa sono, come calcolarli (e cosa NON significano)

Abbiamo avuto modo di esaminare, nel corso dei precedenti articoli, come funziona il test delle…

3 mesi ago