Come eseguire test di normalità multivariati in r


Quando vogliamo verificare se una singola variabile è distribuita normalmente o meno, possiamo creare un grafico QQ per visualizzare la distribuzione o eseguire un test statistico formale come un test di Anderson Darling o un test di Jarque-Bera .

Tuttavia, quando vogliamo verificare se più variabili sono normalmente distribuite come gruppo, dobbiamo eseguire un test di normalità multivariato .

Questo tutorial spiega come eseguire i seguenti test di normalità multivariata per un dato set di dati in R:

  • La prova di Mardia
  • Prova energetica
  • Test di curtosi multivariata e di asimmetria

Correlati: se vogliamo identificare valori anomali in un contesto multivariato, possiamo utilizzare la distanza di Mahalanobis .

Esempio: il test di Mardia in R

Il test di Mardia determina se un gruppo di variabili segue o meno una distribuzione normale multivariata. Le ipotesi nulla e alternativa del test sono le seguenti:

H 0 (null): le variabili seguono una distribuzione normale multivariata.

H a (alternativa): le variabili non seguono una distribuzione normale multivariata.

Il codice seguente mostra come eseguire questo test in R utilizzando il pacchetto QuantPsyc :

 library (QuantPsyc)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
                   x2 = rnorm(50),
                   x3 = rnorm(50))

#perform Multivariate normality test
mult.norm(data)$ mult.test

Beta-hat kappa p-val
Skewness 1.630474 13.5872843 0.1926626
Kurtosis 13.895364 -0.7130395 0.4758213

La funzione mult.norm() verifica la normalità multivariata sia nell’asimmetria che nella curtosi del set di dati. Poiché entrambi i valori p non sono inferiori a 0,05, non riusciamo a rifiutare l’ipotesi nulla del test. Non abbiamo prove che le tre variabili nel nostro set di dati non seguano una distribuzione multivariata.

Esempio: test energetico in R

Un test energetico è un altro test statistico che determina se un gruppo di variabili segue o meno una distribuzione normale multivariata. Le ipotesi nulla e alternativa del test sono le seguenti:

H 0 (null): le variabili seguono una distribuzione normale multivariata.

H a (alternativa): le variabili non seguono una distribuzione normale multivariata.

Il codice seguente mostra come eseguire questo test in R utilizzando il pacchetto energia :

 library (energy)

#create dataset
set.seed(0)

data <- data.frame(x1 = rnorm(50),
                   x2 = rnorm(50),
                   x3 = rnorm(50))

#perform Multivariate normality test
mvnorm.etest(data, R= 100 )

Energy test of multivariate normality: estimated parameters

data: x, sample size 50, dimension 3, replicates 100
E-statistic = 0.90923, p-value = 0.31

Il valore p del test è 0,31 . Poiché questo valore non è inferiore a 0,05, non riusciamo a rifiutare l’ipotesi nulla del test. Non abbiamo prove che le tre variabili nel nostro set di dati non seguano una distribuzione multivariata.

Nota: l’argomento R=100 specifica 100 repliche con boost mapping da utilizzare durante l’esecuzione del test. Per i set di dati con dimensioni del campione più piccole, è possibile aumentare questo numero per produrre una stima più affidabile della statistica del test.

Risorse addizionali

Come creare e interpretare un grafico QQ in R
Come eseguire un test di Anderson-Darling in R
Come eseguire un test Jarque-Bera in R
Come eseguire un test di Shapiro-Wilk in R

Aggiungi un commento

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