Il p-value e i suoi malintesi: cosa significa davvero p < 0,05

«Il nuovo titolo ha un p-value di 0,03: c’è il 97% di probabilità che funzioni.» È una frase che si legge nei report, nei case study, a volte perfino nei manuali. Ed è sbagliata. Non di poco, non per pedanteria: è sbagliata in un modo che può farci prendere metà delle decisioni sulla base di risultati che non esistono.

Su questo blog il p-value compare in decine di articoli, dal test delle ipotesi all’A/B testing, dalla regressione ai confronti multipli. È il numero più usato della statistica applicata, e probabilmente il più frainteso. Vale la pena fermarsi una volta su che cosa dice, e soprattutto su che cosa non dice.

In sintesi: il p-value è la probabilità di osservare dati almeno così estremi come quelli ottenuti, supponendo che l’ipotesi nulla sia vera (cioè che l’effetto non esista). Non è la probabilità che l’ipotesi nulla sia vera, né la probabilità che il risultato sia dovuto al caso. Un p-value piccolo non dice che l’effetto è grande, e un p-value sopra 0,05 non dice che l’effetto non c’è. La soglia di 0,05 è una convenzione, non un confine naturale. Per decidere servono anche la dimensione dell’effetto, l’intervallo di confidenza e una stima di quante delle idee che testiamo funzionano davvero.

Di cosa parleremo:


Cos’è il p-value, in una frase

Partiamo da un A/B test su due titoli di annuncio: 4.000 impressioni ciascuno, 200 clic per il titolo A (CTR 5,0%) e 240 per il titolo B (CTR 6,0%). Il test sulle due proporzioni restituisce p = 0,0498.

Per leggere quel numero bisogna fare un piccolo esercizio di immaginazione. Supponiamo che i due titoli siano identici, che la differenza di CTR non esista e tutto dipenda dal caso dei clic. È l’ipotesi nulla. In quel mondo immaginario, con quale probabilità vedremmo una differenza grande almeno quanto quella osservata, 40 clic su 4.000? La risposta è il p-value: circa il 5%.

In formula, con H₀ l’ipotesi nulla:

\(p = P(\text{dati almeno così estremi} \mid H_0 \text{ vera})\)

La barra verticale si legge «supponendo che»: tutto il calcolo avviene dentro l’ipotesi nulla. Il p-value misura quanto i dati sono sorprendenti se l’effetto non esiste. Non dice niente, direttamente, su quanto sia probabile che l’effetto esista. Ed è proprio da qui che nascono quasi tutti i malintesi.

Una conseguenza che pochi conoscono, ma che aiuta a capire tutto il resto: quando l’ipotesi nulla è vera, il p-value è un numero a caso fra 0 e 1, con distribuzione uniforme. Un p di 0,03 è raro esattamente quanto un p di 0,73. Lo verifichiamo simulando 10.000 A/B test in cui B non cambia niente, e altri 10.000 in cui B porta il CTR dal 5% al 6%:

un_test <- function(ctr_b, n = 4000, ctr_a = 0.05) {
  clic_a <- rbinom(1, n, ctr_a)
  clic_b <- rbinom(1, n, ctr_b)
  prop.test(c(clic_a, clic_b), c(n, n), correct = FALSE)$p.value
}

set.seed(1)
p_nulla <- replicate(10000, un_test(0.05))     # B non cambia niente
p_effetto <- replicate(10000, un_test(0.06))   # B funziona davvero (+20%)

mean(p_nulla < 0.05)
# [1] 0.0481
quantile(p_nulla, c(0.25, 0.50, 0.75))
#       25%       50%       75%
# 0.2483948 0.4970851 0.7524771
mean(p_effetto < 0.05)
# [1] 0.501

Senza effetto, il 4,8% dei test scende sotto 0,05 (il 5% promesso, a meno del caso) e i quartili cadono a 0,25, 0,50 e 0,75: la distribuzione è piatta. Con l’effetto vero, i p-value si ammassano vicino a zero, ma solo la metà scende sotto 0,05: con 4.000 impressioni per variante, la potenza del test è del 50%.

La distribuzione dei p-value di 10.000 A/B test. Se B non cambia niente (sinistra) i p-value sono uniformi fra 0 e 1, e circa il 5% cade sotto 0,05 per puro caso. Se B funziona davvero (destra) si ammassano vicino a zero, ma con una potenza del 50% la metà resta sopra la soglia.
La distribuzione dei p-value di 10.000 A/B test. Se B non cambia niente (sinistra) i p-value sono uniformi fra 0 e 1, e circa il 5% cade sotto 0,05 per puro caso. Se B funziona davvero (destra) si ammassano vicino a zero, ma con una potenza del 50% la metà resta sopra la soglia.

Malinteso 1: «c’è il 97% di probabilità che funzioni»

È il malinteso più diffuso, e il più costoso. Un p di 0,03 non vuol dire che c’è il 3% di probabilità che l’ipotesi nulla sia vera, né il 97% che l’effetto esista. Il p-value è la probabilità dei dati supponendo H₀, non la probabilità di H₀ dati i dati. Sembra un gioco di parole, ma le due probabilità possono essere lontanissime.

Un esempio fuori dalla statistica. La probabilità che una persona sia italiana, sapendo che è il Presidente della Repubblica, è altissima. La probabilità che sia il Presidente della Repubblica, sapendo che è italiana, è di circa una su sessanta milioni. Invertire il «sapendo che» cambia tutto.

Per passare dal p-value alla domanda che ci interessa davvero (questa idea funziona?) manca un ingrediente: quante delle idee che mettiamo alla prova funzionano in partenza. Facciamo un esempio realistico. Testiamo 1.000 idee (titoli, meta description, call to action) e solo una su dieci funziona davvero; le altre nove sono neutre. Lo simulo in R con gli stessi test di prima:

set.seed(5)
funziona <- seq_len(1000) <= 100        # le idee buone sono 100 su 1.000
p_idee <- sapply(funziona, function(f) un_test(ifelse(f, 0.06, 0.05)))

table(significativo = p_idee < 0.05, funziona)

#              funziona
# significativo FALSE TRUE
#         FALSE   853   50
#         TRUE     47   50

Su 1.000 test, 97 risultano «significativi». Cinquanta sono idee che funzionano davvero; 47 sono idee neutre che hanno superato la soglia per caso. Fra i nostri «vincitori», quasi uno su due è un falso allarme, eppure ciascuno di loro aveva un p-value sotto 0,05.

Mille idee testate, una su dieci funziona davvero. Ogni quadratino è un test. I vincitori sono i quadratini blu (scoperte vere) e arancioni (falsi allarmi): sono quasi lo stesso numero. Le idee buone perse perché il test non le ha viste (celeste) sono tante quante quelle trovate.
Mille idee testate, una su dieci funziona davvero. Ogni quadratino è un test. I vincitori sono i quadratini blu (scoperte vere) e arancioni (falsi allarmi): sono quasi lo stesso numero. Le idee buone perse perché il test non le ha viste (celeste) sono tante quante quelle trovate.

Il conto si può fare anche senza simulazione. Se π è la quota di idee che funzionano, α la soglia e la potenza la probabilità di accorgersi di un’idea buona, la quota di falsi allarmi fra i risultati significativi è:

\(\text{quota di falsi allarmi} = \frac{\alpha \, (1 – \pi)}{\alpha \, (1 – \pi) + \text{potenza} \cdot \pi}\)

Il numeratore sono le idee neutre che passano per caso (il 5% delle 900); al denominatore si aggiungono le idee buone che il test riconosce (il 50% delle 100). Con i nostri numeri: 45 / (45 + 50) = 47%. La tabella mostra come cambia la quota al variare delle due incognite:

Idee che funzionano (π)Potenza 50%Potenza 80%
10%47,4%36,0%
25%23,1%15,8%
50%9,1%5,9%

La stessa soglia del 5% produce un 6% di falsi allarmi o quasi la metà, a seconda di quanto sono buone le idee che testiamo e di quanti dati abbiamo. È lo stesso meccanismo della base rate fallacy nei test medici: un test accurato su una malattia rara produce comunque una valanga di falsi positivi.

Malinteso 2: «un p piccolo vuol dire un effetto grande»

Il p-value mescola due cose: quanto è grande l’effetto e quanti dati abbiamo. Con dati abbondanti, anche un effetto minuscolo produce un p-value minuscolo.

Search Console ce ne offre l’occasione tutti i giorni. Due sezioni del sito, 10 milioni di impressioni ciascuna, CTR del 5,00% contro il 5,05%: una differenza di cinque centesimi di punto, l’1% in termini relativi. Lo calcolo in R:

n <- 1e7
prop.test(c(n * 0.05, n * 0.0505), c(n, n), correct = FALSE)$p.value
# [1] 3.091392e-07

Un p-value di 0,0000003: «altamente significativo». Ma l’effetto vale cinque clic ogni diecimila impressioni, e quasi certamente non giustifica nessuna decisione. Significativo, in statistica, vuol dire «difficilmente dovuto al caso», non «importante». Per l’importanza serve guardare la dimensione dell’effetto, il tema dell’articolo su effect size e power analysis.

Malinteso 3: «p sopra 0,05, quindi non c’è nessun effetto»

È il malinteso speculare, e altrettanto pericoloso. Torniamo alla figura con le due distribuzioni: quando B funziona davvero, con 4.000 impressioni per variante, metà dei test resta sopra 0,05. Un p-value «non significativo» vuol dire che i dati non bastano a escludere il caso, non che l’effetto è stato escluso.

Facciamo un esempio. Titolo A: 200 clic su 4.000. Titolo B: 222 clic su 4.000, un CTR più alto dell’11%. Lo verifico in R, guardando anche l’intervallo di confidenza:

t <- prop.test(c(222, 200), c(4000, 4000), correct = FALSE)
t$p.value
# [1] 0.271176
t$conf.int     # differenza di CTR, B meno A
# [1] -0.004295887  0.015295887

Il p-value è 0,27, ben sopra la soglia. Ma l’intervallo di confidenza della differenza va da −0,43 a +1,53 punti di CTR: in termini relativi, da un calo dell’8,6% a un aumento del 30,6%. I dati sono compatibili con un titolo leggermente peggiore e con uno nettamente migliore. Concludere «il titolo B non serve» sarebbe come dire che una partita non ancora giocata è finita in pareggio.

L’assenza di prove non è la prova di un’assenza. Il test ci sta dicendo che servono più dati, non che l’idea è da buttare.

Malinteso 4: «0,05 è il confine fra vero e falso»

La soglia di 0,05 non viene dalla natura: viene da Ronald Fisher, che negli anni Venti la propose come riferimento comodo, uno su venti, per segnalare i risultati che meritavano un’occhiata più attenta. Nel tempo è diventata un confine burocratico, con un effetto curioso: un risultato con p = 0,049 viene pubblicato, comunicato, applicato; uno con p = 0,051 finisce nel cassetto.

Quanto sono diversi, nei dati, quei due risultati? Nel nostro A/B test con 200 clic per il titolo A, se il titolo B ne prende 239 il p-value è 0,0555; se ne prende 240 è 0,0498. Un clic su ottomila separa il «non significativo» dal «significativo». Nessuna persona ragionevole cambierebbe idea per un clic, eppure la soglia ci chiede di farlo.

Nel 2016 l’American Statistical Association ha pubblicato una dichiarazione ufficiale sul p-value, la prima volta in 177 anni di storia in cui prendeva posizione su un singolo aspetto della pratica statistica. Contiene sei principi. Tre dicono esattamente quello che abbiamo visto: il p-value non misura la probabilità che l’ipotesi sia vera; non misura la dimensione di un effetto; le conclusioni non dovrebbero basarsi soltanto sul superamento di una soglia.

C’è poi un quarto modo di sbagliare, il più subdolo, perché non riguarda la lettura del p-value ma il modo in cui ci si arriva. Il p-value vale per un test deciso prima di guardare i dati. Se proviamo tante metriche, tanti segmenti, tanti momenti di stop, e teniamo il risultato che passa la soglia, il 5% non vale più. È quello che abbiamo visto parlando di confronti multipli e di peeking, e ha anche un nome poco lusinghiero: p-hacking.

Un avvertimento: un p-value sotto 0,05 non è una promessa, è un indizio.
Dice che i dati sarebbero sorprendenti se l’effetto non esistesse. Quanto quell’indizio sia convincente dipende da cose che il p-value non contiene: quante delle idee che testiamo funzionano davvero, quanta potenza aveva il test, quanti altri test abbiamo fatto prima di trovarlo.

Cosa riportare, allora?

Il p-value non va buttato: risponde onestamente alla sua domanda, quella sul caso. Va solo smesso di fargli rispondere alle domande che non gli competono. Nella pratica quotidiana, un risultato ben riportato ha tre parti.

La dimensione dell’effetto, nell’unità che conta per il business: punti di CTR, clic al mese, euro. Non «significativo», ma «+0,8 punti di CTR, circa 1.200 clic in più al mese».

L’intervallo di confidenza, che dice quanto siamo incerti su quella dimensione: «fra +0,1 e +1,5 punti». Contiene tutto ciò che c’è nel p-value (se esclude lo zero, il test è significativo) e molto di più.

Il contesto del test: era l’unico test previsto, o uno dei venti? La potenza era sufficiente? Quanto erano promettenti le idee in partenza?

Chi vuole rispondere direttamente alla domanda «con quale probabilità B è migliore di A?» deve cambiare approccio: è il terreno dell’A/B test bayesiano, che a quella domanda risponde, a patto di dichiarare le proprie ipotesi di partenza.

Domande frequenti

Cosa significa un p-value di 0,05?

Significa che, se l’effetto non esistesse, osserveremmo dati almeno così estremi in circa 5 casi su 100. Non significa che c’è il 95% di probabilità che l’effetto esista, né il 5% di probabilità che il risultato sia dovuto al caso.

Il p-value è la probabilità che l’ipotesi nulla sia vera?

No. È la probabilità dei dati supponendo vera l’ipotesi nulla, non la probabilità dell’ipotesi nulla dati i dati. Per ottenere la seconda serve sapere anche quanto era plausibile l’ipotesi prima del test: con idee poco promettenti, anche fra i risultati con p sotto 0,05 i falsi allarmi possono essere quasi la metà.

Un p-value molto piccolo indica un effetto importante?

No. Il p-value dipende sia dalla dimensione dell’effetto sia dalla quantità di dati: con milioni di impressioni, anche una differenza di CTR irrilevante produce un p-value minuscolo. L’importanza si giudica dalla dimensione dell’effetto e dal suo intervallo di confidenza.

Se il p-value è maggiore di 0,05 l’effetto non esiste?

Non necessariamente. Vuol dire che i dati non bastano a escludere il caso. Se il test aveva poca potenza, un effetto reale può facilmente produrre un p-value alto: l’intervallo di confidenza mostra quali effetti sono ancora compatibili con i dati.

Perché proprio 0,05?

È una convenzione proposta da Ronald Fisher negli anni Venti come riferimento comodo, una probabilità su venti. Non ha nessun fondamento naturale: un risultato con p = 0,049 e uno con p = 0,051 portano praticamente la stessa evidenza.

Prova tu

Il codice dell’articolo si presta a qualche esperimento rivelatore.

  • Si porta la quota di idee buone da 100 a 500 su 1.000 (funziona <- seq_len(1000) <= 500) e si ricalcola la tabella: quanti dei «vincitori» sono ora falsi allarmi? Il risultato dovrebbe avvicinarsi al 9% della tabella.
  • Si aumentano le impressioni per variante da 4.000 a 16.000 nella funzione un_test(): cosa succede alla potenza, e alla quota di falsi allarmi fra le idee significative?
  • Si ripete la simulazione p_nulla e si contano i test con p fra 0,04 e 0,05, e quelli fra 0,94 e 0,95. Perché sono circa lo stesso numero?

L’ultimo esercizio è il più breve, e forse il più istruttivo: quando l’effetto non c’è, un p-value «quasi significativo» non è più vicino alla verità di un p-value altissimo.


Abbiamo visto che, fra i risultati significativi, la quota di falsi allarmi dipende da quanto sono buone le idee che testiamo. Ma c’è un modo ancora più insidioso di farsi ingannare dai successi: guardare solo quelli che ce l’hanno fatta. I case study che leggiamo raccontano le strategie che hanno funzionato, mai le cento identiche che sono fallite. È il survivorship bias, ed è il prossimo passo del nostro viaggio tra le trappole dei dati.


Per approfondire

Sul p-value, sui suoi usi e sui suoi abusi, consiglio L’arte della statistica di David Spiegelhalter: spiega cosa dice davvero un test di significatività, perché tanti risultati «significativi» non si replicano e come ragionare sull’incertezza senza farsi abbagliare da una soglia.

Lascia un commento

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