O objetivo desta aula é utilizar o software R para realizar a análise de variância de um experimento conduzido no Delineamento em Blocos Completos Casualizados.
Serão utilizados os dados do experimento sobre percentual de óleo em S. linicola em
diferentes estágios de crescimento, conduzido no Delineamento em Blocos Completos Casualizados.
A seguir são apresentados os comandos para a análise do experimento. Procure entender o que cada
comando executa e compare as saídas com os resultados apresentados em sala de aula.
Inicialmente, o arquivo de dados está disponível em arquivo de
dados
que deve ser copiado para o seu diretório de trabalho.
Inicialmente vamos entrar com os dados no R. Há várias possíveis maneiras de fazer isto. Vamos aqui
usar a função scan e entrar com os dados por linha da tabela. Digitamos o comando abaixo e e
função scan recebe os dados. Depois de digitar o último dado digitamos ENTER em um campo em branco
e a função encerra a entrada de dados retornando para o prompt do programa.
OBS: Note que, sendo um programa escrito na língua inglesa, os decimais devem ser indicados por '.' e não por vírgulas.
> y <- scan() 1: 4.4 2: 5.9 3: 6.0 ... 24: 6.7 25: Read 24 items
Agora vamos montar um data.frame com os dados e os indicadores de blocos e tratamentos.
bc01 <- data.frame(estag = factor(rep(1:6, each=4)), bloco=factor(rep(1:4, 6)), resp=y)
Note que usamos a função factor para indicar que as variáveis blocos e estag são níveis de fatores e não valores numéricos.
Pode-se utilizar o comando read.table para ler o arquivo de dados:
bc01 <- read.table("exemplo04.txt", header=T) bc01
Caso o arquivo esteja em outro diretório deve-se colocar o caminho
completo deste diretório no argumento de read.table acima.
Vamos agora explorar um pouco os dados.
names(bc01) summary(bc01) attach(bc01) plot(resp ~ estag + bloco) bc01.mt <- tapply(resp, estag, mean) bc01.mt bc01.mb <- tapply(resp, bloco, mean) bc01.mb plot.default(estag, resp) points(bc01.mt, pch="x", col=2, cex=1.5) plot.default(bloco, resp) points(bc01.mb, pch="x", col=2, cex=1.5)
Nos gráficos e resultados acima procuramos captar os principais aspectos dos dados bem como
verificar se não há interação entre blocos e tratamentos, o que não deve acontecer neste tipo de
experimento.
A seguir vamos ajustar o modelo e obter outros resultados, incluindo a análise de resíduos e testes para verificar a validades dos pressupostos do modelo.
bc01.av <- aov(resp ~ bloco + estag) anova(bc01.av) names(bc01.av)
Graficamente
par(mfrow=c(2,2)) plot(bc01.av)
Homocedasticidade, Normalidade e Independência
residuos <- (bc01.av$residuals) par(mfrow=c(2,2)) plot(bc01$estag,residuos) title("Resíduos vs Estágios \n Homocedasticidade") preditos <- (bc01.av$fitted.values) plot(residuos,preditos) title("Resíduos vs Preditos \n Independência") qqnorm(residuos,ylab="Residuos", main=NULL) qqline(residuos) title("Grafico Normal de \n Probabilidade dos Resíduos") par(mfrow=c(2,1)) respad <- (residuos/sqrt(anova(bc01.av)$"Mean Sq"[2])) boxplot(respad) title("Resíduos Padronizados - outliers") plot(bc01$bloco,residuos) title("Resíduos vs Blocos")
shapiro.test(residuos)
Como foi detectado efeito de tratamentos faz-se um teste de comparações múltiplas e encerra-se as análises desanexando o objeto do caminho de procura.
bc01.tk <- TukeyHSD(bc01.av, "estag", ord=T) bc01.tk plot(bc01.tk) detach(bc01)
Apesar de não ter sitdo estudado durante as aulas, uma das pressuposições do modelo proposto para a
análise dos dados de um Delineamento em Blocos Completos Casualizados é que não ocorra interação
entre blocos e tratamentos. Este conceito de interação será estudado na disciplina Planejamento de
Experimentos II.
Em geral, por conveniência, esse pressuposto não é analisado. Quando há problemas desta natureza,
pode haver problemas com outros pressupostos, uma vez que o modelo pode não estar sendo utilizado
de forma adequada.
Mesmo assim, para os mais interessados, abaixo é apresentada a forma de verificação deste
pressuposto da ANOVA.
Testando a não aditividade, primeiro extrai-se coeficientes de tratamentos e blocos
bc01.av$coeff bl <- c(0, bc01.av$coeff[2:4]) tr <- c(0, bc01.av$coeff[5:9]) bl tr
agora cria-se um novo termo e testa-se sua significância na ANOVA
bltr <- rep(bl, 6) * rep(tr, rep(4,6)) ttna <- update(bc01.av, .~. + bltr) anova(ttna)
observe a significância do termo bltr.
Outra forma, é através de uma análise gráfica:
interaction.plot(estag, bloco, resp) interaction.plot(bloco, estag, resp)
Os resultados acima indicam que os pressupostos estão obedecidos para este conjunto de dados e a análise de variância é válida.
Adilson dos Anjos 2006-04-17