knitr::opts_chunk$set(echo = TRUE)

PRESSUPOSTOS DA ANÁLISE DE VARIÂNCIA

Uma questão muito importante quando aplicamos Análise de Variância em nossos dados é que os mesmos devem atender alguns pressupostos para que a análise nos forneça resultados confiáveis. São eles:

Homocedasticidade

Esse parâmetro é muito importante, pois pressupõe que os resíduos apresentem variâncias estatisticamente iguais entre os diferentes tratamentos aplicados as unidades experimentais. Caso os resíduos apresentem heterocedasticidade, a análise de variância será influenciada, em especial no cálculo dos mínimos quadrados.

Normalidade

Esse outro parâmetro pressupõe que os resíduos apresentem normalidade. Caso não apresentem, as estimativas obtidas pela análise de variância não serão eficientes, tendo em vista que a distribuição em análise tem maior erro padrão. Uma alternativa para minimizar esse problema é transformando os dados brutos aplicando transformadas matemáticas, como por exemplo raiz quadrada, logaritmo, aplicando funções trigonométricas, etc.

Independência

Esse outro parâmetro significa que não há correlação entre os resíduos, ou seja, um dado tem efeito nulo sobre outro. Se isso não ocorrer, significa dizer que há vício de coleta de dados, o que contribui para aumento de erro padrão e ineficiência nos resultados obtidos pela análise de variância.

Como testar esses pressupostos no software R??

Para a homocedasticidade podemos aplicar dois testes para verificar a homogeneidade entre as variâncias: O teste de Barlett e o de Levene.

Vamos utilizar um conjunto de dados para aplicar esses testes. Para aplicação destes testes devemos considerar duas hipóteses:

library(readxl)
homogeneidade <- read_excel("~/Documentos/ESTATÍSTICA INDUSTRIAL/mercurio.xls")
head(homogeneidade)
## # A tibble: 6 x 2
##   Grupo       Quantidade
##   <chr>            <dbl>
## 1 garimpeiros         24
## 2 garimpeiros         19
## 3 garimpeiros         25
## 4 garimpeiros         23
## 5 garimpeiros         13
## 6 ribeirinhos         16
modelo<-aov(Quantidade~Grupo, data = homogeneidade)
names(modelo)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "contrasts"     "xlevels"       "call"          "terms"        
## [13] "model"
coef(modelo)
##      (Intercept) Grupogarimpeiros      Grupoindios Gruporibeirinhos 
##              8.4             12.4             16.0              2.8

Aplicando o teste de Barlett

bartlett.test(Quantidade~Grupo, data = homogeneidade)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Quantidade by Grupo
## Bartlett's K-squared = 2.0415, df = 3, p-value = 0.5638

Observa-se que o valor de p foi maior que 0,05, ou seja, rejeita-se a hipótese alternativa e aceita-se a hipótese nula. Podemos concluir que há homogeneidade entre as variâncias.

Vamos agora aplicar outro teste chamado de Levene. Para isso, deve-se utilziar os seguintes comandos:

require(car)
## Loading required package: car
## Loading required package: carData
leveneTest(modelo)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.4735  0.705
##       16

Podemos observar que tanto o teste de Bartlett quanto o de Levene apresentaram p>0,05, o que nos indica que devemos aceitar a hipótese nula e rejeitar a hipótese alternativa. Isso significa dizer que há homogeneidade entre as variâncias.

Vamos agora testar a normalidade dos resíduos. Mas como conseguimos calcular os resíduos???

\(R_{ij}=x_{ij}-\bar{x}_i\)

Vamos pegar e calcular um resíduo a fim de demonstrar como é feito. voltando aos dados

homogeneidade
## # A tibble: 20 x 2
##    Grupo       Quantidade
##    <chr>            <dbl>
##  1 garimpeiros         24
##  2 garimpeiros         19
##  3 garimpeiros         25
##  4 garimpeiros         23
##  5 garimpeiros         13
##  6 ribeirinhos         16
##  7 ribeirinhos          8
##  8 ribeirinhos         10
##  9 ribeirinhos          7
## 10 ribeirinhos         15
## 11 indios              28
## 12 indios              30
## 13 indios              19
## 14 indios              23
## 15 indios              22
## 16 controle            12
## 17 controle             6
## 18 controle             8
## 19 controle             7
## 20 controle             9

Vamos calcular a média do grupo garimpeiros. Sabendo que a mesma é dada pelo valor de 20,8

Calculando o 1° resíduo: $ 24-20,8= 3,2$

Podemos fazer o cálculo de todos os resíduos utilizando o R

residuos<-residuals(modelo)
residuos
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16 
##  3.2 -1.8  4.2  2.2 -7.8  4.8 -3.2 -1.2 -4.2  3.8  3.6  5.6 -5.4 -1.4 -2.4  3.6 
##   17   18   19   20 
## -2.4 -0.4 -1.4  0.6

Se quisermos calcular os resíduos padronizados. Resíduo padronizado é igual ao valor de um resíduo dividido por uma estimativa de seu desvio padrão.

res_Stud <- rstandard(modelo)
res_Stud
##          1          2          3          4          5          6          7 
##  0.8774536 -0.4935676  1.1516578  0.6032493 -2.1387931  1.3161804 -0.8774536 
##          8          9         10         11         12         13         14 
## -0.3290451 -1.1516578  1.0419761  0.9871353  1.5355438 -1.4807029 -0.3838859 
##         15         16         17         18         19         20 
## -0.6580902  0.9871353 -0.6580902 -0.1096817 -0.3838859  0.1645225

Podemos fazer ainda uma avaliação gráfica dos resíduos padronizados para verificar a presença de outliers.

boxplot(res_Stud)

Podemos observar que não verificamos a presença de outliers no gráfico, o que é um bom sinal para darmos sequência nas análises dos pressupostos.

require(lattice)
## Loading required package: lattice
dotplot(res_Stud~Grupo, homogeneidade, ylab="Resíduos
Studentizados", xlab="Grupo")

Podemos agora realizar a análise de normalidade nos resíduos. Para isso vamos aplicar três testes de normalidade. Para isso vamos instalar e carregar o pacote “nortest”.

require(nortest)
## Loading required package: nortest

Teste de Lilliefors

O teste Lilliefors é uma adaptação do teste de Kolmogorov-Smirnov. O mesmo mede a diferença máxima absoluta entre a função de distribuição acumulada empírica e teórica. ParaAplicando o teste de Lilliefors.

lillie.test(modelo$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo$residuals
## D = 0.15379, p-value = 0.2465

Teste de Shapiro - Wilk

Esse teste foi proposto por Shapiro e Wilk em 1965. O mesmo é muito utilizado para determinação da normalidade dos resíduos.

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.95087, p-value = 0.3805

Teste de Anderson Darling

Aplicando o teste de Anderson Darling sobre os resíduos.

ad.test(modelo$residuals)
## 
##  Anderson-Darling normality test
## 
## data:  modelo$residuals
## A = 0.41859, p-value = 0.2971

Teste de independência de fatores

Precisamos testar outro pressuposto que é a independência dos resíduos, ou seja, não podem ser autocorrelacionados. Sendo assim, para que possamos fazer uma análise da variância, é preciso pressupor que os erros são variáveis aleatórias independentes. Mas o que significa pressupor que os erros são variáveis aleatórias independentes?

Vamos pensar num exemplo: Se formos repetir análises em uma mesma unidade experimental, podemos dizer que há correlação e que não pode-se pressupor independência entre os resíduos. Quando não independência, a Análise de variância fica seriamente comprometida. Inicialmente podemos nos valer de uma análise gráfica dos resíduos. Em os resíduos ficando dispersos em torno do zero sem um padrão definido, podemos dizer que a suposição de independência foi atendida. Ao contrário, quando desconfia-se pela análise gráfica que há uma correlação dos resíduos, podemos proceder a um teste de hipótese a fim de verificar de maneira mais contundente a não independência daos resíduos. Esse teste se chama Durbin-Watson.

Teste de Durbin-Watson

Através deste teste conseguimos verificar a autocorrelação entre os resíduos. As seguintes hipóteses são testadas:

Aplicando o teste:

lmtest::dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 2.5857, p-value = 0.7522
## alternative hypothesis: true autocorrelation is greater than 0