Come eseguire un test di shapiro-wilk in python


Il test di Shapiro-Wilk è un test di normalità. Viene utilizzato per determinare se un campione proviene o meno da una distribuzione normale .

Per eseguire un test Shapiro-Wilk in Python possiamo utilizzare la funzione scipy.stats.shapiro() , che utilizza la seguente sintassi:

scipy.stats.shapiro(x)

Oro:

  • x: una tabella di dati campione.

Questa funzione restituisce una statistica di test e un valore p corrispondente.

Se il valore p è inferiore a un certo livello di significatività, allora abbiamo prove sufficienti per affermare che i dati del campione non provengono da una distribuzione normale.

Questo tutorial mostra alcuni esempi di come utilizzare questa funzionalità nella pratica.

Esempio 1: test di Shapiro-Wilk su dati distribuiti normalmente

Supponiamo di avere i seguenti dati di esempio:

 from numpy.random import seed
from numpy.random import randn

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 random values that follow a standard normal distribution
data = randn(100)

Il codice seguente mostra come eseguire un test Shapiro-Wilk su questo campione di 100 valori di dati per determinare se provengono da una distribuzione normale:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

Dal risultato, possiamo vedere che la statistica del test è 0,9927 e il corrispondente valore p è 0,8689 .

Poiché il valore p non è inferiore a 0,05, non riusciamo a rifiutare l’ipotesi nulla. Non abbiamo prove sufficienti per affermare che i dati del campione non provengano da una distribuzione normale.

Questo risultato non dovrebbe sorprendere poiché abbiamo generato i dati di esempio utilizzando la funzione randn() , che genera valori casuali che seguono una distribuzione normale standard.

Esempio 2: test di Shapiro-Wilk su dati distribuiti in modo non normale

Supponiamo ora di avere i seguenti dati di esempio:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

Il codice seguente mostra come eseguire un test Shapiro-Wilk su questo campione di 100 valori di dati per determinare se provengono da una distribuzione normale:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

Dal risultato, possiamo vedere che la statistica del test è 0,9582 e il corrispondente valore p è 0,00299 .

Poiché il valore p è inferiore a 0,05, rifiutiamo l’ipotesi nulla. Abbiamo prove sufficienti per affermare che i dati del campione non provengono da una distribuzione normale.

Anche questo risultato non dovrebbe sorprendere poiché abbiamo generato i dati di esempio utilizzando la funzione Poisson() , che genera valori casuali che seguono una distribuzione di Poisson .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altri test di normalità in vari software statistici:

Come eseguire un test di Shapiro-Wilk in R
Come eseguire un test di Anderson-Darling in Python
Come eseguire un test di Kolmogorov-Smirnov in Python

Aggiungi un commento

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