statistica

Guida ai Test Statistici per analisi A/B

I test statistici sono strumenti fondamentali per l’analisi dei dati e la presa di decisioni informate. Scegliere il test appropriato dipende dalle caratteristiche dei dati, dalle ipotesi da testare e dalle assunzioni sottostanti.

In questo blog, ho trattato separatamente, con appositi articoli, ciascuno dei principali test statistici. È infatti decisivo comprendere le condizioni di applicabilità di ciascun test per ottenere risultati affidabili e interpretazioni corrette.

Ciò che mi ripropongo in questo articolo è una “visione d’insieme”, uno accanto all’altro, dei più comuni test che possono trovare applicabilità quotidiana per una moltitudine di analisi relative al mondo del web marketing e per A/B test efficaci. Si tratta di un primo sguardo comparativo, che idealmente dovrebbe spingere al necessario approfondimento per ogni singolo tema, ma che ho voluto corredare di semplicissimi esempi pratici, al fine di stimolare la curiosità del lettore.

Il Test Z

Il test Z è un test statistico di ipotesi utilizzato per verificare se la media campionaria differisce in modo significativo dalla media della popolazione, quando la varianza della popolazione è nota e la dimensione del campione è grande (di solito maggiore di 30).

Il test Z si applica quando si soddisfano le seguenti condizioni:

  • La dimensione del campione è grande (n > 30)
  • La varianza della popolazione è nota
  • I dati sono approssimativamente normalmente distribuiti

Il test Z viene utilizzato per determinare se esiste una differenza significativa tra due medie di proporzioni, come ad esempio i tassi di clic. Può essere utilizzato, ad esempio, per verificare se l’introduzione di una nuova funzionalità su un sito web ha portato a un aumento significativo del tasso di conversione.

Caso d’esempio: Un sito di e-commerce vuole testare se una nuova versione del carrello ha migliorato il tasso di conversione. Il tasso di conversione precedente è del 5% con una varianza nota di 0,0025. Dopo aver raccolto un campione di 500 utenti, il nuovo tasso di conversione osservato è del 6%. Verifichiamo se la differenza è statisticamente significativa utilizzando il test Z.

# Tasso di conversione originale
p0 <- 0.05
# Varianza originale
var0 <- 0.0025
# Dimensione del campione
n <- 500
# Tasso di conversione osservato
p1 <- 0.06

# Calcolo del test Z
z <- (p1 - p0) / sqrt(var0/n)
z
[1] 4.472136

Il valore z osservato è 4,47. Assumendo un livello di significatività di 0,05, il valore critico di z è 1,96. Poiché il valore osservato è superiore a 1,96, possiamo respingere l’ipotesi nulla e concludere che la differenza nel tasso di conversione è statisticamente significativa.

Il Test t di Student

Il test t di Student è un test statistico di ipotesi utilizzato per verificare se la media di un campione differisce in modo significativo da un valore ipotetico o se due campioni hanno medie significativamente diverse. Questo test si applica quando la varianza della popolazione non è nota e la dimensione del campione è piccola (di solito minore di 30).

Il test t di Student si applica quando si soddisfano le seguenti condizioni:

  • La dimensione del campione è piccola (n < 30)
  • La varianza della popolazione non è nota
  • I dati sono approssimativamente normalmente distribuiti

Il test t di Student viene utilizzato per confrontare le medie di due gruppi distinti, come ad esempio il tempo medio trascorso sul sito per gli utenti che hanno visto una variante A rispetto a quelli che hanno visto una variante B.

Caso d’esempio: Un’azienda vuole testare se una nuova pagina di destinazione ha un impatto sul tempo medio trascorso sul sito. Viene condotto un esperimento A/B con 20 utenti per ogni gruppo. Il tempo medio trascorso sul sito per il gruppo di controllo è di 3 minuti, mentre per il gruppo di test è di 4 minuti. Verifichiamo se la differenza è statisticamente significativa utilizzando il test t di Student.

# Dati gruppo di controllo
control <- c(2.5, 3.1, 2.8, 3.2, 2.9, 3.5, 3.0, 2.7, 3.3, 2.6, 3.4, 3.1, 2.8, 2.9, 3.2, 3.0, 3.1, 2.7, 3.3, 2.8)

# Dati gruppo di test
test <- c(3.8, 4.2, 3.9, 4.1, 4.3, 3.7, 4.5, 4.0, 3.6, 4.2, 4.1, 3.9, 4.3, 3.8, 4.0, 4.2, 3.7, 4.4, 4.1, 3.9)

# Test t di Student
t.test(test, control, alternative = "greater")

data:  test and control
t = 12.585, df = 37.611, p-value = 2.354e-15
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
 0.900641      Inf
sample estimates:
mean of x mean of y 
    4.035     2.995 

Il test t di Student fornisce un valore p inferiore al livello di significatività di 0,05; dunque possiamo respingere l’ipotesi nulla e concludere che la differenza nel tempo medio trascorso sul sito tra i due gruppi è statisticamente significativa.

Il Test t di Welch

Il test t di Welch è una variante del test t di Student che non richiede l’assunzione di uguaglianza delle varianze tra i due campioni. Questo test si applica quando le dimensioni dei campioni e le varianze sono diverse.

Il test t di Welch si applica quando si soddisfano le seguenti condizioni:

  • Le dimensioni dei campioni sono diverse
  • Le varianze dei campioni sono diverse
  • I dati sono approssimativamente normalmente distribuiti

Il test t di Welch viene utilizzato per confrontare le medie di due gruppi distinti, come ad esempio il reddito medio degli utenti che hanno effettuato un acquisto in un sito di e-commerce rispetto a quelli che non hanno effettuato acquisti.

Caso d’esempio: Un’azienda vuole testare se il reddito medio degli utenti che hanno effettuato un acquisto differisce da quello degli utenti che non hanno effettuato acquisti. Viene condotto un esperimento con 30 utenti che hanno effettuato un acquisto e 20 utenti che non hanno effettuato acquisti. Il reddito medio degli utenti che hanno effettuato un acquisto è di $50.000, mentre quello degli utenti che non hanno effettuato acquisti è di $40.000. Verifichiamo se la differenza è statisticamente significativa utilizzando il test t di Welch.

# Dati gruppo di acquirenti
buyers <- c(48000, 52000, 49000, 51000, 47000, 55000, 53000, 50000, 46000, 54000,
            49000, 52000, 51000, 48000, 53000, 47000, 54000, 50000, 49000, 52000,
            48000, 51000, 53000, 47000, 52000, 49000, 50000, 51000, 48000, 53000)

# Dati gruppo di non acquirenti
non_buyers <- c(38000, 42000, 39000, 41000, 37000, 43000, 40000, 39000, 42000, 38000,
                41000, 40000, 39000, 42000, 37000, 41000, 38000, 39000, 40000, 41000)

# Test t di Welch
t.test(buyers, non_buyers, alternative = "greater", var.equal = FALSE)
Welch Two Sample t-test

data:  buyers and non_buyers
t = 17.811, df = 47.626, p-value < 2.2e-16
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
 9556.368      Inf
sample estimates:
mean of x mean of y 
    50400     39850 

Il test t di Welch fornisce un valore p pari a 2.2e-16. Poiché questo valore è inferiore al livello di significatività di 0,05, possiamo respingere l’ipotesi nulla e concludere che la differenza nel reddito medio tra gli utenti che hanno effettuato un acquisto e quelli che non hanno effettuato acquisti è statisticamente significativa.

Il Test del chi-quadrato

Il test del chi-quadrato è un test statistico non parametrico utilizzato per verificare se esiste una relazione significativa tra due variabili categoriche o se la distribuzione osservata di una variabile categorica differisce dalla distribuzione attesa.

Il test del chi-quadrato si applica quando si soddisfano le seguenti condizioni:

  • Le variabili sono categoriche
  • I campioni sono indipendenti
  • Le frequenze attese in ogni cella della tabella di contingenza sono maggiori di 5

Il test del chi-quadrato viene utilizzato per analizzare l’associazione tra due variabili categoriche, come ad esempio la relazione tra il genere degli utenti e la preferenza per un determinato prodotto.

Caso d’esempio: Un negozio di abbigliamento vuole capire se c’è una relazione tra il genere degli utenti e la preferenza per una particolare linea di prodotti. Viene condotto un sondaggio su 200 utenti, di cui 100 uomini e 100 donne. I risultati mostrano che 60 uomini e 40 donne preferiscono la linea di prodotti A, mentre 40 uomini e 60 donne preferiscono la linea di prodotti B. Verifichiamo se c’è una relazione significativa tra genere e preferenza utilizzando il test del chi-quadrato.

# Dati osservati
observed <- matrix(c(60, 40, 40, 60), nrow = 2, byrow = TRUE)
rownames(observed) <- c("Uomini", "Donne")
colnames(observed) <- c("Linea A", "Linea B")
observed
##        Linea A Linea B
## Uomini      60      40
## Donne       40      60
# Test del chi-quadrato
chisq.test(observed)
## Pearson's Chi-squared test with Yates' continuity correction

## data:  observed
## X-squared = 7.22, df = 1, p-value = 0.00721

Il test del chi-quadrato fornisce un valore p pari a 0,00721. Poiché questo valore è inferiore al livello di significatività di 0,05, possiamo respingere l’ipotesi nulla e concludere che esiste una relazione significativa tra il genere degli utenti e la preferenza per una particolare linea di prodotti.

L’Analisi della varianza (ANOVA)

L’analisi della varianza (ANOVA) è un test statistico utilizzato per confrontare le medie di tre o più gruppi e determinare se esistono differenze significative tra di essi.

L’analisi della varianza si applica quando si soddisfano le seguenti condizioni:

  • I dati sono approssimativamente normalmente distribuiti
  • Le varianze dei gruppi sono uguali (omoschedasticità)
  • I campioni sono indipendenti

L’analisi della varianza viene utilizzata per confrontare le medie di diverse versioni di un prodotto, di diverse strategie di marketing o di diverse tecniche di vendita.

Caso d’esempio: Un’azienda vuole testare l’efficacia di tre diverse strategie di marketing (A, B e C) sul fatturato medio mensile. Vengono selezionati 15 negozi per ciascuna strategia e il fatturato medio mensile viene registrato per un periodo di 6 mesi. Verifichiamo se esiste una differenza significativa tra le strategie di marketing utilizzando l’analisi della varianza.

# Dati
fatturato_A <- c(120000, 115000, 130000, 125000, 110000, 135000, 118000, 122000, 127000, 115000, 128000, 120000, 124000, 117000, 121000)
fatturato_B <- c(112000, 118000, 110000, 115000, 122000, 108000, 120000, 114000, 116000, 119000, 111000, 117000, 113000, 121000, 109000)
fatturato_C <- c(105000, 110000, 108000, 112000, 107000, 115000, 111000, 109000, 113000, 106000, 108000, 114000, 110000, 112000, 107000)

# Analisi della varianza
anova_result <- aov(c(fatturato_A, fatturato_B, fatturato_C) ~ rep(c("A", "B", "C"), each = 15))
summary(anova_result)
                                 Df    Sum Sq   Mean Sq F value   Pr(>F)    
rep(c("A", "B", "C"), each = 15)  2 1.086e+09 543200000    22.7 2.07e-07 ***
Residuals                        42 1.005e+09  23923810                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

L’analisi della varianza fornisce un valore p pari a 2.07e-07. Poiché questo valore è inferiore al livello di significatività di 0,05, possiamo respingere l’ipotesi nulla e concludere che esiste una differenza significativa nel fatturato medio mensile tra le tre strategie di marketing.

Il Test U di Mann-Whitney

Il test U di Mann-Whitney è un test non parametrico utilizzato per confrontare le medie di due gruppi indipendenti quando i dati non soddisfano i requisiti di normalità o di uguaglianza delle varianze richiesti per il test t di Student.

Il test U di Mann-Whitney si applica quando si soddisfano le seguenti condizioni:

  • I dati non sono normalmente distribuiti
  • Le varianze dei gruppi non sono uguali
  • I campioni sono indipendenti

Il test U di Mann-Whitney viene utilizzato per confrontare le medie di due gruppi distinti, come ad esempio i ricavi medi di due diverse campagne pubblicitarie.

Caso d’esempio: Un’azienda vuole confrontare i ricavi medi di due diverse campagne pubblicitarie, A e B. Vengono raccolti i dati sui ricavi di 15 negozi per ciascuna campagna. Verifichiamo se esiste una differenza significativa tra le due campagne utilizzando il test U di Mann-Whitney.

# Dati campagna A
ricavi_A <- c(12000, 15000, 10000, 13000, 11000, 14000, 12500, 13500, 11500, 14500, 12200, 13800, 11800, 12700, 13200)

# Dati campagna B
ricavi_B <- c(11000, 14000, 13000, 12000, 15000, 11500, 13500, 12500, 14500, 11800, 13200, 12700, 14200, 11600, 13800)

# Test U di Mann-Whitney
wilcox.test(ricavi_A, ricavi_B, alternative = "two.sided", correct = FALSE)
 Wilcoxon rank sum test

data:  ricavi_A and ricavi_B
W = 102.5, p-value = 0.6779
alternative hypothesis: true location shift is not equal to 0

Il test U di Mann-Whitney fornisce un valore p pari a 0,6779. Poiché questo valore è superiore al livello di significatività di 0,05, non possiamo respingere l’ipotesi nulla e non possiamo concludere che esista una differenza significativa nei ricavi medi tra le due campagne pubblicitarie.

Il Test esatto di Fisher

Il test esatto di Fisher è un test statistico non parametrico utilizzato per analizzare l’associazione tra due variabili categoriche in tabelle di contingenza 2×2, soprattutto quando le dimensioni campionarie sono piccole.

Il test esatto di Fisher si applica quando si soddisfano le seguenti condizioni:

  • Le variabili sono categoriche
  • I campioni sono indipendenti
  • Le dimensioni campionarie sono piccole (una o più celle della tabella di contingenza hanno valori attesi inferiori a 5)

Il test esatto di Fisher viene utilizzato per analizzare l’associazione tra due variabili categoriche, come ad esempio la relazione tra l’uso di un determinato farmaco e l’insorgenza di un effetto collaterale.

Caso d’esempio: In uno studio clinico su un nuovo farmaco per il trattamento dell’ipertensione, vengono osservati 15 pazienti che hanno assunto il farmaco e 10 pazienti che hanno assunto un placebo. Dei 15 pazienti che hanno assunto il farmaco, 3 hanno sperimentato un effetto collaterale, mentre dei 10 pazienti che hanno assunto il placebo, 1 ha sperimentato l’effetto collaterale. Verifichiamo se c’è un’associazione significativa tra l’assunzione del farmaco e l’insorgenza dell’effetto collaterale utilizzando il test esatto di Fisher.

# Dati
effetto_collaterale <- c(3, 12, 1, 9)
dim(effetto_collaterale) <- c(2, 2)
rownames(effetto_collaterale) <- c("Farmaco", "Placebo")
colnames(effetto_collaterale) <- c("Effetto collaterale", "No effetto collaterale")
effetto_collaterale
        Effetto collaterale No effetto collaterale
Farmaco                   3                      1
Placebo                  12                      9
# Test esatto di Fisher
fisher.test(effetto_collaterale)
 Fisher's Exact Test for Count Data

data:  effetto_collaterale
p-value = 0.6265
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
   0.145667 130.928066
sample estimates:
odds ratio 
  2.183137 

Il test esatto di Fisher fornisce un valore p pari a 0,6265. Poiché questo valore è superiore al livello di significatività di 0,05, non possiamo respingere l’ipotesi nulla e non possiamo concludere che esista un’associazione significativa tra l’assunzione del farmaco e l’insorgenza dell’effetto collaterale.

L’Analisi di regressione

L’analisi di regressione è un insieme di tecniche statistiche utilizzate per modellare la relazione tra una variabile dipendente (o di risposta) e una o più variabili indipendenti (o esplicative).

L’analisi di regressione si applica quando si soddisfano le seguenti condizioni:

  • Esiste una relazione lineare tra la variabile dipendente e le variabili indipendenti
  • I residui sono normalmente distribuiti e omoschedastici (hanno cioè varianza costante)
  • Le osservazioni sono indipendenti

L’analisi di regressione viene utilizzata per comprendere l’impatto di diverse variabili indipendenti su una variabile dipendente, come ad esempio l’effetto dell’età, del reddito e del livello di istruzione sul consumo di una determinata categoria di prodotti.

Caso d’esempio: Un’azienda di abbigliamento vuole analizzare l’impatto dell’età, del reddito e del livello di istruzione sul consumo annuale di abbigliamento. Vengono raccolti i dati su un campione di 100 individui. Utilizziamo l’analisi di regressione lineare multipla per modellare la relazione tra il consumo annuale di abbigliamento (variabile dipendente) e l’età, il reddito e il livello di istruzione (variabili indipendenti).

# Dati
consumo <- c(1200, 1500, 2000, 1800, 2200, 1700, 2100, 1900, 1600, 2300, 1400, 1800, 2100, 1700, 2000, 1600, 1900, 2200, 1500, 1800)
eta <- c(25, 35, 42, 30, 38, 28, 45, 33, 27, 40, 22, 31, 39, 26, 37, 24, 32, 41, 29, 36)
reddito <- c(35000, 45000, 60000, 50000, 55000, 40000, 65000, 48000, 38000, 70000, 32000, 46000, 58000, 42000, 52000, 37000, 49000, 62000, 40000, 51000)
istruzione <- c(2, 3, 4, 3, 4, 2, 4, 3, 2, 4, 2, 3, 4, 2, 3, 2, 3, 4, 3, 3)

# Modello di regressione lineare multipla
modello <- lm(consumo ~ eta + reddito + istruzione)
summary(modello)
Call:
lm(formula = consumo ~ eta + reddito + istruzione)

Residuals:
    Min      1Q  Median      3Q     Max 
-261.06  -93.14   39.80   66.26  223.24 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)   
(Intercept) 639.775078 165.734340   3.860  0.00139 **
eta         -13.127175  14.699870  -0.893  0.38509   
reddito       0.030875   0.008645   3.571  0.00255 **
istruzione   34.426950 107.969978   0.319  0.75396   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 128.1 on 16 degrees of freedom
Multiple R-squared:  0.8404, Adjusted R-squared:  0.8105 
F-statistic: 28.08 on 3 and 16 DF,  p-value: 1.302e-06
  1. Coefficienti: L’output mostra i coefficienti per ogni variabile indipendente nel modello. In questo caso, le variabili indipendenti sono ‘eta’, ‘reddito’ e ‘istruzione’. Il coefficiente di intercetta è 639.775078.
  2. Significatività: La variabile ‘reddito’ è statisticamente significativa al livello di significatività del 5% (poiché il p-value è inferiore a 0.05), mentre le variabili ‘eta’ e ‘istruzione’ non lo sono. Ciò suggerisce che solo il ‘reddito’ ha un impatto significativo sul ‘consumo’.
  3. R-squared: Il valore di R-squared è 0.8404, il che indica che circa l’84% della variazione nel ‘consumo’ può essere spiegata dalle variabili ‘eta’, ‘reddito’ e ‘istruzione’. Tuttavia, il valore di R-squared adjusted è 0.8105, il che suggerisce che quando si tiene conto del numero di variabili indipendenti nel modello, circa l’81% della variazione nel ‘consumo’ può essere spiegata da queste variabili.
  4. F-statistic: Il valore F-statistic è 28.08 con un p-value di 1.302e-06, il che indica che il modello complessivo è statisticamente significativo.

Il modello ci suggerisce che il ‘reddito’ è l’unico predittore significativo del ‘consumo’. Tuttavia, il modello nel suo insieme è significativo e spiega una grande parte della variazione nel ‘consumo’.

Uno sguardo d’insieme in una tabella

Test StatisticoCondizioni di ApplicabilitàVantaggiSvantaggi
Test ZDimensione campione grande (n > 30).

Varianza della popolazione nota
Dati normalmente distribuiti.
Semplice da calcolare e interpretare.

Adatto per grandi campioni.
Richiede la conoscenza della varianza della popolazione.

Non adatto per piccoli campioni.
Test t di StudentDimensione campione piccola (n < 30).

Varianza della popolazione sconosciuta.

Dati normalmente distribuiti.
Adatto per piccoli campioni.

Non richiede la conoscenza della varianza della popolazione.
Presuppone la normalità dei dati.
Test t di WelchDimensioni campionarie diverse.

Varianze diverse.

Dati normalmente distribuiti.
Non richiede l’assunzione di uguaglianza delle varianze. Presuppone la normalità dei dati.
Test del Chi-quadratoVariabili categoriche.

Campioni indipendenti.

Frequenze attese > 5 per cella.
Adatto per variabili categoriche.

Non richiede assunzioni sulla distribuzione.
Può essere inaccurato se le frequenze attese sono troppo basse.
ANOVADati normalmente distribuiti.
Omoschedasticità (varianze uguali).

Campioni indipendenti.
Permette di confrontare più di due gruppi contemporaneamente. Richiede l’assunzione di normalità e omoschedasticità.
Test U di Mann-WhitneyDati non normalmente distribuiti.

Varianze diverse. Campioni indipendenti.
Non richiede assunzioni sulla distribuzione o l’uguaglianza delle varianze. Meno potente dei test parametrici se le assunzioni sono soddisfatte.
Test esatto di FisherVariabili categoriche.

Campioni indipendenti.

Piccole dimensioni campionarie.
Accurato per piccoli campioni.

Adatto per tabelle di contingenza 2×2.
Non adatto per grandi campioni o tabelle di contingenza più grandi.
Analisi di RegressioneRelazione lineare tra variabili.

Residui normalmente distribuiti e omoschedastici.

Osservazioni indipendenti.
Permette di modellare la relazione tra variabili.

Identifica i predittori significativi.
Richiede assunzioni sui residui e sulla linearità.
paolo

Recent Posts

Come usare gli Alberi Decisionali per classificare i dati

Gli Alberi Decisionali sono un tipo di algoritmo di apprendimento automatico che utilizza una struttura…

4 mesi ago

L’algoritmo di Discesa del Gradiente spiegato semplice

Immaginiamo di voler trovare il percorso più veloce per raggiungere una destinazione in auto. Si…

9 mesi ago

La Discesa del Gradiente: un nuovo studio mette in discussione un assunto base sull’ottimizzazione

Nel 1847, il matematico francese Augustin-Louis Cauchy stava lavorando su calcoli astronomici, quando ideò un…

9 mesi ago

Il Metodo Montecarlo spiegato in modo semplice e applicato a casi reali

La simulazione Monte Carlo è un metodo utilizzato per quantificare il rischio associato a un…

1 anno ago

La distribuzione ipergeometrica

Abbiamo visto che la distribuzione binomiale si basa sull’ipotesi di una popolazione infinita N, condizione che si…

1 anno ago

La distribuzione binomiale negativa (o distribuzione di Pascal)

La distribuzione binomiale negativa descrive il numero di prove necessarie per ottenere un certo numero…

1 anno ago