Vai al contenuto principale

Un’introduzione ai t-test in Python

Impara a eseguire i t-test in Python con questo tutorial. Capisci i diversi tipi di t-test - one-sample test, two-sample test, paired t-test e Welch’s test - e quando usarli.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Nel mondo odierno guidato dai dati, le aziende non possono basarsi solo sull’intuizione per prendere decisioni critiche. Devono invece usare tecniche statistiche come i test d’ipotesi per supportare le loro azioni con dati solidi. Un test molto diffuso a questo scopo è il t-test, che ti permette di confrontare le medie di due gruppi e determinare se sono statisticamente diverse.

Ma come si applica il t-test nella pratica e come si interpretano i risultati? In questo tutorial esploreremo queste domande e altro ancora. In particolare, ti guideremo attraverso uno scenario d’esempio in cui vuoi valutare il successo di una nuova funzionalità lanciata da un’azienda. Ti mostreremo come usare i t-test in Python e le sue potenti librerie per analizzare i risultati.

Al termine di questo tutorial, avrai una solida comprensione dei t-test e sarai in grado di applicarli con sicurezza ai tuoi dati.

In questo tutorial esploreremo i diversi tipi di t-test – one-sample test, two-sample test, paired t-test e Welch’s test – oltre alle loro applicazioni e a quando utilizzarli.  

Terminologia spiegata

Prima di addentrarci nei dettagli del t-test, facciamo rapidamente chiarezza su alcune terminologie associate che ti aiuteranno a rafforzare la comprensione concettuale di questo test statistico.

Test d’ipotesi

Il test d’ipotesi è il processo che parte da un’assunzione, detta ipotesi nulla, e cerca evidenze per respingerla. L’ipotesi nulla rappresenta lo stato di fatto, mentre l’ipotesi alternativa rappresenta l’opposto dell’ipotesi nulla. 

Per esempio, possiamo usare un test d’ipotesi per determinare se una nuova funzionalità lanciata da un’azienda riceve una buona risposta dai clienti ed è riflessa nella metrica di successo. Dai un’occhiata al nostro corso sul test d’ipotesi per saperne di più sull’argomento.

P-value 

Il p-value è la probabilità di ottenere risultati estremi quanto quelli osservati, assumendo che l’ipotesi nulla sia vera. Un p-value piccolo indica che la probabilità di ottenere i risultati osservati è molto bassa, dato che l’ipotesi nulla è corretta.

Livello di significatività

Il livello di significatività, indicato con alfa, rappresenta la probabilità di rifiutare l’ipotesi nulla assumendo che sia vera. È noto anche come errore di Tipo 1.

Significatività statistica

La significatività statistica si riferisce al grado di confidenza che il risultato osservato non sia dovuto al caso. È importante notare che la significatività statistica non implica necessariamente significatività pratica, poiché il risultato osservato potrebbe comunque essere trascurabile dal punto di vista applicativo. L’errore di campionamento può inoltre contribuire alla significatività statistica se il campione non rappresenta accuratamente la popolazione più ampia. 

Assunzioni del t-test

Comprendere le assunzioni di un test statistico è fondamentale per garantire risultati accurati e affidabili. Il t-test non fa eccezione. Qualsiasi violazione delle sue assunzioni può portare a conclusioni fuorvianti, risultando controproducente. Esploriamo in dettaglio le quattro assunzioni del t-test:

Proprietà di indipendenza

Per prima cosa, la proprietà di indipendenza afferma che le osservazioni non sono influenzate da fattori impliciti nei dati e non sono correlate nel tempo. Per garantire l’indipendenza, si possono applicare varie tecniche per gestire dati dipendenti, come spiegato dall’Università del Texas ad Austin.

Identicamente distribuiti 

In secondo luogo, la presenza di outlier, o record anomali, può ridurre il valore della t-statistic e portare ad un aumento della varianza nei dati, influenzando la probabilità di rifiutare l’ipotesi nulla. È quindi fondamentale identificare e comprendere le ragioni alla base del comportamento anomalo per determinare se si tratti di dati legittimi o errati. Consultare un esperto di dominio può aiutare a comprendere il reale comportamento dei dati.

Distribuzione normale 

In terzo luogo, il t-test è valido solo per dati distribuiti normalmente. Dati asimmetrici possono portare a un rigetto errato dell’ipotesi nulla. Tuttavia, è difficile verificare la normalità con pochi punti dati. In tali casi, si possono usare test non parametrici che non assumono una distribuzione dei dati, oppure eseguire una trasformazione dei dati come misura correttiva per raggiungere la normalità.cases, it is suggested to either use a nonparametric test (which does not make a distributional assumption of data) or perform data transformation as a corrective measure toward normality.

Varianze uguali 

Infine, perché il t-test sia valido, le due popolazioni confrontate dovrebbero avere varianze uguali. Questo può essere verificato graficamente mediante un Q-Q plot.

Ora che abbiamo compreso meglio le assunzioni del t-test, esploriamo i diversi tipi di t-test con un esempio in Python. Al termine di questo tutorial, avrai le conoscenze necessarie per eseguire t-test e interpretarne i risultati con sicurezza.

One-sample t-test 

Il one-sample t-test è un test d’ipotesi statistico che aiuta a determinare se una media ignota di popolazione (mu) è diversa da un valore dichiarato. 

equazione del t-test

Dove,

x = media campionaria

𝝁 = media della popolazione

S = deviazione standard del campione

n = numero di esempi nel campione

t = t-statistic

Capiremmo meglio con un esempio. Un’azienda afferma di produrre cuscinetti a sfera di 10 cm di diametro (ipotesi nulla) e tu decidi di verificarlo. Raccogli 21 cuscinetti da diversi negozi in città e ne misuri il diametro. Devi determinare se l’affermazione dell’azienda è falsa (ipotesi alternativa) sulla base delle misurazioni.

Il test è impostato come segue:

Ipotesi nulla:             H0 : x  = 𝝁

Ipotesi alternativa:  Ha : x  ≠ 𝝁 

Diagramma di flusso del t-test

Per dichiarare false le affermazioni, devi dimostrare statisticamente che le misurazioni del campione di cuscinetti sono diverse dai 10 cm dichiarati dall’azienda. Poiché la dimensione del campione è 21 (inferiore a 30), usiamo un t-test. Qui la media campionaria è 11 cm e la deviazione standard è 1 cm.

Esempio di one-sample t-test in Python

Impariamo a condurre un one-sample t-test in Python usando la funzione scipy.stats.ttest_1samp(). 

import numpy as np  
from scipy import stats  

# Population Mean 
mu = 10

# Sample Size
N1 = 21

# Degrees of freedom  
dof = N1 - 1

# Generate a random sample with mean = 11 and standard deviation = 1
x = np.random.randn(N1) + 11

# Using the Stats library, compute t-statistic and p-value
t_stat, p_val = stats.ttest_1samp(a=x, popmean = mu)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Interpretazione dei risultati del test

Il valore della t-statistic risulta 4,69, che sembra essere molto distante dalla media zero in una t-distribuzione. Per quantificare un valore così estremo, facciamo riferimento al p-value (introdotto nella sezione di terminologia). Il p-value è inferiore al livello di significatività predefinito di 0,05, il che indica che la probabilità di un esito così estremo è prossima a zero e che l’ipotesi nulla può essere respinta.

Nota che il livello di significatività si imposta all’inizio dell’esperimento.

Un approccio diverso

Eseguiamo il one-sample t-test senza la funzione ttest_1samp(). In questo caso, la t-statistic è definita dalla differenza tra media campionaria e media di popolazione divisa per l’errore standard, come discusso nella sezione precedente. 

  • Per prima cosa, calcola la media campionaria (x_bar)
  • Poi calcola la deviazione standard campionaria con un grado di libertà (rappresenta la deviazione standard del campione).
  • Calcola l’errore standard dividendo la deviazione standard per la radice quadrata della dimensione del campione.
  • Usa la formula della t-statistic per one-sample come spiegato in precedenza.
  • Calcola il p-value per stabilire la significatività della t-statistic.
# Sample Mean
x_bar = x.mean()

# Standard Deviation  
std = np.std(x, ddof=1)

# Standard Error
ste = std/np.sqrt(N1)

# Calculating the T-Statistics  
t_stat = (x_bar - mu) / ste

# p-value of the t-statistic
p_val = 2*(1 - stats.t.cdf(abs(t_stat), df = dof))
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Come eseguire un two-sample t-test in Python

Estendiamo il nostro esempio ipotizzando che l’azienda apra un altro stabilimento per produrre cuscinetti identici. Dobbiamo capire se i cuscinetti dei due stabilimenti hanno dimensioni diverse. In uno scenario del genere si usa il two-sample test. Qui la t-statistic è definita come sotto. 

Equazione del two-sample t-test

Dove,

X1= prima media campionaria

X2 = seconda media campionaria

S1 = prima deviazione standard campionaria

S2 = seconda deviazione standard campionaria

N1 = prima dimensione campionaria

N2 = seconda dimensione campionaria

Esempio di two-sample t-test in Python

Supponiamo che il primo stabilimento condivida 21 campioni di cuscinetti con una media del diametro pari a 10,5 cm. Il secondo stabilimento condivide invece 25 campioni con una media del diametro di 9,5 cm. Entrambi hanno una deviazione standard di 1 cm. 

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N1) + 10.5

# Gaussian distributed data with mean = 9.5 and var = 1  
y = np.random.randn(N2) + 9.5

## Using the internal function from SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y)  
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.18913308431476
p-value = 0.0026296199823557754

Interpretazione dei risultati del test

Considerando il p-value di 0,0026, inferiore al livello di significatività di 0,05, rifiutiamo l’ipotesi nulla che afferma che i cuscinetti dei due stabilimenti siano identici.

Come eseguire un paired t-test in Python

Dopo aver condiviso questi risultati con l’azienda, questa decide di migliorare la propria tecnologia produttiva introducendo una nuova macchina di colata. Avvia questo pilota in uno degli stabilimenti e conduce un test per identificare se la nuova macchina di colata comporti un cambiamento nel diametro dei cuscinetti confrontando due campioni di 25 cuscinetti – uno prima dell’introduzione della nuova macchina e l’altro dopo. 

La media del diametro risulta rispettivamente 10,5 cm e 9,9 cm. 

Esempio di paired t-test in Python

Eseguiamo un paired t-test per verificare se il cambiamento è statisticamente significativo.

# Sample Sizes
N = 25

# Degrees of freedom  
dof = N - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N) + 10.5

# Gaussian distributed data with mean = 9.9 and var = 1  
y = np.random.randn(N) + 9.9

t_stat, p_val = stats.ttest_rel(x,y)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.446152658909739
p-value = 0.0021043953630465787

Interpretazione dei risultati del test

Il p-value basso indica che l’ipotesi nulla è rifiutata, cioè non c’è alcun cambiamento nel diametro dei cuscinetti dopo l’introduzione della nuova macchina di colata. 

Avvertenze sul paired t-test

Le assunzioni del paired t-test sono valide sulle differenze delle coppie e non sulle osservazioni originali. È quindi importante assicurarsi che le differenze tra le coppie siano distribuite simmetricamente e non presentino outlier. 

Come eseguire il t-test di Welch in Python

Dopo un pilota riuscito con la nuova macchina di colata in uno stabilimento, l’azienda vuole provare un altro pilota nel secondo stabilimento con una nuova macchina di levigatura. Questa macchina è nota per produrre cuscinetti molto accurati, ma è influenzata dai cambiamenti di temperatura e dalle fluttuazioni di corrente. L’azienda deve identificare se i cuscinetti dei due stabilimenti sono diversi confrontando  21 campioni del primo stabilimento e 25 del secondo. 

Esempio di t-test di Welch in Python

La media del diametro dei cuscinetti del primo stabilimento risulta 9,9 cm con una deviazione standard di 1 cm, mentre la media del diametro del secondo stabilimento risulta 10 cm con una deviazione standard di 3 cm.  Poiché le deviazioni standard dei due campioni sono diverse, useremo il t-test di Welch.

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 9.9 and var = 1  
x = np.random.randn(N1) + 9.9

# Gaussian distributed data with mean = 10 and var = 3
y = 3*np.random.randn(N2) + 10

## Using SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y, equal_var = False) 
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 1.3828843424092643
p-value = 0.17753505304053804

Interpretazione dei risultati del test

Il p-value osservato è maggiore del livello di significatività di 0,05, il che indica che non riusciamo a rifiutare l’ipotesi nulla, implicando che i cuscinetti dei due stabilimenti siano identici. Non possiamo essere certi dei risultati a causa dell’elevata deviazione standard dei campioni del secondo stabilimento; sarà quindi necessario raccogliere più campioni per eseguire lo z-test. 

Avvertenze sul t-test di Welch 

A differenza di altri t-test, il t-test di Welch è applicabile a varianze di popolazione diseguali

Conclusione

I dati possono far emergere i reali fenomeni che influenzano le decisioni aziendali solo se interrogati nel modo giusto. Serve una solida comprensione dei diversi test statistici per sapere quale applicare e quando. Questo tutorial si concentra sui t-test e ne spiega le assunzioni alla base, come osservazioni indipendenti e identicamente distribuite e distribuzione normale. 

Oltre a fornire un rapido promemoria sul test d’ipotesi, questo tutorial offre anche una panoramica completa dei diversi tipi di t-test con l’aiuto di un esempio. Ti incoraggiamo vivamente a esercitarti nell’esecuzione di un t-test usando Python e a valutare quale utilizzare per misurare la significatività statistica del tuo esperimento.    

Riferimenti e risorse consigliate:

Argomenti
Python
Analisi dei dati
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro