Exercícios 7 e 8 - Lista 2
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}\]
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?
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores
## MVW = 0.94905, p-value = 0.3577
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.055
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
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores
## MVW = 0.96974, p-value = 0.1573
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.041
- n = 100
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores
## MVW = 0.98349, p-value = 0.1816
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.05
- n = 500
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores
## MVW = 0.99652, p-value = 0.3425
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.047
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.
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?
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores_t
## MVW = 0.87345, p-value = 0.0003195
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?
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.927
## [1] 0.927
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
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores_t
## MVW = 0.84503, p-value = 4.396e-12
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
## [1] 1
- n = 100
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores_t
## MVW = 0.70908, 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
## [1] 1
- n = 500
##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: valores_t
## MVW = 0.27961, 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
## [1] 1