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