Sei sulla pagina 1di 8

Script R – ANOVA PARA EXPERIMENTOS FATORIAIS

# FATORIAIS - ENTRANDO DADOS PARA UMA ANOVA


# =========================================
exp1<-read.table(file="C:/Users/Joao/Desktop/Estat_Experim_I
(2015)/Exp_fatorial.csv",sep=",",header=T,colClasses=c("factor","factor","factor","factor","numeric"))
head(exp1)
plot(exp1); summary(exp1)

# PREPARANDO PARA UMA ANOVA - declarando Fatores


# ==============================================
attach(exp1)
str(exp1)
BLOCO<-as.factor(BLOCO); TIPO<-as.factor(TIPO); GENOT<-as.factor(GENOT); TRAT<-as.factor(TRAT)
hist(PROD)
boxplot(PROD)
plot(PROD ~ TRAT)
interaction.plot(TIPO, GENOT, PROD)

# ANOVA PARA EXPERIMENTOS FATORIAIS


# =================================
# D.I.C sem desdobramento de tratamentos
is.numeric(PROD)
is.factor(TRAT)
levels(TRAT)
modelo0 <- lm(PROD~TRAT, data=exp1)
anova(modelo0)

# D.I.C com desdobramento fatorial de tratamentos


is.factor(GENOT)
levels(GENOT)
is.factor(TIPO)
levels(TIPO)
modelo1b <- lm(PROD~GENOT*TIPO, data=exp1)
anova(modelo1b)
# Se Interação significativa => desdobramento
modelo1c <- aov(PROD~GENOT/TIPO) # desdobramento de interação (Tipo d. Genot.)
summary(modelo1c, split=list("GENOT:TIPO"=list(g1=1,g2=2,g3=3,g4=4,g5=5,g6=6,g7=7,g8=8,g9=9,g10=10)))
modelo1d <- aov(PROD~TIPO/GENOT) # desdobramento de interação (Genot. d. Tipo)
summary(modelo1d, split=list("TIPO:GENOT"=list(t1=c(1,3,5,7,9,11,13,15,17), t2=c(2,4,6,8,10,12,14,16,18))))

# D.B.C sem desdobramento de tratamentos


is.factor(BLOCO)
levels(BLOCO)
modelo2 <- lm(PROD~BLOCO+TRAT,data=exp1)
anova(modelo2)

# D.B.C. com desdobr. fatorial dos tratamentos (s/ restr. na alocação dos fatores)
is.factor(TIPO)
is.factor(GENOT)
modelo3 <- lm(PROD~BLOCO+GENOT*TIPO, data=exp1)
anova(modelo3)

# Se interação significativa => estudo de fatores dentro de outro(s)


modelo3a <- aov(PROD~BLOCO+GENOT/TIPO) # desdobramento de interação (Tipo d. Genót.)
summary(modelo3a, split=list("GENOT:TIPO"=list(g1=1,g2=2,g3=3,g4=4,g5=5,g6=6,g7=7,g8=8,g9=9,g10=10)))
modelo3b <- aov(PROD~BLOCO+TIPO/GENOT) # desdobramento de interação (Genót. d. Tipo)
summary(modelo3b, split=list("TIPO:GENOT"=list(t1=c(1,3,5,7,9,11,13,15,17), t2=c(2,4,6,8,10,12,14,16,18))))

# D.B.C. em parcelas divididas ou subdivididas (=desdobr. fatorial dos tratamentos)


# Ex.1 (variedades em parcelas e tipos de poda nas subparcelas)
modelo4 <- lm(PROD ~ BLOCO*GENOT+GENOT*TIPO, data=exp1)
anova(modelo4) # modelo - testa todas a FV's contra o Resíduo (parcialmente incorreto)
parcela <- factor(GENOT); subparc <- factor(TIPO)
is.factor(parcela)
is.factor(subparc)
modelo4a <- aov(PROD~GENOT*TIPO+Error(BLOCO/parcela/subparc), data=exp1)
summary(modelo4a) # modelo que testa adequadamente todas as FV's (split plot)
modelo4b <- aov(PROD~BLOCO+GENOT*TIPO+Error(BLOCO/GENOT), data=exp1)
summary(modelo4b) # outro 'script' para o modelo adequado de 'split plot'
# Ex.2 (tipos de poda nas parcelas e variedades nas subparcelas)
parcela <- factor(TIPO)
subparc <- factor(GENOT)
is.factor(parcela)
is.factor(subparc)
modelo4c <- aov(PROD~GENOT*TIPO+Error(BLOCO/parcela/subparc), data=exp1)
summary(modelo4c) # modelo que testa adequadamente todas as FV's (split plot)
modelo4d <- aov(PROD~BLOCO+GENOT*TIPO+Error(BLOCO/TIPO), data=exp1)
summary(modelo4d)

# D.B.C. em faixa (com desdobr. fatorial dos tratamentos)


modelo5 <- lm(PROD ~ BLOCO*GENOT+GENOT*TIPO+BLOCO*TIPO, data=exp1)
anova(modelo5) # modelo - testa todas a FV's contra o Resíduo (parcialmente incorreto)

# P/ ajustar modelo de faixa (strip-block ou strip-plot) c/ testes corretos das FV:


# 1) Instale o Pacote <agricolae> (No "R" clique em Pacotes => Instale-o => agricolae => Ok)
# 2) Chame-o p/ o ambiente atual c/ o comando 'library()'
library(agricolae)
modelo5a <- strip.plot(BLOCO,GENOT,TIPO, PROD) # (difere do SAS só no teste de Blocos)
comp_G <- LSD.test(PROD,GENOT,modelo5a$gl.a,modelo5a$Ea) # Teste de médias associado (LSD - t-Student)
comp_G
comp_T <- LSD.test(PROD,TIPO,modelo5a$gl.b,modelo5a$Eb)
comp_T
# Fonte: Mendiburu, Felipe de (2010).
# Disponível em: <http://rss.acs.unt.edu/Rdoc/library/agricolae/html/strip.plot.html>

# D.B.C. com desdobramento hierárquivo dos tratamentos


modelo6 <- lm(PROD ~ BLOCO+TIPO/GENOT, data=exp1)
anova(modelo6)
modelo6a<- aov(PROD~ BLOCO+TIPO/GENOT) # desdobramento de Genót. dentrto de Tipo
summary(modelo6a, split=list("TIPO:GENOT"=list(t1=c(1,3,5,7,9,11,13,15,17), t2=c(2,4,6,8,10,12,14,16,18))))
# MAIS SOBRE Verificacão de pressuposições da ANOVA
hist(modelo3$residuals)
par(mfrow=c(2,2))
plot(modelo3)
par(mfrow=c(1,1))
shapiro.test(modelo3$residuals) # normalidade
library(normtest) # baixar pacotes de testes de normalidade outros
ad.test(modelo3$residuals) # teste de Anderson-Darling
cvm.test(modelo3$residuals) # teste de Cramer-von Mises
lillie.test(modelo3$residuals) # teste de Lilliefors (Kolmogorov-Smirnov)
pearson.test(modelo3$residuals) # teste Qui-quadrado de Pearson
sf.test(modelo3$residuals) # teste de Shapiro-Francia
bartlett.test(residuals(modelo3)~exp1$TRAT)
bartlett.test(PROD~BLOCO+GENOT*TIPO,data=exp1) # heterogeneidade de variâncias
library(car) # baixar pacotes de testes para heterocedasticidade
help(levene.test) # teste de Levene
leveneTest(PROD,TRAT)
leveneTest(PROD,BLOCO)
leveneTest(PROD,interaction(GENOT,TIPO))
leveneTest(PROD~GENOT*TIPO,data=exp1)
library(outliers)
help(grubbs.test)
grubbs.test(modelo3$residuals,type=10)
grubbs.test(modelo3$residuals,type=10,opposite=T)
grubbs.test(modelo3$residuals,type=11)
set.seed(1234)
x = rnorm(10)
grubbs.test(x)
grubbs.test(x,type=10)
grubbs.test(x,type=20,opposite=T)
grubbs.test(x,type=11)
# Buscando uma Transformação de dados (se necessário):
# Transf. Box & Cox (1964): Y'=(Y(^lamb)-1)/lamb ; ou use simplesmente Y'=Y^(lamb)
require(MASS)
boxcox(PROD~BLOCO+TRAT, data=exp1, plotit=T)
boxcox(PROD~BLOCO+TRAT, data=exp1, lam=seq(1, 3, 1/10))
boxcox(PROD~BLOCO+TRAT, data=exp1, lam=seq(0, 3, 1/20)) # buscando "lâmbida" que maximiza a Verossimilhança: L(lamb).
exp1$prod_T <- (exp1$PROD^(1.8) - 1)/1.8 # fazendo a transformação
modelo_t <- aov(prod_T~BLOCO+TRAT, data=exp1)
anova(modelo_t)
par(mfrow=c(2,2))
plot(modelo_t)
shapiro.test(modelo_t$residuals)
bartlett.test(prod_T~BLOCO+GENOT*TIPO,data=exp1)
par(mfrow=c(1,1))

# CONSULTE TAMBÉM <http://leg.ufpr.br/Rpira/Rpira/>


# "Curso sobre o programa computacional R"
# (Prof. Paulo Justiniano Ribeiro Junior, UFPR)
Rotina SAS – ANOVA PARA EXPERIMENTOS FATORIAIS

data FATOR1;
input BLOCO T G Y;
TRAT=T*100+G;
cards;
1 1 1 139.9
1 1 2 132.6
1 1 3 128.7
...
1 1 10 111.7
1 2 1 137.3
...
4 2 10 143.2
;
run;

title 'Fatorial Mod.0 - DIC / sem restrição nos fatores de tratamentos';


proc glm data=FATOR1;
class TRAT;
model Y= TRAT;
run;
proc glm data=FATOR1;
class T G;
model Y= G T G*T;
run;

title 'Fatorial Mod.1 - DBC / sem restrição nos fatores de tratamentos';


proc glm data=FATOR1;
class BLOCO TRAT;
model Y= BLOCO TRAT;
run;
proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G T G*T;
run;

title 'Fatorial Mod.2 - DBC em Parcelas Subdvididas (G nas parcelas)';


proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T G*T;
test h=BLOCO e=BLOCO*G;
test h=G e=BLOCO*G;
run;
proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T G*T;
random BLOCO*G/test;
run;

title 'Fatorial Mod.3 - DBC em Parcelas Subdvididas (T nas parcelas)';


proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO T BLOCO*T G G*T;
test h=BLOCO e=BLOCO*T;
test h=T e=BLOCO*T;
run;
proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO T BLOCO*T G G*T;
random BLOCO*T/test;
run;

title 'Fatorial Mod.4 - DBC em Parcelas Subdvididas no Tempo';


proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T G*T BLOCO*T;
test h=BLOCO e=BLOCO*G;
test h=G e=BLOCO*G;
run;
proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T G*T BLOCO*T;
random BLOCO*G/test;
run;

title 'Fatorial Mod.5 - DBC em Faixa';


proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T BLOCO*T G*T;
random BLOCO*G BLOCO*T/test;
run;
proc glm data=FATOR1;
class BLOCO T G;
model Y= BLOCO G BLOCO*G T BLOCO*T G*T;
test h=BLOCO G e=BLOCO*G;
test h=T e=BLOCO*T;
run;

title 'Mod.6 - DBC em Fatorial Hierárquico';


proc glm data=FATOR1;
class BLOCO TRAT;
model Y=BLOCO TRAT;
run;
proc glm data=FATOR1;
class BLOCO G T;
model Y=BLOCO T G(T);
lsmeans G(T)/ slice=T;
run; quit;

title 'Mod.1 - DBC em Fatorial Cruzado c/ Interação Significativa';


proc glm data=FATOR1;
class BLOCO G T;
model Y=BLOCO G T G*T;
lsmeans G*T/slice=T; /* SE A INTERAÇÃO G*T SIGNIFICATIVA */
lsmeans G*T/slice=G; /* SE A INTERAÇÃO G*T SIGNIFICATIVA */
lsmeans G T G*T/pdiff=all adjust=tukey;
run; quit;

Potrebbero piacerti anche