Como realizar testes multivariados de normalidade em r
Quando queremos testar se uma única variável é normalmente distribuída ou não, podemos criar um gráfico QQ para visualizar a distribuição ou realizar um teste estatístico formal como um teste de Anderson Darling ou um teste de Jarque-Bera .
No entanto, quando queremos testar se múltiplas variáveis são normalmente distribuídas como um grupo, precisamos realizar um teste de normalidade multivariada .
Este tutorial explica como realizar os seguintes testes de normalidade multivariada para um determinado conjunto de dados em R:
- O teste de Mardia
- Teste de energia
- Testes multivariados de curtose e assimetria
Relacionado: Se quisermos identificar valores discrepantes em um contexto multivariado, podemos usar a distância de Mahalanobis .
Exemplo: teste de Mardia em R
O teste de Mardia determina se um grupo de variáveis segue ou não uma distribuição normal multivariada. As hipóteses nula e alternativa do teste são as seguintes:
H 0 (nulo): As variáveis seguem uma distribuição normal multivariada.
Ha (alternativa): As variáveis não seguem distribuição normal multivariada.
O código a seguir mostra como realizar este teste em R usando o pacote 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
A função mult.norm() testa a normalidade multivariada tanto na assimetria quanto na curtose do conjunto de dados. Como ambos os valores de p não são inferiores a 0,05, não conseguimos rejeitar a hipótese nula do teste. Não temos evidências de que as três variáveis do nosso conjunto de dados não sigam uma distribuição multivariada.
Exemplo: teste de energia em R
Um teste de energia é outro teste estatístico que determina se um grupo de variáveis segue ou não uma distribuição normal multivariada. As hipóteses nula e alternativa do teste são as seguintes:
H 0 (nulo): As variáveis seguem uma distribuição normal multivariada.
Ha (alternativa): As variáveis não seguem distribuição normal multivariada.
O código a seguir mostra como realizar esse teste em R usando o pacote de 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
O valor p do teste é 0,31 . Como este valor não é inferior a 0,05, não rejeitamos a hipótese nula do teste. Não temos evidências de que as três variáveis do nosso conjunto de dados não sigam uma distribuição multivariada.
Nota: O argumento R=100 especifica 100 réplicas mapeadas por boost a serem usadas ao executar o teste. Para conjuntos de dados com tamanhos amostrais menores, você pode aumentar esse número para produzir uma estimativa mais confiável da estatística de teste.
Recursos adicionais
Como criar e interpretar um gráfico QQ em R
Como realizar um teste de Anderson-Darling em R
Como realizar um teste Jarque-Bera em R
Como realizar um teste de Shapiro-Wilk em R