Test t di Student con esempi in R per la SEO: confrontare CTR, conversioni e metriche

Abbiamo avuto modo di vedere, nel post sul test delle ipotesi, come verificare se la media di un campione sia compatibile con una certa ipotesi sulla popolazione. Negli esempi che abbiamo proposto, però, conoscevamo il valore della deviazione standard della popolazione, il sigma — una circostanza che ci permetteva di usare la distribuzione normale e lo Z-score.

Nella pratica si tratta di un caso piuttosto raro. Se non conosciamo il sigma della popolazione, o se lavoriamo con campioni piccoli, dobbiamo ricorrere a una distribuzione diversa: la distribuzione t, o distribuzione di Student.

La distribuzione t di Student è una distribuzione di probabilità utilizzata per valutare la significatività statistica dei risultati quando il campione è piccolo e la varianza della popolazione è incerta.

Una breve digressione storica

William Sealy Gosset (Student)
William Sealy Gosset (Student)

Nei primi anni del 1900, il chimico e statistico William Sealy Gosset, impiegato nel birrificio Guinness (e collaboratore di Karl Pearson), scoprì che quando lavorava con campioni molto piccoli, le distribuzioni della media differivano significativamente dalla normale. Al variare della dimensione del campione, la forma della distribuzione cambiava — e aumentando il campione, la distribuzione approssimava sempre più la normale.

Non potendo rivelare la sua identità per non favorire i concorrenti, pubblicò i risultati con lo pseudonimo “Student”. Per questo le distribuzioni per campioni piccoli sono oggi note come distribuzioni t di Student.


La distribuzione t è simmetrica rispetto allo zero, ma è più “piatta” della normale standardizzata: una porzione maggiore della sua area si trova nelle code.

Un campione più numeroso fa sì che la distribuzione t approssimi sempre più fedelmente la normale. Le differenze sono massime quando abbiamo pochi gradi di libertà.

Le distribuzioni t di Student per diversi gradi di libertà, confrontate con la normale (tratteggiata). Con pochi gradi di libertà le code sono più pesanti; già con df = 30 la t è quasi indistinguibile dalla normale.
Le distribuzioni t di Student per diversi gradi di libertà, confrontate con la normale (tratteggiata). Con pochi gradi di libertà le code sono più pesanti; già con df = 30 la t è quasi indistinguibile dalla normale.

Cosa intendiamo per gradi di libertà? Il numero di valori del campione che hanno la “libertà” di variare senza alterare la media campionaria. In pratica, per il test su un campione:

\( df = n – 1 \\ \)

dove n è la numerosità del campione.

Il procedimento per il test delle ipotesi con la distribuzione t ricalca in buona parte quello già visto con la normale. Stabiliamo l’ipotesi nulla H₀ e l’ipotesi alternativa Hₐ, poi calcoliamo la statistica test:

\( t = \frac{\bar{x} – \mu}{\frac{s}{\sqrt{n}}} \\ \)

dove \( \frac{s}{\sqrt{n}} \) è l’errore standard stimato (lo indichiamo anche con SE).

Un esempio vale mille spiegazioni

Un’azienda di lampadine dichiara che il proprio prodotto ha una durata media di almeno 4200 ore. Prendiamo un campione di n = 10 lampadine e troviamo una media di 4000 ore, con deviazione standard campionaria di 200 ore.

\( n = 10 \quad \bar{x} = 4000 \quad s = 200 \\ \)

Impostiamo il test:

\( H_0 : \mu \ge 4200 \qquad H_a : \mu < 4200 \)

Scegliamo un livello di significatività α = 0,05 (corrispondente a un livello di confidenza del 95%). Nella tabella dei valori critici della distribuzione t, cerchiamo il valore per 9 gradi di libertà e α = 0,05 (una coda). Il valore critico è 1,833. Rifiuteremo H₀ se il t calcolato è inferiore a −1,833.

Calcoliamo l’errore standard:

\[ SE = \frac{s}{\sqrt{n}} = \frac{200}{\sqrt{10}} = 63,3 \]

E il valore di t:

\[ t = \frac{\bar{x} – \mu}{SE} = \frac{4000 – 4200}{63,3} = -3,16 \]

Il valore di t cade nella regione critica: rifiutiamo H₀. Esiste evidenza statistica sufficiente per concludere che la durata media sia inferiore alle 4200 ore dichiarate.

Test t a un campione: regione critica e valore osservato
Test t a un campione: regione critica e valore osservato

Il p-value

Possiamo anche valutare l’ipotesi chiedendoci: qual è la probabilità di ottenere un valore del test statistico uguale o più estremo di quello osservato, assumendo che H₀ sia vera? Questa probabilità è il p-value.

Con R o una calcolatrice otteniamo t = −3,16 e p = 0,00575. I comandi per le calcolatrici:

  • TI-83: 2nd → DISTR → tcdf(−1E99, −3.16, 9)
  • Casio FX (modalità STAT): DIST → t → tcd con Lower −1E99, Upper −3.16, df 9

C’è appena lo 0,575% di probabilità di osservare un risultato come il nostro se H₀ fosse vera. p < 0,05: rifiutiamo H₀ a favore dell’ipotesi alternativa.

Attenzione: il p-value non è la probabilità che H₀ sia vera. È la probabilità dei dati dato H₀, non la probabilità di H₀ dati i dati.

Intervallo di confidenza

Quando rifiutiamo un’ipotesi, è utile stimare il vero valore della media. Nel nostro esempio, abbiamo scartato l’affermazione che le lampadine durino in media più di 4200 ore. Ma quanto durano davvero?

Per calcolare l’intervallo di confidenza servono tre cose: la media campionaria, l’errore standard e il valore critico.

\( \text{Margine di errore} = t_{\text{critico}} \times SE \\ \)

Nel nostro caso: ME = 1,833 × 63,3 ≈ 116. L’intervallo di confidenza al 95% è quindi:

\( 4000 \pm 116 = [3884,\ 4116] \\ \)

Il valore di 4200 ore cade fuori dall’intervallo, confermando il risultato del test.

Il t-test in R

R ci permette di eseguire il test in modo semplice e completo. Prepariamo un vettore con 10 misure che hanno media 4000 e usiamo t.test():

lampadine <- c(4100, 3900, 3800, 4200, 4000,
               4100, 3900, 3800, 4200, 4000)
t.test(lampadine, mu = 4200, alternative = "less")
	One Sample t-test

data:  lampadine
t = -3.1623, df = 9, p-value = 0.005788
alternative hypothesis: true mean is less than 4200
95 percent confidence interval:
     -Inf 4115.791
sample estimates:
mean of x
     4000

Un caso pratico: i title tag riscritti rendono di più?

Portiamo ora lo strumento sul terreno che ci interessa. Immaginiamo di aver riscritto i title tag di dieci pagine e di voler capire se il loro CTR si è mosso rispetto al 3,0% che era la media storica del gruppo. Dieci pagine sono poche, e la varianza della popolazione non la conosciamo: è esattamente la situazione in cui la distribuzione t dà il meglio di sé.

Questi i CTR misurati, in percentuale:

ctr <- c(3.8, 4.2, 3.1, 4.9, 3.5, 4.1, 2.9, 4.6, 3.7, 4.4)
t.test(ctr, mu = 3.0)
	One Sample t-test

data:  ctr
t = 4.5276, df = 9, p-value = 0.001431
95 percent confidence interval:
 3.460337 4.379663
sample estimates:
mean of x
     3.92

Leggiamo l’output. La media campionaria è 3,92%, quasi un punto sopra il riferimento. Il t è 4,53 con 9 gradi di libertà: misura quante deviazioni standard stimate la media osservata dista dal 3,0% ipotizzato. Il p-value è 0,0014, ben sotto la soglia dello 0,05: uno scarto del genere, se la media vera fosse davvero 3,0%, lo vedremmo per puro caso poco più di una volta su mille. La riscrittura ha prodotto un effetto difficile da liquidare come rumore.

L’intervallo di confidenza al 95% va da 3,46% a 4,38% e non contiene il 3,0%. È la stessa conclusione del test, vista da un’altra angolatura — non solo “l’effetto esiste”, ma “ecco la forbice plausibile in cui cade il CTR vero”.

Attenzione però: con dieci sole pagine quella forbice resta larga quasi un punto percentuale; più dati la stringerebbero.

Effect size: Cohen’s d

Il p-value ci dice se la differenza è statisticamente significativa. Per capire quanto è grande, calcoliamo il Cohen’s d per un campione:

\( d = \frac{\bar{x} – \mu}{s} \\ \)
d <- (3.92 - 3.0) / sd(ctr)
d
[1] 1.432

Regola pratica: d ≈ 0,2 è piccolo, 0,5 medio, 0,8 grande. Il nostro d = 1,43 è un effetto grande — la differenza non è solo statisticamente significativa, ma anche sostanziale.

Prova tu

Abbiamo sette landing page e vogliamo sapere se il loro tasso di conversione si discosta dal 2,5% che ci eravamo dati come obiettivo. Questi i valori, in percentuale:

cr <- c(2.8, 3.1, 2.4, 3.5, 2.9, 3.3, 2.7)
t.test(cr, mu = 2.5)

Esegui il test, leggi t, df, p-value e intervallo di confidenza. La media è 2,96%, il t è 3,24 su 6 gradi di libertà, il p-value è 0,018 e l’intervallo al 95% va da 2,61% a 3,30%. Poiché non contiene il 2,5%, concludiamo che le sette pagine battono l’obiettivo in modo difficilmente attribuibile al caso.

FAQ

Quando usare la distribuzione t invece della normale?
Sempre quando non conosciamo la deviazione standard della popolazione e la stimiamo dal campione. In pratica: quasi sempre. La distribuzione normale con sigma noto è più un caso da libro di testo che una situazione reale.

La distribuzione t funziona con campioni molto piccoli?
Sì, purché i dati non siano fortemente asimmetrici. Per n ≥ 30, la t e la normale sono praticamente indistinguibili. Per n < 15, vale la pena verificare la normalità con shapiro.test().

Cosa sono i gradi di libertà?
Nel test a un campione, df = n − 1. È il numero di valori che possono variare liberamente data una media fissata. Più gradi di libertà abbiamo, più la t assomiglia alla normale.


La distribuzione t di Student ci ha dato un modo per ragionare quando i dati sono pochi e la varianza della popolazione ci è ignota — la situazione, come si è visto, in cui ci troviamo quasi sempre. Finora abbiamo confrontato un singolo gruppo con un valore di riferimento. La domanda che si affaccia naturale è: e se i gruppi da confrontare fossero due — la versione A e la versione B di una pagina, il prima e il dopo di un intervento? È il passo successivo del percorso: il t-test per due campioni.


Per approfondire

La distribuzione t e l’inferenza sulle medie sono trattate in profondità in Statistica di Newbold, Carlson e Thorne, il manuale che consigliamo a chi vuole passare dalla comprensione intuitiva al rigore formale. Amazon

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *