Come eseguire un test di shapiro-wilk in r (con esempi)


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

Questo tipo di test è utile per determinare se un determinato set di dati proviene o meno da una distribuzione normale, che è un presupposto comunemente utilizzato in molti test statistici, tra cui regressione , ANOVA , test t e molti altri. ‘altri.

Possiamo facilmente eseguire un test Shapiro-Wilk su un dato set di dati utilizzando la seguente funzione incorporata in R:

shapiro.test(x)

Oro:

  • x: un vettore numerico di valori di dati.

Questa funzione produce una statistica del test W insieme a un valore p corrispondente. Se il valore p è inferiore a α = 0,05, ci sono prove sufficienti per affermare che il campione non proviene da una popolazione distribuita normalmente.

Nota: la dimensione del campione deve essere compresa tra 3 e 5.000 per utilizzare la funzione shapiro.test().

Questo tutorial mostra diversi esempi di utilizzo pratico di questa funzione.

Esempio 1: test di Shapiro-Wilk su dati normali

Il codice seguente mostra come eseguire un test di Shapiro-Wilk su un set di dati con dimensione del campione n=100:

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a normal distribution
data <- rnorm(100)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.98957, p-value = 0.6303

Il valore p del test risulta essere 0,6303 . Poiché questo valore non è inferiore a 0,05, possiamo supporre che i dati del campione provengano da una popolazione distribuita normalmente.

Questo risultato non dovrebbe sorprendere poiché abbiamo generato i dati campione utilizzando la funzione rnorm(), che genera valori casuali da una distribuzione normale con media = 0 e deviazione standard = 1.

Correlato: Una guida a dnorm, pnorm, qnorm e rnorm in R

Possiamo anche produrre un istogramma per verificare visivamente che i dati del campione siano distribuiti normalmente:

 hist(data, col=' steelblue ') 

Test di Shapiro-Wilk per la normalità in R

Possiamo vedere che la distribuzione è piuttosto a campana con un picco al centro della distribuzione, tipico dei dati distribuiti normalmente.

Esempio 2: test di Shapiro-Wilk su dati non normali

Il codice seguente mostra come eseguire un test di Shapiro-Wilk su un set di dati con dimensione campionaria n=100 in cui i valori sono generati casualmente da una distribuzione di Poisson :

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a Poisson distribution
data <- rpois(n=100, lambda=3)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.94397, p-value = 0.0003393

Il valore p del test risulta essere 0,0003393 . Poiché questo valore è inferiore a 0,05, abbiamo prove sufficienti per affermare che i dati del campione non provengono da una popolazione distribuita normalmente.

Questo risultato non dovrebbe sorprendere poiché abbiamo generato i dati campione utilizzando la funzione rpois(), che genera valori casuali da una distribuzione di Poisson.

Correlati: una guida a dpois, ppois, qpois e rpois in R

Possiamo anche produrre un istogramma per vedere visivamente che i dati del campione non sono distribuiti normalmente:

 hist(data, col=' coral2 ') 

Istogramma del test di Shapiro-Wilk in R

Possiamo vedere che la distribuzione è distorta a destra e non ha la tipica “forma a campana” associata ad una distribuzione normale. Pertanto, il nostro istogramma corrisponde ai risultati del test di Shapiro-Wilk e conferma che i dati del nostro campione non provengono da una distribuzione normale.

Cosa fare con i dati non normali

Se un dato set di dati non è distribuito normalmente, spesso possiamo eseguire una delle seguenti trasformazioni per renderlo più normale:

1. Trasformazione del log: trasforma la variabile di risposta da y a log(y) .

2. Trasformazione della radice quadrata: trasforma la variabile di risposta da y a √y .

3. Trasformazione della radice del cubo: trasforma la variabile di risposta da y a y 1/3 .

Eseguendo queste trasformazioni, la variabile di risposta generalmente si avvicina alla distribuzione normale.

Dai un’occhiata a questo tutorial per vedere come eseguire queste trasformazioni nella pratica.

Risorse addizionali

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

Aggiungi un commento

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