Exercícios 7 e 8 - Lista 2

require(mvtnorm)
require(mvShapiroTest)

7.Usando a biblioteca mvtnorm do R, simule n = 20 dados de uma distribuição normal trivariada, com vetor de médias nulo e covariância:

\[X = \begin{bmatrix} 5 & 5 & 5 \\ 5 & 15 & 10\\ 5 & 10 & 10\\ \end{bmatrix}\]

X <- matrix(c(5,5,5,5,15,10,5,10,10), nrow=3)

valores <- rmvnorm(20, sigma=X)

a) Aplique o teste de normalidade multivariada de Shapiro-Wilk à amostra simulada. A hipótese nula de normalidade multivariada foi ou não rejeitada ao nível de 5% de significância?

mvShapiro.Test(valores)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores
## MVW = 0.9471, p-value = 0.312

b) Repita a simulação realizada 1000 vezes. A cada rodada, verifique se a hipótese nula de normalidade multivariada é rejeitada ou não. Em qual porcentagem das vezes a hipótese nula foi (incorretamente) rejeitada? Este resultado está de acordo com o esperado?

vetor_p <- numeric(1000)
for(i in 1:1000){
  valores <- rmvnorm(20, sigma=X)
  ResShapiro <- mvShapiro.Test(valores)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 0.039

c) Repita os itens a) e b) para tamanhos de amostra n = 50, 100 e 500. Avalie as taxas de rejeição em cada caso. Compare o poder do teste para os diferentes tamanhos de amostra.

  • n = 50
valores <- rmvnorm(50, sigma=X)
mvShapiro.Test(valores)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores
## MVW = 0.9784, p-value = 0.5776
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores <- rmvnorm(50, sigma=X)
  ResShapiro <- mvShapiro.Test(valores)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 0.047
  • n = 100
valores <- rmvnorm(100, sigma=X)
mvShapiro.Test(valores)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores
## MVW = 0.98561, p-value = 0.3455
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores <- rmvnorm(100, sigma=X)
  ResShapiro <- mvShapiro.Test(valores)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 0.047
  • n = 500
valores <- rmvnorm(500, sigma=X)
mvShapiro.Test(valores)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores
## MVW = 0.99599, p-value = 0.1628
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores <- rmvnorm(500, sigma=X)
  ResShapiro <- mvShapiro.Test(valores)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 0.055

8. Usando a biblioteca mvtnorm do R, simule n = 20 dados de uma distribuição t trivariada, com parâmetros semelhantes aos do exercício anterior e 1 grau de liberdade.

valores_t <- rmvt(20, sigma=X) 

a) Aplique o teste de normalidade multivariada de Shapiro-Wilk à amostra simulada. A hipótese nula de normalidade multivariada foi ou não rejeitada ao nível de 5% de significância?

mvShapiro.Test(valores_t)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores_t
## MVW = 0.93091, p-value = 0.08294

b) Repita a simulação realizada 1000 vezes. A cada rodada, verifique se a hipótese nula de normalidade multivariada é rejeitada ou não. Em qual porcentagem das vezes a hipótese nula foi (corretamente) rejeitada?

vetor_p <- numeric(1000)
for(i in 1:1000){
  valores_t <- rmvt(20, sigma=X)
  ResShapiro <- mvShapiro.Test(valores_t)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 0.923

c) Repita os itens a) e b) para tamanhos de amostra n = 50, 100 e 500. Avalie as taxas de rejeição em cada caso. Compare o poder do teste para os diferentes tamanhos de amostra.

  • n = 50
valores_t <- rmvt(50, sigma=X)
mvShapiro.Test(valores_t)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores_t
## MVW = 0.56336, p-value < 2.2e-16
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores_t <- rmvt(50, sigma=X)
  ResShapiro <- mvShapiro.Test(valores_t)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 1
  • n = 100
valores_t <- rmvt(100, sigma=X)
mvShapiro.Test(valores_t)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores_t
## MVW = 0.48193, p-value < 2.2e-16
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores_t <- rmvt(100, sigma=X)
  ResShapiro <- mvShapiro.Test(valores_t)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 1
  • n = 500
valores_t <- rmvt(500, sigma=X)
mvShapiro.Test(valores_t)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  valores_t
## MVW = 0.44511, p-value < 2.2e-16
vetor_p <- numeric(1000)
for(i in 1:1000){
  valores_t <- rmvt(500, sigma=X)
  ResShapiro <- mvShapiro.Test(valores_t)
  vetor_p[i] <- ResShapiro$p.value
}

length(vetor_p[vetor_p < 0.05]) / length(vetor_p)
## [1] 1