Subsections

Aula 03: Transformação de dados

Objetivos desta aula

Os objetivos desta aula são analisar um conjunto de dados que apresentam problemas com relação aos pressupostos e como resolver essa situação.

Trabalhando com o arquivo de dados

Tranformação de dados é uma das possíveis formas de contornar o problema de dados que não obedecem aos pressupostos da análise de variância. Isso poder ser feito com relativa facilidade no programa R.

Considere o seguinte exemplo da página 64 das notas de aula do curso. Os dados referem-se ao número de falhas eletrônicas em diferentes sistemas de atendimento telefônico no período de um ano de funcionamento (Delineamento completamente asualizado).

Uma maneira alternativa de entrar com os dados é utilizando a função scan e montar um data-frame.

y <- scan()
1: 2370
2: 1687
3: 2592
...
30: 44
31: 
Read 30 items

tr <- data.frame(trat = rep(1:5, each=6), resp = y)
tr

Lembre-se que trat precisa ser inserido como uma variável não numérica

tr$trat<-as.factor(tr$trat)

ANOVA e Pressupostos

A seguir ajusta-se o modelo e inspecionam-se os resíduos.

##Anova

tr.av <- aov(resp ~ trat, data=tr)
tr.av
anova(tr.av)

##Homocedasticidade

plot.default(tr$trat,tr.av$res)

##Normalidade

qqnorm(tr.av$res,ylab="Residuos", main=NULL)
qqline(tr.av$res)
title("Grafico Normal de Probabilidade dos Resíduos")

O gráfico de resíduos vs valores preditos mostra claramente uma heterogeneidade de variâncias e o $QQ-plot$ mostra um comportamento dos dados que se afasta muito da distribuição normal. A menssagem é clara mas testes podem ser feitos para verificar o desvio dos pressupostos.

bartlett.test(tr$resp, tr$trat)

        Bartlett test for homogeneity of variances

data:  tr$resp and tr$trat 
Bartlett's K-squared = 29.586, df = 4, p-value = 5.942e-06

shapiro.test(tr.av$res)

        Shapiro-Wilk normality test

data:  tr.av$res 
W = 0.8961, p-value = 0.006742

Nos resultados acima a homogeneidade de variâncias foi rejeitada e também a normalidade dos resíduos.

Definindo a transformação

Para tentar contornar o problema utiliza-se a transformação Box-Cox, que consiste em transformar os dados de acordo com a expressão


\begin{displaymath}
Y^\ast=Y^\lambda
\end{displaymath}

onde $\lambda$ é um parâmeto a ser estimado dos dados. Se $\lambda = 0$ a equação acima se reduz a


\begin{displaymath}
Y^\ast=\log(Y)
\end{displaymath}

onde $\log$ é o logarítmo neperiano. Uma vez obtido o valor de $\lambda$ encontra-se os valores dos dados transformados conforme a equação acima e utiliza-se estes dados transformados para efetuar as análises.

A função boxcox do pacote MASS calcula a verossimilhança perfilhada do parâmetro $\lambda$. Deve-se escolher o valor que maximiza esta função. Nos comandos a seguir inicia-se carregando o pacote MASS e depois obtém-se o gráfico da verossimilhança perfilhada. Neste caso, é de interesse obter o valor máximo de $\lambda$. Um gráfico com um zoom na região de interesse fornece esse valor.

require(MASS)
box.tr<-boxcox(resp ~ trat, data=tr, plotit=T)
box.tr<-boxcox(resp ~ trat, data=tr, lam=seq(-1, 1, 1/10))

O gráfico mostra que o valor que maximiza a função é aproximadamente $\hat{\lambda} = 0.19$. Abaixo, uma forma de se obter o valor exato de $\hat{\lambda}$

Transformação BOX-COX

lambda <- box.tr$x[which(box.tr$y == max(box.tr$y))] 

lambda
[1] 0.1919192

Desta forma o próximo passo é obter os dados transformados e depois realizar as análises utilizando estes novos dados.

tr$respt <- tr$resp^(lambda)
tr.avt <- aov(respt ~ trat, data=tr)

Note que os resíduos tem um comportamento bem melhor do que o observado para os dados originais. A análise deve prosseguir utilizando-se então os dados transformados.

bartlett.test(tr$respt, tr$trat)
shapiro.test(tr.avt$res)

NOTA: No gráfico da verossimilhança perfilhada notamos que é mostrado um intervalo de confiança para $\lambda$ e que o valor $0$ está contido neste intervalo. Isto indica que podemos utilizar a transformação logarítimica dos dados e os resultados serão bem próximos dos obtidos com a transformação previamente adotada.

tr.avl <- aov(log(resp) ~ trat, data=tr)
plot(tr.avl)

Exercícios

  1. Analise o experimento da página 64, tabela 11, das notas de aula da disciplina de Planejamento de Experimentos I. Veja que os dados deste experimento possuem problemas com relação aos pressupostos. Descubra qual transformação pode resolver este problema!
    Clique aqui para ver e copiar o arquivo de dados.
  2. Compare o resultado do teste de comparações múltiplas (Tukey) com os dados não transformados e transformados. As conclusões foram as mesmas?

Adilson dos Anjos 2006-04-17