Randomizzazione e Dimensione del Campione
Scorri per mostrare il menu
L'assegnazione casuale è la base di test A/B affidabili. Assegnando gli utenti ai gruppi in modo casuale, si garantisce che entrambi i gruppi siano statisticamente simili, riducendo il rischio di bias di selezione. Il bias di selezione si verifica quando alcuni utenti hanno maggiori probabilità di finire in un gruppo rispetto a un altro, il che può distorcere i risultati e portare a conclusioni errate. Senza un'adeguata randomizzazione, le differenze tra i gruppi potrebbero essere causate da caratteristiche sottostanti piuttosto che dalla variabile che si sta testando.
Diverse tecniche di randomizzazione sono comunemente utilizzate nei test A/B:
- Randomizzazione semplice: ogni utente ha la stessa probabilità di essere assegnato a qualsiasi gruppo, spesso utilizzando un generatore di numeri casuali;
- Randomizzazione a blocchi: gli utenti sono raggruppati in blocchi e, all'interno di ciascun blocco, vengono assegnati casualmente ai diversi gruppi per mantenere l'equilibrio durante tutto il test;
- Randomizzazione stratificata: gli utenti sono suddivisi in strati in base a caratteristiche (come età o posizione), e la randomizzazione avviene all'interno di ciascuno strato per garantire che tutti i sottogruppi siano rappresentati.
La randomizzazione semplice è la più diretta ed è spesso sufficiente per la maggior parte degli esperimenti digitali. Tuttavia, tecniche più avanzate aiutano a mantenere l'equilibrio quando si lavora con campioni di dimensioni ridotte o sottogruppi importanti.
1234567891011121314151617import random # Simulating random assignment of 20 users to groups 'A' and 'B' users = [f"user_{i+1}" for i in range(20)] groups = ['A', 'B'] # Dictionary to hold group assignments assignment = {} for user in users: # Randomly choosing a group for each user assigned_group = random.choice(groups) assignment[user] = assigned_group # Printing out the assignment for user, group in assignment.items(): print(f"{user} assigned to group {group}")
Determinare la dimensione del campione corretta è fondamentale per l'affidabilità dei risultati di un test A/B. Un campione troppo piccolo può portare a risultati inaffidabili o inconcludenti, mentre un campione inutilmente grande spreca risorse. La dimensione del campione influisce direttamente sulla potenza statistica del test, ovvero la probabilità di rilevare una vera differenza se esiste.
I concetti chiave nel calcolo della dimensione del campione includono:
- Effetto minimo rilevabile (MDE): la più piccola differenza tra i gruppi che si desidera poter rilevare;
- Livello di significatività (alfa): la probabilità di un falso positivo (solitamente impostata a 0,05);
- Potenza (1 - beta): la probabilità di rilevare un vero effetto (solitamente impostata a 0,8 o 80%).
L'analisi della potenza combina questi fattori per stimare il numero minimo di utenti necessari in ciascun gruppo. Effetti di dimensioni maggiori o livelli di significatività più alti richiedono meno utenti, mentre effetti più piccoli o una potenza maggiore richiedono più utenti.
12345678910111213141516171819202122from scipy.stats import norm import math # Parameters for sample size calculation alpha = 0.05 # Significance level power = 0.8 # Desired power p1 = 0.10 # Baseline conversion rate (control group) p2 = 0.13 # Expected conversion rate (treatment group) effect_size = abs(p2 - p1) # Minimum detectable effect # Calculate pooled standard deviation pooled_prob = (p1 + p2) / 2 std_dev = math.sqrt(2 * pooled_prob * (1 - pooled_prob)) # Z-scores for alpha and power z_alpha = norm.ppf(1 - alpha / 2) z_beta = norm.ppf(power) # Sample size formula for two-proportion z-test n = ((z_alpha + z_beta) * std_dev / effect_size) ** 2 print(f"Required sample size per group: {math.ceil(n)}")
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione